我目前通過升級我們的產品CRM SDK和我所遇到的主要變化的過程會是,而不是使用試圖連接到XRM服務和創造我的IOrganizationService和值得信賴的方法:Microsoft.Xrm.Tooling.Connector高內存分配
var connection = CrmConnection.Parse(connectionString);
var service = new OrganizationService(connection);
我現在不必從工具命名空間利用CrmServiceClient:
CrmServiceClient conn = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(connectionString).OrganizationServiceProxy;
現在,這一切只是從一個主要問題......記憶的罰款。
使用你能夠指定服務配置實例模式(默認爲ServiceConfigurationInstanceMode.PerName)舊Xrm.Client方法。這意味着如果同一個應用程序稱爲創建多次,則該服務被重用。這保持了低內存佔用。下面的圖片顯示分配的內存量打電話來創建服務實例100倍
但是之後,使用你不能在任何地方設置這種情況下模式的新方法,它似乎是創建一個全新的連接每一次你是否想要它。下面是相同測試的結果:
正如您所看到的,每個新的連接都會分配越來越多的內存。我無法看到任何我可以告訴它重新使用該服務的地方。
那麼我基本上問的是,我在錯誤的方式去這件事?我應該自己創建並緩存一切嗎?是否有隱藏的類/方法,我失蹤了?任何幫助將不勝感激。
是什麼fulle代碼/設置什麼是XRM SDK的新版本?你緩存連接 – lordkain
唯一相關的代碼是我上面顯示的。你還需要什麼?我沒有緩存任何東西,因爲我從來不需要使用xrm.client連接方式來做這件事。較新的SDK是Microsoft.CrmSdk.CoreAssemblies的優化版本8.2.0(命名空間如上圖所示) – doodlleus
你沒有做錯什麼,因爲從2016年是建立連接的新方式就像我在[FakeXrmEasy]在做( https://github.com/jordimontana82/fake-xrm-easy/blob/master/FakeXrmEasy.Shared/XrmRealContext.cs#L67-L77),所以看起來在工具組件內存泄漏。如果你自己緩存連接呢?任何主要的好處? – Jordi