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

时间:2013-09-12 20:06:54

标签: c# wcf architecture

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

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

或者,我们可以在服务中创建类的分组。例如,一个服务包括所有数据实体的类(用户,订单,客户等)。

或介于两者之间。

我可能误解了这些应该如何相关或者在错误的地方寻找,但我找不到任何指导。

许多服务都是个坏主意吗?他们每个人都有很大的开销吗?如果我们对它们进行分组并稍后想要更改分组,那会是一个问题吗?

2 个答案:

答案 0 :(得分:3)

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

它是一组类似CRUD的服务,还有很多添加,更新,删除? WebAPI可能是WCF的一个很好的轻量级替代品。额外的好处是,如果您将该用例视为有价值的东西,您可以使更多的消费者(不仅仅是.NET)可以访问这些服务。

我会看看您如何看待使用您服务的消费者。我没有看到任何额外的开销成本,有一个单片机和许多小型服务。从应用程序池的角度来看,甚至可能有利于拥有多个较小的服务。

老实说,我认为组织服务的方式不对。你正在考虑它的事实足以让我相信你不会搞砸它。

答案 1 :(得分:1)

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

编辑:

我应该提到OData并不一定是灵丹妙药,事实上,一些用例会更多地用于实现AutoMapper(nuget包)的DTO(数据传输对象),但我是OData的忠实粉丝。 / p>

其他编辑:

我知道DTO和AutoMapper的代码更加详细,但我一直在思考从Xamarin Mobile的角度来看,那些DTO类直接进入你的Mobile项目,使用你的服务进行映射变得轻松快捷,再加上你获得大量代码重用。特别是如果您需要在SQLLite中的移动设备上进行本地数据缓存。