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

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

NServiceBus官方文檔翻譯(二)NServiceBus 入門

2019-11-17 03:03:16
字體:
供稿:網(wǎng)友

NServiceBus官方文檔翻譯(二)NServiceBus 入門

在這篇教程中我們將學(xué)習(xí)如何創(chuàng)建一個非常簡單的由客戶端向服務(wù)端發(fā)送消息的訂單系統(tǒng)。該系統(tǒng)包括三個項(xiàng)目:Client、Server 和 Messages,我們將按照以下步驟來完成這個任務(wù)。

  1. 創(chuàng)建 Client 項(xiàng)目
  2. 創(chuàng)建 Messages 項(xiàng)目
  3. 創(chuàng)建 Server 項(xiàng)目
  4. 發(fā)送訂單
  5. 運(yùn)行解決方案

完整的解決方案代碼可以在這里下載。

創(chuàng)建 Client 項(xiàng)目

讓我們開始創(chuàng)建 Client 項(xiàng)目,它將負(fù)責(zé)發(fā)送訂單請求到一個 NServiceBus 終結(jié)點(diǎn)(Endpoint)。

以管理員權(quán)限運(yùn)行 Visual Studio,添加一個名叫“Ordering.Client”的類庫項(xiàng)目,并且將解決方案命名為“Ordering”。

我們現(xiàn)在需要引用 NServiceBus 的程序集,最快的方式是使用 NuGet 包管理控制臺。

打開 NuGet 包管理控制臺:

輸入以下命令:

PM> Install-Package NServiceBus.Host

注:需要重新加載項(xiàng)目

包安裝程序?qū)⒁?NServiceBus 程序集并在 Client 項(xiàng)目中創(chuàng)建幾個模板文件。

例如,“EndpointConfig.cs” 被用來配置項(xiàng)目的終結(jié)點(diǎn),并且自動應(yīng)用了服務(wù)端配置。

為了將配置修改為客戶端配置,我們需要打開“EndpointConfig.cs”文件并修改以下代碼:

namespace Ordering.Client{    public class EndpointConfig : IConfigureThisEndpoint, AsA_Server    {    }}

修改后的代碼如下:

namespace Ordering.Client{    public class EndpointConfig : IConfigureThisEndpoint, AsA_Client    {    }}

注:僅繼承的基類由 AsA_Server 修改為 AsA_Client。

稍后我們將在 Client 項(xiàng)目中添加更多代碼,現(xiàn)在讓我們先把焦點(diǎn)放在如何處理訂單請求上面。

創(chuàng)建 Messages 項(xiàng)目

首先添加一個名叫“Ordering.Messages”的類庫項(xiàng)目。

該項(xiàng)目將包含消息定義,并且將由客戶端和服務(wù)端共享,這樣兩邊都將獲得強(qiáng)類型的消息描述。

在該項(xiàng)目中安裝“NServiceBusInterfaces”NuGet包,在包管理控制臺,輸入以下命令:

PM> Install-Package NServiceBus.Interfaces -PRojectName Ordering.Messages

添加一個“PlaceOrder.cs”文件,在其中添加以下代碼:

namespace Ordering.Messages{    public class PlaceOrder : ICommand    {        public Guid Id { get; set; }        public string Product { get; set; }    }}

創(chuàng)建 Server 項(xiàng)目

現(xiàn)在我們可以開始創(chuàng)建處理訂單的服務(wù)端,首先添加一個名為“Ordering.Server”的類庫項(xiàng)目。

為該項(xiàng)目安裝“NServiceBusHost”NuGet包,在包管理控制臺,輸入以下命令:

PM> Install-Package NServiceBus.Host -ProjectName Ordering.Server

注:需要重新加載項(xiàng)目

添加對 Messages 項(xiàng)目的引用,以便服務(wù)端解釋消息內(nèi)容。

添加一個“PlaceOrderHandler.cs”文件,向其中寫入以下代碼:

namespace Ordering.Server{    public class PlaceOrderHandler : IHandleMessages<PlaceOrder>    {        public IBus Bus { get; set; }        public void Handle(PlaceOrder message)        {            Console.WriteLine(@"Order for Product:{0} placed with id: {1}", message.Product, message.Id);        }    }}

發(fā)送訂單

我們差不多快做好了,現(xiàn)在唯一剩下的就是回到 Client 項(xiàng)目中,添加對 Messages 項(xiàng)目的引用,并添加一個“SendOrder.cs”文件,向其中寫入以下代碼:

namespace Ordering.Client{    public class SendOrder : IWantToRunWhenBusStartsAndStops    {        public IBus Bus { get; set; }        public void Start()        {            Console.WriteLine("Press 'Enter' to send a message.To exit, Ctrl + C");            while (Console.ReadLine() != null)            {                var id = Guid.NewGuid();                Bus.Send("Ordering.Server", new PlaceOrder() { Product = "New shoes", Id = id});                Console.WriteLine("==========================================================================");                Console.WriteLine("Send a new PlaceOrder message with id: {0}", id.ToString("N"));            }        }        public void Stop()        {        }    }}

注:以上代碼基于 4.x 版本,若使用 3.x 版本需要使用 “IWantToRunAtStartup”接口。

運(yùn)行解決方案

已經(jīng)完成編碼了,現(xiàn)在是時候運(yùn)行解決方案了。

在解決方案中設(shè)置啟動項(xiàng)目,將 Client 和 Server 項(xiàng)目設(shè)置為同時運(yùn)行。

最后點(diǎn)擊 F5 按鈕運(yùn)行解決方案,即可看到整個系統(tǒng)。

將會有兩個控制臺應(yīng)用程序啟動,在客戶端控制臺中按下回車,將在服務(wù)端窗口中看到“Order for Product: New shoes placed”。

恭喜 - 你剛完成了你的第一個 NServiceBus 程序。

簡單吧。

如果你在控制臺中看到警告,不用擔(dān)心,這些警告只是 NServiceBus 告訴你它無法找到需要的隊(duì)列,它將自動為你創(chuàng)建。

接下來學(xué)些什么

  • NServiceBus 入門之容錯處理
  • NServiceBus 和 SOA 的架構(gòu)原則

敬請期待。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 剑川县| 拉萨市| 巴塘县| 富平县| 双江| 汝州市| 辰溪县| 汉中市| 华阴市| 阳城县| 昌吉市| 河池市| 凤翔县| 东莞市| 蒙山县| 翁源县| 报价| 潞西市| 门源| 五家渠市| 大名县| 庆城县| 包头市| 即墨市| 南阳市| 遂昌县| 西宁市| 通海县| 巴里| 石城县| 贡觉县| 申扎县| 马龙县| 巫溪县| 永定县| 塔河县| 安阳县| 曲靖市| 凉山| 武川县| 石林|