我正在了解n层应用程序。我理解代码层的分离,例如/ UI,BL(业务逻辑),DL(数据层)。
在ASP.Net应用程序中,您只需引用正在执行BL和DL的C#项目,一切顺利。
我不明白你将如何在单独的服务器上实现这一点?你有bin文件夹中的BL和DL的DLL,但web.config文件中的设置告诉它去哪里进行通信,或者你是否在单独的服务器上运行实际的BL和DL,然后从用户界面是通过网络服务制作的吗?
目前我有一个标准的ASP.Net webforms应用程序需要将安全端分离到Web服务器和应用程序服务器上的主应用程序,但是我不认为这是可能的。
答案 0 :(得分:1)
当我们吐入物理层时,我们在层之间使用WCF。您最终会在应用程序中获得更多层,因此如果您不需要它,请不要使用它。
典型的图层来自
客户层>
服务器层
如果使用ORM,则服务器层可以实现为单个层。
答案 1 :(得分:0)
如果没有群集,这是不可能直接实现的,即使这需要在两台服务器上运行的应用程序的精确副本。
如果要将安全层作为单独的服务器运行,请使用Web服务创建它,并向该服务发出Web请求,并返回(加密或其他)响应。
希望有所帮助。
编辑继续说明:
在您的情况下,我会让我的安全应用程序在服务器上运行,该服务器将对来自特定URL或域/子域的请求进行身份验证,加密和响应。然后我的主应用程序可以在另一台服务器上运行,并且验证请求等可以在辅助服务器上。但是,ASP.NET身份验证使用计算机级别密钥为身份验证令牌创建唯一的salt。因此,为了在多台机器之间共享auth令牌,机器密钥在machine.config中必须相同。
答案 2 :(得分:0)
单独的服务器需要使用某种形式的Web服务。在这里工作:
服务器(仔猪) - 数据库,sql server 2005,防火墙阻止连接到跳跳器
服务器(eeyore) - 网络服务 - 连接到仔猪
服务器(tigger) - asp.net服务器 - 连接到eeyore,防火墙阻止连接到piglet
业务逻辑将位于数据访问层,表示层或两者使用的dll程序集中,并与它们一起部署。
答案 3 :(得分:0)
如果您希望图层位于物理上独立的服务器上,则必须确定图层应如何通信。您有很多选择:Web服务,Windows Communication Foundation,.Net Remoting ......