.NETエンタープライズWebアプリケーション
開発技術大全

スマートクライアント型システムにおけるVisual Studio .NETのメリット

マイクロソフト コンサルティング本部 赤間 信幸
2004/06/03
Page1 Page2 Page3 Page4

4 Visual Studio .NETによる簡単なXML Webサービス開発

 Visual Studio .NETおよび.NET Frameworkは、初期段階からXML Webサービスへの対応を念頭に置いて設計されている。このため、多くの開発ツールでは困難なサーバサイドのXML Webサービス開発も、それを利用するクライアントの開発も、非常に簡単に行うことができるようになっている。

A. サーバサイドXML Webサービス開発

 Visual Studio .NETでは、XML Webサービスは図6のようにプロジェクト形式の1つとしてネイティブサポートされており、その開発も「Webサービス対応させたいメソッドに属性をつけてコンパイルするだけ」で可能である(リスト2-2)。

図6 プロジェクト形式の1つとして用意されているXML Webサービス
 
[WebMethod]
public string HelloWorld(string name)
{
   return "Hello World, " + name + " !!";
}
リスト2-2 作成されるXML Webサービスのサンプル

 コーディング面だけでなく、デバッグやテスト、配布といった周辺部分もカバーされている。例えばブレイクポイントを用いたステップイン実行※3を行うことができるし、テストページやWSDLデータ※4の生成も完全に自動で行われる(図7)。

※3 1行ずつアプリケーションを動作させて様子を見ながら動かす方法。そのときの変数値なども参照できるため、デバッグ効率が高い。
 
※4 当該XML Webサービスのインタフェース仕様を示したXMLデータのこと。WSDL(Web Service DefinitionLanguage)形式で記述される。
 
図7 テストページやWSDLデータの自動生成も可能

 また、.NET FrameworkベースのXML Webサービス開発の良い点の1つとして、ASP.NETWebアプリケーションと実行エンジン(ランタイム)が共通化されていることが挙げられる※5。パイプライン処理やコンテキストデータの保有方法は、XML Webサービスと通常のWebページのアプリケーションとで共通化されており、セキュリティ(認証・許可制御)や管理(構成データや配布)などにほぼ同じ方法が利用できる(図8)。このためASP.NET Webアプリケーションの開発方法をよく理解している方であれば、.NET Frameworkを使ったXML Webサービスの開発に容易に取りかかることができる。

※5 要求されたファイルの拡張子に応じて、それがWebページに対する要求なのか、Webサービスに対する要求なのかを見分けて実行するように作られている。前段パイプライン処理や後段パイプライン処理は全く共通であり、構成管理データ(web.configファイル)なども共通である。
 
図8 ASP.NETランタイムにおけるHTTPパイプライン処理

 また、.NET FrameworkとVisual Studio .NETによる開発では先に述べたアーキテクチャ的な問題に関しても戸惑うことがない。XML Webサービスは、「通信機能を提供するためのもの」として独立した1つのプロジェクト形式として用意されており、ビジネスロジックなどを開発するためのクラスライブラリプロジェクト形式とは明確に分けられている。実際の開発ではビジネスロジックを様々な形態で再利用できるよう、複数のプロジェクトを組み合わせて1つのソリューションとして開発することになる。

 一例として、スマートクライアントとWebブラウザの両方を組み合わせて利用するシステムの場合の開発方法を図9に示す。このような場合には4種類の開発プロジェクトを併用し、さらにそれをVisual Studio .NET内で1つのソリューションとして束ねて管理し、実際の開発を進めればよい。このような素直な開発が可能なのもVisual Studio .NETならではと言える。

図9 スマートクライアントとWebブラウザの両方を利用するシステムの開発方法の例

B. XML Webサービス対応のクライアント開発

 XML Webサービスを呼び出すためには、クライアント側にプロキシクラスと呼ばれる呼び出し用コンポーネントを作成する必要がある(図10)※6

※6 XML Webサービスでは、HTTP通信を利用してサーバとの間でSOAP形式のXMLデータがやり取りされる。しかしこのXMLデータの組立作業やHTTP通信の制御コードはかなり複雑なものになるため、これを肩代わりしてくれるコンポーネントを作り、これを利用する。このようなコンポーネントをプロキシと呼ぶ。プロキシコンポーネントを使うと、XML Webサービスへの呼び出しがあたかも手元のコンポーネントへの呼び出しであるかのようにコードを記述することが可能となる。

図10 XML Webサービスとクライアントの関連図

 このプロキシの作成はWeb参照ウィザードを利用して簡単に作成することが可能である(図11)。

図11 プロキシを追加するまでの手順

 このようなWebサービスプロキシの作成は最近の開発環境であれば比較的当たり前に行えるようになってきている。しかし、Visual Studio .NETではこのような開発モデル、すなわち

  • フォームベースのイベントドリブン型クライアントアプリケーション開発
  • Web参照ウィザードによるプロキシの作成とその利用

という開発モデルを様々な種類のクライアント開発で共通して利用できるというメリットを持つ。ここではスマートクライアント型システムの基本形態として、クライアントにWindows GUIアプリケーションを利用する方式を紹介したが、業務の現場ではこのバリエーションとして様々なクライアントデバイス(携帯電話やPDAなど)が活用されるようになってきている。VisualStudio .NETを利用すれば、主に以下のようなクライアント開発でフォームベースのイベントドリブン型アプリケーション開発やXML Webサービスの呼び出しが可能となる(図12)※7

※7 モバイルデバイス向けの開発方法については本書では詳細解説を行わない。必要な方は、以下のアドレスから情報を入手していただきたい。「Microsoft Visual Studio .NET デバイス開発」 http://www.microsoft.com/japan/msdn/vstudio/device/
 
・Windowsフォーム
  ・Windows PC向けのGUIアプリケーション開発
 
・Webフォーム
  ・ブラウザクライアント向けのWebアプリケーション開発
 
・モバイルWebフォーム
  ・携帯電話向けのアプリケーション開発
  ・携帯電話の種類に応じてサーバ側でレンダリングを調整する機能を持つため、携帯電話ごとのアプリケーション開発の必要性を軽減できる
  ・国内の主要な携帯電話をほとんどサポート※8
 
・.NET Compact Framework
  ・PocketPC向けのGUIアプリケーション開発
  ・.NET Frameworkのサブセット版であり、携帯デバイス向けにリッチなアプリケーション開発が可能
 
※8 対応デバイスの一覧は以下のアドレスから入手可能である。
http://www.microsoft.com/japan/msdn/vstudio/device/mitdefault.asp
 
図12 XML WebサービスとVisual Studio .NETによるマルチデバイス開発

 特に、Visual Studio .NET 2003ではマルチデバイス開発が1つの開発環境に統合されており※9、取り扱いも容易になっている。このような単一開発モデルによる容易なマルチデバイス開発は、他の開発環境やツールには見られない大きな特徴である。

※9 Visual Studio .NET 2002の場合には、各種アドオン(Mobile Internet Toolkitなど)をインストールすることにより利用が可能となる。

 サーバサイド、およびクライアントサイドの両側面からVisual Studio .NETによるスマートクライアント開発を見てきたが、Visual Studio .NETや.NET Frameworkは、設計当初の段階からXML Webサービスへの対応やマルチデバイス開発などが念頭に置かれている(図12)。このため、統一感を持って実際のアプリケーション開発に望むことが可能である。


 INDEX
  .NETエンタープライズWebアプリケーション開発技術大全
  スマートクライアント型システムにおけるVisual Studio .NETのメリット
    1.本システム形態の特徴/構成例/問題点
  2.Visual Studio .NETによる簡単なXML Webサービス開発
    3.サーバ/クライアントへのパッケージ製品の応用
    4.InfoPathを活用したスマートクライアント型システム
 
インデックス・ページヘ  「.NETエンタープライズWebアプリケーション開発技術大全」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間