2011-10-04 88 views
0

我用剃刀在MVC 3中创建了Web应用程序。我的解决方案结构如下:部署3层MVC应用程序

A) Web Tier - Comprises of MVC 
B) Business Layer 
C) Data Tier 

我需要在IIS上的3台服务器上分别部署这三层。 任何人都可以建议如何进行?

由于

+1

但是,您的业务层设计为部署在单独的物理机上,它有服务吗?远程处理?有很多先决条件,然后才能部署到单独的物理层。您应该提供有关该体系结构的更多详细信息。 –

+0

@Anas Karkoukli:我刚刚了解部署问题。编码时我们没有考虑远程处理或服务。 – Vipul

+0

@Anas Karkoukli:请提供进一步的建议 – Vipul

回答

1

由于您关心的是在哪里部署您的EDMX文件,我只会详细说明业务层。

首先我会重申层和层之间的区别。你提到一个单独的物理服务器为您的业务逻辑,因此我的答案将假设一个物理上独立的业务层。并将从此称为一个层次。

EDMX文件尽管与您的数据库模式耦合,但却是业务层工件。 IT必须与其他业务类别(实体,数据访问管道等)位于相同的物理位置(在您的情况下)。

在您的情况下,您最大的障碍是B组件。将A和C(分别是Web应用程序和数据库)分别部署到不同的物理层上并不是特别困难。

您肯定需要在您的业务逻辑类之上构建一个WCF服务Facade,以将其功能展现给驻留在不同服务器上的MVC网站。有很多文章详细阐述了Facade模式,但是这是一个直接的方法,只需要在你的体系结构中进行微小的改变。

+0

感谢您的建议。我正在研究Facade Pattern进行部署。 – Vipul

1

B需要通过一个web服务,其中A呼叫缠绕。

C是数据库服务器?只需将其安装在单独的服务器上即可。

+0

感谢您的建议。 “C”就是我放入我的EDMX文件的地方(我正在使用实体框架4)。我应该一起部署B&C吗? – Vipul

+0

是的。然后B和C是第二层中的两层。实际的数据库SqlServer是第三层。 – jgauffin

+0

我正在使用Unity框架调用业务层中的方法。这是通过控制反转来完成的。如何将业务层包装在WCF服务中,然后从Web层调用业务层的方法? – Vipul

1

A)这进入ServerA上

B)的ASP.NET MVC应用程序本进入托管ServerB上WCF服务,你的ASP.NET MVC应用程序会消耗

C)这是SQL Server或任何你正在使用和将要求的Web服务,这将继续ServerC

+0

感谢您的建议。 “C”就是我放入我的EDMX文件的地方(我正在使用实体框架4)。我应该一起部署B&C吗? – Vipul

+0

@Vipul,我想你误解了一些东西。有物理边界(层)和逻辑边界(层)。所以你在这里谈论逻辑边界。即使在你提到不同服务器的问题中,也不是物理的。您可以在应用程序中定义3个不同的逻辑边界,这些逻辑边界将是数据访问层,业务层和UI。所有这些将部署在单个ASP.NET MVC应用程序中的单个服务器上。 EDMX文件将成为数据访问层的一部分。 –

+0

谢谢:)。我明白你的观点。我需要在3台不同的机器上部署数据访问层,一个业务层和用户界面。好心提醒。 – Vipul