繁体   English   中英

WCF-在指定服务名称和合同类型时存在冗余吗?

[英]WCF- redundancy in specifying service name and contract type?

假设我在IEmployService.cs中指定了一个服务合同,如下所示:

namespace MyNamespace {
    [ServiceContract]
    public interface IEmployeeService {
      /* ... */
    }
}

以及EmployeeService.svc中的实现文件:

namespace MyNamespace {
   public class EmployeeService: IEmployeeService {
       /* implements IEmployeeService fully */    
   }
}

现在,当我在Web.config文件中指定端点时,我已经看到每个人都这样做:

<system.serviceModel>
<services>
  <service name="MyNamespace.EmployeeService">
    <endpoint
      address="basic1"
      binding="basicHttpBinding"
      contract="MyNamespace.IEmployeeService"
      ></endpoint>
  </service>
</services>
<!-- other tags -->
<system.serviceModel>

似乎WCF能够无需指定contract="MyNamespace.IEmployeeService"就可以推断出合同类型是有其contract="MyNamespace.IEmployeeService" ,因为它已经引用了EmployeeService(该服务实现了用于指定服务合同的IEmployeeService接口)。 端点中的此合同属性是否严格必要? 如果是这样,我很想知道为什么。

至少部分是因为我的EmployeeService类不限于实现单个服务协定的接口。 假设我指定了一个新合同ISuperContract.cs:

namespace MultipleEndpointSample
{
    [ServiceContract]
    interface ISuperService
    {
        [OperationContract]
        void GetEmployeeName();
    }
}

然后在我的Web.config中定义合同属性:端点定义是非常必要的,我现在使用它来区分该端点将要满足的EmployeeService的WHICH子服务(实现两个服务)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM