開発者カテゴリ Visual Studio 2005による XML Web サービス入門 アジェンダ XML Web サービスの基本実装 Visual Studio での基本的な作り方 クライアントの基本的な作り方 Web サービス Webサービスとは インターネットの標準的なプロトコルを使ってアクセスできるサービス .NET ではビルディング ブロックとも呼ばれる ASP.NET では、XML Web サービスと呼ばれる 特徴 疎結合 広く使われるプロトコル (HTTP、SOAP、…) 統一的なデータ形式 (XML) 役割 異種プラットフォーム間の連携 企業間のシステムのシームレスな連携 企業内でのシステムの統合 (Enterprise Application Integration) ASP.NET における XML Webサービス XML Webサービス .asmxファイルに実装し、他のアプリケーションのためにサービスを実行し、 XMLデータを返す <soap:Envelope xmlns:soap="..."> <soap:Body> <Add xmlns="http://www.abc.org/"> <a>10</a> <b>20</b> </Add> </soap:Body> </soap:Envelope> http://srv/app/Service1.asmx クライアント アプリケーション XML <soap:Envelope xmlns:soap="..."> <soap:Body> <AddResponse xmlns="http://www.abc.org/"> <AddResult>30</AddResult> </AddResponse> </soap:Body> </soap:Envelope> Service1.asmx 実行 XML を生成 .asmx ファイルとクラス (参考) クラスに Web メソッドを実装する WebMethod 属性を持つメソッドを用意する System.Web.Services.WebServiceクラスから派生する (オプション) Service1.asmx <%@ WebService ... Class="MyService" %> VB Imports System.Web.Services Public Class MyService Inherits System.Web.Services.WebService <WebMethod> Public Function Add(ByVal a As Integer, _ ByVal b As Integer) _ As Integer Return a + b End Function End Class .asmx ファイルとクラス (参考) (続き) Service1.asmx <%@ WebService ... Class="MySpace1.MyService" %> C# using System.Web.Services; public class MyService : System.Web.Services.WebService { [WebMethod] public int Add(int a, int b) { return a + b; } } .asmx ファイルの機能 Web サービスのインフラストラクチャ Web サービス関連の機能を分類すると、、、 (MSDN ライブラリより) ディレクトリ ク ラ イ ア ン ト UDDIなどの ディレクトリサービス 探索 説明 XML Webサービス などのサービス ワイヤ形式 HTLM 説明ページ .asmx ファイル ワイヤ形式 ASP.NET の XML Webサービスでのワイヤ形式 クライアントから呼び出すことができる Web メソッドとして提供 3種類の方法 HTTP-GET HTTP-POST SOAP over HTTP (HTTP-POST) XML Webサービス http://server1/app/Service1.asmx/Add?a=100&b=100 メソッド呼び出し <int xmlns="http://tempuri.org/">300</int> (HTTP-GET, HTTP-POST の場合) HTML 説明ページ HTML 説明ページ (HTML description page) とは HTML 形式で Web サービスの機能を説明するページ テスト ページを持つ URL として .asmx ファイルが指定され、HTTP 要求 (HTTP-GET) を受け ると、ASP.NET が自動生成する 説明 Webサービス記述言語 (WSDL) の提供 XML Webサービスへのアクセス形式が分る ASP.NETの XML Webサービスでは、ある特定のアドレスにアクセスすると、 XML Webサービスへアクセスするための仕様書である WSDL (Web Service Description Language) を自動生成することができる。 Visual Studio .NET では、WSDL を読み込ませると、Web サービスにアクセス するために必要なコード (プロキシ クラス) を自動生成することができる。 XML Webサービス http://server1/app/Service1.asmx?wsdl WSDL 探索 ASP .NETでの XML Webサービス探索 XMLドキュメントとして提供 Webサービス記述言語(WSDL)を取得する手がかり XML Webサービス http://Server/app/Service1.asmx?disco WSDLの取得方法など <discovery xmlns="http://schemas.xmlsoap.org/disco/"> <contractRef ref="http://localhost/app/Service1.asmx?wsdl" docRef="http://localhost/app/Service1.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" /> </discovery> アジェンダ XML Web サービスの基本実装 Visual Studio での基本的な作り方 クライアントの基本的な作り方 Visual Studio 2005 による開発 ASP.NET Web サービス用のテンプレート Web サービスの雛型(テンプレート)が用意されている Web サイトを作成 統合開発環境 (IDE) ファイル構成 Web サイト IIS上の仮想ディレクトリとして作成することも可能 デバッグ、実行に IIS 環境を直接使用 任意のファイル システム上に作成 デバッグ、実行に ASP.NET 開発サーバーを使用 ソリューションを作成 作業の開始はソリューション ファイルを開き、終了はソリューションを閉じる WebSite1.sln ソリューション ファイル + Service.asmx Service.vb Web.config ... Web サイト用のフォル ダ 実行/デバッグ メニュー操作による起動 .asmx ファイルを選択して、[デバッグ開始] または [デバッグなしで開始] HTML 説明ページが開く HTML 説明ページからテスト ページを開いて WebMethod を呼び出す HTTP POST を使用 SOAP メッセージを使った WebMethod 呼び出しを行うには、クライアント ア プリケーションを作成する必要がある デバッグ テストページ、クライアント アプリケーションに関わらず、WebMethod のデ バッグが可能 Web.config の <compilation> 要素の debug 属性を true に変更する必要が ある (テンプレートの初期値は false) デバッグ開始時、Visual Studio 2005 では、属性変更の問い合わせダイアログ ボックスが表示される アジェンダ XML Web サービスの基本実装 Visual Studio での基本的な作り方 クライアントの基本的な作り方 Web 参照の追加 1/2 WSDL から情報取得 メソッド名、引数、戻り値 固有のデータスキーマ定義など Web 参照の追加 2/2 プロキシ クラスの自動生成 利用されるプロトコルをカプセル化 引数や戻り値で必要な型定義も自動的に生成 Reference.vb ( Reference.cs ) プロキシ クラス 固有の型定義 DataSet派生クラス プロキシ クラスの利用 プロキシ クラス SOAP over HTTP を利用 System.Web.Services.Protocols.SoapHttpClientProtocol 派生クラス 名前空間 : クライアントプロジェクト既定の名前空間 . サーバー名 クラス名 : サーバー側の XML Webサービスクラス名 WSDL の Service要素 Name属性 メソッド名 : サーバー側の XML Webサービスのメソッド名 WSDL の Operation要素 Name属性 VB Imports MyProj.Srv : : Dim srv As New Service1() n = obj.Add( 100, 200 ) C# using MyProj.Srv; : : Service1 srv = new Service1(); n = obj.Add( 100, 200 );
© Copyright 2024 ExpyDoc