Webservices-web-services-examples

提供:Dev Guides
移動先:案内検索

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サーバーを再度起動します。 それはうまくいくはずです。