В отличие от реализации asmx, wcf требует, чтобы вы реализовали его интерфейс. Я не совсем понимаю причину этого дизайна. Интерфейс - это контракт между двумя классами... С учетом сказанного, как часто у вас есть 2 wcf-сервиса, которые удовлетворяют одному и тому же интерфейсу, но реализуются по-разному?
Еще один комментарий, msdn настоятельно рекомендует сделать это:
MyService service = new MyService();
try {
service.DoWork();
}
catch(Exception) {}
finally {
service.Close();
}
Итак, скажем, если я должен ввести свою службу с использованием этого интерфейса следующим образом:
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.
}
}
Как вы используете преимущество интерфейса с WCF?