国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

一步一步學(xué)習(xí)SignalR進行實時通信_9_托管在非Web應(yīng)用程序

2019-11-14 14:22:32
字體:
供稿:網(wǎng)友
一步一步學(xué)習(xí)SignalR進行實時通信/_9_托管在非Web應(yīng)用程序

  • 一步一步學(xué)習(xí)SignalR進行實時通信_9_托管在非Web應(yīng)用程序
    • 前言
    • 部署在控制臺應(yīng)用程序
      • 安裝自托管包
      • 安裝跨域包
      • winform客戶端
        • 設(shè)計界面
        • 連接
        • 完整實現(xiàn)效果
      • windows服務(wù)
        • 創(chuàng)建服務(wù)
        • 安裝服務(wù)
        • 啟動服務(wù)
        • 連接服務(wù)
    • 結(jié)束語
    • 源碼下載
    • 參考文獻

前言

本章我們將學(xué)習(xí)將signalr服務(wù)托管在非web應(yīng)用程序。之前我們一直是通過IIS部署signalR服務(wù),今天我們的服務(wù)將要完全擺脫IIS的約束。在某種情況下可能無法用IIS部署服務(wù),或者我們并不需要重量級的IIS進行部署,直接部署在控制臺應(yīng)用程序中更加方便簡單,獲取還有其他各種各樣的原因。
由于有owin提供的解耦功能我們可以不在修改代碼的情況下部署到其他地方。只需要安裝一個包:Microsoft.Owin.Host .HttpListener即可。(之前在web上部署的時候我們安裝的是Microsoft.Owin.Host.SystemWeb
這個包可以提供自托管的功能,打開一個端口等待http請求。
接下來我們就是先將signalR部署在控制臺程序上,以及windows服務(wù)中。

部署在控制臺應(yīng)用程序

安裝自托管包

首先我們先在nuget命令行中輸入install-package Microsoft.aspNet.SignalR.SelfHost進行安裝
安裝好后可以發(fā)現(xiàn)引用大致如圖所示

最主要的差別是這兩處

安裝完后再packages文件夾中會有SelfHost文件夾里面有個readme.txt文件,有簡單使用說明,如下圖所示:


其中包括了如何配置和啟動。

安裝跨域包

根據(jù)要請我們新建一個Startup文件,在里面輸入代碼,同時我們的控制臺僅僅是服務(wù),想要其他程序能訪問到我們我們必須要開啟跨域,通過命令Install-Package Microsoft.Owin.Cors進行安裝即可,然后我們就做相應(yīng)的配置。

我們的相關(guān)配置已經(jīng)完成,和在web部署幾乎一模一樣,處理安裝的組建略有差別。
接下來我們創(chuàng)建一個Hub。

服務(wù)端有一個計算加法的服務(wù)
服務(wù)端就搭建好了,現(xiàn)在我們需要創(chuàng)建一個客戶端,客戶端我也不再用傳統(tǒng)web客戶端,我們創(chuàng)建一個winform應(yīng)用程序(WPF類似)

winform客戶端

首先需要安裝signalr .net client,之前在web應(yīng)用程序作為客戶端安裝的是javascript client

設(shè)計界面

首先搭建一個界面如圖:

點擊連接時創(chuàng)建調(diào)用代理并連接

連接


連接成功彈出消息框

完整實現(xiàn)效果

windows服務(wù)

windows服務(wù)和普通的程序不一樣,它有不同的生命周期。windows服務(wù)可以繼承自System.ServicePRocess.ServiceBase。
創(chuàng)建一個新的項目選擇windows service,如圖所示

創(chuàng)建服務(wù)

  1. public partial class SignalRService : ServiceBase
  2. {
  3. private IDisposable _webApp;
  4. public SignalRService()
  5. {
  6. InitializeComponent();
  7. }
  8. protected override void OnStart(string[] args)
  9. {
  10. var address = (args != null && args.Length > 0) ? args[0] :
  11. "http://localhost:22222";
  12. _webApp = WebApp.Start<Startup>(address);
  13. }
  14. protected override void OnStop()
  15. {
  16. _webApp.Dispose();
  17. }
  18. }

在OnStart中開始服務(wù),在OnStop釋放
在Progarm.cs程序入口中啟動服務(wù)

  1. static void Main()
  2. {
  3. ServiceBase[] ServicesToRun;
  4. ServicesToRun = new ServiceBase[]
  5. {
  6. new SignalRService()
  7. };
  8. ServiceBase.Run(ServicesToRun);
  9. }

安裝服務(wù)

windows服務(wù)不能通過VS啟動,需要在系統(tǒng)中安裝。

在服務(wù)界面右擊選擇Add Installe

會生成一個安裝文件

serviceProcessInstaller1屬性中Account選擇憑證類型

serviceInstaller1中serviceName是windows服務(wù)中的名稱
starttype是啟動類型,可選擇自動或手動啟動
description是服務(wù)的描述
打開vs2013開發(fā)人員命令提示符(需要管理員身份進入操作)

打開后進入程序目錄,輸入installutil [exeName]命令[exeName]包括后綴

輸入installutil [exeName] /u進行卸載
輸入命令后回車會彈出使用的用戶憑證

或者在安裝命令后加上參數(shù)/username和/passWord
如:installutil signalrservice.exe /username=jake /password=1234
若用戶憑證有誤則會回滾安裝,因此不用擔(dān)心會出什么問題。


但是試了好幾次一直有誤,網(wǎng)上查了下用戶名好像需要輸入全稱。為了簡單起見直接用本地系統(tǒng)登錄


重新在輸入命令(無需用戶密碼)即可完成安裝

安裝完成在服務(wù)中即可找到,

啟動服務(wù)


輸入?yún)?shù)點擊啟動即可

連接服務(wù)

安裝好后啟動客戶端測試下,此服務(wù)???hub我從控制臺程序復(fù)制過去,所以一模一樣

注意修改端口

結(jié)束語

今天通過簡單的2個小例子講解了如何將signalr部署在非web環(huán)境中,以及.net client如何連接signalr服務(wù)

源碼下載

非web signalR服務(wù)
客戶端

本文發(fā)布至作業(yè)部落

參考文獻

SignalR Programming in Microsoft asp.net pdf 下載


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 旅游| 成都市| 广西| 平果县| 红河县| 贵阳市| 新绛县| 涟水县| 探索| 环江| 两当县| 大同市| 麻阳| 涟源市| 乐昌市| 新泰市| 秭归县| 琼海市| 宜阳县| 牙克石市| 榆中县| 海口市| 澜沧| 上思县| 天水市| 南平市| 岚皋县| 乌拉特后旗| 山东省| 颍上县| 西青区| 登封市| 广德县| 宣武区| 静海县| 封丘县| 会理县| 孝义市| 尉氏县| 邛崃市| 德州市|