内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

構建混合應用方式之Azure混合連接-創(chuàng)新互聯(lián)

WCF中繼構建混合應用的方式,由于對WCF的依賴,使得其使用有一定的局限性,基本上只適用于本地服務是WCF的.NET應用。而混合連接則彌補了這一塊的缺陷,除了支持原有WCF中繼的功能之外,還提供了多平臺多語言的支持,這只要是因為混合連接是基于開放標準協(xié)議web sockets實現(xiàn)的。

以下是與WCF中繼的一個對比表:

在晉江等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、網(wǎng)站制作 網(wǎng)站設計制作按需開發(fā),公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站設計,成都營銷網(wǎng)站建設,成都外貿(mào)網(wǎng)站制作,晉江網(wǎng)站建設費用合理。

WCF中繼混合連接
建立本地和云之間的安全連接
無需修改防火墻添加入站端口
無需對網(wǎng)絡配置做重大修改
基于開放標準協(xié)議Χ(只支持WCF)
跨平臺支持Χ(只支持Windows)
多語言支持Χ(只支持.NET)

下面主要分三種情況來介紹混合連接的使用:

一. 基于混合連接SDK

二. 基于Azure Web App混合連接工具

三. 基于PortBridge示例程序


 創(chuàng)建混合連接

可以登陸Azure中國門戶網(wǎng)站,按照界面提示一步步創(chuàng)建。也可以通過PowerShell命令,如下。

構建混合應用方式之Azure混合連接

構建混合應用方式之Azure混合連接

# login to Azure China with your accountLogin-AzureRmAccount -Environment AzureChinaCloud$rgName = "relaydemorg"$namespaceName = "relaydemons"$location = "China East"$hcName = "hcdemo"New-AzureRmResourceGroup -Name $rgName -Location $locationNew-AzureRmRelayNamespace -ResourceGroupName $rgName -Name $namespaceName -Location $locationNew-AzureRmRelayHybridConnection -Namespace $namespaceName -ResourceGroupName $rgName -Name $hcName -RequiresClientAuthorization $true

構建混合應用方式之Azure混合連接

創(chuàng)建出來混合連接字符串就是sb://relaydemons.servicebus.chinacloudapi.cn/hcdemo


基于混合連接SDK

目前微軟官方提供了兩個SDK,一個是.NET語言版本,另一個是Node.JS版本。兩個SDK也都開源在Github上:azure-relay-net,azure-relay-node。

本地服務(監(jiān)聽者)

首先本地服務端作為監(jiān)聽者,需要要使用具有監(jiān)聽權限的連接字符串,創(chuàng)建一個出站的WebSocket連接,也就是注冊到Azure中繼服務上。如果本地有多個監(jiān)聽者,那么進入的訪問請求會隨機地發(fā)送。一個混合連接最多支持25個監(jiān)聽者。

構建混合應用方式之Azure混合連接

構建混合應用方式之Azure混合連接

private const string ConnectionString = "connection string with listen permission";// Listenvar listener = new HybridConnectionListener(ConnectionString);await listener.OpenAsync();// AcceptHybridConnectionStream relayConnection = await listener.AcceptConnectionAsync();// Readvar reader = new StreamReader(relayConnection);var line = await reader.ReadLineAsync();// OutputConsole.WriteLine(line); 
// Closeawait relayConnection.CloseAsync(CancellationToken.None);

構建混合應用方式之Azure混合連接

外部服務(發(fā)送者)

發(fā)送者提供具有發(fā)送權限的連接字符串(不是必須如果建立混合連接時沒有要求客戶端認證,不過從安全角度考慮,推薦要求認證),與混合連接服務建立WebSocket連接,最終會與一個監(jiān)聽者建立起連接,從而進行溝通。

構建混合應用方式之Azure混合連接

構建混合應用方式之Azure混合連接

private const string ConnectionString = "connection string with send permission";// Connectvar client = new HybridConnectionClient(ConnectionString);
HybridConnectionStream relayConnection = await client.CreateConnectionAsync();// Writevar writer = new StreamWriter(relayConnection) { AutoFlush = true };await writer.WriteLineAsync("hello from outside");// Closeawait relayConnection.CloseAsync(CancellationToken.None);

構建混合應用方式之Azure混合連接

當然,因為搭建的WebSocket是雙向通道,所以本地服務端也可以發(fā)送消息到外部服務端的。

連接字符串

前面提到需要用到不同權限的連接字符串,總共有三種權限管理,監(jiān)聽和發(fā)送,可以根據(jù)需要創(chuàng)建不同權限搭配的安全訪問策略,然后在它的具體界面里會自動生成相應的連接字符串,直接復制使用即可,如下圖。

構建混合應用方式之Azure混合連接

如果本地服務不能或者不希望被修改成調(diào)用SDK,比如云端Web App調(diào)用本地的Web Api或者SQL數(shù)據(jù)庫,那該如何使用混合連接呢?Azure Web App已經(jīng)整合里混合連接,可以很方便的配置,而不需要對本地服務做任何修改。

完整代碼示例可查看我的Github。


基于Azure Web App混合連接工具

目前Azure中國還沒有支持混合連接的整合,不過已經(jīng)在路上了,應該會很快就可上線。以下用Azure全球來演示,最終Azure中國也會是同樣的體驗。

配置混合連接端節(jié)點

登陸azure門戶網(wǎng)站,找到你的web app,在設置下面點擊網(wǎng)絡,在展開的頁面中點擊“配置你的混合連接端節(jié)點”,打開頁面如下:

構建混合應用方式之Azure混合連接

點擊“下載連接管理工具”下載,后面會用到。

點擊“添加混合連接”,在打開的頁面里面點擊添加,如下圖。填入相應信息,其中名稱可以自定義,而端節(jié)點主機必須是運行你本地服務的機器名稱,端節(jié)點端口也是本地服務所在端口。命名空間選擇前面已經(jīng)創(chuàng)建好的,也可以這里創(chuàng)建新的。

構建混合應用方式之Azure混合連接

創(chuàng)建完成后,把前面下載的連接管理工具安裝在運行本地服務的機器上。然后打開混合連接管理工具,點擊“Configure another Hybrid Connection”,這個時候會彈出登陸框,輸入你的azure訂閱賬戶登陸后,會顯示當前訂閱中已有的混合連接,如下圖。

構建混合應用方式之Azure混合連接

選擇配置了正確端節(jié)點的混合連接,然后點擊“Save”保存。這個混合連接就會將本地與云端web app建立起連接,狀態(tài)顯示為”Connected”。

構建混合應用方式之Azure混合連接

這樣,在web app里面就可以通過”端節(jié)點名稱:端口“的方式來訪問本地的服務了。比如我這里演示的,我在本地運行了一個web api服務(api/values)在16782端口,返回字符串”value from on-premises <本地機器名稱>”,然后通過混合連接,云端web app就可以很簡單的訪問本地服務了,代碼如下:

構建混合應用方式之Azure混合連接

構建混合應用方式之Azure混合連接

using (var httpClient = new HttpClient())
{    var onPremSvcUri = "http://mc-allenl-01:16782/api/values";    using (var response2 = httpClient.GetAsync(onPremSvcUri).Result)
    {        if (response2.IsSuccessStatusCode)
        {
            ViewBag.Message = $"{response2.Content.ReadAsStringAsync().Result}";
        }
    }
}

構建混合應用方式之Azure混合連接

結果:

構建混合應用方式之Azure混合連接

對于其他本地服務,比如SQL服務,也可以用同樣的方式連接。


基于PortBridge示例程序

如果外部服務不是用Azure Web App,又該如何使用混合連接呢?可以通過混合連接來實現(xiàn)端口轉(zhuǎn)發(fā),從而建立連接通道。微軟官方示例PortBridge正是演示了這種功能。接下來,我們用它來演示在云端虛擬機中的web應用調(diào)用本地web api。

構建混合應用方式之Azure混合連接

創(chuàng)建以本地服務所運行的機器為名稱的混合連接(演示名稱mc-allenl-01),如何創(chuàng)建請參照文章最開始的PowerShell命令。并分別創(chuàng)建發(fā)送和監(jiān)聽權限的共享訪問策略。

構建混合應用方式之Azure混合連接

將PortBridge下載并編譯,修改PortBridgeServerAgent.exe.config文件中portBridge相關配置,其中targetHost配置成本地服務所運行的機器名稱,端口則為本地服務所在端口,本示例配置如下。然后將整個文件夾復制到本地服務所運行的機器上,并雙擊PortBridgeServerAgent.exe運行。

構建混合應用方式之Azure混合連接

<portBridge serviceBusNamespace="allenlrelaydemo.servicebus.chinacloudapi.cn" serviceBusAcce***uleName="listen" serviceBusAcce***uleKey="******">
  <hostMappings>
    <add targetHost="mc-allenl-01" allowedPorts="16785"/>
  </hostMappings></portBridge>

修改PortBridgeClientAgent.exe.config文件中portBridgeAgent的相關配置,其中targetHost設置成本地服務所運行的機器名稱,localTcpPort設為你期望使用訪問的端口,remoteTcpPort則為本地服務所運行的端口,本示例配置如下。將整個文件夾復制到Azure虛擬機中,并雙擊PortBridgeClientAgent.exe運行。

構建混合應用方式之Azure混合連接

構建混合應用方式之Azure混合連接

<portBridgeAgent serviceBusNamespace="allenlrelaydemo.servicebus.chinacloudapi.cn" serviceBusAcce***uleName="send" serviceBusAcce***uleKey="******">
  <portMappings>
    <port localTcpPort="81" targetHost="mc-allenl-01" remoteTcpPort="16782">
      <firewallRules>
        <rule source="127.0.0.1"/>
        <rule sourceRangeBegin="10.0.0.0" sourceRangeEnd="10.255.255.255"/>
      </firewallRules>
    </port>
  </portMappings></portBridgeAgent>

構建混合應用方式之Azure混合連接

在Azure虛擬機中訪問http://localhost:81/api/values,沒有運行PortBridge之前是會失敗的,但開啟PortBridge,也就是通過混合連接建立通道之后,就會訪問成功,如下所示:

構建混合應用方式之Azure混合連接

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前名稱:構建混合應用方式之Azure混合連接-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.rwnh.cn/article46/jddhg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT小程序開發(fā)、企業(yè)建站、微信公眾號、外貿(mào)建站網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設
吉木乃县| 时尚| 咸阳市| 卢龙县| 津市市| 白朗县| 那坡县| 中西区| 英德市| 嵊泗县| 徐闻县| 大姚县| 象山县| 建德市| 将乐县| 临城县| 徐水县| 新竹县| 康平县| 桓仁| 新蔡县| 常熟市| 额敏县| 芦溪县| 恩施市| 宁阳县| 上犹县| 萨迦县| 册亨县| 中方县| 黔南| 鹤庆县| 蓝山县| 宜丰县| 昆明市| 泗阳县| 九寨沟县| 罗江县| 邢台县| 屏边| 潼关县|