我們計劃移動使用企業庫4.1的遺留應用程序,該應用程序在.Net 4.0 Web應用程序中使用.Net 3.5。.Net 3.5 Dll在.Net 4.0應用程序中的任何問題
我們想知道這會導致任何性能問題嗎? .net 3.5代碼是否會在不同的 應用程序池中運行?
我們計劃移動使用企業庫4.1的遺留應用程序,該應用程序在.Net 4.0 Web應用程序中使用.Net 3.5。.Net 3.5 Dll在.Net 4.0應用程序中的任何問題
我們想知道這會導致任何性能問題嗎? .net 3.5代碼是否會在不同的 應用程序池中運行?
我終於找到了答案。我之前提到的我的團隊發現的性能問題是由於其他原因造成的。不在.NET 4.0應用程序域上加載.NET 3.5。
看完這篇文章: http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
進程內的SxS不解決所面臨的 庫開發的 兼容性問題。任何庫 由 應用直接加載 - 或者經由直接 引用或Assembly.Load - 將 繼續直接加載到 應用程序載入它的 運行時和應用程序域。這意味着 如果應用程序重新編譯爲 以針對.NET Framework運行並且依然依賴於 針對.NET 2.0, 構建的程序集,那麼這些依賴項也將加載到.NET運行時。因此,我們仍然推薦 針對您希望支持的所有版本的 框架測試您的庫 。這是 我們繼續 保持我們高水平的落後 兼容性的原因之一。
因此,將.NET 3.5程序集直接加載到.NET 4.0應用程序中而不重新編譯爲.NET 4.0是沒有問題的。
4.0是3.5的超集,所以應該沒有任何挑戰。在座的各位,因爲它必須在與VS 2008內置3.5代碼將工作您需要按照這個第一
有一個MSDN鏈接What's New in the .NET Framework 4
Migration Guide to the .NET Framework 4
.NET Framework 4 RTM Application Compatibility Walkthrough
如果谷歌搜索,你會發現許多文章標題爲「2010年有哪些新內容」。你不會找到喜歡的東西「有什麼不同」
除了這個小珍聞從MSDN:
.NET Framework 4的是與內置 與早期的.NET Framework應用程序 高度 兼容版本,除了爲提高安全性所做的一些更改, 標準符合性,正確性, 可靠性和性能。
.NET框架4不 自動使用其 公共語言運行庫的版本運行與 早期版本的.NET框架 建 應用。要使用.NET Framework 4中運行舊版應用程序 ,你必須 編譯的屬性在Visual Studio中 項目指定的 目標.NET Framework版本 您的應用程序,或者你可以 指定與 元素支持的運行時間在應用程序 配置文件中。
那麼它不應該有任何性能問題。但是,一個主要區別是.Net 4.0帶有不同的運行時間,可能會引入一些差異。
您質疑是否會有性能問題無法普遍解答,因爲這取決於您的代碼正在做什麼。很可能你不會看到任何問題。
儘管微軟爲了保持向後兼容以前版本的運行時而做了很多工作,但您應該注意到有幾個重大更改。你會發現他們在這裏的MSDN文檔:
.NET Framework 4 Migration Issues(包括ASP.NET文件,.NET的核心,數據/ ADO。NET,WCF,WPF和XML)
微軟還提供指導和聯繫,以進一步遷移規劃任務:
正如你應該對任何問題的準備,不要忘記安排一些時間進行額外的測試。
.NET 3.5 DLL被加載到獨立的應用程序域而不是.NET 4.因此,.NET 4中對.NET 3.5 DLL的所有調用都將跨應用程序域。這意味着很多開銷。除非您可以在.net 4中重建3.5源代碼,否則我不會推薦使用它。我的一個團隊嘗試了這一點,然後他們看到了糟糕的表現,於是他們回到了.NET 3.5。在我們獲得所有.net 3.5 DLL或供應商發佈.net 4 DLL的源代碼之前,我們不會將我們的代碼庫升級到網絡4.
你有這方面的任何參考? – 2011-05-23 17:20:02
根據我迄今爲止的經驗,我希望Omar可能是正確的,但在啓動Process Exprlorer並看一看後,我只看到兩個AppDomain加載了「SharedDomain」和「DefaultDomain」,而我沒有看到任何證據表明只有3.5程序集正被加載到其中一個域中。相反,除mscorlib以外的所有程序集都加載到DefaultDomain中。更多細節在這裏http://msdn.microsoft.com/en-us/magazine/cc163791.aspx#S4 – jpierson 2012-04-20 14:39:16
計劃自己做perf測試。有關指導,請參見&模式的this實踐。
我不知道你正在使用哪個塊,但是你應該考慮遷移到EntLib v5.0,因爲在日誌記錄應用程序塊中有主要的性能改進以及底層基礎結構的重構/清理。檢查出Migration Guide for Enterprise Library 5.0。
-1:「所以不應該有任何挑戰,你們所有的3.5代碼都可以像使用VS 2008一樣工作」:重大更改列表實際上很長,請參閱這裏查看各種入口點。 NET技術:[.NET4完整的重大更改列表](http://muneebbaig.blogspot.com/2010/04/net4-complete-list-of-breaking-changes.html)。一般來說,包括.NET運行時環境變化在內的產品變更都應該伴隨着大量的測試。 – 2011-05-18 21:04:12