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
C# WCF服务-分组类的最佳实践_C#_Wcf_Architecture - Fatal编程技术网

C# WCF服务-分组类的最佳实践

C# WCF服务-分组类的最佳实践,c#,wcf,architecture,C#,Wcf,Architecture,我们正在规划我们的架构,并考虑如何将我们的类分组到WCF服务中 我们可以为每个类创建一个服务,也可以创建紧密的类集合。例如,一个服务用于处理用户数据。这将导致相当多相对较小的服务 或者,我们可以将类分组到服务中。例如,一个服务包含所有数据实体用户、订单、客户等的类 或者介于两者之间 我可能有一个关于这些应该如何联系的误解,或者在错误的地方寻找,但我找不到任何指导 有很多服务是个坏主意吗?他们每个人的开销都很大吗?如果我们确实对它们进行了分组,后来又想更改分组,这会是一个问题吗?如果您正在考虑向客

我们正在规划我们的架构,并考虑如何将我们的类分组到WCF服务中

我们可以为每个类创建一个服务,也可以创建紧密的类集合。例如,一个服务用于处理用户数据。这将导致相当多相对较小的服务

或者,我们可以将类分组到服务中。例如,一个服务包含所有数据实体用户、订单、客户等的类

或者介于两者之间

我可能有一个关于这些应该如何联系的误解,或者在错误的地方寻找,但我找不到任何指导


有很多服务是个坏主意吗?他们每个人的开销都很大吗?如果我们确实对它们进行了分组,后来又想更改分组,这会是一个问题吗?

如果您正在考虑向客户机提供数据,那么您可能只想查看OData以进行纯数据传输,然后在OData服务上提供服务方法以满足任何特殊处理需求。那将是我的建议。我见过一些非常糟糕的WCF实现,因为它们将WCF用于数据传输和处理。OData拥有大量不同编程语言的客户端库。通过使用OData和拦截器,您可以节省大量的编码时间

编辑:

我应该提到,OData不一定是万灵药,事实上,一些用例会更倾向于使用AutoMapper nuget包实现DTO数据传输对象,但我非常喜欢OData

附加编辑:


我知道DTO和AutoMapper在代码上有点冗长,但我一直从Xamarin Mobile的角度思考,这些DTO类直接进入到您的移动项目中,使用您的服务进行映射变得轻松快捷,而且您可以获得大量代码重用。特别是当您需要在SQLLite中的移动设备上进行本地数据缓存时。

如果您正在考虑向客户端提供数据,您可能希望只为纯数据传输而查看OData,然后在OData服务上使用服务方法来满足任何特殊的处理需要。那将是我的建议。我见过一些非常糟糕的WCF实现,因为它们将WCF用于数据传输和处理。OData拥有大量不同编程语言的客户端库。通过使用OData和拦截器,您可以节省大量的编码时间

编辑:

我应该提到,OData不一定是万灵药,事实上,一些用例会更倾向于使用AutoMapper nuget包实现DTO数据传输对象,但我非常喜欢OData

附加编辑:


我知道DTO和AutoMapper在代码上有点冗长,但我一直从Xamarin Mobile的角度思考,这些DTO类直接进入到您的移动项目中,使用您的服务进行映射变得轻松快捷,而且您可以获得大量代码重用。特别是当您需要在SQLLite中的移动设备上进行本地数据缓存时。

我将确定我的逻辑的哪些部分需要为服务的消费者提供

它会是一组类似CRUD的服务,大量的添加、更新和删除吗?WebAPI可能是WCF的一个很好的轻量级替代品。另外一个好处是,如果您将该用例视为有价值的东西,那么您将使更多的消费者能够访问这些服务,而不仅仅是.NET开箱即用

我会看看你是如何看待你的消费者使用你的服务的。我看不到一个单一服务与许多小型服务相比会产生任何额外的管理费用。从应用程序池的角度来看,拥有多个较小的服务甚至可能是有利的


老实说,我不认为有一种组织服务的错误方式。事实上,你正在考虑这件事,这足以让我相信你不会把事情搞砸

我将确定我的逻辑的哪些部分需要提供给服务的消费者

它会是一组类似CRUD的服务,大量的添加、更新和删除吗?WebAPI可能是WCF的一个很好的轻量级替代品。另外一个好处是,如果您将该用例视为有价值的东西,那么您将使更多的消费者能够访问这些服务,而不仅仅是.NET开箱即用

我会看看你是如何看待你的消费者使用你的服务的。我看不到一个单一服务与许多小型服务相比会产生任何额外的管理费用。从应用程序池的角度来看,拥有多个较小的服务甚至可能是有利的


老实说,我不认为有一种组织服务的错误方式。事实上,你正在考虑这件事,这足以让我相信你不会把事情搞砸

谢谢,但我还是不清楚。我们将有一组数据实体,每个实体都需要CRUD。我们希望为这些创建一个基类来处理公共元素,我认为基类和它的所有子类将在一个服务中使用,并且我们
'd需要处理扩展,因为通过使用适当的实例上下文模式在多个实例中运行该服务,它会被大量使用。然后,我们将为类似的业务功能集合等提供其他服务。这些是Windows工作流服务吗?查找请求/响应模式。可以通过IIS处理扩展,然后使用负载平衡器处理多个服务器。您希望使服务调用尽可能原子化,因此不需要维护会话或与同一服务器的连接。RequestDoWork、DoWork、return ResponseDoWork。服务表示层将是Web UI。我想我现在明白了。只有那些需要向表示层公开的类/服务才应该在WCF中。其他类只在一个或多个类库中。对吗?WCF可以直接打电话给他们而不用担心WCF。正确!只需要通过WCF公开需要由代码访问的方法,否则这些代码将无法访问您自己的类库中的方法。谢谢,但是,我仍然不清楚是否为每个对象客户、订单、,发票等,或一对所有或之间的某种分组是正确的方式。谢谢,但我仍然不清楚。我们将有一组数据实体,每个实体都需要CRUD。我们希望为这些元素创建一个基类来处理公共元素,我认为基类和它的所有子类将放在一个服务中,我们需要处理扩展,因为通过使用适当的实例上下文模式在多个实例中运行该服务,它将被大量使用。然后,我们将为类似的业务功能集合等提供其他服务。这些是Windows工作流服务吗?查找请求/响应模式。可以通过IIS处理扩展,然后使用负载平衡器处理多个服务器。您希望使服务调用尽可能原子化,因此不需要维护会话或与同一服务器的连接。RequestDoWork、DoWork、return ResponseDoWork。服务表示层将是Web UI。我想我现在明白了。只有那些需要向表示层公开的类/服务才应该在WCF中。其他类只在一个或多个类库中。对吗?WCF可以直接打电话给他们而不用担心WCF。正确!只需要通过WCF公开需要由代码访问的方法,否则这些代码将无法访问您自己的类库中的方法。谢谢,但是,我仍然不清楚是否为每个对象客户、订单、,发票等等,或者一对一,或者介于两者之间的某种分组是正确的方法。