Design patterns 在不同服务器/层上分离业务逻辑

Design patterns 在不同服务器/层上分离业务逻辑,design-patterns,architecture,n-tier-architecture,separation-of-concerns,Design Patterns,Architecture,N Tier Architecture,Separation Of Concerns,我被迫使用托管公司,这迫使我在两个不同的服务器/层上分离我的(web)表示逻辑和业务逻辑,并通过防火墙进行分离。只有具有表示逻辑的服务器才会向internet公开。理由是安全。我有第三个服务器/层与数据库,但这是微不足道的。我正在寻找在这种情况下有用的架构模型/设计模式 我在3层web体系结构上找到了Microsoft的一个描述:,但它是关于做什么,而不是如何做。Microsoft自己的主机使用两层体系结构: 如果我使用MVC模式,我可以将控制器和视图放在表示逻辑服务器上,将模型放在业务逻辑服务

我被迫使用托管公司,这迫使我在两个不同的服务器/层上分离我的(web)表示逻辑和业务逻辑,并通过防火墙进行分离。只有具有表示逻辑的服务器才会向internet公开。理由是安全。我有第三个服务器/层与数据库,但这是微不足道的。我正在寻找在这种情况下有用的架构模型/设计模式

我在3层web体系结构上找到了Microsoft的一个描述:,但它是关于做什么,而不是如何做。Microsoft自己的主机使用两层体系结构:

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

什么是明智的做法?
有人能给我一个文章等的链接吗?

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

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

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


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

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

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

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


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

谢谢您的回答:-)谢谢您的回答:-)