【返回導航】 在簡單瞭解了Orleans 之後我們可以通過幾個例子去加深印象 一、快速入門示例 這個例子也是跟著《Microsoft Orleans 之 入門指南》(https://www.cnblogs.com/endv/p/6147976.html)這篇文章做的 上篇筆記中的連個例子說明瞭開發的 ...
【返回導航】
在簡單瞭解了Orleans 之後我們可以通過幾個例子去加深印象
一、快速入門示例
這個例子也是跟著《Microsoft Orleans 之 入門指南》(https://www.cnblogs.com/endv/p/6147976.html)這篇文章做的
上篇筆記中的連個例子說明瞭開發的具體步驟以及需要引用的類庫,還有客戶端如何去調用,接下來的例子是如何去使用創建相應的單元測試,
1.創建
這次我們通過Orleans Tools for Visual Studio去創建Orleans 的項目
首先使用模板先創建
Sample.Interfaces1
Sample.Implements1
Server1
三個項目,具體代碼參考上篇筆記的第二個例子。
接下來我們創建一個單元測試程式庫 Sample.Test1
引用項目Sample.Implements1、Sample.Interfaces1
引用NuGet包 Microsoft.Orleans.TestingHost
項目結構如下:
我們創建一個測試類就叫UserServiceTest,繼承自Orleans 測試庫TestingSiloHost
測試代碼如下:
namespace Sample.Test { [TestClass] public class UserServiceTest: TestingSiloHost { [ClassCleanup] public static void ClassCleanup() { // Optional. // By default, the next test class which uses TestignSiloHost will // cause a fresh Orleans silo environment to be created. StopAllSilosIfRunning(); } [TestMethod] public async void TestExist() { var grain = GrainFactory.GetGrain<IUserService>(10); bool bo = await grain.Exist("18612478956"); Assert.IsTrue(bo); } } }
記得增加兩個配置文件,
ClientConfigurationForTesting.xml
<?xml version="1.0" encoding="utf-8" ?> <ClientConfiguration xmlns="urn:orleans"> <Gateway Address="localhost" Port="40000"/> <!-- To turn tracing off, set DefaultTraceLevel="Off" and have no overrides. For the trace log file name, {0} is replaced by "Client" and {1} is the current time. --> <Tracing DefaultTraceLevel="Info" TraceToConsole="false" TraceToFile="{0}-{1}.log" BulkMessageLimit="1000"> <TraceLevelOverride LogPrefix="Runtime" TraceLevel="Info" /> <TraceLevelOverride LogPrefix="Application" TraceLevel="Info" /> <TraceLevelOverride LogPrefix="AssemblyLoader" TraceLevel="Warning" /> </Tracing> <Statistics MetricsTableWriteInterval="300s" PerfCounterWriteInterval="30s" LogWriteInterval="300s" WriteLogStatisticsToTable="true" StatisticsCollectionLevel="Info"/> <Messaging ResponseTimeout="30s" ClientSenderBuckets="8192" MaxResendCount="0"/> </ClientConfiguration>
OrleansConfigurationForTesting.xml
<?xml version="1.0" encoding="utf-8"?> <OrleansConfiguration xmlns="urn:orleans"> <Globals> <StorageProviders> <Provider Type="Orleans.Storage.MemoryStorage" Name="MemoryStore" /> <Provider Type="Orleans.Storage.MemoryStorage" Name="Default" /> <!--<Provider Type="Orleans.Storage.AzureTableStorage" Name="AzureStore"/>--> </StorageProviders> <SeedNode Address="localhost" Port="22222"/> <Messaging ResponseTimeout="30s"/> </Globals> <Defaults> <Networking Address="localhost" Port="22222"/> <ProxyingGateway Address="localhost" Port="40000" /> <Tracing DefaultTraceLevel="Info" TraceToConsole="false" TraceToFile="{0}-{1}.log" PropagateActivityId="false" BulkMessageLimit="1000"> <TraceLevelOverride LogPrefix="Application" TraceLevel="Info" /> <!-- <TraceLevelOverride LogPrefix="Runtime.Dispatcher" TraceLevel="Verbose" /> <TraceLevelOverride LogPrefix="AssemblyLoader.Silo" TraceLevel="Warning" /> --> </Tracing> <Statistics MetricsTableWriteInterval="30s" PerfCounterWriteInterval="30s" LogWriteInterval="300s" WriteLogStatisticsToTable="true" StatisticsCollectionLevel="Info"/> </Defaults> </OrleansConfiguration>
更改xml文件屬性為:如果較新則複製
測試項目結構如下:
按照文檔裡面所述,測試項目的就已經編寫完成了,直接可以開始測試,但是當我調試test的時候,卻導致了一個錯誤,如下圖所示:
這個問題沒找到解決方案,下麵將直接對官方文檔以及官方文檔上提供的教程開始學習。