Asp.net mvc 3 业务逻辑应该走向何方?

Asp.net mvc 3 业务逻辑应该走向何方?,asp.net-mvc-3,architecture,saas,Asp.net Mvc 3,Architecture,Saas,我正在开发一个将使用ASP.NETMVC4和SQLServer的Saas应用程序。我计划有一个数据层(使用EF5)、一个服务层(可能只有RESTful服务)、一个DTO层和Web UI层。稍后,我计划将此应用程序扩展到移动平台,适用于Android和iPhone。。。也许是windows平板电脑 通常,人们会为包含业务规则的域对象创建一个单独的层。然而,在我的情况下,如果我这样做了,那么我将不得不再次为android复制规则。。。iphone也是如此。因此,我想在服务层本身中包含业务规则。然而,

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

通常,人们会为包含业务规则的域对象创建一个单独的层。然而,在我的情况下,如果我这样做了,那么我将不得不再次为android复制规则。。。iphone也是如此。因此,我想在服务层本身中包含业务规则。然而,不管出于什么原因,这感觉都不对


对此有什么建议吗?

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

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

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

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

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

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

您说过您有一个服务层。业务逻辑应该在其背后

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

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

您说过您有一个服务层。业务逻辑应该在其背后

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

其中表示层为MVC4、Android、IPhone等。它们可以共享相同的DTO,但序列化方式不同。

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


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


为什么要复制android的规则?业务规则在域中,除非您谈论的是“表示逻辑”。您应该有一个包含业务对象和关联业务逻辑的域层。然后其他层引用它。最初所有内容都将在.net中编写。如果我在一个单独的业务层中编写规则,我是否能够在android或iPhone操作系统中使用相同的DLL?您能否给出一个在不同应用程序中强制执行的“业务规则”的示例?例如:当创建一个新的用户帐户时,他们应该检查系统以确保用户名不存在。这只是一个简单的规则,但可能会有更复杂的规则存在于一个地方,并且可以被不同平台上的不同应用程序访问。为什么你要复制android的规则?业务规则在域中,除非您谈论的是“表示逻辑”。您应该有一个包含业务对象和关联业务逻辑的域层。然后其他层引用它。最初所有内容都将在.net中编写。如果我在一个单独的业务层中编写规则,我是否能够在android或iPhone操作系统中使用相同的DLL?您能否给出一个在不同应用程序中强制执行的“业务规则”的示例?例如:当创建一个新的用户帐户时,他们应该检查系统以确保用户名不存在。这只是一个简单的规则,但可能有更复杂的规则应该存在于一个地方,并且可以由不同平台上的不同应用程序访问。