多年来,我一直在使用 .NET 开发 n 层应用程序。但我仍然不知道如何将层/层 (dll) 分发到其他服务器。
比方说,我有一个包含 4 个项目的 MVC Web 应用程序,即 MVC (UI)、业务、服务和数据。如果所有类库 dll 都在一台服务器上,一切都可以正常工作。
如果我想通过将服务层 (dll) 和数据层 (dll) 分发到其他 2 个服务器来扩展应用程序,我是否应该将类库转换为 WCF 服务库项目(使用 TCP 或管道作为通信协议(protocol))更好的性能) ?或者我应该使用其他技术,如 .NET 远程处理或 Web API?
工作量会很大吗?
这是创建多层应用程序的目的之一吗?
谢谢。
更新:
您是否有任何链接(来自 Microsoft)详细说明如何通过分发 DLL 将 n 层架构应用程序扩展到多个服务器?
最佳答案
If I want to scale out the application by distributing the Service layer (dll) and Data layer (dll) to other 2 servers, should I convert the class library to WCF Service Library project (with TCP or pipe as communication protocol for better performance) ?
是的,因为它们位于不同的机器上,您需要某种超越简单 DLL 调用的通信机制。
Or should I use other technology like .NET remoting or Web API?
您选择哪种方法取决于许多因素,例如复杂性、性能......有很多选择,例如
- WCF 网络服务
- 使用 WebApi 进行简单的 REST 调用
- 消息总线即NServiceBus
- ...
显然,远程调用也会变慢,从而对性能等产生潜在影响。
Will that be a lot of work?
这将是更多的工作,在我看来,“更多的工作”应该是合理的。使您的架构尽可能简单或更好,只在真正需要时才复杂。
另一种方法可能是拥有一些部署管道,将您的整个应用程序部署在不同的服务器实例上,并具有一些智能负载平衡策略。在这种情况下,您唯一需要注意的是在您的实例之间正确共享 session (无状态会更好;))。
关于c# - .NET 分布式分层应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468057/