我可以对一个暴露我的业务对象的复杂WCF服务做一些澄清.比方说,我有4个对象:contact,organisation,project和letter.
是创建我的服务的最佳方式:
非常感谢,
克里斯
根据接口隔离原则,您可能想要考虑拆分这些东西.
一种典型的方法是每个对象类型具有一个接口(例如,一个"服务") - 例如,一个接口用于Contact具有所需的所有操作并且对于联系人等有用.
当然,您可能还有处理多种不同类型对象的方法 - 这些方法在特定服务合同中有点棘手.
此外,使用WCF,您可以轻松地拥有单个服务实现类,然后一次又实现多个这些接口 - 例如,使用公共代码或常见模式.
但我想重新考虑您的服务合同并将其转换为更小,更易于管理的块是个好主意.
更新:
如果您的服务实现类实现了四个服务契约,那么您必须像这样配置它:
<services>
<service name="YourNamespace.YourServiceImplementation">
<host>
<baseAddresses>
<add baseAddress="http://YourServer/MyServices/" />
</baseAddresses>
</host>
<endpoint name="Contact"
address="Contact"
binding="basicHttpBinding"
contract="YourNamespace.IContactService" />
<endpoint name="Letter"
address="Letter"
binding="basicHttpBinding"
contract="YourNamespace.ILetterService" />
<endpoint name="Organisation"
address="Organisation"
binding="basicHttpBinding"
contract="YourNamespace.IOrganisationService" />
<endpoint name="Project"
address="Project"
binding="basicHttpBinding"
contract="YourNamespace.IProjectService" />
<endpoint name="mex"
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
现在,您的每项服务都可在特定端点使用:
IContractService可以到达http://YourServer/MyServices/ContactILetterService可以到达http://YourServer/MyServices/Letter等等....
对于每个地址,您现在可以从客户端添加服务引用 - 仅添加您真正需要的服务引用.一个应用程序可能只需要一个服务,另一个可能需要两个或三个等.
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |