【问题标题】:application architechture with MVC, WCF, EF使用 MVC、WCF、EF 的应用程序架构
【发布时间】:2012-08-25 19:13:35
【问题描述】:

我正在开发一个网络应用程序,后来我们计划开发并提供它的移动应用程序。我不是一个很有经验的人,但只是根据我的理解计划拥有这种架构:

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

请提问

  1. 这个架构好吗?
  2. 把WCF作为业务层和服务层好不好?
  3. 我们应该在哪一层实现哪些模式?
  4. 数据验证和安全性是 MVC 正确的地方吗?

谢谢

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

【问题讨论】:

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


    【解决方案1】:

    您所描述的是一个非常现代且优秀的 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 验证后端和逻辑(应该是您的大部分逻辑)。

    【讨论】:

    • 谢谢@byanmac,我不知道 web api。你能指导我设计它的安装位置以及它将取代什么吗?如果可能的话,请回复我其他编号的问题。
    • 它将取代 WCF 中间层。这将是您的前端 Web UI 角色使用的 REST 端点。
    • 谢谢。我如何能够直接为其他客户端访问它,例如不是在 MVC 中开发的移动应用程序?就像它是不是使用原生浏览器语言(如 html 或 html5)的 Android 应用程序?
    • 更新了更多关于 web api、缩放和移动的拱指南。
    • 让服务层调用业务层(有分离)意味着您还可以在过程中测试业务层(在单元测试中直接新建业务层)。您还应该强烈考虑 MVC4 和 webapi - 它已发布:asp.net/mvc
    猜你喜欢
    • 2010-10-17
    • 1970-01-01
    • 2011-12-10
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多