Orleans 解決并發(fā)之痛(五):Web API

通過前面幾篇文章的介紹,可能會(huì)疑問怎么在實(shí)際開發(fā)中調(diào)用 Grain县习,之前 Demo 的 Client 都是基于控制臺(tái)應(yīng)用程序作谚,實(shí)際開發(fā)下可能是基于 Web Form忆家、Web API、MVC......全蝶,由于一時(shí)短路了闹蒜,沒有聯(lián)想到控制臺(tái)應(yīng)用程序的方式怎么切到其他方式調(diào)用。

這篇文章將會(huì)介紹基于 Web API 的方式調(diào)用 Grain抑淫,但相比 Web API绷落,我可能更傾向于 gRPC,Web API 基于 Http始苇,相比 RPC 性能上會(huì)弱一些砌烁,RPC 方式接口調(diào)用上也會(huì)更方便,不過這次還是希望裝逼的方式可以簡(jiǎn)單點(diǎn)催式。有興趣可以看看這篇文章 ASP.NET 微服務(wù):gRPC 函喉。

-

我們可以基于 Demo-OrleansState 來調(diào)整代碼:

  1. 將 Client 控制臺(tái)程序刪除避归;
  2. 新建解決方案文件夾 Orleans,并將 Grains函似、Interfaces槐脏、Silo 程序集移到文件夾內(nèi),這樣看上去清晰一點(diǎn)撇寞;
  3. 創(chuàng)建類庫 Business顿天,普通的業(yè)務(wù)邏輯代碼;
  4. 創(chuàng)建空的 Web API 項(xiàng)目蔑担;

注意: Silo 目前依然是控制臺(tái)應(yīng)用程序牌废。
如果項(xiàng)目是基于 .NET Framework,之后可以將 Silo 使用 Topshelf 以 Windows 服務(wù)方式部署啤握;如果是基于 .NET Core鸟缕,可以使用 Docker 來部署;據(jù)官方提供的 Sample HelloWorld.NetCore排抬,Orleans 2.0.0 將支持 .NET Core懂从,目前是 1.5.0。

項(xiàng)目結(jié)構(gòu):
項(xiàng)目代碼結(jié)構(gòu)
依賴引用:
程序集名稱 類型 NuGet 依賴包
Microsoft.Orleans.
引用
Business 類庫 Core Interfaces
WebAPI Web API Core
OrleansCodeGenerator
Business
依賴引用關(guān)系圖
配置連接 Silo:

WebAPI 項(xiàng)目在啟動(dòng)的時(shí)候蹲蒲,需要同時(shí)連接上 Silo番甩,才能調(diào)用 Grain 里面的方法。ClientConfiguration.xml 和之前的控制臺(tái)程序一樣即可届搁,在 Global.asax 的 Application_Start 修改代碼如下:

protected void Application_Start()
{
  var config = ClientConfiguration.LoadFromFile(Server.MapPath(@"~/ClientConfiguration.xml"));
  GrainClient.Initialize(config);
  System.Web.Http.GlobalConfiguration.Configure(WebApiConfig.Register);
}
Business 調(diào)用 Grain:
public class Persion
{
  public string SayHello(string name)
  {
    var grain = GrainClient.GrainFactory.GetGrain<IPersonGrain>(name);
    grain.SayHelloAsync();
    return "success";
  }
}
WebAPI 調(diào)用 Business 層方法:
public class PersonController : ApiController
{
  [HttpGet]
  public string SayHello(string name)
  {
    return new Business.Persion().SayHello(name);
  }
}

根據(jù)實(shí)際接口定義規(guī)范缘薛,修改 WebApiConfig.cs,假設(shè) routeTemplate 配置如下:

routeTemplate: "api/{controller}/{action}"
測(cè)試:

啟動(dòng) Silo 和 WebAPI 后卡睦,在瀏覽器內(nèi)數(shù)據(jù)地址:

http://localhost:{WebAPI 啟動(dòng)的端口號(hào)}/api/person/sayHello?name=beck
服務(wù)端顯示結(jié)果
參考鏈接:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宴胧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子表锻,更是在濱河造成了極大的恐慌恕齐,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬逊,死亡現(xiàn)場(chǎng)離奇詭異檐迟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)码耐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門追迟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骚腥,你說我怎么就攤上這事敦间。” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵廓块,是天一觀的道長(zhǎng)厢绝。 經(jīng)常有香客問我,道長(zhǎng)带猴,這世上最難降的妖魔是什么昔汉? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮拴清,結(jié)果婚禮上靶病,老公的妹妹穿的比我還像新娘。我一直安慰自己口予,他們只是感情好娄周,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沪停,像睡著了一般煤辨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上木张,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天众辨,我揣著相機(jī)與錄音,去河邊找鬼舷礼。 笑死鹃彻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的且轨。 我是一名探鬼主播浮声,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼虚婿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旋奢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起然痊,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤至朗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后剧浸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锹引,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年唆香,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫌变。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躬它,死狀恐怖腾啥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤倘待,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布疮跑,位于F島的核電站,受9級(jí)特大地震影響凸舵,放射性物質(zhì)發(fā)生泄漏祖娘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一啊奄、第九天 我趴在偏房一處隱蔽的房頂上張望渐苏。 院中可真熱鬧,春花似錦增热、人聲如沸整以。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽公黑。三九已至,卻和暖如春摄咆,著一層夾襖步出監(jiān)牢的瞬間凡蚜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工吭从, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朝蜘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓涩金,卻偏偏與公主長(zhǎng)得像谱醇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子步做,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,306評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理副渴,服務(wù)發(fā)現(xiàn),斷路器全度,智...
    卡卡羅2017閱讀 134,711評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,859評(píng)論 6 342
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法煮剧,類相關(guān)的語法,內(nèi)部類的語法将鸵,繼承相關(guān)的語法勉盅,異常的語法,線程的語...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • 夜 未深 小山腳下 昆蟲窸窣 植物的清香 潤(rùn)入 每一個(gè) 毛孔 夜色朦朧 昆蟲窸窣 清香徐徐 心醉了 只好 寫詩 安...
    十月云閱讀 701評(píng)論 1 48