簡単な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