.NET Core:面向未来的开源跨平台开发技术
作為一種全新的開源和跨平臺(tái)的開發(fā)平臺(tái),.NET Core 歷經(jīng)兩年多的開發(fā),終于在于2016年6月27日針對(duì)所有主流服務(wù)器和桌面操作系統(tǒng)發(fā)布 1.0 RTM 版本。.NET Core 是一種通用開發(fā)平臺(tái),它包含了自動(dòng)內(nèi)存管理和現(xiàn)代化高級(jí)開發(fā)語(yǔ)言等重要特性,這些都能讓面向多個(gè)平臺(tái)開發(fā)靜態(tài)類型的高質(zhì)量應(yīng)用程序變得輕松。.NET Core 本身采用 MIT 協(xié)議開源,因此可以免費(fèi)用于各種類型的商業(yè)和閉源項(xiàng)目。
全新的 .NET Core
不同于內(nèi)置于 Windows 系列操作系統(tǒng)上的 .NET 框架,.NET Core 是微軟從 2014 年初啟動(dòng)新開發(fā)的一項(xiàng)技術(shù),它與此前的 .NET 框架是不能直接兼容的。此外,與此前 .NET 的框架之間更顯著的不同可能是, .NET Core 的完全開源,以及跨平臺(tái)的能力。
.NET Core 是開源和跨平臺(tái)的
.NET Core 本身的開發(fā)工作是基于開源項(xiàng)目代碼大本營(yíng) GitHub 網(wǎng)站的,.NET Core 核心的代碼都采用了 MIT 授權(quán)協(xié)議,也有少數(shù)項(xiàng)目采用了 Apache 協(xié)議。在前不久的“微軟開發(fā)者論壇”活動(dòng)現(xiàn)場(chǎng),針對(duì)筆者提出的 .NET Core 開源理念的詢問,微軟開發(fā)工具事業(yè)部副總裁潘正磊女士回答說(shuō)“它一開始就被設(shè)計(jì)為開源的”,這一理念很真誠(chéng)地表達(dá)了 .NET Core 開源的決心,在過(guò)去兩年多時(shí)間以內(nèi),核心開發(fā)團(tuán)隊(duì)也以行動(dòng)證實(shí)了這一點(diǎn)。在 GitHub 上,與 .NET Core 相關(guān)的代碼庫(kù)有一百來(lái)個(gè),分布在多個(gè)賬戶中。來(lái)自世界各地、包括中國(guó)的大量開發(fā)者都參與了 .NET Core 的開發(fā)過(guò)程:開發(fā)團(tuán)隊(duì)會(huì)每周與社區(qū)跟進(jìn)進(jìn)度、討論計(jì)劃,隨時(shí)在線上回答其他開發(fā)者的提問,合并其他開發(fā)者貢獻(xiàn)的代碼。筆者也有幸見證這一過(guò)程,并實(shí)際參與到其中幾個(gè)項(xiàng)目的貢獻(xiàn)中。
跨平臺(tái)的說(shuō)法,在各種開發(fā)技術(shù)上一直以來(lái)飽受爭(zhēng)議。從前,人們提出“編寫一次,到處運(yùn)行”的理念到最后變成“編寫一次,到處調(diào)試”的笑話。以至于現(xiàn)在一提跨平臺(tái),大家都持一種懷疑的態(tài)度。事實(shí)上,對(duì)跨平臺(tái)的需求是真實(shí)存在的:我們使用 Windows 或 macOS 從事開發(fā)工作,而使用 Linux 系統(tǒng)作為服務(wù)器環(huán)境;我們開發(fā)一套運(yùn)行在服務(wù)器上的軟件產(chǎn)品,希望將服務(wù)器平臺(tái)的選擇自由留給客戶……因此對(duì)于現(xiàn)代化的輕量級(jí)開發(fā)技術(shù)棧而言,跨平臺(tái)也成為一個(gè)基本要素。典型的輕量級(jí)開發(fā)平臺(tái)大多是基于動(dòng)態(tài)語(yǔ)言的,比如 PHP、Python 或?Node.js,這類動(dòng)態(tài)語(yǔ)言正是由于“動(dòng)態(tài)語(yǔ)言”的特性,在一些場(chǎng)合顯得過(guò)于靈活、難以掌控,在工程的內(nèi)建質(zhì)量和開發(fā)效率上取得平衡并不容易。
開源跨平臺(tái)的 .NET Core
C# 這樣的靜態(tài)語(yǔ)言有著嚴(yán)謹(jǐn)?shù)恼Z(yǔ)法和完善的類型體系,新構(gòu)建的 .NET Core 繼承了 .NET 框架平臺(tái)原有優(yōu)良特性,對(duì)于 .NET Core 來(lái)說(shuō),跨平臺(tái)這個(gè)目標(biāo)并沒有多少歷史包袱。在開發(fā) .NET Core 本身的過(guò)程中,開發(fā)團(tuán)隊(duì)很早就使用了持續(xù)集成的實(shí)踐來(lái)保障代碼針對(duì)多個(gè)平臺(tái)的兼容能力。在開發(fā)進(jìn)程中,團(tuán)隊(duì)同步維護(hù)多個(gè)示例項(xiàng)目,例如經(jīng)典的 MusicStore,及時(shí)回歸核心特性、保障穩(wěn)定性。從兩年之前開始,就陸續(xù)有 alpha、beta 和 RC 版本發(fā)布出來(lái),讓開發(fā)者提前體驗(yàn)到新運(yùn)行時(shí)的同時(shí),也借助 GitHub 開源平臺(tái)及早收到來(lái)自社區(qū)的監(jiān)督和幫助。借助這些一系列的措施,.NET Core 跨平臺(tái)的能力有著充分的事實(shí)保障。
.NET Core 是適應(yīng)趨勢(shì)的生產(chǎn)力平臺(tái)
新打造的 .NET Core 有一些關(guān)鍵特性,頗具吸引力。例如與特定操作系統(tǒng)無(wú)耦合,可編譯為原生平臺(tái)代碼,運(yùn)行效率極高;完全模塊化, 內(nèi)置包管理器用于管理依賴項(xiàng);提供完整而標(biāo)準(zhǔn)化的命令行工具集,與 Docker 等新近技術(shù)能無(wú)縫集成。它雖然是全新的開發(fā)平臺(tái),卻直接使用 C# 這樣的明星靜態(tài)語(yǔ)言的最新版本作為開發(fā)語(yǔ)言,充分運(yùn)用 .NET 平臺(tái)十幾年積累的設(shè)計(jì)理念,汲取過(guò)去數(shù)十年各種編程語(yǔ)言和開發(fā)模型中的精華,才最終鍛煉成適用于下一代開發(fā)工作的新平臺(tái)。
由于它是一項(xiàng)新興的技術(shù),過(guò)往的類庫(kù)不能直接與它兼容。為了解決一開始應(yīng)用這項(xiàng)技術(shù)可能存在的框架和類庫(kù)缺乏的問題,在開發(fā) .NET Core 框架的同時(shí),微軟還投入資源以開源的方式重寫了大量開發(fā)框架和常用類庫(kù),比如 ASP.NET MVC、EntityFramework 等。不僅如此,微軟還發(fā)布了一套面向非 Windows 環(huán)境的生態(tài)系統(tǒng)工具,包括跨平臺(tái)的編輯器 Visual Studio Code,高性能 Web 服務(wù)器 Kestrel 以及持續(xù)集成編譯工具 Cake 等。從這些舉動(dòng)可以看出,微軟在 .NET Core 上投入的誠(chéng)意實(shí)在真摯可見。
在國(guó)外,不少開發(fā)者已經(jīng)在積極響應(yīng) .NET Core 的路線,發(fā)布基于 .NET Core 的運(yùn)行時(shí)的類庫(kù),提供兼容 .NET Core 的 SDK 等。常用的XUnit.net、Moq、Autofac、MongoDB 和 RavenDB 等流行的類庫(kù)和工具已經(jīng)提供了對(duì) .NET Core 的支持,或正在積極地開發(fā)新的版本。在國(guó)內(nèi) .NET Core 在社區(qū)中的交流學(xué)習(xí)也正在穩(wěn)步鋪開。很多開發(fā)人員已經(jīng)著手文檔翻譯、源碼學(xué)習(xí),以及實(shí)踐分享等工作。在博客園網(wǎng)站上已經(jīng)出現(xiàn)不少關(guān)于 .NET Core 的文章,而在頗受關(guān)注的公眾賬號(hào)“.NET 跨平臺(tái)”中,也已經(jīng)發(fā)布了與 .NET Core 相關(guān)的文章。這些都預(yù)示著一個(gè)重要的新平臺(tái)的來(lái)臨,而且 .NET Core 這項(xiàng)新技術(shù)的成長(zhǎng)一定是與社區(qū)合作密不可分的。
展望
軟件工程在走過(guò)了野蠻生長(zhǎng),到達(dá)了基于云的互聯(lián)網(wǎng)產(chǎn)業(yè)形態(tài)日趨成熟的今天,開發(fā)技術(shù)的發(fā)展已經(jīng)從現(xiàn)實(shí)中收獲了不少經(jīng)驗(yàn)。從活躍的 Web 開發(fā)技術(shù)的發(fā)展足以反映出開發(fā)者對(duì)新技術(shù)的向往了。然而在大談了 B/S 架構(gòu)十余年之后的今天向回看,服務(wù)器端的基礎(chǔ)開發(fā)技術(shù)在過(guò)去的五年、十年乃至更久的時(shí)間之內(nèi),并沒有發(fā)生大的改善。新入門的開發(fā)者,仍然走著上一代開發(fā)者的老路,一步一步摸著石頭過(guò)河——在網(wǎng)上搜索著上一代人寫下的伴隨他們成長(zhǎng)留下的嚴(yán)重過(guò)時(shí)、版本錯(cuò)亂,甚至漏洞百出的文章和貼子,似乎津津有味,卻是迷惑不解。
我們都需要新技術(shù),那種能讓新一代開發(fā)者認(rèn)為“屬于這個(gè)時(shí)代,并且面向未來(lái)”的新技術(shù)。請(qǐng)相信,.NET Core 就是你期待的那個(gè)新技術(shù)。它剛剛產(chǎn)生,卻已胸懷古今,詩(shī)與遠(yuǎn)方唾手可得!
相關(guān)文章:
ASP.NET Core 1.0 入門——了解一個(gè)空項(xiàng)目
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡(jiǎn)介
云服務(wù)器下ASP.NET Core 1.0環(huán)境搭建(包含mono與coreclr)
使用VS Code開發(fā)ASP.NET Core 應(yīng)用程序
dotnet run是如何啟動(dòng)asp.net core站點(diǎn)的
ASP.NET Core提供模塊化Middleware組件
“dotnet restore"和"dotnet run"都做了些什么?
探秘 dotnet run 如何運(yùn)行 .NET Core 應(yīng)用程序
.NET Portability Analyzer 已開源
ASP.NET Core的配置(1):讀取配置信息
ASP.NET Core的配置(2):配置模型詳解
.NET Core 1.0 RC2 歷險(xiǎn)之旅
使用VS Code開發(fā) 調(diào)試.NET Core 應(yīng)用程序
讓我們Core在一起:ASP.NET Core & .NET Core
.NET Core VS Code 環(huán)境配置
官方博客明確了 .NET Core RC2/RTM 時(shí)間表
.NET Core全新的配置管理[共9篇]
利用記事本創(chuàng)建一個(gè)ASP.NET Core RC2 MVC應(yīng)用
微軟.NET 正式劈腿成功,橫跨所有平臺(tái)
.NET Core 1.0 CentOS7 嘗試
解讀發(fā)布:.NET Core RC2 and .NET Core SDK Preview 1
[.NET Core].NET Core R2安裝及示例教程
ASP.NET Core 開發(fā)-中間件(Middleware)
結(jié)合Jexus + Kestrel 部署 asp.net core 生產(chǎn)環(huán)境
通過(guò)Jexus 部署 dotnetcore版本MusicStore 示例程序
ASP.NET Core 中文文檔 第一章 入門
用 Visual Studio Code 在 macOS 上創(chuàng)建首個(gè) ASP.NET Core 應(yīng)用程序
用 Visual Studio 和 ASP.NET Core MVC 創(chuàng)建首個(gè) Web API
用 Visual Studio 發(fā)布一個(gè) Azure 云 Web 應(yīng)用程序
ASP.NET Core MVC 與 Visual Studio 入門
第二章指南(4.2)添加 Controller
DotNet Core 介紹
asp.net core 中間件詳解及項(xiàng)目實(shí)戰(zhàn)
教你實(shí)踐ASP.NET Core Authorization(免看文檔教程)
asp.net core 使用 Redis 和 Protobuf 進(jìn)行 Session 緩存
asp.net core 中間件詳解及項(xiàng)目實(shí)戰(zhàn)
第二章 指南(4.3)添加 View
dotnet core開發(fā)體驗(yàn)之開始MVC
dotnet core 開發(fā)體驗(yàn)之Routing
聊聊ASP.NET Core默認(rèn)提供的這個(gè)跨平臺(tái)的服務(wù)器——KestrelServer
簡(jiǎn)析.NET Core 以及與 .NET Framework的關(guān)系
.NET Core 使用Dapper 操作MySQL
使用 CommandLineApplication 類創(chuàng)建專業(yè)的控制臺(tái)程序
簡(jiǎn)析 .NET Core 構(gòu)成體系
.NET Core也可以使用MongoDB了
.NET Core & ASP.NET Core 1.0在Redhat峰會(huì)上正式發(fā)布
原文地址:http://www.jianshu.com/p/bfe0b6afcc11
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的.NET Core:面向未来的开源跨平台开发技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源Asp.Net Core小型社区系统
- 下一篇: .NET Core dotnet 命令大