为什么.NET WCF服务所需要的接口 [英] Why does .net WCF Service require the Interface

查看:181
本文介绍了为什么.NET WCF服务所需要的接口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

不像ASMX实施WCF需要为你实现它的界面。我不太明白,设计背后的原因。接口为2类之间的合同......有了这样说,你经常有satisfry到相同的接口,但正在实施不同的2 WCF服务?

Unlike the asmx implementation the wcf requires for you to implement it's interface. I do not quite understand the reason behind that design. Interface is a contract between 2 classes...With that being said, how often do you have 2 wcf services that satisfry to the same interface but being implemented differently?

另一个意见,在MSDN强烈建议要做到这一点:

Another comment, the msdn strongly recommends to do this:

   MyService service = new MyService();

   try {

      service.DoWork();

   }
   catch(Exception) {}
   finally {
      service.Close();
   }

所以我们可以说,如果我到我的服务使用是这样的接口注:

So let's say if I am to inject my service with using it's interface like this:

   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?

How do you take the advantage of the interface with WCF?

推荐答案

没有,WCF的不要求你有一个接口,并实现它。

No, WCF does NOT require you to have an interface and implement it.

这只是普遍的最佳实践这样做 - 但你不知道的必须后,如果您不希望

It's just generally accepted best practice to do so - but you don't have to, if you don't want to.

如果你愿意,你可以把你的 [的ServiceContract] 上有许多 [OperationContract的] 服务方法 - 没有什么这样做阻止你。

If you want to, you can put your [ServiceContract] on a concrete class that has a number of [OperationContract] service methods - there's nothing stopping you from doing so.

但同样:它的普遍接受和preached使用一个接口来分离出实际的合同作为一个接口(这样你就可以如嘲笑它测试等)的最佳实践

But again: it's generally accepted and preached best practice to use an interface to separate out the actual contract as an interface (so you can e.g. mock it for testing etc.).

这篇关于为什么.NET WCF服务所需要的接口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆