建筑的决定:ASP.NET MVC与实体框架(Architectural decisions: AS

2019-07-29 07:58发布

我有一个架构决策的问题:我们要建立一个新的应用程序,我们已经决定,我们将使用ASP.NET MVCEntity Framework(数据库第一可能)。 在第一fases我们只建立定期浏览器的Web应用程序,但在未来,我们可能会增加移动应用程序。 (SOA?)

我的问题是,现在这将是建立应用程序体系结构的最佳方式?

这是否是正确的?

  1. MvcProject
    • 模型
    • 视图
    • 调节器
  2. DAL项目
    • 持有EDMX和T4模板

我一直在寻找的例子,模式和最佳实践,但我似乎无法找到适合恰到好处。

谢谢!

Answer 1:

的方式,我通常构建解决方案,我( 编辑适合的NuGet)

  1. 网站(MVC)
    • 控制器
    • 查看
    • 内容(脚本,CSS,图像等)
  2. 演示模式(适用于简单,这个项目将在网站上嵌入)
    • 视图模型
    • 模型映射器
  3. 商业逻辑
    • 规则
    • 本地扩展(Web和一般)
  4. 数据(如果复杂,使用每个上下文/回购/模型分开的子文件夹)
    • 实体模型
    • 数据上下文和配置
  5. 网络图书馆(通过本地的NuGet或许可以作为单独的解决方案)
    • 扩展(以MVC /网络类)
    • 辅助类=属性
  6. 通用库(也许是作为单独的可通过当地的NuGet解决方案)
    • 扩展
    • 辅助类

依赖流了这个结构,即,上面的事可能会引用下面的事情,而不是相反。 我也有每个项目单独的测试项目。 在某些情况下,我使用的网络/普通类打包带的NuGet并在本地存储库外部托管,共享库。

对于移动,如果你正在通过网络去,我会直接构建到使用jQuery Mobile和移动感知的视图引擎的网站。 如果你想人,那么我补充一点,可能会或可能不会有相同的看法模型作为网站的API交付和开发针对API这个结构之外的移动应用的WebAPI层。 最有可能的API有它自己的模式和坐落在一个独立的堆栈业务层以上。 在我当前的项目,我们有一个单独的解决方案中的数据,并正在制定单独的解决方案的API和网站,通过的NuGet包共享模式。



Answer 2:

这听起来并不像你的球队有足够的信息来作出决定呢。 我知道,这就是为什么你在这里问的问题,但你不应该依赖于你得到任何答复。 ASP.NET MVC和EF 可能是你一个很好的解决方案,但你不应该没有至少已经经过书呆子晚餐或工作选择它的音乐商店教程。

你这样做之后,你就可以回答关于建筑你自己的问题,并可能会发现一些其他问题也是如此。



Answer 3:

一个基本的策略可能包含以下内容:

  • 数据项目
    • EF型号
    • 的entites / T4代
  • 逻辑专案
    • 应用程序规则
    • 逻辑不与数据的呈现
  • 现场项目
    • 呈现/聚集逻辑(在控制器/观看次数)
    • 查看
    • 脚本/资产
    • 模型(控制器和视图之间的通信只)
  • 移动项目
    • 同样的东西,网站,但对于移动目标


Answer 4:

首先你必须决定如何你想实现你的网站的移动版本。 基本上,你有两个选择:

  • 为您的移动网页不同的视图/控制器。 该解决方案是最昂贵的,但也是最灵活的。 (看手机支持MVC 4)
  • 为您的网站(响应布局http://jquerymobile.com/ )平时我喜欢这个选项。

通常情况下我使用3个项目

  • DAL
    • 包含EDMX,T4模板
  • 服务
    • 服务类与CRUD操作(我不使用存储库,因为他们是矫枉过正)
    • 视图模型
  • 卷筒纸
    • 控制器,视图,...


Answer 5:

我想,你选择了一个正确的应用架构,我们也使用了相同的应用程序架构在我们的项目之一...

MvcProject
Model
View
Controller

DAL project
Holds edmx and T4 templates


Answer 6:

请记住,最好的建筑是直接与预算和时间相关。

MVC将花费比普通asp.net更多:

  • MVC迫使开发者在任何时候都使用3层
  • MVC开发人员更贵,更难获得

我假设你的意思定期asp.net时,你说DAL项目。 如果是这种情况,那么:

  • ASP.NET开发比MVC快
  • ASP.NET网站将允许您使用更复杂的第三方电网等
  • 在美国广泛使用人才

在问候移动开发不要紧,你选择什么样的网站。 您的移动应用程序应该使用设备的母语(IOS,安卓等)进行开发。 然后你通过SSL和JSON应用程序通信。



文章来源: Architectural decisions: ASP.NET MVC & Entity Framework