ASP.NET Web サービスから WCF に移行する必要があります。現在のコードは次のようになります。
サーバ側:
public class MyType
{
public int x;
public string s;
}
public class MyService : WebService
{
public MyType myObj;
[WebMethod]
[SoapHeader("myObj", Direction=SoapHeaderDirection.InOut)]
public string SomeMethod() // NO Parameter!!!
{
if (myObj.x > 5)
return myObj.s;
else
return "Less than 5";
}
}
</code>
クライアント側:
MyService service = new MyService();
MyType m = new MyType();
m.x = 10;
m.s = "That's it!!!";
service.myObj = m;
string s = service.SomeMethod();
これはスムーズに動作します。これを WCF に変更する必要があります。WCF で SOAP ヘッダーに署名する方法に関する多くのトピックが見つかりましたが、すべて MessageContract をクラスの属性として使用する方法に関するもので、操作にパラメーターとして与えられます。このような:
<code>
[MessageContract]
public class MyType
{
public int x;
public string s;
}
[OperationContract]
public string SomeMethod(MyType myType)
{
} </code>
しかし、これは私が必要とするものではありません。私のメソッドは同じままでなければなりません (パラメーターなし)。
WCFExtra lib を使用したり、Client Dispatcher インターフェイスを実装して、すべての送信要求に SOAP ヘッダーを追加したりすることについて話しているブログはほとんどありません。しかし、繰り返しになりますが、Web サービスを WCF に移行してもクライアントに影響を与えず、コードを変更する必要はなく、.asmx 拡張子を持つ Web サービスを使用できるようにする必要があります。また、現在の Web サービスは MTOM と WSE-3 を使用しています。簡単な方法はありますか?
これで私を助けてください。
すでに以下の記事を読みましたが、SOAP ヘッダー、WSE-3 の処理方法については触れていません。
http://megakemp.com/2008/11/27/migrating-aspnet-web-services-to-wcf/
http://megakemp.com/2008/11/27/migrating-aspnet-web-services-to-wcf/
http://vikasbhardwaj15.blogspot.in/2012/05/convert-asmx-web-services-to-wcf.html
http://blogs.msdn.com/b/trobbins/archive/2006/12/02/integrating-wcf-with-your-existing-asmx-services.aspx
http://blogs.msdn.com/b/kaevans/archive/2006/10/05/phased-migration-from-asmx-to-wcf.aspx
http://www.manas.com.ar/waj/2007/05/31/asmx-to-wcf-migration/