使用WCF将MVC项目分成单独的项目

时间:2012-05-02 10:53:55

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

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

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

  1. 通过非常轻量级的客户端项目获取相当大的CMS演示代码库。
  2. 当没有特定客户端的自定义功能时,不必重建相同的CMS代码库(CMS通常不需要为新客户端进行更改)
  3. 能够在生产中升级CMS而无需担心影响网站(反之亦然)
  4. 为了做到这一点,从我最初的研究中我发现我需要创建一个引用应用层的WCF应用程序。然后,从这里,CMS MVC应用程序和客户端MVC应用程序将仅与WCF层通信。

    这种做法的失败:

    1. 在托管环境中需要3个单独的应用程序。
    2. 不同应用程序之间的消息传递的开销。
    3. 这是实现我想要的最简单的方法吗?任何人都可以举一些例子或容易理解类似情况的案例研究吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

对于WCF层,我决定在MVC 4中使用Web API,然后继续使用它,直到我扩展它的极限并且必须转移到WCF。