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

3个物理层上的ASP.NET应用程序,asp.net,asp.net-mvc,wcf,linq-to-sql,Asp.net,Asp.net Mvc,Wcf,Linq To Sql,为清楚起见,当我在问题中提到层时,我指的是物理层(即用于表示、应用程序和数据库的不同服务器) 我的公司有一个面向公众的网站,目前它是典型的两层系统(web服务器和数据库服务器) 很快一个项目将开始,我们将重新编写整个网站。我们需要将项目分为3个物理层。实际上,当你考虑浏览器时,你可以考虑它的4个物理层。 根据我的经验,大多数asp.net应用程序都构建在两层上。web应用程序本身可能有几个层,但在物理上它被部署到两个服务器(web和DB) 我已经搜索了一些示例,但似乎层和层都混淆了。我看到很多多

为清楚起见,当我在问题中提到层时,我指的是物理层(即用于表示、应用程序和数据库的不同服务器)

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

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

根据我的经验,大多数asp.net应用程序都构建在两层上。web应用程序本身可能有几个层,但在物理上它被部署到两个服务器(web和DB)

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

简而言之,web应用程序似乎向应用程序层发出web服务或WCF调用,该应用程序层使用ADO(或L2S或EF)将数据封送至数据库或从数据库封送数据

ASP.MVC有助于实现这一点吗?这会让事情变得更容易还是有所不同


这方面有什么好的参考或例子吗?

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


我知道J2EE系统可以分为三层,中间的第一个应用服务器上有Web服务器,后端有一个DB,但我没有听说过.NET.[/P>>P>。我认为ASP.NET MVC不会帮助或阻碍这种情况。基本上,您的模型不是作为Linq2Sql、实体框架或任何其他ORM公开的,而是从中间层公开的,可能是通过WCF公开的

这就提出了身份验证和授权方面的常见挑战,即身份验证如何在层之间流动,但这是MVC所独有的,WebForms解决方案会有同样的症结——您也会失去ORM可能提供的模型验证信息,并且必须自己在web服务存储库中提供这些信息,但这只是实现正确接口的问题。

Gday Rick

我在一家公司工作,由于安全原因,该公司采用相同的多层策略

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

ASP.NET MVC使使用此设置变得非常方便,因为您可以在ASP.NET MVC应用程序中轻松构建经过验证的对象模型。一旦对象通过了所有顶级验证,您就可以通过web服务轻松地将其转移到应用层

我想用一个经典的ASP.NET应用程序很容易做到这一点,但是我认为MVC让事情变得容易多了

有关如何在发送到应用程序服务器之前验证模型的示例,请参见

干杯,
Michael

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

最后,您可以按照自己的意愿使用附加层对应用程序进行分区。如果是我,我可能会创造最愚蠢的通过层,如果我被赋予这个“有趣”的要求

事实上,管理另一层的安全性意味着安全漏洞意外暴露的机会显著增加

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


这不是一个我会很高兴发现自己处于的情况。复杂性的增加不会导致安全性的提高。

如前所述。。。MVC在这种情况下并不重要。我的相似之处是,我们有一个金融客户将其web服务分为多个层

大概是 1) 面向公众的负载平衡web服务 2) 网络服务 3) 应用程序代码 4) 数据库代码

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

所以你可以在网站上做类似的事情。。。可能会出现瓶颈,但会使您获得所需的物理分离


祝你好运

我的公司在金融领域,他们对安全问题非常敏感。有一个完整的部门专门负责安全。这一要求来自他们。他们相信这个系统会更安全。硬件已经买了,所以这会发生的。哎哟。在这种情况下,我将与这个“安全”团队密切合作,以了解添加额外的层如何使事情更加安全。为了建立一个安全的系统,把它们全部除掉。如果你幸运的话,他们可能会放弃,让你建立一个更传统的系统,如果不是,你至少会让他们在将来更多地考虑这个问题。谢谢你的回答。乍一看,这看起来很像验证程序应用程序块,它是企业库()的一部分!我不知道验证器应用程序块是否存在。谢谢你的提醒。我将在将来使用它!很久以前,在阅读CSLA的书时,作者提到了他的框架是如何在多个层次上工作的。他建议只对Windows应用程序这样做,而不要对Web应用程序这样做,因为使用集群可以实现可伸缩性。我同意MVC不会有什么坏处。这可能会有点帮助。我认为真正有帮助的是ADO.NET数据服务(又称Astoria)。为此,它比“普通”WCF更容易。