[英]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.