业务逻辑应该在哪里?

时间:2012-09-21 00:57:32

标签: asp.net-mvc-3 architecture saas

我正在使用一个将使用ASP.NET MVC 4&的Saas应用程序。 SQL Server。我计划拥有一个数据层(使用EF5),一个服务层(可能只有RESTful服务),一个DTO层和一个Web UI层。稍后,我计划将此应用程序扩展到移动平台,适用于Android和Android。 iPhone ......也许是Windows平板电脑。

通常,人们会为包含业务规则的域对象创建单独的层。但是,在我的情况下,如果我这样做,那么我将不得不再次为Android复制规则...而且再次为iphone复制规则。所以,我在考虑在服务层内部拥有业务规则。但是,无论出于什么原因感觉不对。

对此有何建议?

3 个答案:

答案 0 :(得分:2)

表示层必须是它的样子......只是一个表示层。您的业​​务规则不应该存在。 我知道您的DTO将是为您的客户提供的对象(android,iphone,web等),因此无需将业务对象传输到UI。保持业务层在服务器端隔离,让客户使用它只是为了获取他们需要显示的数据。

我的建议是使表示层与业务规则无关。使用此方法将使您的解决方案可扩展且易于扩展。是一种应用关注点分离的好方法。

这样说..您可能会担心如何在不同平台上共享您的DTO。我认为最好的方法是不用.NET对象提供表示层,因为您计划在表示层中使用不同的编程语言和技术。 JSON 和REST可以很好地解决您的问题。 我建议使用Asp.net Web Api来处理json对象。 Objective-c,Java和Javascript(适用于您的Web UI)可以使用这种对象。

答案 1 :(得分:1)

你说你有一个服务层。业务逻辑应该落后于它。

Business layer -> (shared business objects) -> service layer -> (shared DTOs) -> presentation layers

表示层是MVC4,Android,IPhone等。它们都可以共享相同的DTO但序列化不同。

答案 2 :(得分:0)

从性能角度来看,复制每个平台的规则是可行的方法(因为它将不同设备之间的处理分开)但是从维护,一致性等角度来看,您应该将业务规则放在工作流中。在服务层内/平行。

http://msdn.microsoft.com/en-us/library/ee658103.aspx