Webservices-web-services-examples
Webサービス-例
Webサービスアーキテクチャに基づいて、Webサービス実装の一部として次の2つのコンポーネントを作成します-
サービスプロバイダーまたはパブリッシャー
これは、Webサービスのプロバイダーです。 サービスプロバイダーはサービスを実装し、インターネットまたはイントラネットで利用できるようにします。
サービス要求者または消費者
NET SDKを使用して、簡単なWebサービスを作成して公開します。.
これは、Webサービスの消費者です。 リクエスターは、ネットワーク接続を開いてXML要求を送信することにより、既存のWebサービスを利用します。
また、2つのWebサービスリクエスターを作成します。1つはWebベースのコンシューマー(ASP.NETアプリケーション)、もう1つはWindowsアプリケーションベースのコンシューマーです。
以下は、サービスプロバイダーとして機能し、アプリケーションが使用するWebサービスとして2つのメソッド(addおよびSayHello)を公開する最初のWebサービスの例です。 これは、Webサービスの標準テンプレートです。 .NET Webサービスは.asmx拡張子を使用します。 Webサービスとして公開されるメソッドにはWebMethod属性があることに注意してください。 このファイルをIIS仮想ディレクトリにFirstService.asmxとして保存します(IISの構成で説明されているように、たとえばc:\ MyWebSerces)。
FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
[WebMethod]
public int Add(int a, int b) {
return a + b;
}
[WebMethod]
public String SayHello() {
return "Hello World";
}
}
Webサービスをテストするには、公開する必要があります。 Webサービスは、イントラネットまたはインターネットで公開できます。 ローカルマシンで実行されているIISでこのWebサービスを公開します。 IISの構成から始めましょう。
- スタート→設定→コントロールパネル→管理ツール→インターネットサービスマネージャーを開きます。
- デフォルトのWebサイトを展開して右クリックします。 New rarrを選択します。仮想ディレクトリ。 仮想ディレクトリ作成ウィザードが開きます。 Nextをクリックしてください。
- [仮想ディレクトリエイリアス]画面が開きます。 仮想ディレクトリ名を入力します。 たとえば、MyWebServices。 Nextをクリックしてください。
- [Webサイトコンテンツディレクトリ]画面が開きます。
- 仮想ディレクトリのディレクトリパス名を入力します。 たとえば、c:\ MyWebServices。 Nextをクリックしてください。
- 「アクセス許可」画面が開きます。 要件に従って設定を変更します。 この演習のデフォルト設定を保持しましょう。
- [次へ]ボタンをクリックします。 IISの構成が完了します。
- [完了]をクリックして構成を完了します。
IISが正しく構成されているかどうかをテストするには、上記で作成した仮想ディレクトリ(C:\ MyWebServices)にHTMLファイル(たとえば、xl)をコピーします。 次に、Internet Explorerを開き、 http://localhost/MyWebServices/xl と入力します。 xlファイルを開く必要があります。
注-動作しない場合は、localhostをマシンのIPアドレスに置き換えてみてください。 それでも機能しない場合は、IISが実行されているかどうかを確認してください。 IISおよび仮想ディレクトリの再構成が必要になる場合があります。
このWebサービスをテストするには、上記で作成したIIS仮想ディレクトリ(C:\ MyWebServices)にFirstService.asmxをコピーします。 Internet Explorer(http://localhost/MyWebServices/FirstService.asmx)でWebサービスを開きます。 Webサービスページが開きます。 ページには、アプリケーションによってWebサービスとして公開される2つのメソッドへのリンクが必要です。 おめでとうございます。 最初のWebサービスを作成しました!
Webサービスのテスト
これまで見てきたように、Webサービスの記述は.NET Frameworkで簡単です。 .NETフレームワークでは、Webサービスコンシューマーの作成も簡単です。ただし、もう少し複雑です。 前述のように、2つのタイプのサービスコンシューマーを作成します。1つはWebベースのコンシューマーで、もう1つはWindowsアプリケーションベースのコンシューマーです。 最初のWebサービスコンシューマを作成しましょう。
Webベースのサービス利用者
以下のウェブベースのコンシューマーを作成します。 WebApp.aspxと呼びます。 ASP.NETアプリケーションであることに注意してください。 これをWebサービスの仮想ディレクトリ(c:\ MyWebServices \ WebApp.axpx)に保存します。
このアプリケーションには、追加するユーザーから番号を取得するために使用される2つのテキストフィールドがあります。 実行ボタンが1つあり、クリックするとAddおよびSayHello Webサービスが取得されます。
WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
void runSrvice_Click(Object sender, EventArgs e) {
FirstService mySvc = new FirstService();
Label1.Text = mySvc.SayHello();
Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text), Int32.Parse(txtNum2.Text)).ToString();
}
</script>
<html>
<head> </head>
<body>
<form runat = "server">
<p>
<em>First Number to Add </em>:
<asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4< /asp:TextBox>
</p>
<p>
<em>Second Number To Add </em>:
<asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
</p>
<p>
<strong><u>Web Service Result -</u></strong>
</p>
<p>
<em>Hello world Service</em> :
<asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label</asp:Label>
</p>
<p>
<em>Add Service</em> :
& <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
</p>
<p align = "left">
<asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
</p>
</form>
</body>
</html>
コンシューマーを作成したら、使用するWebサービスのプロキシを作成する必要があります。 この作業は、追加されたWebサービスを参照するときに、Visual Studio .NETによって自動的に行われます。 従うべき手順は次のとおりです-
- 使用するWebサービスのプロキシを作成します。 プロキシは、.NET SDKで提供されるWSDLユーティリティを使用して作成されます。 このユーティリティは、Webサービスから情報を抽出し、プロキシを作成します。 プロキシは、特定のWebサービスに対してのみ有効です。 他のWebサービスを使用する必要がある場合は、このサービスのプロキシも作成する必要があります。 Visual Studio .NETは、Webサービス参照が追加されると自動的にプロキシを作成します。 .NET SDKで提供されるWSDLユーティリティを使用して、Webサービスのプロキシを作成します。 現在のディレクトリにFirstSevice.csファイルを作成します。 WebサービスのFirstService.dll(プロキシ)を作成するためにコンパイルする必要があります。
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc/t:library FirstService.cs
- コンパイル済みプロキシをWebサービスの仮想ディレクトリのbinディレクトリ(c:\ MyWebServices \ bin)に配置します。 インターネットインフォメーションサービス(IIS)は、このディレクトリでプロキシを探します。
- すでに行ったのと同じ方法で、サービスコンシューマを作成します。 Webサービスプロキシのオブジェクトは、コンシューマでインスタンス化されることに注意してください。 このプロキシは、サービスとの対話を処理します。
- IEでコンシューマのURLを入力してテストします(たとえば、http://localhost/MyWebServices/WebApp.aspx)。
WindowsアプリケーションベースのWebサービスコンシューマー
WindowsアプリケーションベースのWebサービスコンシューマを作成することは、他のWindowsアプリケーションを作成することと同じです。 プロキシを作成するだけで(これは既に完了しています)、アプリケーションのコンパイル時にこのプロキシを参照するだけです。 以下は、Webサービスを使用するWindowsアプリケーションです。 このアプリケーションは、Webサービスオブジェクト(もちろんプロキシ)を作成し、SayHelloを呼び出して、そのメソッドを追加します。
WinApp.cs
using System;
using System.IO;
namespace SvcConsumer {
class SvcEater {
public static void Main(String[] args) {
FirstService mySvc = new FirstService();
Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
}
}
}
`+ c:\> csc/r:FirstService.dll WinApp.cs +`を使用してコンパイルします。 WinApp.exeが作成されます。 それを実行して、アプリケーションとWebサービスをテストします。
ここで疑問が生じます。このアプリケーションが実際にWebサービスを呼び出していることをどのようにして確認できますか?
テストは簡単です。 Webサービスに接続できないように、Webサーバーを停止します。 次に、WinAppアプリケーションを実行します。 ランタイム例外が発生します。 次に、Webサーバーを再度起動します。 それはうまくいくはずです。