2010-03-17 16 views
6

Actualmente ofrezco un servicio con muchos métodos a través de WCF. Me gustaría refactorizar para que el servicio único se divida en múltiples clases, cada una ofreciendo un conjunto diferente de funcionalidades. Sin embargo, preferiría tener una única conexión con el cliente. es posible?¿Hay alguna manera de exponer múltiples servicios de WCF a través de un punto final único?

Supongo que la respuesta es No, entonces, ¿cómo debo solucionar este problema? ¿Hay alguna solución? ¿O mi idea es completamente estúpida y debería cambiar el diseño de la aplicación?

+0

buena pregunta, problema similar aquí - Nota thouh que esta no es la clase pero más interfaz (interfaces de servicios). – TomTom

Respuesta

4

Recuerde E = ABC (Punto final = Dirección, Enlace, Contrato). Con un contrato diferente, incluso con todo lo demás igual, todavía tiene un punto final diferente.

Sin embargo, un solo servicio puede implementar contratos de servicios múltiples. Esto permitiría que un solo archivo .svc sea el objetivo de varios contratos de servicio diferentes, todos configurados como URL en relación con el .svc.

0

Puede implementar clases parciales que le permiten separar su contenido en archivos cs individuales mientras mantiene una única interfaz y punto final. Esta no es la manera más ideal, porque al final del día todavía es una clase única compuesta de clases parciales, pero al menos se parece a ella en la estructura de tu archivo, lo que da cierta separación en lugar de un archivo de clase masivo. .

Ejemplo Estructura:

IMyService.cs

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] 
    string GenericMethod() 

    [OperationContract] 
    string GetUsers(int companyId) 

    [OperationContract] 
    string GetMessages(int userId) 

} 

MyService.cs

//Put any attributes for your service in this class file 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public partial class MyService : IMyService 
{ 
    public string GenericMethod() 
    { 
    return ""; 
    } 
} 

UserService.cs

public partial class MyService 
{ 
    public string GetUsers(int companyId) 
    { 
     return ""; 
    } 
} 

MessagingService.cs

public partial class MyService 
{ 
     public string GetMessages(int userId) 
     { 
      return ""; 
     } 
} 
Cuestiones relacionadas