我目前正在开发一个Web服务,它应该公开相对大量的与之交互的方式。
例如,客户端可能能够与Web服务交互,以便管理数据库中的用户或项目。
为此,我创建了以下类:
我的问题如下:
创建两个不同的Web服务是否有意义,每个Web服务都有自己的端点,而不是创建一个实现两个服务合同接口的大类?
请记住,实际上我会有更多服务合约接口来处理不同类型的数据。
据我所知,使用部分类(拆分为多个文件)将允许我创建一个只有一个端点的大型Web服务。
这样做的缺点是处理多个文件中的一个大类拆分,即:如果开发人员“看不到大局”,则难以维护并且更容易出错。
另一种解决方案是实现每个服务合同接口一个Web服务。
从本质上讲,如果我有X服务合同接口,我最终会得到带有X端点的X Web服务。
您会选择哪种解决方案?为什么?
感谢您的投入!
答案 0 :(得分:4)
就个人而言,我不会使用部分类来分割类;激励tgis分裂的绝对规模表明这个类太大了,需要重构。在我看来,部分类的主要目的是为自动生成的代码添加更改。
由于可以使用web.config中的命名行为共享服务和端点配置,因此拆分服务不应该那么麻烦。但是,分裂应该通过功能分组来推动。
在不知道您服务的确切性质的情况下,听起来两个服务中可能存在自然分离;一个用于用户相关操作,一个用于面向项目的操作。
如果实现类的增长超出了你认为合理的大小,我会考虑让单独的类 - 或者更好的接口 - 处理每个方法的内部逻辑,并让服务实现它自己是一个浅层的外观,它将自己的方法参数委托给正确的logoc实例
答案 1 :(得分:1)
在您讨论 n 服务合同数量时,需要考虑的重要事项是与实施每项服务合同相关的成本。这里有一篇很好的博客文章,"Service Contracts Factoring and Design",虽然如果不是发布这篇文章的Juval Lowy,那么有人显然正在扯掉他(我指的是Juval的书 - “编程WCF服务”第93页)