使用MVC5的企业级应用程序体系结构的最佳实践是什么?

哈代

我想知道基于MVC5的企业级体系结构的最佳实践是什么。我的意思是在一个解决方案中在多层或多个项目之间进行选择?也许是多个解决方案?任何好的示例项目?

哈代

由于我的问题在去年被访问了很多次,并且据我所知没有一个可靠的答案,因此我决定尽可能提供一个全面的答案。该答案基于一些实际项目经验,并且很少进行专家咨询:

  1. 首先,必须要注意的是,在软件设计过程中,没有什么是对与错。只要一种方法适用于您的项目并适合它,就可以了right,如果不能,那就可以了wrong在软件设计中没有严格的原则。Project needs and specifications但是,使用一般,它已被接受Design Patterns and Principles品牌更加突出robustreliable并且easy to maintain使您的代码loosely coupled and highly cohesive
  2. 整个故事Software Design and Architecture涉及如何轻松管理项目以及如何维护将来的更改。考虑哪种方法可以为您提供最佳答案。那将是最适合您的。不要想太多Professionalism您的项目会随着时间的增长而变得越来越成熟。因此,请考虑您的项目!
  3. 作为第一步,对于企业级应用程序体系结构,请始终尝试遵循Separation of ConcernsSoC这意味着您应该为项目的不同层使用不同的层。强烈建议使用不同的项目在你的解决方案Data Access LayerDomain EntitiesBusiness LayerPresentation Layer在MVC5项目,它是更好地使用Class Library ProjectData Access LayerDomain EntitiesBusiness Layer和MVC项目Presentation Layer
  4. Data Access Layer是面对数据库和数据库交互的项目。您可以Entity Framework在该项目中拥有所有或类似的实体。在数据库层之间具有单独的层意味着在更改项目数据仓库的情况下,唯一需要更改的就是更改此项目以及对的一些细微更改Business Layer解决方案中的所有其他项目均保持不变。因此,您可以轻松地从MS Sql迁移到Oracle或从Entity Framework迁移到NHibernate
  5. Domain Entities是用于定义所有解决方案级别的接口,类,枚举和变量的项目。这个项目在我的类和方法的整个解决方案中保持完整性。我整个解决方案中的所有类都是从该项目的接口继承的。因此,我有一个地方可以更改类或全局变量,这Easy to Maintain对我的解决方案来说意味着未来,并且对于新加入该项目的开发人员来说很容易理解。
  6. Business Layer是我放置所有业务逻辑(包括Business Entities和)的地方Business Services关于这一层的整个想法是在一个地方保留所有业务方法和交互。所有计算,对象修改以及有关数据的所有逻辑(包括保存,检索,更改等)都应在本节中进行。通过在项目中包含这一层,您可以同时拥有不同的使用者,例如一层本机MVCWeb API一层。或者,您可以根据不同的业务服务消费者规范提供不同的供稿。强烈建议避免将任何业务逻辑放入MVC层的控制器部分。在控制器内部拥有任何业务逻辑意味着您将表示层用作业务逻辑层,这违反了Separation of Concerns然后,从一个表示层更改为另一个表示层或让您的解决方案具有不同类型的使用者将不容易。最好使MVC中的控制器部分尽可能的小。控制器应仅具有与直接相关的逻辑和方法View Models有关更多信息,View Models请参阅部分7要记住的一件事,最好是Business Services根据您的解决方案对象或使用不同的Business Entities
  7. Presentation Layer在MVC解决方案中将是一个MVC项目。但是对于不同的消费者或技术,解决方案可以具有其他类型或一个以上的表示层。例如,您可能具有一层MVC层和一对一Web API的解决方案。通常,使用表示层将所有表示逻辑保留在其中。表示逻辑不应与业务逻辑或数据逻辑相关。那么问题是什么Presentation logic呢?Presentation logic与视图模型有关的逻辑。视图模型是为视图或页面定制的对象。在大多数情况下,业务对象不适合在视图中使用。另一方面,表示视图通常需要一些验证逻辑或表示逻辑,例如显示名称与原始对象名称不同。在这些情况下,最好将表示逻辑与业务逻辑分开,以使其易于独立地更改表示逻辑或业务逻辑,甚至易于切换表示层以用于不同的UI设计或更改业务逻辑以具有更多功能,而不必担心会受到任何干扰。表示逻辑。在使用MVC项目作为解决方案的表示层的情况下,所有视图模型都应放在ModelsMVC项目的部分中,而所有表示逻辑都应放在其中Controllers 项目部分。
  8. 最后要说的是,对于每个多层解决方案,您都需要用于对象到对象映射的框架,例如将业务实体转换为视图模型。有一些工具用于此目的,如AutoMapperBLToolkitEmitMapper

最后一句话:请发表评论并question评分answer以使其更好!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Fowler的“企业应用程序体系结构模式”是否仍然有意义?

单页JavaScript Web应用程序的体系结构?

桌面应用程序:体系结构框架?

AJAX MVC应用程序的体系结构

Spring如何适合我的应用程序体系结构?

退出WPF应用程序的最佳实践是什么?

使用CouchDB / PouchDB时应用程序的体系结构

适用于应用程序级集合的正确体系结构

搜索元数据的应用程序的体系结构

“与软件应用程序的目的特别相关的体系结构”是什么意思?

简单计时器应用程序的体系结构

企业应用程序的体系结构

移动应用程序(MVC除外)中使用的体系结构模式是什么?

企业级系统的单页应用程序

Android体系结构应用程序术语

Android-聊天应用程序的体系结构

C ++:具有API的应用程序体系结构

为什么不能在应用程序中转换体系结构?

Web应用程序的体系结构图是什么?

Symfony 2体系结构-最佳实践

在哪里解释了iOS应用程序的体系结构?

企业级应用程序中的事务

骨干Web应用程序体系结构-最佳实践

跨平台消息传递应用程序的体系结构

Git:更改我的应用程序体系结构

Azure移动服务应用程序的体系结构

使用 redux 和 redux-saga 作为中间件构建(文件夹结构)企业级 React Web 应用程序的最佳实践是什么?

在多对多关系中使用 Firebase 建模 SaaS 应用程序的最佳实践是什么

C# - 在 Windows 应用程序中使用 DB 时的最佳实践是什么?