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

use*_*510 5 .net c# architecture asp.net entity-framework

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

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

请问

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

谢谢

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

bry*_*mac 4

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

ASP.net MVC 非常适合您的 Web UI。如果您要使用 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 是相当标准的。如果您需要最终控制并且习惯于直接 SQL,另一个选择是纯 T-SQL。

将 Web UI (MVC) 与业务层 (web-api) 分离的一个好处是,您可以独立分离角色并进行扩展,即使它们最初恰好驻留在同一角色/计算机上。此外,客户端 html/javascript 代码可以对 web-api 进行 ajax 样式调用。因此,您需要“注册”(配置)web-api 服务器的端点。如果您稍后缩放/移动它,则不会发生代码更改 - 您的代码与第一天的代码完全分离。

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

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