0

既存のサービス内からリモート WCF サービスを呼び出そうとしています。

リモート サービスで使用する必要があるメソッドにサービス リファレンスを追加し、自分のサービスのこの WebMethod で次のように使用します。

  [WebMethod(Description = "My local service."]
  public RemoteService.ServiceResponse ServiceRequest(RemoteService.SendRequest myObject)
  {
       // Instance of remote service's method I'm 
       RemoteService.ServiceResponse SendResponse;

       SendResponse = ServiceRequest(RemoteService.SendRequest)    

       return SendResponse;
  }

私の質問は、リモート サービスの ServiceRequest Web メソッドの呼び出しで、実際にリモート サービスを呼び出しているのでしょうか?! それとも、リモート サービスの ServiceRequest メソッドの独自のローカルインスタンスを呼び出しているだけですか?

私が間違っていることについて私が正しい場合、私が必要とすることを行うための適切な方法は何でしょうか?私のサービスとリモートサービスとの間で要求と応答を渡すためのパススルーまたはプロキシとして推測しますか?

4

1 に答える 1

3

まず、[WebMethod]属性は WCF ではなく ASMX Web サービスを指します。それは本当にWCFですか??

次に、WCF の場合:サービスでメソッドを呼び出すには、そのサービスのプロキシ クライアントをインスタンス化する必要があります。サービス参照を生成するとServiceNamespace.ServiceReferenceClient、ある種のクラスを取得する必要があります。これは自動生成されています。これをインスタンス化し、そのプロキシでメソッドを呼び出す必要があります。

[WebMethod(Description = "My local service."]
public RemoteService.ServiceResponse ServiceRequest(RemoteService.SendRequest myObject)
{
       // Instance of remote service's method I'm 
       RemoteService.ServiceResponse SendResponse;

       ServiceProxyClient client = new ServiceProxyClient();    

       SendResponse = client.ServiceRequest(RemoteService.SendRequest)    

       return SendResponse;
  }

そうすれば、サービス参照として追加したばかりのサービスを実際に呼び出すことができます。

于 2009-12-16T08:27:49.727 に答える