Web サービスは、Web アプリケーションが Web ネットワーク プロトコルを通じて取得できるネットワーク ベースの機能です。 Web サービスの開発には主に次の 3 つの側面が含まれます。
Webサービスを作成する
プロキシサーバーの作成
Webサービスを利用する
Web サービスは Web アプリケーションであり、他のアプリケーションから呼び出すことができる複数のメソッドを含むクラスです。これには、ASP.NET Web ページなどの隠しコード構造も使用されますが、ユーザー インターフェイスはありません。
この概念をより深く理解するために、株価情報を提供する Web サービスを作成してみましょう。このサービスのクライアントは、株式のタグを通じて関連する名前と価格を検索できます。この例を単純化するために、株価を固定値に設定し、それを 2 次元リストに保存します。この Web サービスには 3 つのメソッドが含まれています。
デフォルトの HelloWorld メソッド
GetName メソッド
GetPrice メソッド
サービスを作成するには、次の手順を実行します。
手順 (1) : Visual Studio で [ファイル] -> [新規作成] -> [Web サイト] を選択し、[ASP.NET Web サービス] を選択します。
ステップ (2) : Service.asmx という名前の Web サービス ファイルとそのコードは非表示になり、このプロジェクトの App_Code パスに Service.cs が作成されます。
ステップ (3) : ファイル名を StockService.asmx および StockService.cs に変更します。
ステップ (4) : .asmx ファイルは、次のように WebService 命令を簡素化します。
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>
ステップ (5) : StockService.cs ファイルを開きます。このファイルで生成されたコードは、Hello World サービスの基本コードです。デフォルトの Web サービス コードは次のとおりです。
System.Collections を使用; System.Web.Services を使用; System.Xml.Linq を使用; namespace StockService { // <summary> // Service1 の概要説明 // <summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // この Web サービスをスクリプトから呼び出せるようにするには、 // ASP.NET AJAX を使用して、 // [System.Web.Script.Services.ScriptService] のコメントを解除します。 public class Service1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World" } };
ステップ (6) : ファイル内のコードを変更して、各銘柄のラベル、名前、価格の文字列を格納する 2 次元ポインターを追加し、次のように株価情報を取得する 2 つの Web メソッドを記述します。
System.Linq を使用; System.Web.Services を使用; System.Xml.Linq を使用; ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // この Web サービスをスクリプトから呼び出せるようにするには、 // ASP.NET AJAX を使用してコメントを解除します// [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService () { //設計されたコンポーネントを使用する場合は、次のコメントを解除します。 //InitializeComponent(); } string[,] 株式 = { {"RELIND", "Reliance Industries", "1060.15"}, {"ICICI", "ICICI Bank", "911.55"}, {"JSW", "JSW Steel", "1201.25"}, {"WIPRO", "Wipro Limited", "1194.65"}, {"SATYAM", "Satyam Computers", "91.10"} }; string HelloWorld() { return "Hello World" } [WebMethod] public double GetPrice(stringsymbol) { //シンボルをパラメータとして受け取り、 (int i = 0; i <stocks.GetLength(0); i++) { if (String.Compare(symbol,stocks[i, 0], true) == 0) の価格を返します。 return Convert.ToDouble(stocks[i , 2]); } return 0; } [WebMethod] public string GetName(stringsymbol) { // シンボルをパラメータとして受け取り、 // 株式の名前を返します (int i = 0; i <株式.GetLength(0); i++) { if (String.Compare(symbol, 株式[i, 0], true) == 0) 株式[i, 1]を返す } }
ステップ (7) : Web サービス アプリケーションを実行すると、サービス メソッドをテストできる Web サービス テスト ページが表示されます。
ステップ (8) : メソッド名をクリックして、正しく実行されているかどうかを確認します。
ステップ (9) : GetName メソッドを検出するには、定義された株式タグの 1 つを指定します。正しければ、関連する株式の名前が返されます。
この Web サービスを使用するには、同じソリューション (ソリューション) の下に Web サイトを作成します。ソリューション マネージャーでソリューション名を右クリックするだけです。Web サービスによって呼び出される Web ページには、返された結果を表示するためのコントロール管理が必要です。コントロール ボタン。1 つはサービスへの通話に戻るため、もう 1 つはサービスへの通話を開始するためのものです。
Web アプリケーションのファイルの内容は次のとおりです。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// JP" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> 無題のページ </title> </head> <body> <form id="form1 " runat="server"> <div> <h3>ストック サービスの使用</h3> <br /> <br /> <asp:Label ID="lblmessage" runat="server"></asp:Label> <br /><br /> <asp:Button ID="btnpostback" runat="server" onclick="Button1_Click" Text="ポストバック" /> <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click" Text="Get在庫" /> </div> </form> </body> </html>
Web アプリケーションのコードは次のとおりです。
System.Collections を使用; System.Linq を使用; System.Web.UI.HtmlControls を使用; using System.Web.UI.WebControls; using System.Xml.Linq; これは、localhost 名前空間を使用します。 { public Partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "初回読み込み時間: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack at: " + DateTime.Now.ToLongTimeString() } } protected void btnservice_Click(オブジェクト送信者, EventArgs e) { StockService プロキシ = new StockService() lblmessage.Text = String.Format("現在の SATYAM 価格:{0}", proxy.GetPrice("SATYAM").ToString()); } }
プロキシ サーバーは、Web サービス コードの置き換えを指します。 Web サービスを使用する前に、プロキシ サーバーを作成する必要があります。このプロキシ サーバーはクライアント アプリケーションによって登録されます。次に、クライアント アプリケーションは、ネイティブ メソッドを使用しているかのように Web サービスへの呼び出しを実装します。
プロキシ サーバーは呼び出しを行い、その呼び出しを SOAP リクエストとして適切な形式でサーバーに送信します。 SOAP は、Simple Object Access Protocol をサポートします。このプロトコルは、Web サービスのデータ交換に適しています。
サーバーが応答して SOAP パケットをクライアントに返すと、プロキシ サーバーはすべてをクライアント アプリケーションに提示します。
btnservice_click を使用して Web サービスを呼び出す前に、Web アプリケーションをアプリケーションに追加する必要があります。これにより、btnservice_click イベントで使用できるプロキシ クラスが透過的に作成されます。
protected void btnservice_Click(object sender, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("現在の SATYAM 価格: {0}", proxy.GetPrice("SATYAM").ToString()) ; }
プロキシを作成するには、次の手順を実行します。
ステップ (1) : ソリューション エクスプローラーで Web アプリケーション エントリを右クリックし、[Web 参照の追加] を選択します。
ステップ (2) : 「このソリューションの Web サービス」を選択すると、作成したストック サービス参照が返されます。
ステップ (3) : サービスをクリックしてテスト ページを開きます。プロキシを作成するときは、デフォルトで「localhost」に名前を変更することもできます。 「参照の追加」をクリックして、クライアント アプリケーションにプロキシを追加します。
次のステートメントをコードに追加して、エージェントを含めます。
ローカルホストを使用します。