【发布时间】:2016-12-11 07:45:27
【问题描述】:
假设我在 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" 就能推断出合同类型是什么,因为它已经引用了 EmployeeService(它实现了指定服务合同的 IEmployeeService 接口)。我的端点中的这个合同属性是绝对必要的吗?如果是这样,我很想知道为什么。
【问题讨论】:
-
这个合同属性是否是必要的,因为 EmployeeService 可能会实现 MULTIPLE 合同?我可以看到这是必要的。