【问题标题】:Separating MVC project into separate projects using WCF使用 WCF 将 MVC 项目分离为单独的项目
【发布时间】:2012-05-02 10:53:54
【问题描述】:

我习惯于在单个 MVC 项目的两个不同 areas 中构建我的 CMS 和客户端站点。这个 MVC 项目引用了一个应用层(类库),它为 MVC 项目中的两个领域提供服务。 应用层引用了一个域层,然后它又引用了一个数据层(都在它们自己的单独的类库中)。 MVC 应用程序只知道应用程序层。

我开始渴望将 CMS 分离到它自己的应用程序中的好处,其中一些是:

  1. 从通常非常轻量级的客户端项目中获取相当大的 CMS 演示代码库。
  2. 当没有针对特定客户端的自定义功能时,不必重新构建相同的 CMS 代码库(通常不需要为新客户端更改 CMS)
  3. 能够在生产中升级 CMS,而不必担心影响网站(反之亦然)

为了做到这一点,根据我的初步研究,我发现我需要创建一个引用应用层的 WCF 应用程序。然后从这里开始,CMS MVC 应用程序和 Client MVC 应用程序将只与 WCF 层进行通信。

这种方法的缺点:

  1. 需要在托管环境中提供 3 个单独的应用程序。
  2. 不同应用程序之间的消息传递开销。

这是实现我想要的最简单的方法吗?谁能给我一些例子或类似情况的易于理解的案例研究?

【问题讨论】:

    标签: asp.net asp.net-mvc wcf n-tier-architecture


    【解决方案1】:

    基本上,您希望如何保留应用程序是您的选择。如果您希望稍后将您的业务逻辑公开为 Web 服务,那么您必须使用 WCF,以便您的 CMS 的业务逻辑独立于任何客户端界面,因此如果您稍后计划网站的移动版本,那么在从广义上讲,如果您将 BL 保存在 WCF 中,您只需更改客户端,并且可以由第三方为您开发。

    如果我在你的位置,我肯定会选择 WCF 方法。

    如果您谈到最简单的方法,那么将 BL 作为您项目的一部分。但同样,您必须在可扩展性和易于开发之间做出选择。

    【讨论】:

      【解决方案2】:

      我已将 CMS 分离到它自己的项目中,但遵循相同的命名空间。现在我可以从我的客户端 MVC 应用程序中引用 cms dll,设置路由并复制文件资产(视图、内容)。

      至于 WCF 层,我决定在 MVC 4 中使用 Web API 并继续使用它,直到我突破它的限制并不得不转向 WCF。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-29
        • 2015-09-08
        • 2018-01-31
        相关资源
        最近更新 更多