ASP.NET应用程序在3个物理层上

时间:2009-09-18 06:15:06

标签: asp.net asp.net-mvc wcf linq-to-sql

为清楚起见,我在提问时提到了层,我指的是物理层(即用于演示,应用和数据库的不同服务器)

我公司有一个面向公众的网站,目前是一个典型的2层系统(网络服务器和数据库服务器)。

很快,一个项目将开始,我们将重新编写整个网站。我们需要将项目分成3个物理层。实际上,当您考虑浏览器时,您可以将其视为4个物理层。

根据我的经验,大多数asp.net应用程序都是基于2层构建的。 Web应用程序本身可能有多个,但实际上它部署到两个服务器(Web和DB)。

我搜索了一些示例,但似乎层和层混淆了。我看到很多多层示例,但没有多层示例。

简而言之,Web应用程序似乎对应用程序层进行Web服务或WCF调用,使用ADO(或L2S或EF)将数据与数据库进行编组。

ASP.MVC有助于实现这一目标吗?是否使它更容易或只是不同?

这个地方有一个很好的参考或例子吗?

5 个答案:

答案 0 :(得分:7)

我不认为添加其他层会增加安全性,但它肯定会降低性能并显着增加开发成本和复杂性。

最后,您可以根据需要使用附加层对应用程序进行分区。如果是我,如果给予这个“有趣”的要求,我可能会通过我可以创造最愚蠢的传递。

事实上,围绕另一层管理安全意味着显着增加了安全漏洞被意外暴露的机会。

ASP.NET MVC应该没有影响,但你最终可能会使用类似WCF的东西。对于来回编组数据,您可能希望使用与任何特定数据库或ORM无关的DTO。

这不是我很乐意发现自己的情况。复杂性的增加并不会增加安全性。

答案 1 :(得分:3)

Gday Rick,

由于安全原因,我为一家拥有相同多层政策的公司工作。

我在一个层上有一个ASP.NET MVC Web应用程序,它连接到Web服务所在的应用程序层,基本上是数据库和大型机的外观。与您的设置几乎完全相同。

ASP.NET MVC使用它非常简单易用,因为您可以在ASP.NET MVC应用程序中轻松构建经过验证的对象模型。一旦对象通过所有高端验证,您就可以通过Web服务轻松将其传输到应用程序层。

我认为使用经典的ASP.NET应用程序很容易,但我认为MVC让事情变得容易多了!

Check out my blog以获取在发送到应用服务器之前验证模型的示例。

干杯, 迈克尔

答案 2 :(得分:2)

在我看来,ASP.NET MVC无法提供帮助,也不会阻碍这种情况。基本上你不会将你的模型暴露为Linq2Sql,实体框架或任何其他ORM,而是来自中间层,可能是WCF。

这提出了围绕身份验证和授权的常见挑战 - 即身份验证如何在层之间流动。但是这对于MVC来说是独一无二的,WebForms解决方案将具有相同的关键点您还将丢失ORM的模型验证位可能会提供并且必须在您的Web服务存储库中提供,但这只是实现正确接口的问题。

答案 3 :(得分:0)

这是一个奇怪的要求。它来自客户吗?可能需要一些客户教育。

我知道J2EE系统可以分为三层,第一台应用服务器上的Web服务器位于中间,后端有一台DB,但我没有听说过.NET。

答案 4 :(得分:0)

如前所述......在这种情况下,MVC并不重要。关闭模拟我有一个金融客户将他们的网络服务分成几层......

等等 1)面向公众的负载均衡Web服务 2)Web服务 3)应用程序代码 4)数据库代码

我不记得第3层和第2层是否在物理上是分开的(已经有一段时间了)但基本上第一层相当薄,只是将请求通过dmz扔到内部服务。

所以你可能会对网站做类似的事情......可能会出现瓶颈,但会让你获得所需的物理隔离。

祝你好运!