Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 三层体系结构v。三服务器体系结构_C#_.net_Asp.net Mvc_Architecture_3 Tier - Fatal编程技术网

C# 三层体系结构v。三服务器体系结构

C# 三层体系结构v。三服务器体系结构,c#,.net,asp.net-mvc,architecture,3-tier,C#,.net,Asp.net Mvc,Architecture,3 Tier,我正在构建一个传统的.NETMVC站点,因此我有一个自然的三层软件体系结构设置(视图形式的表示、控制器中的业务层以及模型和数据访问层中的数据层) 当我部署这样的站点时,它通常位于一台服务器(web站点和db所在的服务器)或两台服务器(一台web服务器和一台单独的db服务器)上 3服务器架构(WEB、应用程序和数据库)是如何实现的?web服务器是否只拥有演示文稿(例如,物理视图/aspx页面),应用服务器将保存配置文件和bin文件夹,而db服务器将保持原样 我的问题是,你能简单地将/bin和所有应

我正在构建一个传统的.NETMVC站点,因此我有一个自然的三层软件体系结构设置(视图形式的表示、控制器中的业务层以及模型和数据访问层中的数据层)

当我部署这样的站点时,它通常位于一台服务器(web站点和db所在的服务器)或两台服务器(一台web服务器和一台单独的db服务器)上

3服务器架构(WEB、应用程序和数据库)是如何实现的?web服务器是否只拥有演示文稿(例如,物理视图/aspx页面),应用服务器将保存配置文件和bin文件夹,而db服务器将保持原样


我的问题是,你能简单地将/bin和所有应用程序逻辑从表示视图移动到一个单独的服务器上吗?如果是这样的话,您如何配置服务器以知道在哪里查找?如果某个地方有一本好的入门书,或者有人能告诉我真相,我将永远感激。

在一些圈子里,我看到这个讨论的措辞是n-tier和n-layer之间的区别,在这种情况下,“层”可能代表另一台机器。为了使中间层使用此定义,必须将其托管。例如,如果您有一个表示层调用以获取其数据的服务层,那么该服务层可能位于表示层或数据库之外的另一台计算机上。但是,该服务层作为windows服务或web服务承载。也就是说,有一个进程监听该机器上的请求。因此,您不能简单地将bin文件夹移动到不同的机器上,并希望能够完成此工作。我会看看WCF(Windows Communication Foundation)来创建这些类型的服务。

下一个逻辑扩展是两个web服务器和一个数据库服务器

最终,在添加了许多web服务器之后,可能需要添加一个服务层


在扩展时,您可能还希望在某个位置添加分布式缓存、会话状态服务器、电子邮件服务器和其他专用服务器。

ASP.NET MVC无法帮助您设置3层系统。这实际上只是一种前端模式

实现多层系统必须解决的主要问题是将对象从一台服务器传输到另一台服务器。您必须找到一种根据传输通道序列化所有对象的方法。这会变得缓慢,开发也会变得更加复杂


有理由使用单独的应用程序服务器:您可能有其他应用程序需要的逻辑,或者应用程序服务器可能具有与Web服务器不同的权限。但是很难想象一个高流量的网站,所有的请求都会导致对远程应用服务器的调用

所以你的问题似乎是

“您能简单地将/bin和所有应用程序逻辑从演示视图移动到单独的服务器上吗?”

如果我理解正确,我相信bin文件夹中的文件将是asp.net页面的编译代码。如果是这样的话,那么,不,我认为它们需要与asp页面在同一台机器上

如果您希望将业务逻辑放在与表示层分离的机器上,则需要将该代码包装到一个单独的dll中,并通过soap或其他协议将其公开。。然后从表示层中的代码调用另一台服务器上那些SOAP公开的DLL。

MVC不是三层体系结构。并非每个解决方案都需要是3层或n层的,但理解其区别仍然很重要。MVC碰巧有3个主要元素,但这些元素不是以“分层”方式工作的,它们是相互依存的:

Model <----- Controller
         \       |
          \      v
           ---- View
模型
Data Access <--- [Mapper] ---> Domain Model <--- [Presenter/Controller] ---> UI
Database Server <----- Web Services <----- Application