2010年3月30日火曜日

[WCF](暫定)WCFでSoapとRestを共通で

はじめてのWCFです。

ホントはRestとNamedPipeをやりたかったけど、IIS7.0がいるって事らしいのであきらめました。
なんで、SoapとRestの共通化(?)する方法。

まず、適当なWcfサービスを作って、「System.ServiceMode.Web」を参照設定する。
InterfaceにUsing System.ServiceMode.Web; なんて書いてGetMessageなんてメソッドを作る。
この時、Attributeに「WebGet」をつける。

[WebGet(UriTemplate = "GetMessage/{key}/")]
[OperationContract]
string GetMessage(string key);
実処理も適当に実装。
public string GetMessage(string key)
{
    return "IService1.GetMessage + " + key;
}
以上で、Wcfサービスのコーディングは完了。 後はWeb.Configの設定。 system.serviceModelの中を色々と変更。 まず、behaviorsを書く。

  
    
      
    
  
  
    
    
    
      
    
  

次にservices.serviceにendPointを書く。

  
    
    
    
  


addressのあたりをユニークに設定するとうまくいくらしい。

で、これを使うWebサイトを作って、Web参照すると普通にSoapで使える。
ブラウザから「http://localhost:8080/Service1.svc/Rest/GetMessage/TestMessage/」なんて打てば、
IService1.GetMessage + TestMessage
こんなレスポンスがもらえると。