c# - .NET 分布式分层应用程序

标签 c# wcf distributed

多年来,我一直在使用 .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/

相关文章:

wcf - 如何在 SharePoint 服务工厂创建的 WCF 服务中删除 tempuri.org

c# - PrincipalPermission 仅适用于某些 AD 组

database - 数据库及相关领域的必读/收藏论文

python - Dask 与 channel 和内存使用共享 future

c# - 无法将泛型类型转换为 C# 中的列表

javascript - 如何在 asp.net 中使用 Javascript 仅包含一列以从 gridview 进行搜索?

c# - 在 AJAX 调用之前从 MSAL 刷新 token 的正确方法?

c# - 桌面应用程序的连接字符串管理

c# - WCF 安全实现设计问题

distributed-computing - 分布式系统是什么意思?