我遇到了一个架构决策问题:我们即将构建一个新的应用程序,并且我们已经决定我们将使用ASP.NET MVC和实体框架(可能首先是数据库)。在最初的情况下,我们只会为普通浏览器构建一个 Web 应用程序,但将来我们可能会添加移动应用程序。(SOA?)
我现在的问题是构建应用程序架构的最佳方式是什么?
这是正确的吗?
- Mvc项目
- 模型
- 看法
- 控制器
- DAL项目
- 包含 edmx 和 T4 模板
我一直在寻找示例、模式和最佳实践,但似乎找不到合适的东西。
谢谢!
我遇到了一个架构决策问题:我们即将构建一个新的应用程序,并且我们已经决定我们将使用ASP.NET MVC和实体框架(可能首先是数据库)。在最初的情况下,我们只会为普通浏览器构建一个 Web 应用程序,但将来我们可能会添加移动应用程序。(SOA?)
我现在的问题是构建应用程序架构的最佳方式是什么?
这是正确的吗?
我一直在寻找示例、模式和最佳实践,但似乎找不到合适的东西。
谢谢!
我通常构建解决方案的方式(适用于 NuGet 的编辑)
依赖关系沿着这个结构向上流动,即上面的东西可能会引用下面的东西,但反之则不然。每个项目我也会有一个单独的测试项目。在某些情况下,我会为使用 NuGet 打包并托管在本地存储库中的 Web/常规类使用外部共享库。
对于移动设备,如果您通过网络访问,我会使用 jQuery Mobile 和移动感知视图引擎将其直接构建到网站中。如果您正在考虑本地化,那么我将添加一个 WebAPI 层,该层可能会或可能不会与网站共享相同的视图模型以进行 API 交付,并在此结构之外针对 API 开发移动应用程序。API 很可能有自己的模型,并位于业务层之上的单独堆栈中。在我当前的项目中,我们将数据放在单独的解决方案中,并在单独的解决方案中开发 API 和网站,通过 NuGet 包共享模型。
听起来您的团队还没有足够的信息来做出决定。我知道这就是你在这里问这个问题的原因,但你不应该依赖你得到的任何答案。ASP.NET MVC 和 EF对您来说可能是一个很好的解决方案,但您不应该选择它,除非您至少完成过 Nerd Dinner 或Music Store教程。
完成此操作后,您将能够回答自己有关架构的问题,并且可能还会发现一些其他问题。
基本策略可能包含以下内容:
首先,您必须决定您希望如何实现您网站的移动版本。基本上你有两个选择:
通常我使用3个项目
我认为您选择了正确的应用程序架构,我们也在我们的一个项目中使用了相同的应用程序架构......
MvcProject
Model
View
Controller
DAL project
Holds edmx and T4 templates
请记住,最佳架构与预算和时间表直接相关。
MVC 将比普通的 asp.net 花费更多:
当您说 DAL 项目时,我假设您的意思是常规的 asp.net。如果是这种情况,那么:
在移动开发方面,您为网站选择什么并不重要。您的移动应用程序应使用设备的本地语言(IOS、Android 等)开发。然后您通过 SSL 和 JSON 与应用程序通信。