从应用程序服务层调用SignalR集线器是否是ASP.Net Boilerplate中的不良做法? [英] Is calling a SignalR Hub from the Application Service Layer a bad practice in ASP.Net Boilerplate?

查看:89
本文介绍了从应用程序服务层调用SignalR集线器是否是ASP.Net Boilerplate中的不良做法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



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



I'm using the Asp.Net boilerplate template with ASP.Net Core 2.1.
I implemented a Hub in the Web.Core assembly and created a controller.
I can subcribe/notify data with my hub from any client, this is not my problem.

我想在应用程序服务层中使用此集线器,但默认情况下,应用程序服务层未引用SignalR.

I'd like to use this Hub in the Application Services layer, but SignalR is not referenced by Application Services layer by default.

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

So my question is :
Is it a bad practice to reference SignalR in the the Application Services layer ?

提前谢谢!

关于, 皮埃尔·卢克

推荐答案

在应用程序层中,直接依赖Web功能不是一个好习惯.因为,它被认为是表示层独立的.

Directly depending a web feature is not a good practice in the application layer. Because, it is assumed presentation layer independent.

我认为您有一些选择;

I think you have a few options;

  1. 如果您认为自己从未更改SignalR并且从未使用过其他应用程序中的应用程序层,则可以直接引用SignalR并使用它.但是,这应该是最坏的情况.
  2. 在应用程序层中抽象SignalR通信(定义一个接口),并在Web层中实现它.在这种情况下,最好在应用程序层中定义一个Null实现(如果您不知道,则搜索"null object pattern"),以消除依赖关系并允许应用程序层在没有SignalR的情况下可用.
  3. 如果您的应用程序层无法使用null实现(也许需要客户端的真实回答),那么您应该考虑将SignalR依赖的代码移至Web层.

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

So, as like any good answer, it depends :)

这篇关于从应用程序服务层调用SignalR集线器是否是ASP.Net Boilerplate中的不良做法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆