C# MVC的服务层

C# MVC的服务层,c#,asp.net,asp.net-mvc,architecture,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Architecture,Asp.net Mvc 5,我的MVC的控制器动作越来越大。我想创建一个服务层,以便将代码移动到那里。其思想是使用可靠的原则:控制器使用服务层获得域模型,然后将其转换为视图模型 我的问题很简单:我的服务层应该是一个新的装配项目,它将与我的MVC项目一起进行,还是应该只是我已经存在的装配MVC项目中的一个类 我的方法类似于下面的方法,但不幸的是,本文没有确切解释服务层是如何定义的: < P>我会考虑将服务层分开。 服务可以是一个基于接口的对象,它可以在应用程序的内存中实现,也可以通过SOAP、REST、RCP-XML或任何

我的MVC的控制器动作越来越大。我想创建一个服务层,以便将代码移动到那里。其思想是使用可靠的原则:控制器使用服务层获得域模型,然后将其转换为视图模型

我的问题很简单:我的服务层应该是一个新的装配项目,它将与我的MVC项目一起进行,还是应该只是我已经存在的装配MVC项目中的一个类

我的方法类似于下面的方法,但不幸的是,本文没有确切解释服务层是如何定义的:

< P>我会考虑将服务层分开。

服务可以是一个基于接口的对象,它可以在应用程序的内存中实现,也可以通过SOAP、REST、RCP-XML或任何其他方式进行分布式和远程访问。控制器/客户机不需要知道或关心是否有基于接口的客户机程序

依赖注入、基于接口的解决方案将允许您成对注入客户机和服务实现,这样,如果您更改访问服务的方式,控制器就不必受到干扰


控制器通常与视图紧密相连。视图来来往往,但服务往往保持不变。服务应该映射到可以跨应用程序共享的业务功能

>P>我会考虑将服务层分成单独的一个。 服务可以是一个基于接口的对象,它可以在应用程序的内存中实现,也可以通过SOAP、REST、RCP-XML或任何其他方式进行分布式和远程访问。控制器/客户机不需要知道或关心是否有基于接口的客户机程序

依赖注入、基于接口的解决方案将允许您成对注入客户机和服务实现,这样,如果您更改访问服务的方式,控制器就不必受到干扰

控制器通常与视图紧密相连。视图来来往往,但服务往往保持不变。服务应该映射到可以跨应用程序共享的业务功能

我的服务层应该是一个新的组装项目吗

是的,应该是这样。其他UI将来可能会使用它

我的服务层应该是一个新的组装项目吗



是的,应该是这样。其他用户界面可能会在将来使用它……

这是一个意见问题,因此您可能会在@RGraham上得到更好的答案。关于论坛,这是正确的,但我认为它应该在一个单独的集合中。现在,您可能只有一个UI,但是假设您想要移动,那么如果该服务层位于具有MVC的程序集中,您将无法重用该服务层。把它分开还有其他好处,谢谢@RGraham&ken4z。所以,如果我选择创建一个新的程序集,它应该是一个库类吗?这是一个意见问题,所以你可能会在@RGraham上得到更好的答案,关于论坛是正确的,但我会说它应该在一个单独的程序集中。现在,您可能只有一个UI,但是假设您想要移动,那么如果该服务层位于具有MVC的程序集中,您将无法重用该服务层。把它分开还有其他好处,谢谢@RGraham&ken4z。所以,如果我选择创建一个新的程序集,它应该是一个库类吗?谢谢!我想你的意思是我必须在一个新的项目类库中声明我的服务层。对吗?接口必须共享,但客户端和服务器的实现应该是单独的DLL。恐怕我不明白。我是MVC新手。我的解决方案有一个最初使用ASP.Net Web应用程序模板的程序集。为了创建这个新的服务层程序集,我考虑选择模板类库。这是正确的做法吗?对不起,我对.NET不太了解。我认为它应该是一个单独的DLL,您可以添加进去,就像第三方库一样。除非提供者是你。谢谢!我想你的意思是我必须在一个新的项目类库中声明我的服务层。对吗?接口必须共享,但客户端和服务器的实现应该是单独的DLL。恐怕我不明白。我是MVC新手。我的解决方案有一个最初使用ASP.Net Web应用程序模板的程序集。为了创建这个新的服务层程序集,我考虑选择模板类库。这是正确的做法吗?对不起,我对.NET不太了解。我认为它应该是一个单独的DLL,您可以添加进去,就像第三方库一样。除非提供程序是您。在这种情况下,新程序集是库类还是我应该选择其他选项?库类。向前看,该服务层的某些部分可以通过web服务公开。您指的是一个类库:perfectYou可以将您的数据层注入服务层,确保它是松散耦合的。例如,数据库的更改不应导致服务的任何更改
在这种情况下,新程序集是库类还是我应该选择其他选项?库类。向前看,该服务层的某些部分可以通过web服务公开。您指的是一个类库:perfectYou可以将您的数据层注入服务层,确保它是松散耦合的。例如,数据库的更改不应引起服务层的任何更改。