2

我遇到了一个架构决策问题:我们即将构建一个新的应用程序,并且我们已经决定我们将使用ASP.NET MVC实体框架(可能首先是数据库)。在最初的情况下,我们只会为普通浏览器构建一个 Web 应用程序,但将来我们可能会添加移动应用程序。(SOA?)

我现在的问题是构建应用程序架构的最佳方式是什么?

这是正确的吗?

  1. Mvc项目
    • 模型
    • 看法
    • 控制器
  2. DAL项目
    • 包含 edmx 和 T4 模板

我一直在寻找示例、模式和最佳实践,但似乎找不到合适的东西。

谢谢!

4

6 回答 6

10

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

  1. 网站 (MVC)
    • 控制器
    • 意见
    • 内容(脚本、CSS、图像等)
  2. 演示模型(对于简单的项目,这将嵌入到网站中)
    • 查看模型
    • 模型映射器
  3. 商业逻辑
    • 规则
    • 本地扩展(Web 和常规)
  4. 数据(如果复杂,请为每个上下文/存储库/模型使用单独的子文件夹)
    • 存储库
    • 实体模型
    • 数据上下文和配置
  5. Web 库(可能作为可通过本地 NuGet 获得的单独解决方案)
    • 扩展(到 MVC/Web 类)
    • 助手类 = 属性
  6. 通用库(可能作为可通过本地 NuGet 获得的单独解决方案)
    • 扩展
    • 助手类

依赖关系沿着这个结构向上流动,即上面的东西可能会引用下面的东西,但反之则不然。每个项目我也会有一个单独的测试项目。在某些情况下,我会为使用 NuGet 打包并托管在本地存储库中的 Web/常规类使用外部共享库。

对于移动设备,如果您通过网络访问,我会使用 jQuery Mobile 和移动感知视图引擎将其直接构建到网站中。如果您正在考虑本地化,那么我将添加一个 WebAPI 层,该层可能会或可能不会与网站共享相同的视图模型以进行 API 交付,并在此结构之外针对 API 开发移动应用程序。API 很可能有自己的模型,并位于业务层之上的单独堆栈中。在我当前的项目中,我们将数据放在单独的解决方案中,并在单独的解决方案中开发 API 和网站,通过 NuGet 包共享模型。

于 2012-05-09T12:11:24.763 回答
2

听起来您的团队还没有足够的信息来做出决定。我知道这就是你在这里问这个问题的原因,但你不应该依赖你得到的任何答案。ASP.NET MVC 和 EF对您来说可能是一个很好的解决方案,但您不应该选择它,除非您至少完成过 Nerd Dinner 或Music Store教程。

完成此操作后,您将能够回答自己有关架构的问题,并且可能还会发现一些其他问题。

于 2012-05-09T12:10:44.280 回答
1

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

  • 数据项目
    • 英孚模型
    • 实体/T4代
  • 逻辑项目
    • 申请规则
    • 与数据呈现无关的逻辑
  • 现场项目
    • 表示/聚合逻辑(在控制器/视图中)
    • 意见
    • 脚本/资产
    • 模型(仅用于控制器和视图之间的通信)
  • 移动项目
    • 与站点相同的东西,但针对移动目标
于 2012-05-09T12:11:59.880 回答
1

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

  • 为您的移动页面创建单独的视图/控制器。这种解决方案是最昂贵的,但也是最灵活的。(查看 MVC 4 中的移动支持)
  • 为您的网站创建响应式布局 ( http://jquerymobile.com/ ) 通常我更喜欢这个选项。

通常我使用3个项目

  • 达尔
    • 包含 Edmx、T4 模板
  • 服务
    • 具有 CRUD 操作的服务类(我没有使用存储库,因为它们太过分了)
    • 查看模型
  • 网络
    • 控制器,视图,...
于 2012-05-09T16:34:45.393 回答
0

我认为您选择了正确的应用程序架构,我们也在我们的一个项目中使用了相同的应用程序架构......

MvcProject
Model
View
Controller

DAL project
Holds edmx and T4 templates
于 2012-05-09T12:03:37.377 回答
0

请记住,最佳架构与预算和时间表直接相关。

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

  • MVC 强制开发人员始终使用 3 层
  • MVC 开发人员更昂贵且更难获得

当您说 DAL 项目时,我假设您的意思是常规的 asp.net。如果是这种情况,那么:

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

在移动开发方面,您为网站选择什么并不重要。您的移动应用程序应使用设备的本地语言(IOS、Android 等)开发。然后您通过 SSL 和 JSON 与应用程序通信。

于 2012-05-09T12:13:36.297 回答