WCF:使用局部类拆分复杂的Web服务?

Hus*_*lil 4 wcf web-services partial

我目前正在开发Web服务,该服务应公开相对大量的交互方式。

例如,客户端可能能够与Web服务进行交互,以管理数据库中的用户或项目。

为此,我创建了以下类:

  • 两个数据合同:IUsersServiceContract和IProjectsServiceContract
  • 两个服务合同接口:IUsersServiceContract和IProjectsServiceContract

我的问题如下:

创建两个不同的Web服务(每个都有各自的端点),而不是创建一个同时实现两个服务合同接口的大类,是否有意义?

请记住,实际上,我将拥有更多的服务合同接口来处理不同类型的数据。

据我了解,使用局部类(拆分为多个文件)将使我能够创建一个只有一个端点的大型Web服务。

这样做的缺点是不能将一个大类拆分为多个文件,即:如果开发人员“看不到大图”,则它较难维护,并且更容易出错。

另一种解决方案是为每个服务合同接口实现一个Web服务。

本质上,如果我具有X服务合同接口,那么最终会获得带有X端点的X Web服务。

您会选择哪种解决方案,为什么?

感谢您的输入 !

fae*_*ter 5

就我个人而言,我不会使用局部类来拆分一个类。巨大的激励性tgis拆分表明该类太大,需要重构。我认为局部类的主要目的是向自动生成的代码添加更改。

由于可以使用web.config中的命名行为来共享服务和端点配置,因此拆分服务应该不会那么麻烦。但是,应该通过功能分组来激发这种分裂。

在不知道您的服务的确切性质的情况下,听起来好像两个服务可能自然分离。一种用于与用户相关的操作,另一种用于面向项目的操作。

如果实现类超出了您认为合理的大小,我会考虑让单独的类(最好是接口)处理每个方法的内部逻辑,并让服务实现本身是一个浅层外观,它将自己的方法参数委托给正确的徽标实例

  • 感谢Faester,您的评论证实了我对部分课程的担忧。我也很感谢您的投入,我会按照您的指导方针进行操作。但是,有一个问题,“服务和端点可以使用web.config中的命名行为共享”是什么意思?(我只是习惯了WCF :))。我了解可以使用“行为”“配置”服务和端点,但是我不确定共享服务和端点意味着什么...?您是说可以分享自己的行为吗? (2认同)