从Application Service Layer调用SignalR Hub是ASP.Net Boilerplate中的一个不好的做法吗?

问题描述 投票:1回答:1

我正在使用ASP.Net Core 2.1的Asp.Net样板模板。 我在Web.Core程序集中实现了一个Hub并创建了一个控制器。 我可以从任何客户端向我的集线器订阅/通知数据,这不是我的问题。

我想在Application Services层中使用此Hub,但默认情况下,Application Services层不会引用SignalR。

所以我的问题是: 在Application Services层引用SignalR是不好的做法?

提前致谢 !

此致,皮埃尔 - 吕克

c# signalr-hub aspnetboilerplate
1个回答
1
投票

直接依赖Web功能在应用程序层中不是一个好习惯。因为,假设表示层独立。

我想你有几个选择;

  1. 如果您认为您从未更改SignalR并且您从未使用其他应用程序中的应用程序层,那么您可以直接引用SignalR并使用它。但是,这应该是最糟糕的情况。
  2. 摘要应用层中的SignalR通信(定义接口)并在Web层中实现。在这种情况下,最好在应用程序层中定义Null实现(如果您不知道,请搜索“空对象模式”)以删除依赖关系并允许应用程序层在没有SignalR的情况下可用。
  3. 如果您的应用程序层无法使用null实现(可能需要来自客户端的真实答案),那么您应该考虑将SignalR依赖的代码移动到Web层。

所以,就像任何好的答案一样,这取决于:)

© www.soinside.com 2019 - 2024. All rights reserved.