簡単なWebServiceの例
5716 ワード
次に、C#を使用して「SecurityWebService」というWebサービスを作成します.1つのWebサービスファイルには、次の形式が含まれます.asmxの拡張子.(Asp.netのファイル拡張子が.aspxのように)
<%@ WebService Language="C#"class="SecurityWebService"%> <%@ WebService Language="C#"class="SecurityWebService"%>
この文は、コンパイラプログラムがWeb Serviceモードで実行されることと、Cクラスの名前を示します.同時に、Webサービスの名前空間にアクセスします.また、Systemネームスペースへの参照を追加したほうがいいです.
using System;using System.Web.Services;
このSecurityWebServiceのクラスは、Web Serviceクラスの機能を継承する必要があります.そこで、次の行のコードを追加しました.
public class SecurityWebService : WebService
ここでは、オブジェクト向けのテクニックを用いてCクラスを作成します.C#のクラスはC++、Javaのクラスとよく似ています.C++とJavaの基礎があれば、これはおかずの一皿です.
.Net下のWebサービスでは、基本的なデータ型を設定できます.したがって、int、float、stringなどのデータ型を返すと、標準のXML出力に自動的に変換できます.しかし、残念なことに、ほとんどの場合、同じエンティティのデータセットが必要です.次に例を挙げます.当社のSecurityWebService株価見積サービスでは、ユーザーに会社の番号を入力するように要求され、会社のフルネームと現在の株価が与えられます.これには、企業の3つの情報が必要です.
会社名(データ型:string)会社フルネーム(データ型:string)株価(データ型:double)
単一株の見積書のデータ情報を分解する必要があります.この作業を完了する方法はたくさんありますが、ここではデータ型を列挙するのに最適です.私たちはC#で「structs」を使って、C++のstructsと同じです.コードは次のとおりです.
public struct SecurityInfo{public string Code;public string CompanyName;public double Price;}
Webサービスの構築に必要なすべてのモジュールを完了しました.したがって、すべてのコードは次のようになります.
using System;
using System.Web.Services;
public struct SecurityInfo
{
public string Code;
public string CompanyName;
public double Price;
}
public class SecurityWebService : WebService
{
private SecurityInfo Security;
public SecurityWebService()
{
Security.Code = "";
Security.CompanyName = "";
Security.Price = 0;
}
private void AssignValues(string Code)
{
//
//
//
// ,
Security.Code = Code;
Security.CompanyName = Code + " Pty Ltd";
Random RandomNumber = new System.Random();
Security.Price = double.Parse(new System.Random(RandomNumber.Next(1,10)).NextDouble().ToString("##.##"));
}
[WebMethod(Description="This method call will get the company name and the price for a given security code.",EnableSession=true)]
public SecurityInfo GetSecurityInfo(string Code)
{
AssignValues(Code);
SecurityInfo SecurityDetails = new SecurityInfo();
SecurityDetails.Code = Security.Code;
SecurityDetails.CompanyName = Security.CompanyName;
SecurityDetails.Price = Security.Price;
return SecurityDetails;
}
}
このWebサービスをHttp Getメソッドで直接呼び出すことができます.これで最初のページは現れず、ユーザーがInvokeボタンをクリックする必要もなくなります.具体的な方法:
http://server/webServiceName.asmx/functionName?parameter=parameterValue
Webサービスを呼び出す方法は、次のとおりです.
http://localhost/work/aspx/SampleService.asmx/GetSecurityInfo?Code=IBM