Вызов одного сервиса WCF из другого ... или я? - PullRequest
0 голосов
/ 16 декабря 2009

Я пытаюсь позвонить в удаленную службу 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 удаленной службы, я на самом деле вызываю удаленную службу ?! Или я просто вызываю собственный локальный экземпляр метода ServiceRequest удаленной службы?

Если я прав насчет того, что я не прав, каков будет правильный способ сделать то, что мне нужно сделать, чтобы совершить какое-то действие, которое я предполагаю как проход или прокси-сервер для передачи запросов и ответов на мои услуги и от них, и удаленный сервис?

1 Ответ

3 голосов
/ 16 декабря 2009

Прежде всего, атрибут [WebMethod] будет указывать на веб-службу ASMX, а не на WCF. Это действительно WCF ??

Во-вторых, если это IS 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;
  }

Таким образом, вы действительно вызываете сервис, который вы только что добавили, как ссылку на сервис.

...