Orleans是一種新的編程模式,用來提升微軟通用語言運(yùn)行庫(CLR)的抽象水平,Orleans的宗旨就是為了創(chuàng)建一種既適用于客戶端又適用于服務(wù)器的編程模式,簡(jiǎn)化代碼調(diào)試,提高代碼的可移植性。3.0?版本帶來大量的改進(jìn)和修復(fù),以及一些新的特性。
自2.0以來的一些主要變化是:
分布式ACID?事務(wù)——多個(gè)grains可以加入一個(gè)事務(wù)(不管它們的狀態(tài)存儲(chǔ)在哪里)
新的調(diào)度器,它在某些情況下提高了30%以上的性能
新的基于Roslyn代碼分析的代碼生成器
重寫集群成員以提高恢復(fù)速度
共同托管支持
Networking layer replacement with ASP.NET Bedrock
在3.0版本中,引入TLS支持,可通過?Microsoft.Orleans.Connections.Security?包獲得。Orleans 3.0將其整個(gè)網(wǎng)絡(luò)層替換為構(gòu)建在?Project Bedrock?之上的整個(gè)網(wǎng)絡(luò)層,這是ASP.NET團(tuán)隊(duì)的一個(gè)創(chuàng)舉。Bedrock的目標(biāo)是幫助開發(fā)人員構(gòu)建快速、健壯的網(wǎng)絡(luò)客戶端和服務(wù)器。
網(wǎng)絡(luò)層重寫還包括用對(duì)MemoryPool的依賴替換自定義緩沖區(qū)池,在進(jìn)行這種更改時(shí),序列化現(xiàn)在更多地利用了?Span。在Orleans 3.0中,增加了對(duì)通過協(xié)議協(xié)商逐步升級(jí)網(wǎng)絡(luò)協(xié)議的支持。Orleans 3.0中添加的協(xié)議協(xié)商,例如定制核心序列化程序,同時(shí)保持向后兼容性。新網(wǎng)絡(luò)協(xié)議的一個(gè)好處是支持全雙工silo-to-silo連接,而不是以前在silo之間建立的單純連接對(duì)。協(xié)議版本可以通過ConnectionOptions.ProtocolVersion配置。
Co-hosting via the Generic Host
現(xiàn)在,與其他框架(如ASP .NET Core)在同一個(gè)進(jìn)程中共同托管Orleans比以前更容易。下面是一個(gè)使用UseOrleans將Orleans與ASP.NET Core一起添加到主機(jī)的示例:
使用通用主機(jī)構(gòu)建器,Orleans將與其他托管服務(wù)共享服務(wù)提供商。這使得這些服務(wù)可以進(jìn)入Orleans。例如,開發(fā)人員可以將IClusterClient或IGrainFactory注入ASP.NET
Core MVC控制器,并直接從它們的MVC應(yīng)用程序調(diào)用grains。此功能可用于簡(jiǎn)化部署拓?fù)浠蛳颥F(xiàn)有應(yīng)用程序添加其他功能。
Improved extensibility
streams?現(xiàn)在可以有自定義數(shù)據(jù)適配器,允許它們以任何格式接收數(shù)據(jù)。這使開發(fā)人員能夠更好地控制?stream?項(xiàng)在存儲(chǔ)中的表示方式。它還使?streams提供程序能夠控制數(shù)據(jù)的編寫方式,從而使steams能夠與遺留系統(tǒng)和/或non-Orleans?服務(wù)集成。自定義事務(wù)狀態(tài)現(xiàn)在可以聲明它在事務(wù)中能夠履行的角色?,F(xiàn)在可以公開訪問預(yù)定義的布局策略,以便在配置期間可以替換任何位置指示符。
Reliability improvements
此版本中,集群從故障中恢復(fù)得更快。消息傳遞錯(cuò)誤現(xiàn)在得到更一致的處理,從而導(dǎo)致提示錯(cuò)誤被傳送回調(diào)用方。這有助于開發(fā)人員更快地發(fā)現(xiàn)錯(cuò)誤。例如,當(dāng)消息不能完全序列化或反序列化時(shí),詳細(xì)的異常將被傳回原始調(diào)用方。
內(nèi)容來源:開源中國(guó)