中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net core中MediatR如何使用

發布時間:2021-07-15 14:23:33 來源:億速云 閱讀:342 作者:Leah 欄目:大數據

asp.net core中MediatR如何使用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

在Asp.net core中使用MediatR

我已經開始考慮使用MediatR作為我的領域事件實現。為了達到這個目的,我用asp.net core創建了一個示例程序,總的來說是非常容易的,如果你之前沒有使用過MediatR,或者你正在找一個使用它的示例程序,那么就繼續閱讀吧。

安裝MediatR

假設你使用的是Visual studio,你可以通過nuget的ui來安裝下面這兩個包:

asp.net core中MediatR如何使用

不是用visual studio的話自己找辦法安裝吧。

在Startup類中配置MediatR

下一步,在Startup類中,在ConfigureServices方法中添加如下代碼:

services.AddMediatR();
// if you have handlers/events in other assemblies
// services.AddMediatR(typeof(SomeHandler).Assembly, //       typeof(SomeOtherHandler).Assembly);

在我的示例項目中因為我只有一個工程/程序集,所以沒有必要添加其他的。如果你有不只一個程序集需要被配置MediatR,那么你可以按照上面代碼中注釋掉的那樣來配置。

注意:起初我用了Steve Gordon’s helpful article to register my types這個指引,但是MediatR.Extensions.Microsoft.DependencyInjection 包得到了更好的支持和更健壯的成長(更別說更少的代碼)。我建議使用這個包。

MediatR 實戰

當然,如果你想要確認MediatR在你的asp.net core項目中運作,最高的辦法是創建一些簡單的類型并驗證是否能達到預期的效果。MediatR支持兩種消息類型:Request/Response和Notification。我使用它的大多數情況是Notification這種模式。因為我希望用它來做模型的領域事件(如果你對于領域事件不熟悉的話,先了解一下它再回來)。要想使用notifications所期望得到的行為,你需要定義一些實現了INotification的類型,和一些實現了INotificationHandler<sometype>的handler。當你要發布一個notification,每一個handler都會在response中。你可以使用下面的代碼來實踐一下并能看到最終的結果,如果你正在搞一個新項目,你可以把它放到Home Controller中。

asp.net core中MediatR如何使用

上面的代碼擼完后,使用kestrel運行你的應用(你可以在項目的根目錄下面進入cmd然后輸入dotnet run來啟動一個控制臺面板,或者在visual studio中改變啟動方式,不過一般情況下我直接進到項目的properties目錄下面找到lauchSettings.json,吧IIS相關的東西都刪除了。)然后查看你的控制臺面板的輸出,你應該能看到輸出的日志:

asp.net core中MediatR如何使用

如果你只是想用MediatR來發布事件,上面的就是了。如果你想要看看怎么用它來做request/response,你需要在實現幾個類:

asp.net core中MediatR如何使用

上面的代碼定義了一個request以及它的返回類型(string,IRequest<string>).handlers必須實現一個Handle方法,這個方法會返回期望的響應。當你發送一個請求,只有一個handler會被調用并且會返回一個帶有合適類型的響應。

(作者在這里說明了一個問題,他給這個包的作者發了一個pull request要求如果有注冊了多個handler,那么應該調用注冊的第一個,因為只有第一個被添加到了DI系統中)。

當前的版本也不會拋出什么異常,但是即便在將來的版本中會拋出異常,也不會讓我感到驚訝什么的。

無論以何種方式,要使用上面定義的內容,你只需要在About 方法中添加如下代碼:

asp.net core中MediatR如何使用

從瀏覽器中瀏覽/About頁面,你能看到調用的結果。目前版本已經更正了結果,你將看到的是注冊的第一個(按照你編碼的從上到下的順序,PingHandler是算第一個注冊的)handler的返回的結果。

上面就是你要開始研究MediatR的一個很好的開端了。我已經迫不及待的想要將他運用在我的eShopContainer(微軟示例項目,講微服務的)項目當中了。查看這里 Microsoft’s architecture learning hub去獲取更多微軟的相關技術的書書籍吧。

asp.net core中MediatR如何使用

看完上述內容,你們掌握asp.net core中MediatR如何使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南丹县| 皋兰县| 开封市| 延长县| 古蔺县| 松潘县| 仙居县| 金坛市| 富民县| 巴林右旗| 洱源县| 凤阳县| 祁连县| 青浦区| 蒲江县| 通渭县| 柞水县| 邢台市| 武强县| 昆山市| 绥中县| 抚远县| 灵璧县| 沁源县| 镇安县| 瓮安县| 丹江口市| 岳池县| 通许县| 尚志市| 静安区| 保亭| 仁化县| 新竹县| 田东县| 抚远县| 澄江县| 磐安县| 开远市| 万荣县| 团风县|