C# .NET分布式分层应用程序
多年来,我一直在使用.NET开发n层应用程序。但我仍然不知道如何将层/层(dll)分发到其他服务器 比如说,我有一个包含4个项目的MVC web应用程序,即MVC(UI)、业务、服务和数据。如果所有类库DLL都在一台服务器中,则一切正常 如果我想通过将服务层(dll)和数据层(dll)分发到其他两台服务器来扩展应用程序,我是否应该将类库转换为WCF服务库项目(使用TCP或管道作为通信协议以获得更好的性能)?还是应该使用其他技术,如.NET远程处理或Web API 那需要很多工作吗 这就是创建多层应用程序的目的之一吗 谢谢 更新: 您是否有任何链接(来自Microsoft)详细解释了如何通过分发DLL将n层体系结构应用程序扩展到多个服务器 如果我想通过将服务层(dll)和数据层(dll)分发到其他两台服务器来扩展应用程序,我是否应该将类库转换为WCF服务库项目(使用TCP或管道作为通信协议以获得更好的性能) 是的,因为它们在不同的机器上,所以您需要某种通信机制,而不仅仅是DLL调用 还是应该使用其他技术,如.NET远程处理或Web API 您选择哪种方法取决于许多因素,如复杂性、性能……有许多选择,如C# .NET分布式分层应用程序,c#,wcf,distributed,C#,Wcf,Distributed,多年来,我一直在使用.NET开发n层应用程序。但我仍然不知道如何将层/层(dll)分发到其他服务器 比如说,我有一个包含4个项目的MVC web应用程序,即MVC(UI)、业务、服务和数据。如果所有类库DLL都在一台服务器中,则一切正常 如果我想通过将服务层(dll)和数据层(dll)分发到其他两台服务器来扩展应用程序,我是否应该将类库转换为WCF服务库项目(使用TCP或管道作为通信协议以获得更好的性能)?还是应该使用其他技术,如.NET远程处理或Web API 那需要很多工作吗 这就是创建多层
- WCF网络服务
- 使用WebApi的简单REST调用
- 消息总线,即
在我看来,最简单、最省力的扩展方式是只添加另一台IIS服务器和一个负载平衡器,将流量定向到其中任何一台。您需要将会话存储在数据库中或使用专用服务器,但这就是所需的全部更改。另外,如果您的一台服务器出现故障,其中一台仍将运行 默认情况下,避免过早优化 如果你只有一个网站,我会尽可能简单,只创建逻辑层。有很多选择:典型的3层、洋葱架构等。关键是,如果真的需要,以后您仍然可以重构代码,使数据层成为一个单独的物理层。但是,除非你正在创建一个新的亚马逊或其他东西,否则情况可能不会如此 例如,如果您有一个网站,但也必须公开一个web api;您可以选择让网站使用web api。事实上,您的网站将成为一个非常薄的层(甚至可能不使用ASP.NET MVC),因为大多数逻辑都将在web api中
PS.NET Rebug是,考虑WCF或WebAPI。
为什么你不能复制其他服务器上的DLL?如果您使用WCF/WebAPI,那么您的调用将变慢。拥有一个公共存储库并不是缩放的最佳方式,它可能会对SLAI产生影响。我可以通过添加更多RAM和CPU电源来“缩放”我的服务器,直到达到IIS服务器可以处理的极限。因此,我需要通过添加更多服务器来“扩展”。我想将服务层和数据层分发到其他服务器,以卸载我的IIS主服务器。与直接调用同一服务器上的dll相比,在其他服务器上调用WCF/WebAPI肯定要慢一些。但在达到一台服务器的瓶颈后,别无选择,只能通过添加更多服务器来扩展。如果我错了,请纠正我。据我所知,使用TCP协议的WCF服务库将是远程DLL调用的最快方式(与.net远程处理、SOAP web服务和REST web API相比)。IIS服务器和DLL服务器应该使用网线(Cat 5)相邻连接。@EpoWilliam sure,但我自己从未尝试过(至今)。