Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.NET WCF服务中组织大量方法的好方法是什么?_.net_Wcf - Fatal编程技术网

在.NET WCF服务中组织大量方法的好方法是什么?

在.NET WCF服务中组织大量方法的好方法是什么?,.net,wcf,.net,Wcf,我目前正在使用接口中定义的大量方法处理WCF服务。这些方法中的大多数都是简单的CRUD操作,使用实体框架具有一些逻辑,并且可以很容易地划分为功能区域。只有一个文件的代码行数接近1K,为了便于维护,我想将其拆分。我正在考虑以下事项: 将服务文件拆分为部分类。但它仍然是一个包含大量代码的单一类。尽管如此,我想这真的不是问题 使用标准错误处理和ObjectContext创建/销毁实现服务接口的单个类,但将调用路由到静态帮助器类。我以前做过,但不知怎么的,我觉得不干净 另外,是按功能区划分还是按CR

我目前正在使用接口中定义的大量方法处理WCF服务。这些方法中的大多数都是简单的CRUD操作,使用实体框架具有一些逻辑,并且可以很容易地划分为功能区域。只有一个文件的代码行数接近1K,为了便于维护,我想将其拆分。我正在考虑以下事项:

  • 将服务文件拆分为部分类。但它仍然是一个包含大量代码的单一类。尽管如此,我想这真的不是问题
  • 使用标准错误处理和ObjectContext创建/销毁实现服务接口的单个类,但将调用路由到静态帮助器类。我以前做过,但不知怎么的,我觉得不干净
另外,是按功能区划分还是按CRUD方法(group all gets Togets,creates together,等等)划分更好

在处理WCF服务时,这一定是一个非常常见的问题。组织WCF服务方法的好方法是什么

更新


最后,我决定将服务调用传递给内部静态类

如果操作可以按功能区域进行分组,那么它们应该是单独的服务,因为服务与任何其他类别一样应该具有单一责任=单一功能区域

通常,如果您的服务有很多操作,那么是时候考虑一下它的拆分了。而且,WCF服务通常只是一些逻辑的包装器,所以您可以创建包装逻辑的其他类的实例,或者在服务操作中使用静态类

编辑:


一般来说,我反对使用分部类来破坏一个大类——在我看来,这并不能提高可维护性。一旦一个类如此之大,以至于您正在寻找将其分解为多个文件的解决方案,这就意味着重构早就应该完成了。在最坏的情况下,当您的类做得太多时,我们可以称之为反模式:。

对于可维护性,使用分部类似乎是一个不错的选择。如果它们在功能上分开,那么可维护性就会得到改进,因为您只需要查看其中的一个或两个类

根据您的回答,仍然有一个包含许多方法的大型类这一事实并不是一个真正的问题。它应该是可维护的


但是,要了解@Ladislav,将它们分离成不同的服务对您有什么价值吗?我想不会,否则你会那样做的

这取决于方法的性质——它们是否容易按T函数分组?他们之间有相似之处吗?那么,想要将它们分开的原因是什么——可维护性、可更新性还是什么。答案会影响建议。它们可以很容易地按功能领域进行分组。拆分它们的原因是为了可维护性。大多数时候,当你开始考虑使用分部类时,因为你的类变得太大了,你知道是时候重构了。我大体上同意。然而,我可以看到,在web服务的情况下,可能有这样做的理由,我不认为它必然倾向于上帝对象。“在一个内部类中,它绝对是错误的。”薛定谔猫:这要看情况而定。如果您的服务只是围绕一些其他逻辑进行包装,并且它从一个功能区域公开方法,那么即使是包含许多方法的大型类也有意义。但是,如果该服务实际上从多个功能区域执行逻辑,那么它就和内部类一样糟糕。我看不到将其拆分为不同的服务有任何价值。目前,它没有那么多的方法,但是代码开始增长,我想在它变得太大之前进行重构。也许是时候拆分了。但您比我更了解自己的代码和环境,所以这是您的决定。