最初的問題變得多餘,因爲它是基於錯誤的假設,所以它被編輯以提供關於Sessions, Instancing and Concurrency以及下面接受的答案的一些信息。ASP.net實例模式有什麼區別?
1
A
回答
1
它通常會在各種託管類型中相同:IIS,Windows服務,WCF。
ASP.net如何實現內部工作,使用什麼機制隔離靜態變量,而無需爲每個服務調用創建新的AppDomain。
有一個很好的代碼項目文章,解釋了高層次的差異,如果你想看到底下你應該使用像ILSpy或Reflector這樣的反編譯器來查看實現細節。 實現的不同之處在於,每個請求或每個會話的對象是單例,實例化還是彙集的方式。
這裏是代碼項目文章的一個片段:Three ways to do WCF instance management
要設置PerCall的InstanceContext使用ServiceBehaviour屬性:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
這裏是服務行爲屬性的源代碼:
具體在那裏建立了instanceModeContext提供者:
dispatch.InstanceContextProvider = InstanceContextProviderBase.GetProviderForMode(this.instanceMode, dispatch);
if ((this.instanceMode == InstanceContextMode.Single) &&
(dispatch.SingletonInstanceContext == null))
{
if (singleton == null)
{
if (this.wellKnownSingleton != null)
{
singleton = new InstanceContext(serviceHostBase, this.wellKnownSingleton, true, false);
}
else if (this.hiddenSingleton != null)
{
singleton = new InstanceContext(serviceHostBase, this.hiddenSingleton, false, false);
}
else
{
singleton = new InstanceContext(serviceHostBase, false);
}
singleton.AutoClose = false;
}
dispatch.SingletonInstanceContext = singleton;
}
所以,你可以看到區別是wellKnownSingleton之間的開關,一個hiddenSingleton或者兩者都不是,這是實現對象是單例,實例化或合併的方式。
您可以深入瞭解代碼庫並查看代碼以查看有關實現細節的更多信息。
+0
感謝您的好帖子。正如我在上面的評論中所說的,我們有幾個實例運行在不同的機器上,它讓我在星期五晚上感到恐慌,因爲我的世界裏靜態只能通過創建AppDomain而被隔離^ - ^ –
相關問題
- 1. 對象和實例有什麼區別?
- 2. 以下實例化實體的方式有什麼區別?
- 3. MVC模式中的模型和實體有什麼區別?
- 4. 訪問,實例化和聲明模塊有什麼區別?
- 5. DAO和DP模式有什麼區別?
- 6. 「::」和「sys」模式有什麼區別?
- 7. 模式與路徑有什麼區別?
- 8. Factory和Strategy模式有什麼區別?
- 9. Oracle和Microsoft模式有什麼區別?
- 10. ASP.NET和ASP.NET MVC有什麼區別?
- 11. Titanium中的集合單例或實例有什麼區別?
- 12. 用例與用例模型有什麼區別?
- 13. 享元模式和對象池模式有什麼區別?
- 14. 設計模式和架構模式有什麼區別?
- 15. 開發模式和生產模式有什麼區別?
- 16. wsdl模式和非wsdl模式Web服務有什麼區別?
- 17. IE11兼容模式和IE10兼容模式有什麼區別
- 18. 睡眠模式和深度睡眠模式有什麼區別?
- 19. MD5二進制模式和文本模式有什麼區別?
- 20. 小內存模式和大內存模式有什麼區別?
- 21. Builder模式和Flyweight模式有什麼區別?
- 22. .NET和ASP.NET有什麼區別嗎
- 23. ASP.NET Web Pages和Razor有什麼區別?
- 24. Java EE和Asp.net有什麼區別
- 25. asp和asp.net有什麼區別?
- 26. ASP.NET DynamicData和IronSpeed有什麼區別?
- 27. ASP.NET Identity和IdentityServer有什麼區別?
- 28. asp和asp.net有什麼區別?
- 29. ASP.NET - DataSourceID和DataSource有什麼區別?
- 30. 這些例子(*和&)有什麼區別?
請詳細說明。例如,你在談論依賴注入和IoC容器嗎?哪一個......等 – ps2goat
鏈接的文章不包含單詞「靜態」或「AppDomain」。你從哪裏得到這些信息? –
這篇文章的鏈接就是顯示'PerCall'的描述。靜力學分離的事實來自經驗。靜態引用上的'lock'在'Single'模式下工作,但不能在'PerCall'模式下工作。由於觀察CLR性能計數器,「AppDomain」未被創建的假設升級。 –