LINQPad是進行.NET開發的一款優秀工具,很是有利於Ignite.NET API的快速入門。html
下載LINQPad:linqpad.net/Download.aspx,注意要選擇64位操做系統的AnyCPU版本;git
安裝Ignite.NET的NuGet軟件包:web
Query
-> References
和Properties
菜單項);Add NuGet…
,可能會出現警告:As you don't have LINQPad Premium/Developer Edition, you can only search for NuGet packages that include LINQPad samples.
,這是正常的,由於Ignite軟件包確實包含LINQPad示例;Add To Query
按鈕來安裝軟件包;Add namespaces
按鈕,並(至少)添加第一個:Apache.Ignite.Core
;Query Properties
窗口上單擊OK
;確認Language
下拉框設置爲C# Expression
(默認設置);spring
輸入Ignition.Start()
,而後按下F5。apache
Ignite節點啓動後,就能夠在輸出面板中看到一般的控制檯輸出。緩存
在左側的Samples
選項卡上能夠看到打包的示例代碼。網絡
LINQPad在單獨的進程中運行業務代碼,該進程默認在屢次運行之間能夠重複使用(出於性能緣由)。app
這有兩個問題:工具
Ignition
類將全部啓動的節點保留在靜態映射中,該進程重用時,這些節點將保持運行,若是執行Ignition.Start()
兩次,則會拋出Default Ignite instance has already been started.
這樣的錯誤。該行爲有時可能有用,但有時則不須要,可是幸虧能夠經過內置的Util.NewProcess
屬性來控制它。先將頂部的Language
下拉框切換到C# Statement(s)
模式,而後運行如下腳本:性能
Util.NewProcess = true; Ignition.Start();
該腳本屢次運行也不會出問題,由於每次都是從頭開始的。
因爲JVM啓動和網絡發現的過程,Ignite節點須要一些時間才能啓動。爲了在LINQPad中對代碼快速迭代,能夠在屢次運行之間重用已啓動的節點。例以下面的代碼重用啓動的Ignite實例並重用現有的緩存,每次運行添加一條數據並顯示現有的數據:
// Get existing instance or start a new one var ignite = Ignition.TryGetIgnite() ?? Ignition.Start(); // Get existing cache or create a new one var cache = ignite.GetOrCreateCache<Guid, DateTime>("cache"); // Add a new entry cache[Guid.NewGuid()] = DateTime.Now; // Show all entries cache.Dump();
與重啓節點須要幾秒鐘的時間相反,此代碼將在幾毫秒內運行。
必要時能夠經過Shift+Control+F5
卸載AppDomain
並從頭開始。
除了簡單講解Ignite API以外,還建議關注下下面的Ignite + LINQPad使用場景:
檢查現有的緩存
Visor命令行工具能夠顯示緩存的內容,可是在LINQPad中執行此操做更加靈活且友好,由於LINQPad腳本中沒有任何實際的類,所以必須經過二進制模式才能讀取緩存的內容。
如下代碼顯示了全部緩存的列表以及每一個緩存中的前5條數據:
var ignite = Ignition.TryGetIgnite() ?? Ignition.Start(); foreach (var cacheName in ignite.GetCacheNames()) ignite.GetCache<object, object>(cacheName) .WithKeepBinary<object, object>() .Select(x => x.ToString()) .Take(5) .Dump(cacheName);
將Spring XML配置轉換爲C# IgniteConfiguration
假設有一些Ignite Spring XML配置文件,而且須要對Ignite.NET也使用相同的配置,或者要從Ignite.NET 1.5遷移,該版本中Spring XML是惟一的配置機制。
具體上能夠簡單地使用上述Spring XML文件啓動節點,而後調用GetConfiguration()
以查看其在.NET中對應的配置:
Ignition.Start(@"spring-config.xml").GetConfiguration()
將IgniteConfiguration轉換爲app.config XML
Ignite.NET支持app.config和web.config配置。可是編寫XML並不高效,而在C#中使用IgniteConfiguration
則更容易一些,由於IDE會有很大的幫助,能夠避免沒法編譯的無效代碼。
爲了配合使用XML,有一種將IgniteConfiguration
實例轉換爲XML表示形式的隱藏方法。如下代碼顯示瞭如何經過反射(早期版本)使用它(確認已將Language
下拉菜單設置爲C#Program
):
void Main() { new IgniteConfiguration { CacheConfiguration = new[] { new CacheConfiguration { Name = "myCache", CacheMode = CacheMode.Replicated } } }.ToXml().Dump(); } public static class IgniteConfigurationExtensions { public static string ToXml(this IgniteConfiguration cfg) { var sb = new StringBuilder(); var settings = new XmlWriterSettings { Indent = true }; using (var xmlWriter = XmlWriter.Create(sb, settings)) { typeof(Ignition).Assembly .GetType("Apache.Ignite.Core.Impl.Common.IgniteConfigurationXmlSerializer") .GetMethod("Serialize") .Invoke(null, new object[] {cfg, xmlWriter, "igniteConfiguration"}); } return sb.ToString(); } }
結果是:
<?xml version="1.0" encoding="utf-16"?> <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection"> <cacheConfiguration> <cacheConfiguration name="myCache" cacheMode="Replicated" /> </cacheConfiguration> </igniteConfiguration>
結合先前的Spring XML場景,還能夠將Spring XML轉換爲app.config XML。
在最新的版本中,在開放API中還有ToXml
方法,會更方便。