MVC,WCF,EF的应用程序架构

时间:2012-08-31 00:19:01

标签: c# asp.net .net entity-framework architecture

我正在开发一个Web应用程序,之后我们计划开发并提供其移动应用程序。我不是很有经验,但只是基于我的理解计划有这个架构:

  1. 将直接与WCF通信的MVC Web项目前端 服务。
  2. 服务器端验证将使用数据注释在MVC模型上完成,然后数据将传递到WCF层。使用客户成员资格提供程序的安全性也将在MVC中实现。
  3. WCF层也可以像业务层一样工作。如果需要,它将与DAL通信,这是一个类库。
  4. 使用EF的DAL将与SQL Server *进行通信
  5. 问题

    1. 这个架构好吗?
    2. 将WCF用作业务层和服务层是否合适?
    3. 我们应该在哪个图层上实现哪些图片?
    4. 对于数据验证和安全性是MVC正确的地方吗?
    5. 由于

      修改 5. 单元测试是否合适?或者为了更好的测试,我应该做些改变吗?

1 个答案:

答案 0 :(得分:4)

您所描述的是一个非常现代和良好的Microsoft服务器堆栈。

ASP.net MVC对您来说是一个很好的网络用户界面。如果您使用asp.net MVC,您还应该查看业务层的asp.net webapi(新)。

http://www.asp.net/web-api

http://weblogs.asp.net/scottgu/archive/2012/02/23/asp-net-web-api-part-1.aspx

SQL Server和EF是相当标准的。另一个选项是纯T-SQL,如果你需要终极控制并且对直接sql感到满意。

将Web UI(MVC)与业务层(web-api)分离后,您可以分离角色并独立扩展,即使最初它们恰好位于同一个角色/机器上也是如此。此外,客户端html / javascript代码可以对web-api进行ajax样式调用。因此,您需要“注册”(config)web-api服务器的终点。如果您稍后进行缩放/移动,则不会更改代码 - 您从第一天开始就进行了彻底的分离。

移动设备(如果是厚应用)可以直接使用web-api。除非移动应用程序是使用嵌入式浏览器/ javascript解决方案的混合移动应用程序,否则它只是您MVC Web UI的小型消费者。

对于测试,您可以在其自己的命令行过程中自行托管web-api,并在可行的情况下模拟数据。这将允许您在没有后端的情况下验证Web UI。通过拥有业务层(由web api公开),您还可以验证后端和后端。逻辑(应该是你的逻辑的大部分)独立于UI。