将ASP.NET MVC Standard应用程序转换为N层应用程序

时间:2015-06-21 13:31:49

标签: c# asp.net-mvc design-patterns

我正在处理一个我正在使用 ASP.NET MVC 的应用程序。然后我开始了解n层架构,我认为这为应用程序提供了更大的灵活性,所以我开始将我的标准mvc项目转换为n层。我也有基于角色的观点。 在提出这个问题之前,我已经阅读了很多关于N层体系结构的在线文章,但每个人都拥有它自己的n层结构。我没有找到任何显示N层应用的标准化结构的例子。 我的应用程序的MVC结构如下:

Models :
- IBaseEntity
- IDeletableEntity
- IValidatableEntity
- File : IBaseEntity, IDeletableEntity, IvalidatableEntity
- User : IBaseEntitiy
Repositories :
- IRepo <T> where T : IBaseEntity
- IDeletableRepo <T> where T : IDeletableEntity
- IValidatableRepo <T> where T : IValidatableRepo
- Repo <T>: IRepo <T> where T : IBaseEntity
- DeletableRepo <T>: IDeletableRepo <T> where T : IDeletableEntity
- ValidatableRepo <T> : IValidatableRepo<T>where T : IValidatableRepo
- UnityOfWork //encapsulating all repos and providing acces to them
Services :
- IService <T>: where T : IBasEntity
- IValidatableService <T> where T : IValidatableEntity
- Service <T> : IService <T> : where T : IBasEntity
- ValidatableService <T>: IValidatableService <T> where T : IValidatableEntity

Controllers:
- FileController : Controller
- UserController : Controller

Views:
  File :
  - index.cshtml
  - view.cshtml
    Admin :
    - view.cshtml //Admin has more option while viewing page)
  User :
  - Profile.cshtml
    Admin :
    - AllProfile.cshtml

为了将其转换为N-Tier,我开始阅读这么多在线文章,但我仍然感到困惑。但是我实现了n层提出了以下结构:

Project Solution

 Project.BusinessObject
    Models

 Project.BusinessLogic
    Services

 Project.DataAccess
   Repositories

 Project.InversionOfControl
   Autofac

 Project.UserInterface
   Controllers
   ViewModels
   Views


我的n层应用程序的流程是:控制器 - &gt;服务 - &gt; Repoitory + AutoFac - &gt;模型
实际上我想发布一个图像,但我不能满足stackoverflow的10个声誉标准。
You can click here to see n-tier structure of my application
由于这是我第一次使用n层架构,我不确定应用程序是否架构良好。如果有人可以告诉我有关我做错的要点或需要进行某种修改的要点,那将是很有帮助的。

Some other questions if you could help me out :
Business object is same as a model ?
Business logics are methods for a business object ?

1 个答案:

答案 0 :(得分:1)

我是一个喜欢分层应用程序方法的人,原因如下。 MVC架构是一个分层应用程序。这意味着您的应用程序具有:

表示层,视图,

应用程序处理层,控制器和

数据管理层,模型。

大多数开发人员出于几个不同的原因使用N层应用程序结构。

  1. 能够使用Intranet在不同的服务器上运行应用程序的不同部分。

  2. 可以轻松更新其中一个层而无需重写其他层。

  3. 允许您在正确构建的情况下为应用程序构建新增功能。

  4. 至于灵活性,我发现n层的灵活性可能不那么灵活,想法是正确地分离你的层并将所有东西注入到其他层,如果你是新手创建这样的话,这可能是一个非常麻烦的考验。一个应用程序。如果您希望将数据与应用程序分开,可能会使您的数据层成为Web服务。这样,您的MVC应用程序就能够访问它,您的移动应用程序,桌面应用程序或您希望编写的任何其他应用程序也将如此。

    无论如何,多层主要是关于将应用程序扩展到多台机器,至于灵活性,我不确定您可以使用N-tier做什么,除了我列出的内容之外,您无法使用MVC结构。

    有一些好的n层架构的例子,以下是一些链接。

    http://www.codeproject.com/Articles/70061/Architecture-Guide-ASP-NET-MVC-Framework-N-tier-En

    https://visualstudiogallery.msdn.microsoft.com/74633fdf-0563-4c75-aca8-f69835e7f8ab

    http://www.orchardproject.net/