史上最全面的SignalR系列教程-4、SignalR 自托管全解(使用Self-Host)-附各终端详细实例

本文深入探讨了SignalR自托管(Self-Host)的实现方法,包括在控制台应用程序中部署SignalR服务,以及如何通过JavaScript和WinForm客户端进行访问。通过实例展示了不同场景下SignalR的灵活应用。

1、概述


我们对SignalR的概念以及SignalR的最主要的两类通信模型(Persistent Connections与Hubs)进行了详细的对比讲解,也做了案例展示。本篇将为大家介绍.NET特有的Self-Host自托管的应用,即以Self-Host自托管为宿主加载SignalR服务。

宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自主宿主SelfHost它可以自己去监听自己的服务,如你可以把一个web应用程序宿主到一个console控制台程序上,或者把一个webApi宿主到一个console或者windowService上,这都是可以的。

Self-Host的介绍我们可以参考msdn官方事例https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/self-host 这是一个wcf的事例。

SignalR常常依托于ASP.NET应用程序运行于IIS中,但它还可以自我托管(比如作为console winform、Windows service),只要我们使用self-host库就可以了。该库向所有的SignalR 2库一样,构建于OWIN (Open Web Interface for .NET)。OWIN定义了一个在.NET web 服务端和web 应用程序的抽象。OWIN解耦了从服务端来的web 应用程序,这使得OWIN对于子托管web应用程序于自己的进程中得以表现得很完美。

有的小伙伴可能就要问了,为什么一定要使用这种方式来托管呢?基于IIS的方式不是更简单吗?不托管于IIS的原因主要有以下方面的考虑:

  • 我们已经构建了一个服务端程序,没有运行在IIS上,重新搭建成本太高。
  • IIS的方式性能开销很大。
  • signalR需要扩展到现有程序中,如Windows服务中等。
  • 其他的一些原因….

本篇主要讲解以下内容:

  1. 使用Self-Host方式创建SignalR服务端
  2. 用javascript客户端访问SignalR Self-Host服务端
  3. 用WinForm客户端接收SignalR Self-Host服务端消息

2、使用Self-Host方式创建SignalR服务端


为了更简单的说明self-host托管的方式,我们用控制台应用程序来做演示。当然我们也可以自托管到Windows服务中去,如果你更希望托管到Windows服务,可以参考Self-Hosting SignalR in a Windows Service

在上一项目的基础上,我们新建一个名为:SignalRSelfHost的控制台应用程序,如下所所示:

要使用Selft-Host宿主SignalR,必须引用Microsoft.AspNet.SignalR.SelfHost包。我们在程序包管理控制台输入以下命令安装SelfHost包。

Install-Package Microsoft.AspNet.SignalR.SelfHost

要想支持跨域访问,还需要安装

Install-Package Microsoft.Owin.Cors

如果用命令的方式安装失败,我们可以用NuGet的方式安装,如下图所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值