加個“星標★”,每日 7:15,好文必達! 作者丨Sam Redmond 譯者丨無明 策劃丨小智 直到 2017 年,.NET 開發(fā)都還只能在 Windows 上進行,并且只能部署到 Windows 環(huán)境中。這是.NET 最大的缺陷。這個問題至今仍然困擾著.NET,原因如下: 開發(fā).NET 代碼不需要什么特別的東西,但如果要將它部署到生產(chǎn)環(huán)境,就需要 Windows 服務(wù)器。開發(fā)人員還需要為操作系統(tǒng)和相關(guān)授權(quán)支付費用。我在 2015 年購買了 Windows Server 2012,一個許可就花了 660 美元。如果你是一家公司,不會只購買一個許可這么簡單。雖說這樣的成本可能還算不上很高,但要知道,Ubuntu 服務(wù)器的成本為零,而且更輕量,速度更快。 2013 年 12 月,Docker 發(fā)布了。不到兩年,也就是 2015 年 7 月,谷歌發(fā)布了基于 Docker 的 Kubernetes。我不想再詳細介紹 Docker 或 Kubernetes 了,需要知道的是,Docker 為代碼提供了一個特定的容器。它是一個構(gòu)建在 Linux 內(nèi)核之上的輕量級虛擬環(huán)境,只運行用戶提供的代碼。Docker 的美妙之處在于,同樣的代碼在所有機器上具有相同的行為,解決了“在我的機器上沒問題,到了生產(chǎn)環(huán)境就有問題”這一由來已久的問題。唯一的缺點是,如果有大量的容器,管理和擴展就變得很困難。 Kubernetes 為容器編制問題提供了解決方案。有了這項技術(shù),啟動和管理容器就變得很容易。但因為 Docker 只使用輕量級 Linux 內(nèi)核,所以兼容性只是針對 Linux 而言的,.NET 開發(fā)人員無法使用這項令人難以置信的技術(shù)。 云計算 AWS 在 2006 年發(fā)布了第一個公有云,從基本的產(chǎn)品開始:Elastic Compute Cloud(EC2)和 Simple Storage Service(S3)。自那時起,亞馬遜、微軟、谷歌、IBM 以及其他一些公司都在爭先恐后地推出自己的云服務(wù)。Docker、Kubernetes 和 Linux 為大量的云產(chǎn)品提供了支撐,這也導(dǎo)致.NET 開發(fā)人員無法使用這些(但并非所有)云產(chǎn)品,也有很多云供應(yīng)商提供了便利的 Windows 服務(wù)器虛擬機,但仍然需要支付許可費用,而且不能使用 Docker 或 Kubernetes。 需要事先聲明的是,以下是我基于個人在 Windows 上使用 Visual Studio 的經(jīng)驗而得出的觀點??梢哉f,它是最強大的 IDE 之一,但它也有一些嚴重的缺點。首先,它占用的空間太大。Visual Studio 會占用 2 到 5GB 的磁盤空間,這對于一款 IDE 來說有點過分了。它還會占用很大的資源,如果只是為了寫點代碼而打開它,會覺得很費勁。記得之前有個項目,我甚至都可以在 Visual Studio 打開之前去吃頓午飯回來(順便說一下,我的機器是新的,有 32GB 內(nèi)存)。 之前提到過,.NET Core 2.0 在 2017 年 8 月發(fā)布了,引入了對.NET 的跨平臺支持?,F(xiàn)在你可以把.NET 開發(fā)帶到 Linux 和 Mac 上了。微軟甚至還發(fā)布了 Mac 版的 Visual Studio。實際上,相比 Windows 版本,我更喜歡使用 Mac 版的 Visual Studio!微軟還發(fā)布了一個非常好的 CLI,可以在任何平臺上創(chuàng)建和管理.NET 項目。 我不得不為微軟邁出的跨平臺這一步點個贊?,F(xiàn)在,你可以自由使用之前無法使用的東西,很多開發(fā)團隊正在享受這份福祉。如果你像我一樣由于之前提到的那些問題而離開了.NET,我強烈建議你再回頭嘗試一下.NET Core 2.0。 微軟做了一件了不起的工作,他們沒有改變 C# 語言的任何東西,所以不需要再去學(xué)習(xí)什么特別的東西,只需要安裝 dotnet CLI 和運行時就可以。安裝起來很快,然后就可以用同樣的方式編寫熟悉的 C# 代碼了。不過,如果有一個標準版的項目,就需要做一些轉(zhuǎn)換,但轉(zhuǎn)換起來也很容易。 如果你剛開始學(xué)習(xí)編程語言,C# 可能是適合的。即使你最開始接觸的是.NET Core,要轉(zhuǎn)到.NET Standard 也很容易。 雖然我很喜歡 Mac 版的 Visual Studio,但它并不是必需的。你也可以使用其他常用的 IDE(比如 Visual Studio Code 或 Atom)。它們有很多語言插件,可以享受很多很酷的功能,比如代碼自動完成和智能感知。但這些 IDE 都不能真正取代 Visual Studio,正如我之前說過的,它太強大了。不過,好在我們沒有完全被綁定到 Visual Studio,這點很好。 .NET Core 2.0 雖然很好,但它畢竟也才兩歲。我曾經(jīng)在很多公司工作過,他們基于.NET Standard 構(gòu)建了大量的應(yīng)用程序,但直到現(xiàn)在都沒有時間和預(yù)算將它們遷移過來。一般來說,大多數(shù)開發(fā).NET 應(yīng)用程序的公司都被微軟的訂閱服務(wù)綁得死死的,他們現(xiàn)在才開始著手處理遺留代碼。 我覺得.NET 的過去帶有某種程度的恥辱,很多公司因為這個問題而沒有采用這項技術(shù)。我是眾多離開.NET 轉(zhuǎn)向 Go 語言、Python 和 NodeJS/TypeScript 的人當(dāng)中的一個,我之前真的不認為自己會再過頭來,但事實是,現(xiàn)在我回來了。 不管是開發(fā)新手,還是經(jīng)驗豐富的開發(fā)人員,如果想要學(xué)習(xí)一門新語言,我認為可以考慮一下.NET 和 C#。如果想要構(gòu)建一個大型復(fù)雜的 Web 應(yīng)用程序,.NET MVC 會讓一切都變得非常容易。新的 CLI 工具使用起來非常簡單——整合代碼,創(chuàng)建樣板代碼,確保所有東西都能夠正確地連接在一起。它還能夠非常好地與你正在使用的前端框架集成。如果想要構(gòu)建一個跨平臺的原生桌面或移動應(yīng)用程序,.NET 再好不過了。如果只想構(gòu)建一個 API 或微服務(wù),這也很容易。Visual Studio 甚至還提供了一些工具,可以用來自動將應(yīng)用程序部署到云端。 |
|