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

本文关键字:应用程序 程序转换 应用 ASP NET MVC 标准 | 更新日期: 2023-09-27 17:57:28

我正在使用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层,我开始阅读许多在线文章,但我仍然感到困惑。然而,我实现了n层,得到了以下结构:

Project Solution
 Project.BusinessObject
    Models
 Project.BusinessLogic
    Services
 Project.DataAccess
   Repositories
 Project.InversionOfControl
   Autofac
 Project.UserInterface
   Controllers
   ViewModels
   Views


我的n层应用程序的流程是:控制器->服务->Repository+AutoFac->模型
事实上,我想发布一张图片,但我不能因为斯塔克沃斯的10个声誉标准
您可以单击此处查看我的应用程序的n层结构
由于这是我第一次使用n层架构,我不确定应用程序的架构是否良好。如果有人能告诉我我做错的地方或需要修改的地方,那将是一个很大的帮助。

如果你能帮我的话,还有其他一些问题:业务对象和模型是一样的吗?业务逻辑是业务对象的方法吗?

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

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

表示层、视图、

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

数据管理层,模型。

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

  1. 以便能够在intranet内的不同服务器上运行应用程序的不同部分。

  2. 使更新其中一个层变得容易,而无需重写其他层。

  3. 允许您在正确构建的情况下为应用程序构建附加组件。

至于灵活性,我发现n层的灵活性可能不那么灵活,其想法是正确地分离您的层,并将所有内容注入其他层,如果您是新创建此类应用程序的人,这可能是一个非常麻烦的折磨。如果您希望将数据与应用程序分离,可以将数据层作为web服务。这样一来,你的MVC应用程序就可以访问它,你的移动应用程序、桌面应用程序或你想要编写的任何其他应用程序也可以访问它。

无论如何,多层主要是将应用程序扩展到多台机器,至于灵活性,除了我列出的之外,我不确定你能用N层做什么,而不能用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/