1

我被迫使用托管公司,这迫使我将我的(网络)表示逻辑和我的业务逻辑分开在两个不同的服务器/层上,由防火墙隔开。只有具有表示逻辑的服务器才会暴露在互联网上。理由是安全。我有数据库的第三个服务器/层,但这很简单。我正在寻找在这种情况下有用的架构模型/设计模式。

我找到了 Microsoft 对 3 层 Web 架构的描述:提高 Web 应用程序安全性:威胁和对策,但它是关于做什么,而不是如何去做。微软自己的托管使用两层架构: Windows Azure 安全指南

例如。如果我使用 MVC 模式,我可以将 Controller 和 View 放在表示逻辑服务器上,将 Model 放在业务逻辑服务器上。然后我可以在每台服务器上放置一个服务层进行通信,但我必须在服务器之间共享会话、用户身份验证等。

什么是聪明的方法?谁能给我文章等的链接?

4

1 回答 1

1

会话状态应该与域状态正交。您很可能希望将会话状态保留在视图层中,并尽可能保持服务/域层无状态。这意味着您需要将任何用户信息从控制器传递到您的服务层。

如果这成为问题,并且您需要长时间运行的会话状态,请将其外部化到单独的存储中,并将其链接到传入的会话信息。这使域层的“会话”与视图层中的“会话”分开。从而保留模型和视图之间的抽象。

开始将业务逻辑渗入视图/控制器层,因为会话状态更方便地位于那里。意识到它,并努力控制它。

MVVM模式可能比 MVC 更适合这一点,并且它在业务服务器端封装视图状态方面做得更好。会话仍然存在问题。您将需要/想要视图/业务层上的单独会话,但视图层上的会话最终会非常轻松。它基本上只需要处理身份验证,然后有一个密钥(sessionid),它可以传递给服务层以允许视图模型与之链接。

于 2013-10-04T12:46:03.677 回答