<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .NET項目遷移到.NET Core操作指南

       

      為什么要從.NET遷移到.NET Core?... 1

           .NET Core提供的特性... 1

           .NET Core性能提升... 2

      .NET如何遷移到.NET Core?... 4

            遷移工作量評估(API兼容性分析)... 4

            遷移方案制定... 4

            通過類名、命名空間,查詢API的實現信息... 4

            類庫項目、應用項目如何選擇框架類型... 5

            遷移到.NET Core,但只運行在windows平臺上... 6

            兼容.NET Core或.NET Standard API7

            遷移EF框架... 8

            修改為 ASP.NET Core 風格的應用... 8

       

        這篇文章,匯集了大量優秀作者寫的關于".NET遷移到.NET Core"資料文章以及微軟官方教程文檔。是我在遷移公司框架項目到.NET Core.NET Standard時遇到的問題,并將相關資料整理成這篇文章。記錄如何一步一步把項目遷移到.NET Core。

      在此感謝這些革命前輩,填平的坑,走出的路……

       

      為什么要從.NET遷移到.NET Core?

      .NET Core提供的特性

      1.免費和最寬松的開源協議

        .NET Core從屬于.NET基金會,由微軟進行官方支持。使用最寬松的MIT和Apache 2開源協議,文檔協議遵循CC-BY。這將允許任何人任何組織和企業任意處置,包括使用,復制,修改,合并,發表,分發,再授權,或者銷售。唯一的限制是,軟件中必須包含上述版權和許可提示,后者協議將會除了為用戶提供版權許可之外,還有專利許可,并且授權是免費,無排他性的(任何個人和企業都能獲得授權)并且永久不可撤銷,用戶使用.NET Core完全不用擔心收費問題,你可以很自由的部署在任何地方.

      2.輕量級、跨平臺

      3.組件化、模塊化、IOC+Nuget、中間件

      4.高性能

      5.統一了MVCWebAPI編程模型

      a) 比如:ASP.NET Core MVC Web API 直接或間接繼承同一個基類 ControllerBase,提供可使用的API也一致化

      b) 比如:舊ASP.NET時代,寫全局filter需要針對MVC Web API 分別編寫代碼,但在ASP.NET Core,直接使用一套中間件代碼即可

      6.可測試性

      7.微服務、容器化支持

      8.標準化 .NET API 規范- .NET STANDARD,整體架構如下圖:

      clip_image002[4]

       

      .NET Core性能提升

      1.TechEmpower機構

        TechEmpower機構會定期對各語言主流的web框架做性能測試

        https://www.techempower.com/benchmarks/

      2.博客園博主、微軟MVP – 楊曉東,做的 “Hello World”性能測試

      ASP.NET Core 1.1性能對比評測(ASP.NET,Python,Java,NodeJS)

      編號

      對比方

      系統環境

      宿主環境

      測試結果(QPS

      1

      ASP.NET Core vs ASP.NET Core

      Windows

      Kestrel vs IIS

      45.6k vs 15.2k

      2

      ASP.NET Core vs ASP.NET

      Windows

      IIS vs IIS

      15.2k vs 18.2k

      3

      ASP.NET Core vs ASP.NET

      Windows

      Kestrel vs IIS

      45.6k vs 18.2k

      4

      ASP.NET Core vs Python Django

      Linux

      Kestrel vs uwsgi

      26.7k vs 1.57k

      5

      ASP.NET Core vs Java Servlet

      Linux

      Kestrel vs Tomcat

      26.7k vs 18.3k

      6-1

      ASP.NET Core vs NodeJS Express

      Linux

      Kestrel vs self host

      26.7k vs 15.6k

      6-2

      ASP.NET Core vs NodeJS Koa

      Linux

      Kestrel vs self host

      26.7k vs 17.5

      clip_image003[4]

      性能測試工具:

          微軟出品:Benchmarks

          https://github.com/aspnet/benchmarks

      其他閱讀:

          是什么優化讓 .NET Core 2.0性能飆升?

          .NET Core 3中的性能提升(譯文)

          Java(11,12) 與 .NET Core(2.2,3.0)的性能對比測試

       

      .NET如何遷移到.NET Core

      遷移工作量評估(API兼容性分析)

      度量.net framework 遷移到.net core的工作量

      可移植性分析工具:.NET Portability Analyzer

       【Cli 版本】  【Visual Studio Extension 版本】

        Cli版評估會給出類似如下報告:

            .NET Portability Analyzer VS插件版使用

       

        .NET Standard Versions

      clip_image005[4]

       

      遷移方案制定

      微軟官方《組織項目以支持 .NET Framework 和 .NET Core》文章中,有介紹兩種遷移方案:

      方案一、將現有項目和 .NET Core 項目合并為單個項目(多目標框架)

      方案二、將現有項目和新的 .NET Core 項目分離(拷貝到新項目)

         

      通過類名、命名空間,查詢API的實現信息

      遷移過程中,有類庫命名空間被調整,nuget歸屬包被調整,具體類庫在.NET Core哪個版本中被實現也不是很清楚,通過下面兩個查詢助手,即可解決這些問題。

      1、查詢命名空間、類庫在哪個nuget package包中定義(第一次查詢比較慢)

      2、查詢 NET API 在各版本中實現

      結果圖如下:

       

      類庫項目、應用項目如何選擇框架類型

      1.如何組織一個同時面向多目標框架的 C# 項目解決方案

      2..NetStandard;.netCore;FX(.NetFrameWork)之間引用關系

      .NET Standard 2.0中,我們使在 .NET Standard 庫中通過一個兼容層去引用已有的 .NET Framework 的庫成為可能。當然,這只對那些只使用了適用于 .NET Standard API .NET Framework 庫有效。

      clip_image006[4]

      FX引用.NetCore:不通過

      .NetStandard引用.NetCore:不通過

       

      .NetCore引用FX:通過

      .NetCore引用.NetStandard:通過

      .NetStandard引用FX:通過

      FX引用.NetStandard:通過

       

             ASP.NET Core可以在“.NET Framework 和 .NET Core”上運行,但ASP.NET Core 3.0 以及更高版本只能在 .NET Core 中運行

      具體參見:

        【譯】介紹 .NET Standard -- 【原文】

        關于.net core 和 .net fx相互引用的問題

      .NetStandard;.netCore;FX(.NetFrameWork)之間引用關系

      3.項目支持多目標框架

      支持多目標框架,并解決第三方庫引用差異的問題(在 csproj 文件中指定包含條件)

      目標框架名稱列表 (命名全小寫)

      如何調試多目標框架類庫?

      NET Standard/Core項目使用條件判斷輸出多版本xml注釋文檔

      4.多目標框架中共享代碼方案

      1、【首選】.NET Standard,需要目標SDK支持對應的 .NET Standard 版本。

      2、共享項目。直接共享了源碼,只要在目標項目中指定了條件編譯符,那么源碼便能針對各種不同的目標框架進行分別編譯。

      3、[add as link]使用鏈接共享 Visual Studio 中的代碼文件

      5.條件編譯符號 (命名全大寫)

      指令: #if #elif #else #endif ||&&、!

      因為目標框架提供的API不相同。故必要時可添加條件編譯符號以便支持不同的運行時版本。

      微軟有針對各個目標框架有預定義預處理器符號,vs編譯時會自動識別到這些框架條件編譯符號。

      .NET Framework 4.5 --> NET45

      .NET Framework 4.6 --> NET46

      .NET Framework 4.6.1 --> NET461

      .NET Standard 1.0 --> NETSTANDARD1_0

      .NET Standard 1.6 --> NETSTANDARD1_6

      .NETCOREAPP 2.0 --> NETCOREAPP2_0

      參考:

      #if指令文檔

      如何將條件編譯符號(DefineConstants)傳遞給msbuild

       

      遷移到.NET Core,但只運行在windows平臺上

      使用 Windows 兼容性包將代碼移植到 .NET Core

      如何:將 Windows 窗體桌面應用程序移植到 .NET Core

      如何:將 WPF 桌面應用移植到 .NET Core

       

      兼容.NET Core.NET Standard API

      遷移HttpHandler與HttpModule到 ASP.NET Core 中間件

      .NET CORE 2.0 踩坑記錄之ConfigurationManager

      .NET Core/Standard 2.0 編譯時報“CS0579: Duplicate 'AssemblyFileVersionAttribute' attribute”錯誤

      1.自動生成AssemblyInfo的原理

      2.解決方案:不自動創建 AssemblyInfo 文件

      ASP.NET Core開發之HttpContext

      .net core 使用JsonConvert替代JavaScriptSerializer

      ASP.NET Core 中重復讀取 Request.Body 的正確姿勢

      JsonRequestBehaviorcore中被移除的問題

      1.[ASP.NET MVC]解決"若要允許 GET請求,請將 JsonRequestBehavior 設置為AllowGet"

      2.[ASP.NET Core]core中不會拋出AllowGet異常,對于DenyGet則使用[HttpPost]代替

      https://stackoverflow.com/questions/38578463/asp-net-core-the-name-jsonrequestbehavior-does-not-exist-in-the-current-cont

      https://stackoverflow.com/questions/8464677/why-is-jsonrequestbehavior-needed?r=SearchResults

      獲取ASP.NET Core中的Web根路徑和內容根路徑(移除的MapPath)

      為什么我的會話狀態在ASP.NET Core中不工作了?

      由于ASP.NET Core 2.1中引入的Cookie同意和非必要cookieGDPR功能引起。(GDPR,即General Data Protection Regulation,《通用數據保護條例》)

       

      ASP.NET4.5ASP.NET Core中共享cookies認證信息(加解密方式不一致問題)

         .NET跨平臺之旅:ASP.NET Core從傳統ASP.NET的Cookie中讀取用戶登錄信息

         開源方案:[git]idunno.CookieSharing

      ASP.NET Core如何獲取客戶端IP地址(被移除的ServerVariables對象)

      如何獲取項目依賴的所有程序集

         方案一:AppDomain.CurrentDomain.GetAssemblies(),此辦法不能獲取到所有依賴的程序集,因為.Net有延遲加載程序集機制

         方案二:適用于傳統ASP.NET項目,System.Web.Compilation.BuildManager.GetReferencedAssemblies();

         方案三:適用于ASP.NET Core項目,DependencyContext.Default.CompileLibraries,具體代碼參考下面

              var dlls = DependencyContext.Default.CompileLibraries
                  .SelectMany(x => x.ResolveReferencePaths())
                  .Distinct()
                  .Where(x => x.Contains(Directory.GetCurrentDirectory()))
                  .ToList();
              foreach (var item in dlls)
              {
                  try
                  {
                      AssemblyLoadContext.Default.LoadFromAssemblyPath(item);
                  }
                  catch (System.IO.FileLoadException loadEx)
                  {
                  } // The Assembly has already been loaded.
                  catch (BadImageFormatException imgEx)
                  {
                  } // If a BadImageFormatException exception is thrown, the file is not an assembly.
                  catch (Exception ex)
                  {
                  }
              }

      參考:

              AppDomain.CurrentDomain.GetAssemblies()

              Is there an alternative for BuildManager.GetReferencedAssemblies() in ASP.NET Core?

       

      .NET Core 2.0遷移System.Runtime.Caching

      .NET Core 2.0升級到3.0實戰方案

        從.NET CORE2.2升級到3.0過程及遇到的一些問題

       

      遷移EF框架

      【微軟官方】從 EF6 到 EF Core的遷移系列

      【微軟官方】EF Core 版本升級遷移系列

       

      修改為 ASP.NET Core 風格的應用

        按照上面的方式修改API兼容性后,框架類庫可以順利遷移到.NET Core,編譯通過,代碼運行也正常。但是ASP.NET Core風格的應用,其寫法也是有很多變化的。具體參考下面文檔:

      將傳統 ASP.NET 應用遷移到 .NET Core

      【微軟官方】ASP.NET 遷移到 ASP.NET Core教程系列

      【微軟官方】ASP.NET Core 版本升級遷移系列

       

       其他:

               使用 .NET 升級助手將.NET Framework應用遷移到.NET 5

               輕松玩轉.NET大規模版本升級

       將舊版 WCF 應用程序遷移到 CoreWCF  (升級工具:upgrade-assistant)

       

      推薦閱讀:

        .NET Core 學習資料精選:入門

        .NET Core 學習資料精選:進階
        

      ==============================================================================

      over,謝謝查閱,覺得文章對你有收獲,請多幫推薦。歡迎提供更好的資料信息。

       

       

       

      posted on 2019-06-10 09:22  滴答的雨  閱讀(19752)  評論(12)    收藏  舉報

      主站蜘蛛池模板: 国产熟女av一区二区三区| 洪江市| 欧美人人妻人人澡人人尤物| 免费人成年激情视频在线观看| 久久精品手机观看| 在线观看免费人成视频色9| 在线免费观看毛片av| 日韩精品理论片一区二区| 亚洲成人av综合一区| 微山县| 欧美嫩交一区二区三区| 亚洲成年轻人电影网站WWW| 国产成人高清亚洲综合| 欧美成人黄在线观看| 国产午夜福利大片免费看| 国内精品久久久久影院薰衣草| 国产在线观看免费观看不卡| 国产不卡精品一区二区三区| 国产日韩久久免费影院| 人人爽人人爽人人片av东京热| 亚洲综合色网一区二区三区| 色综合天天综合天天综| 国产乱码日产乱码精品精| 亚洲中文字幕无码中字| 毛片无码免费无码播放| 日韩人妻无码一区二区三区俄罗斯 | 中文字幕一区日韩精品| 精品国产中文字幕懂色| 国产精品国产三级国产专| 国产福利姬喷水福利在线观看| 五月天中文字幕mv在线| 亚洲精中文字幕二区三区| 久久久久成人片免费观看蜜芽| 亚洲全乱码精品一区二区| 中文 在线 日韩 亚洲 欧美| 巨胸不知火舞露双奶头无遮挡| 成av人片一区二区久久| 免费无码成人AV片在线 | 2020国产欧洲精品网站| 日韩成人午夜精品久久高潮| 亚欧美闷骚院|