? A diferencia de la implementación de asmx, el wcf requiere que implemente su interfaz. No entiendo muy bien la razón detrás de ese diseño. La interfaz es un contrato entre 2 clases ... Dicho esto, ¿con qué frecuencia tiene 2 servicios wcf que satisfacen la misma interfaz pero que se implementan de manera diferente?¿Por qué el servicio .NET WCF requiere la interfaz
Otro comentario, el MSDN recomienda encarecidamente que hacer esto:
MyService service = new MyService();
try {
service.DoWork();
}
catch(Exception) {}
finally {
service.Close();
}
Así que digamos que si estoy para inyectar mi servicio con el uso de su interfaz de la siguiente manera:
public MyComponent : IDisposable
{
readonly IMyService service = null;
public MyComponent(IMyService service) {
this.service = service;
}
public DoWork()
{
//some additional code.
this.service.DoWork();
}
public void Dispose()
{
//The Interface does not have the Close method,
//So doing this defeats the whole purpose of polymorphysm
(this.service as MyService).Close(); //Silly.
}
}
¿Cómo se toma la ventaja de la interfaz con WCF?
En realidad, hay al menos una cosa que te detiene: la herencia. Puede aplicar un [ServiceContract] en una interfaz que hereda de múltiples interfaces, también se aplicará [ServiceContract], haciendo que los contratos de servicio sean modulares. Si aplica un [ServiceContract] a una clase, no puede heredar ni heredarse: está atascado con cualquier contrato que la clase misma defina. – Suncat2000