Одна конечная точка с несколькими контрактами на обслуживание - PullRequest
5 голосов
/ 05 марта 2012

Как я могу написать веб-службу WCF, которая имеет одну конечную точку, но несколько контрактов на обслуживание?

Пример:

[ServiceContract]
public interface IWirelessService
{
    [OperationContract]
    void AddWireless();
}

[ServiceContract]
public interface IWiredService 
{
    [OperationContract]
    void AddWired();
}

[ServiceContract]
public interface IInternetService
{
    [OperationContract]
    void AddInternet();
}

Давайте подумаем, что IInternetService является моей основной веб-службой, и я хочуреализовать IwiredService и IWirelessService в нем, но я хочу сделать реализацию в своих классах. Это возможно?Как я могу решить эту проблему?

1 Ответ

3 голосов
/ 13 июня 2012

Я привел приведенный ниже пример, это то, что вы искали?

[ServiceContract]
public interface IWirelessService : IInternetService
{
    [OperationContract]
    Connection AddInternet();
}

[ServiceContract]
public interface IWiredService : IInternetService
{
    [OperationContract]
    Connection AddInternet();
}

public class WirelessService : IWirelessService 
{
   public Connection AddInternet()
   {
   //Get Internet the wireless way
   }

}

public class WiredService : IWiredService 
{
    public Connection AddInternet()
    {
    //Get Internet the wired way
    }
}

[ServiceContract]
public interface IInternetService
{
    [OperationContract]
    Connection AddInternet();
}


[ServiceContract]
public interface IEnterpriseApplicationService
{
    [OperationContract]
    void GetDataFromInternet(string url, IInternetService internetService);
}
public class InternetProviderService : IEnterpriseApplicationService
{ 
    public HTMLResponse GetDataFromInternet(string url, IInternetService internetService)
    {
       Connection con = internetService.AddInternet();
       return con.GetContentFromURL(url);
    }
 }
...