日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

為什么選擇.NETCore?

 CoCO-Ebook 2019-01-25

學(xué)習(xí)新的開發(fā)框架是一項巨大的投資。您需要學(xué)習(xí)如何在新框架中編寫,構(gòu)建,測試,部署和維護應(yīng)用程序。作為開發(fā)人員,有許多框架可供選擇,很難知道什么是最適合的。即使您正在使用.NET開發(fā)軟件,.NET Core也不相同,您需要花時間學(xué)習(xí)使用它的工具和技術(shù)。為了理解為什么.NET Core值得一看,這有助于知道你從哪里開始。

.NETCore的開源協(xié)議

.NET Core從屬于.NET基金會,由微軟進行官方支持。使用最寬松的MIT和Apache 2開源協(xié)議,文檔協(xié)議遵循CC-BY。這將允許任何人任何組織和企業(yè)任意處置,包括使用,復(fù)制,修改,合并,發(fā)表,分發(fā),再授權(quán),或者銷售。唯一的限制是,軟件中必須包含上述版 權(quán)和許可提示,后者協(xié)議將會除了為用戶提供版權(quán)許可之外,還有專利許可,并且授權(quán)是免費,無排他性的(任何個人和企業(yè)都能獲得授權(quán))并且永久不可撤銷,相較于oracle對java和mysql的開源協(xié)議微軟做出了最大的誠意

如果您是.NET Framework開發(fā)人員

.NET Core是為了重新啟動某些Framework組件而為其他人提供跨平臺工作的機會。由于.NET Framework主要以托管(C#)代碼為基礎(chǔ)構(gòu)建,因此這些部分不需要更改代碼即可移至.NET Core。依賴于Windows特定組件的庫必須被移除或重構(gòu)以使用跨平臺替代方案。這同樣適用于您的應(yīng)用程序。

您的.NET應(yīng)用程序可以是跨平臺的

您現(xiàn)有的.NET Framework應(yīng)用程序可以在其他操作系統(tǒng)上工作。對于希望擴大類庫的受眾平臺,或者希望在分布式應(yīng)用程序的其他領(lǐng)域使用相同代碼的開發(fā)人員來說,這是非常好的選擇。即使你想用你亮瞎眼的MacBook上開發(fā).NET,而無需雙啟動到Windows。

并不是所有的框架都被移植到.NET Core,但主要的部分。存在一些API差異。例如,如果您使用了大量的反射,則可能需要重構(gòu)代碼才能使用Core。有關(guān)更多信息,請看文章末尾的的兩者差異部分。

ASP.NETCore勝過框架ASP.NET

ASP.NET Core和ASP.NET之間的性能差異是幾個數(shù)量級。大部分的ASP.NET被傳統(tǒng)的System.Web庫所限制。.NET Framework支持舊版本的ASP.NET項目,而且這個約束限制了ASP.NET的發(fā)展。微軟決定重寫整個架構(gòu)。這意味著打破變化,但結(jié)果是值得的。

.NETCore是創(chuàng)新的焦點

向后兼容性是一把雙刃劍。這意味著您的應(yīng)用程序可以繼續(xù)得到新版本框架的支持,確保在新版本框架中所做的更改不會破壞現(xiàn)有的應(yīng)用程序。

所有的努力避免變化都限制了框架的創(chuàng)新。框架的變化需要徹底的理由(通常來自客戶),詳盡的測試以及來自多個層次產(chǎn)品組的批準(zhǔn)。

使用.NET Core,團隊可以更容易專注的在.net core上工作。比如核心類庫(如System.Collections)的更改仍然需要與.NET Framework相同的活力,但是ASP.NET Core或Entity Framework Core可以更輕松地進行實質(zhì)性更改,而不受向后兼容性的限制。這允許更大的創(chuàng)新。

.NET Framework作為一個整體產(chǎn)品發(fā)布,但是.NETCore被分解成多個部分。現(xiàn)在開發(fā)人員可以選擇使用哪個版本的庫。只要它在.NET標(biāo)準(zhǔn)庫之外,.NET Core團隊就可以用較少的難度進行創(chuàng)新。這就是為什么在將來你只能看到錯誤修復(fù)的框架; .net core將獲得所有新功能。

發(fā)布周期更快

如果您曾在框架中遇到錯誤,并將其報告給Microsoft,則您將知道發(fā)布修復(fù)需要多長時間。這個框架有很長的發(fā)布周期,通常至少要測量一年,而且在這些周期中還有很小的窗口用于特性工作。每個代碼更改都可能會導(dǎo)致框架中其他位置出現(xiàn)意外的問題。為了給每個團隊足夠的時間來測試框架,有很多時候代碼更改是受限制的或者嚴格審查的。如果您在.NET中發(fā)現(xiàn)了一個錯誤,最好找到一個解決方法,而不是等待更新(這也是.NETCore開源帶來的好處,您不需要完全依賴微軟支持才能解決問題,這對于大型企業(yè)更是有利,可以利用技術(shù)資源來對.NETCore進行本企業(yè)定制化,成為.NETCore的分支來運行)。

.NET Core遵循更快的發(fā)布步調(diào)。開發(fā)人員可以使用夜間構(gòu)建來盡早測試。不屬于.NET標(biāo)準(zhǔn)庫的庫可以按自己的步調(diào)發(fā)布。因為所有東西都是開源的,如果微軟沒有足夠快的響應(yīng),任何開發(fā)者都可以提出修補。如果解決方法不被接受,討論就會公開進行,所有人都可以看到為什么做出這個決定


如果你是.NET新手

在Windows平臺上,.NET框架沒有太多的競爭。微軟可以對從操作系統(tǒng)內(nèi)核層到高級.NET庫的所有內(nèi)容進行更改。通過將.NET引入其他平臺,競爭環(huán)境發(fā)生了變化。.NET現(xiàn)在必須與其他所有的開發(fā)框架競爭。

C#是一個了不起的語言

.NET的旗艦語言C#具有許多獨特的功能,例如語言集成查詢和異步構(gòu)造,這使得它強大且易于使用。相較于保守的java(我們也看到Oracle旗下的老牌java已經(jīng)已經(jīng)越來越難推出新特性,這是歷史包袱所導(dǎo)致,在將來模塊化的開發(fā)中很難進行更新維護)C#也在不斷創(chuàng)新。C#團隊公開設(shè)計語言,因為他們希望任何人提出建議或參與討論。編譯器(Roslyn)完全是模塊化和可擴展的。

ASP.NET Core性能與頂級Web平臺相當(dāng)

如果您正在編寫Web應(yīng)用程序或服務(wù),那么ASP.NET Core是一個很好的搭建平臺。它具有出色的性能和低內(nèi)存占用。許多功能可以使您的應(yīng)用程序更容易開發(fā)和維護。

.NET Core不是從頭開始的

.NET在2000年以前就已經(jīng)出現(xiàn)了??蚣艽a在過去幾年中已經(jīng)得到了鞏固,開發(fā)人員也從中受益。已經(jīng)被移植到Core的大部分Framework代碼都沒有改變。這使.NET Core在構(gòu)建應(yīng)用程序的可靠框架方面領(lǐng)先一步。.NET Core也完全由Microsoft支持還有越來越活躍的開源社區(qū)例如紅帽組織這降低了為您的應(yīng)用程序使用Core的風(fēng)險。


什么是.NETCore?

為了理解.NET Core,它有助于理解.NET Framework。微軟在21世紀初發(fā)布了.NET Framework。.NET Framework是一個僅限于Windows的開發(fā)框架,它在最底層提供了內(nèi)存管理,安全性,異常處理和許多其他功能。.NET框架附帶一大堆庫,可執(zhí)行從XML解析到HTTP請求的各種功能。它還支持幾種語言,并將它們編譯成相同的通用中間語言; 任何語言都可以使用任何其他語言構(gòu)建的庫。這些關(guān)鍵概念也出現(xiàn)在.NET Core中。

2016年,微軟收購了Xamarin并發(fā)布了.NET Core 1.0。之前Xamarin已經(jīng)移植了.NET框架的大部分內(nèi)容來運行在基于Linux / Unix的操作系統(tǒng)上。一些代碼可以在.NET Framework,Xamarin和新的.NET Core之間共享,但編譯后的二進制文件不能。.NET Core的一部分努力是創(chuàng)建一個標(biāo)準(zhǔn)化的平臺,允許所有.NET實現(xiàn)共享相同的庫。


                          metzgar_whynetcore_01

圖1 .NET框架,.NET Core和Xamarin都共享一個稱為.NET標(biāo)準(zhǔn)庫的標(biāo)準(zhǔn)化平臺


以前的Xamarin和.NET Framework之間是無法共享二進制文件的。隨著.NET標(biāo)準(zhǔn)庫和通用基礎(chǔ)架構(gòu)的推出,這兩個框架現(xiàn)在成為統(tǒng)一的.NET生態(tài)系統(tǒng)的一部分。

什么是.NETCore?在上圖中,似乎.NET Core是另一個包含UWP(通用Windows平臺)和ASP.NET Core的框架。為了使.NET Core成為現(xiàn)實,創(chuàng)建了.NET標(biāo)準(zhǔn)庫和通用基礎(chǔ)架構(gòu)。


.NETCore的關(guān)鍵功能

.NET Core借鑒了.NET Framework的最佳實踐,并將軟件工程的最新進展結(jié)合在一起。這些是.NET Core的一些顯著特征。

擴大您類庫的覆蓋面

使用.NET Core,您可以使用.NET標(biāo)準(zhǔn)庫編寫應(yīng)用程序或庫。

然后它可以在許多平臺上共享。


metzgar_whynetcore_02

圖2 .NETCore開發(fā)


同一個庫可以在后臺服務(wù)“本地”或云中運行,也可以在手機,平板電腦或桌面上運行的客戶端應(yīng)用程序中運行。與其為iOS,Android和Windows構(gòu)建單獨的應(yīng)用程序,您可以構(gòu)建一個適用于所有平臺的應(yīng)用程序。.NET Core是小型和完美的容器,可以輕松擴展并縮短開發(fā)時間。

.NET Core和.NET Standard Library建立了一個通用平臺。過去,當(dāng)新版本的操作系統(tǒng)或新設(shè)備出現(xiàn)時,開發(fā)人員有責(zé)任重新構(gòu)建新平臺的應(yīng)用程序或庫,并分發(fā)更新。使用.NET Core,不需要重建和重新分配。只要新的平臺支持你所有的依賴庫,它就支持你的應(yīng)用程序。

在任何平臺上簡單部署

Microsoft產(chǎn)品往往具有復(fù)雜的安裝過程。COM組件,注冊表項,特殊文件夾,GAC - 都是為了利用Windows的特性而設(shè)計的。.NET框架依賴于這些構(gòu)造,這使得它不適合其他操作系統(tǒng)。

在發(fā)布依賴于.NET Framework的應(yīng)用程序時,安裝程 序必須足夠聰明才能檢測是否安裝了錯誤的.NET Framework版本,并為用戶提供正確的方法。大多數(shù)現(xiàn)代Windows版本都包含.NET Framework。這使得某些應(yīng)用程序更容易安裝,但是如果應(yīng)用程序使用默認情況下未安裝的功能(如ASP.NET與IIS或WCF組件的集成),則可能會導(dǎo)致復(fù)雜的問題。

另一個復(fù)雜的問題來自補丁。包括錯誤修復(fù)或安全更新的修補程序可以通過Windows更新或通過Microsoft下載中心分發(fā)給客戶。您測試應(yīng)用程序的.NET Framework可能與客戶使用的補丁程序不同。當(dāng)您假定.NET Framework對于所有客戶都是一樣的時候,通常很難確定在應(yīng)用程序中導(dǎo)致奇怪行為的原因。

.NET Core的模塊化設(shè)計意味著您只包含所需的依賴關(guān)系。所有這些依賴關(guān)系與您的應(yīng)用程序進入相同的文件夾。部署應(yīng)用程序與復(fù)制文件夾一樣簡單。這種方法的另一個優(yōu)點是可以有多個版本并行運行。這個策略對于使所有平臺的部署體驗保持一致至關(guān)重要。

云和容器

在云系統(tǒng)中,用更少的硬件為更高密度的用戶提供服務(wù)是非常重要的。應(yīng)用程序的占位面積越小,密度越高。虛擬機已經(jīng)在云端普遍存在多年,但是它們有幾個問題:

  • 大小 - 一個典型的虛擬機文件是千兆字節(jié),如果不是幾十千兆字節(jié)。這使得它們跨網(wǎng)絡(luò)傳輸非常耗時,并且對磁盤空間有很大的要求。
  • 啟動時間 - 啟動虛擬機意味著啟動操作系統(tǒng)。對于Windows來說,這是一個挑戰(zhàn),因為啟動新機器需要花費時間。這可以使處理突發(fā)交通困難。
  • 內(nèi)存 - 虛擬機需要將整個操作系統(tǒng)與應(yīng)用程序一起加載到內(nèi)存中。這意味著很多主機的內(nèi)存被浪費了。
  • 不一致性 - 相同的虛擬機可以復(fù)制到多個主機,主機必須提供相同的虛擬化硬件,這可能依賴于物理硬件。無法保證虛擬機在任何給定的主機上運行相同的操作。

容器通過虛擬化操作系統(tǒng)來解決虛擬機的問題。容器只包含應(yīng)用程序及其依賴項。文件大小要小很多倍,啟動時間以秒為單位,只有應(yīng)用程序加載到內(nèi)存中,容器保證在任何主機上工作。

內(nèi)置于Windows的.NET Framework不能在容器上運行。鑒于容器的明顯優(yōu)勢,.NET Core的設(shè)計決定之一就是使其成為模塊化。這意味著你的.NETCore應(yīng)用程序可以被“發(fā)布”,使得它和它的所有依賴關(guān)系在一個地方,這很容易放入容器

ASP.NET性能

如果您不熟悉ASP.NET,則是.NET Framework中內(nèi)置的Web應(yīng)用程序平臺。ASP.NET被許多有影響力的組織所使用,包括Stack Overflow還有絕大多數(shù)的可靠性很高的金融證券行業(yè)領(lǐng)域。ASP.NET是2002年發(fā)布的第一個.NET Framework版本,并不斷發(fā)展。盡管ASP.NET取得了成功,但在ASP.NET團隊中卻感覺到他們正在失去開發(fā)人員,因為ASP.NET的性能沒有競爭力,只能在Windows平臺上運行。

一家名為TechEmpower的公司每隔幾個月就會運行一次Web應(yīng)用程序平臺的基準(zhǔn)測試,并提供一個分為幾類的排名。基準(zhǔn)測試在Linux上運行,僅包含Windows平臺。對于ASP.NET團隊來說,這很麻煩。許多平臺都用于編寫跨平臺的Web應(yīng)用程序,并且其性能數(shù)據(jù)令人印象深刻。此外,一些Java框架發(fā)布了天文數(shù)字,例如每秒570萬個明文請求,或者490萬個。


metzgar_whynetcore_03

圖3  TechEmpower基準(zhǔn),第12輪


在TechEmpower基準(zhǔn)測試的第十一輪中,Mono平臺上的ASP.NET MVC被納入測試。結(jié)果不好。Mono上的ASP.NET每秒產(chǎn)生一個微小的2000個明文請求。Mono不是由Microsoft創(chuàng)建的,它不會像普通的.NET Framework那樣得到相同數(shù)量的性能調(diào)整。為了獲得更公平的比較,ASP.NET團隊決定在與TechEmpower相同的硬件上運行.NET 4.6的基準(zhǔn)測試。結(jié)果是每秒約50,000個請求。仍然沒有接近NodeJS(每秒320,000個請求),或TechEmpower列表上的其他任何頂級框架。

可憐的低分并不意外。如前所述,ASP.NET知道改變現(xiàn)狀只能通過重寫整個架構(gòu)來清除障礙。這正是發(fā)生的事情。

ASP.NET團隊著手構(gòu)建ASP.NET Core,幾個月后,該團隊?wèi)c祝 core每秒超過100萬個請求。最新core與node.js的性能對比更是讓 core的性能優(yōu)勢繼續(xù)擴大

ASP.NET Core   VS     Node.js

上圖中可看出 core作為復(fù)雜web開發(fā)的性能已經(jīng)相較于之前有質(zhì)的提高,  ASP.NET Core  VS  node.js

ASP.NET Core表明了微軟思維的轉(zhuǎn)變。微軟意識到它必須具有競爭力才能贏得開發(fā)者。它還必須在Windows以外的平臺上競爭。這是創(chuàng)建.NET Core的原動力。

開源

現(xiàn)代軟件開發(fā)人員并不滿足于尋求功能。當(dāng)已經(jīng)有一個滿足他們需求的開源項目的時候,尤其如此。當(dāng)大公司熱衷于開源軟件時,即使是最忠實的微軟開發(fā)者也會轉(zhuǎn)向其他框架和庫,以便在預(yù)算內(nèi)按時完成自己的項目。如果微軟關(guān)心“開發(fā)人員,他們必須做出改變。

公開.NET Framework的源代碼是第一步。.NET Framework源代碼已經(jīng)在referencesource.microsoft.com 和GitHub上公開了好幾年了。


metzgar_whynetcore_04

圖4 .NET Framework參考源


從單獨的開源代碼到接受外來的貢獻是完全不同的。.NET Core開發(fā)人員不僅希望獲得外部貢獻,還希望將社區(qū)納入設(shè)計和開發(fā)。這導(dǎo)致了更多的透明度。ASP.NET Core團隊每周都會在http://live.上舉行一次社區(qū)直播會議。.NET Core的代碼從一開始就在GitHub上公開,任何人都可以提出請求。社區(qū)成員可以在GitHub中創(chuàng)建錯誤和功能。.NET Core已經(jīng)標(biāo)志著微軟在開源方面的重大轉(zhuǎn)變。


與.NET Framework的差異

.NET Core不僅是Linux和Mac的.NET Framework。微軟并沒有移植所有的.NET Framework,對于ASP.NET客戶來說,ASP.NET團隊是.NET Core的驅(qū)動因素。MVC,Web API和SignalR都可以在.NET Core中找到,或者在路線圖上。

框架功能沒有移植到.NETCore

我給這個列表提供了可以改變的知識。某些功能不適用于非Windows平臺,其他某些功能也將不會由Microsoft在將來推出,因為有更好的替換或功能在某些方面有問題(不安全,難以維護等 )。

  • WPF / XAML - Windows Presentation Foundation僅適用于用戶界面。.NET標(biāo)準(zhǔn)庫不包括用戶界面庫,.NET Core不會提供跨平臺的UI框架。這意味著像Windows窗體和系統(tǒng)的東西。繪圖不會移植到.NET Core。
  • 事務(wù) - 這個庫使創(chuàng)建分布式事務(wù)變得容易。它依賴于特定于Windows的組件,使其不易移植到.NET Core。
  • AppDomains - 這些對于隔離程序集來說是非常有用的,而且不會終止進程,這對于允許插件的應(yīng)用程序來說非常有用。它們依賴于某些Windows特定的構(gòu)造,這些構(gòu)造在其他操作系統(tǒng)上不起作用。
  • .NET遠程處理 - 遠程對象已被REST服務(wù)成功。
  • ASMX - 編寫已被Web API取代的Web服務(wù)的舊方法。
  • Linq to SQL - 由實體框架取代。
  • WCF服務(wù) - Windows Communication Foundation客戶端功能在.NET Core中可用,但不能創(chuàng)建服務(wù)。
  • WF - Windows Workflow Foundation依賴于XAML,WCF服務(wù)以及其他.NET Framework特性之間的事務(wù)。

.NET Framework開發(fā)人員的微妙變化

有經(jīng)驗的.NET Framework開發(fā)人員可能會在.NET Core中遇到一些驚喜。編寫新的代碼應(yīng)該是相對直接的,因為你不太可能使用像HashTableor 這樣的舊的結(jié)構(gòu)ArrayListVisual Studio的Intellisense也指出.NET Core是否支持類型,方法,屬性等。


metzgar_whynetcore_05

圖5 Visual Studio IntelliSense指示.NET Core中是否有類或成員可用


。NET可移植性分析器

如果您試圖將現(xiàn)有的.NET應(yīng)用程序轉(zhuǎn)換為.NET Core,那么最好的地方就是.NET可移植性分析器。它既可以作為命令行應(yīng)用程序,也可以作為Visual Studio插件使用。有許多.NET平臺可供選擇:


metzgar_whynetcore_06

圖6 .NET可移植性分析器中提供的目標(biāo)平臺


盡可能使用此工具創(chuàng)建一個詳細的報告,提供有用的建議:


metzgar_whynetcore_07

圖7。.NET可移植性分析器報告


反射

.NET Core中的反射工作方式與.NET Framework中的不同。最明顯的區(qū)別是,Type類正常的許多操作不再存在。有些人已經(jīng)被調(diào)到一個新的TypeInfo類。其他操作在.NET標(biāo)準(zhǔn)庫中不可用,并且需要額外的依賴性。

  .NET Framework實現(xiàn)反射

  .NET Framework實現(xiàn)反射

PropertyInfo targetProperty = null;
foreach (var property in
         owningElement.GetType().GetProperties())
{
    if (property.Name == this.Name
        && property.PropertyType.IsGenericType)
    {

The .NET Core 實現(xiàn)反射.

PropertyInfo targetProperty = null;
foreach (var property in
owningElement.GetType().GetProperties()) 
{
if (property.Name == this.Name && property.PropertyType
.GetTypeInfo().IsGenericType)           
{

?需要依賴于System.Reflection.TypeExtensions

許多類型操作移到了TypeInfo


概要

軟件開發(fā)行業(yè)正在不斷發(fā)展。從語言到框架,工具到方法論,一切都受到挑戰(zhàn)和改進。.NET框架已經(jīng)到了不得不做出改變的時候,以跟上競爭對手。.NETCore是.NET演進過程中必不可少的一步。它將最好的.NET Framework與現(xiàn)代軟件開發(fā)中使用的實踐相結(jié)合。諸如可移植性,簡單部署,高性能,開放源代碼和強大支持等特性使其值得一試。

以上數(shù)據(jù)是.NETCore2.0數(shù)據(jù),最新穩(wěn)定版本是2.1.300,性能在2.0基礎(chǔ)上又大幅提升,具體詳情請Google

Why Choose .NET Core?

推薦免費高質(zhì)量微服務(wù)書籍:.NET微服務(wù) 容器化.NET應(yīng)用架構(gòu)指南

.NET Core介紹 (PDF)  https://files.cnblogs.com/files/xiaoliangge/NETCore-chaunce.pdf(可用于公司.netcore分享ppt使用)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多