日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

微软开源故事 | 开启 .NET 开源革命

發(fā)布時(shí)間:2023/12/4 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微软开源故事 | 开启 .NET 开源革命 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如今,在微軟構(gòu)建開源軟件是很正常的一件事——但早在2007年,我開始在微軟工作時(shí),情況并非如此。我們花了幾年的時(shí)間才找到正確的方法,順利開啟了微軟的開源之路。但是,如今我們已取得勝利,可以面帶微笑地回首先前所面臨的諸多挑戰(zhàn)。我要講述的故事是微軟首個(gè)成功的開源項(xiàng)目,以及該項(xiàng)目如何為我們今天所處的位置鋪平了道路。

90 年代后期,我就職于一家名為 Mustang Software 的創(chuàng)業(yè)公司,該公司構(gòu)建的軟件用于跟蹤公司收到的所有電子郵件是否得到及時(shí)回復(fù)。在該創(chuàng)業(yè)公司于 2000 年被出售之前,我?guī)ьI(lǐng)我的團(tuán)隊(duì)到奧蘭多參加微軟開發(fā)專家大會(huì),大會(huì)引入了 ASP+(最終成為 ASP.NET Web 堆棧)和 C#。我和我的團(tuán)隊(duì)在會(huì)議上安裝了預(yù)覽版,我立即就愛上了 .NET。我繼續(xù)在后續(xù)工作中使用 ASP.NET。


1Brad Abrams和Scott Guthrie關(guān)于Atlas的博客文章

然后在2006年,微軟將 CodePlex 設(shè)置為源代碼共享地。CodePlex 上的一個(gè)原始 Web 項(xiàng)目的代號(hào)為 Atlas,現(xiàn)在稱為 AJAX 控件工具包。Atlas 是微軟有史以來構(gòu)建的首批開源項(xiàng)目之一,圍繞 Atlas 的討論非常激烈,對(duì) Atlas 也產(chǎn)生了深厚的興趣。正是 Brad Abrams 和 Scott Guthrie 關(guān)于 Atlas 的博客文章讓我覺得我想?yún)⑴c微軟正在研發(fā)的工作。

我給 Brad 寫了一封電子郵件,對(duì)博客文章進(jìn)行回應(yīng) — 不到一分鐘,他就回復(fù)了!第二天,我們通過電話進(jìn)行了交談,一周之內(nèi),我就在微軟園區(qū)進(jìn)行了面試。突然,我就從陽光明媚的加利福尼亞州搬到天氣變幻無常的華盛頓州雷德蒙德。

我加入了 Brad Abrams 的團(tuán)隊(duì),負(fù)責(zé)所有 ASP.NET 工作。此外,我還負(fù)責(zé)全新的 Silverlight,它是將本機(jī) .NET 開發(fā)引入瀏覽器的初步嘗試,剛剛發(fā)布了第 1 版。ASP.NET MVC 處于早期原型階段,雖然偶爾用作招聘工具,但僅在內(nèi)部試用,它深深地影響了 Phil Haack,他于2007年10月加入團(tuán)隊(duì)。Scott Hanselman 大約也是在這個(gè)時(shí)候加入了微軟,盡管他加入了其他團(tuán)隊(duì)。


2ASP.NET MVC是ASP.NET團(tuán)隊(duì)對(duì)Ruby on Rails大受歡迎的回應(yīng)


眾所周知,ASP.NET MVC 是 ASP.NET 團(tuán)隊(duì)對(duì) Ruby on Rails 大受歡迎的回應(yīng)——始于2004年,由獨(dú)一無二的 David Heinemeier Hansson 作為 Basecamp 的一部分進(jìn)行開發(fā)。到2007年,最新版本的 Mac OS X 已附帶 Ruby on Rails!“模型-視圖-控制器”模式與 Rails 基架的組合大大減少了 Web 開發(fā)人員需要編寫的管道代碼量,使得 Forms-Over-Data 網(wǎng)頁令人愉快,Web 開發(fā)人員喜歡使用它。

ASP.NET MVC 也是對(duì) ASP.NET Web 窗體遭受的批評(píng)的一種回應(yīng)。ASP.NET Web 窗體的構(gòu)建旨在將所有這些 Windows 窗體開發(fā)人員聚集到 Web 上 — 而無需學(xué)習(xí)太多東西。ASP.NET Web 窗體做到了這一點(diǎn),眾多新的 Web 開發(fā)人員都使用它創(chuàng)建網(wǎng)站。但經(jīng)過幾年的發(fā)展,很明顯 ASP.NET Web 窗體也存在一些問題:向開發(fā)人員隱瞞網(wǎng)絡(luò)本質(zhì)的過程意味著背后一些丑陋的問題。

例如,在 ASP.NET Web 窗體頁面上 C# 代碼和 HTML 的混合方式使其難以構(gòu)建單元測(cè)試。如果無法測(cè)試,久而久之,大型網(wǎng)站的維護(hù)和修改工作會(huì)變得更加困難。如果您確實(shí)創(chuàng)建了測(cè)試,這些測(cè)試大部分是運(yùn)行 UI 的功能測(cè)試 — 即使是在今天,這也是一種脆弱的測(cè)試構(gòu)建法。對(duì)網(wǎng)頁的任何更改都很可能會(huì)中斷該頁面的所有測(cè)試。

ASP.NET MVC 的早期原型令人印象深刻,足以讓 Scott Guthrie 決定將其在德克薩斯州奧斯汀舉行的首屆 ALT.NET 大會(huì)上首次公開亮相。ALT.NET 運(yùn)動(dòng)源于一群充滿激情的開發(fā)人員,他們喜歡使用 .NET,但他們認(rèn)為開源工具應(yīng)是該因素的一個(gè)重要組成部分。


3在微軟歷史上的那個(gè)時(shí)候,“非我發(fā)明癥”甚囂塵上

在微軟歷史上的那個(gè)時(shí)候,非我發(fā)明癥甚囂塵上 — 非微軟制造的軟件往往都會(huì)大打折扣。很多客戶都樂于只使用微軟制造的工具,使這種態(tài)度得到了加強(qiáng)。當(dāng)微軟宣布正在構(gòu)建自己的對(duì)象關(guān)系映射器(被稱為“實(shí)體框架”)時(shí),此方法就到了緊急關(guān)頭。其他對(duì)象關(guān)系映射器解決方案(如 nHibernate)的倡導(dǎo)者對(duì)于構(gòu)建另一個(gè)對(duì)象關(guān)系映射器、而不是支持現(xiàn)有解決方案感到惱火。這些倡導(dǎo)者成為 ALT.NET 的開端,到2007年10月,他們召開了首次會(huì)議。


4從一開始Scott Guthrie就說MVC將是開源的

在 ALT.NET 大會(huì)上,Scott Guthrie 概述了 ASP.NET MVC,這是 ASP.NET MVC 的首次公開亮相。Scott Hanselman 在 IronPython 中演示了用于 MVC 的構(gòu)建控制器,Phil Haack 使用 IronRuby 進(jìn)行了類似的演示。演示的所有內(nèi)容都是原型代碼,不會(huì)以當(dāng)時(shí)展示的形式上市,但這是一個(gè)非常有趣的開始,每個(gè)人都希望開啟微軟的新時(shí)代。從一開始,Scott Guthrie 就說 MVC 將是開源的。

在 ALT.NET 大會(huì)召開的同一周,微軟還將整個(gè) .NET Framework 的源作為參考源打開了。現(xiàn)在,您可以在調(diào)試應(yīng)用程序的同時(shí)進(jìn)入 .NET Framework 基礎(chǔ)代碼。它不是我們今天所知道的開源,但它是走向開源的又一步。

MVC 和 Silverlight 也是網(wǎng)絡(luò)團(tuán)隊(duì)“帶外”發(fā)布的首批產(chǎn)品。.NET 和 Visual Studio 的每一個(gè)新版本都需要 24-36 個(gè)月才能實(shí)現(xiàn) — 每個(gè)差不多需要一年的時(shí)間進(jìn)行規(guī)劃、編碼和修復(fù)上市。很明顯,此周期對(duì)網(wǎng)絡(luò)世界,特別是 MVC 來說還不夠快。畢竟,Ruby on Rails 每年都會(huì)推出一個(gè)新版本。

2007年12月,我們發(fā)布了 MVC 的社區(qū)技術(shù)預(yù)覽版,為最近發(fā)布的 Visual Studio 2008 和 .NET 3.5 提供了基本工具(項(xiàng)目模板)。該預(yù)覽版是 MVC 的第一個(gè)版本,任何人都可以下載并開始試驗(yàn)。

2008年2月,在 Mix 08 會(huì)議之前,新版 MVC(即 MIX 預(yù)覽版)不僅增加了人們一直要求的一系列功能,而且還增加了大量新工具,包括直接支持開源測(cè)試框架,如 NUnit 和 MBUnit。

在 Mix 08 會(huì)議之后,MVC 本身的源代碼也可供下載、編譯并用于調(diào)試。這不是我們今天所認(rèn)為的那樣,也就是說,團(tuán)隊(duì)在編碼時(shí)將代碼提交至存儲(chǔ)庫。更準(zhǔn)確地說,MVC 在內(nèi)部開發(fā),然后一部分代碼被發(fā)送到 CodePlex。


5在CodePlex上與公眾互動(dòng)是實(shí)現(xiàn)開源項(xiàng)目之路上進(jìn)行的早期透明度實(shí)驗(yàn)

移動(dòng) MVC 代碼副本并在 CodePlex 上就其與公眾互動(dòng)是實(shí)現(xiàn)開源項(xiàng)目之路上進(jìn)行的早期透明度實(shí)驗(yàn),微軟內(nèi)部對(duì)此有很多擔(dān)憂。目標(biāo)是每隔幾周推出一次更新,希望有一天可以每天推出一次更新。

大約是那個(gè)時(shí)候,我們遇到了一個(gè)有趣的問題。ASP.NET MVC 的關(guān)鍵部分是路由 — 能夠?qū)⒄?qǐng)求傳遞到控制器中。ASP.NET 動(dòng)態(tài)數(shù)據(jù)的工作人員還將路由用于他們的技術(shù),我們每個(gè)人都構(gòu)建了自己的實(shí)現(xiàn)。事實(shí)證明,非我發(fā)明癥甚至延伸到個(gè)人團(tuán)隊(duì)之中!我們花費(fèi)了一些時(shí)間對(duì)路由的獨(dú)特之處進(jìn)行抽象,使其與基本代碼區(qū)分開來,并到達(dá)一個(gè)路由引擎,當(dāng)時(shí)作為 System.Web 的一部分。

此過程的副作用也是創(chuàng)建路由調(diào)試器。該調(diào)試器起初是一個(gè)私有工具,幫助我們了解新的共享路由模型的情況,最終也使與世界分享它變得有意義。

對(duì)代碼版本命名也是一個(gè)有趣的問題。ASP.NET MVC 的初始版本被稱為社區(qū)技術(shù)預(yù)覽版。之后,我們將名稱改為預(yù)覽版,有些編號(hào)了,有些則沒有。但是,由于起初無法頻繁發(fā)布新代碼,實(shí)現(xiàn)不了 CodePlex 每隔幾周就有新代碼這一目標(biāo),因此我們推出了 Source Refresh。過程有一些混亂,但我們不斷學(xué)習(xí) — 最終,預(yù)覽版很快就發(fā)布了,備用名稱也停止使用。


62008年9月,MVC的預(yù)覽版5正式推出

2008年9月,MVC 的預(yù)覽版 5 正式推出 — 該版本棒極了,但更重要的是 jQuery。早在2006年,Jon Resig 就開始將 jQuery 庫用作一套緊湊的開源工具,簡(jiǎn)化在 JavaScript 中的工作,同時(shí),CodePlex 上的許多人都認(rèn)為,MVC 應(yīng)該利用 jQuery 的工具。合并 jQuery 對(duì)微軟來說是一個(gè)了不起的挑戰(zhàn) — 使用開源軟件是一回事,創(chuàng)建開源軟件卻是另一回事,但是將開源庫包括在產(chǎn)品內(nèi)?太瘋狂了!

但這對(duì)使用 jQuery 來說是合情合理的。無論如何,在 MVC 中完善各項(xiàng)特性需要使用 jQuery 提供的大部分功能。為什么要重新創(chuàng)建輪盤(改變色調(diào)怎么樣)?我們制作的許多不同的網(wǎng)絡(luò)產(chǎn)品都可以利用 jQuery,以至于 Scott Guthrie 在他的博客上宣布,下一版 Visual Studio 將附帶 jQuery,最終于2010年做到了這一點(diǎn)。

此時(shí),早期版本的 Microsoft Azure 也在全球推出,我們嘗試將 MVC 與 Azure 一起用作11月發(fā)布的 MVC 測(cè)試版的示例 — 它在洛杉磯舉行的微軟開發(fā)專家大會(huì)上作為演示展出。

2009年3月,MVC 的交付廠商版(第 1 版)在 Mix 09 會(huì)議上上市。我們?cè)?CodePlex 上發(fā)布了帶 MS-PL 開源許可證的代碼。該許可證非常簡(jiǎn)短,今天被視為類似于 MIT 許可證(這是微軟目前大部分時(shí)間都在使用的許可證)。開源促進(jìn)會(huì)批準(zhǔn)了 MS-PL 許可證,但該許可證在某些領(lǐng)域仍然存在爭(zhēng)議 — 微軟為什么要自己制作許可證?其中到底隱瞞了什么?當(dāng)然,MS-PL 許可證沒有任何棘手的問題,從長遠(yuǎn)來看使用它最終沒有任何意義 — MIT 或 Apache 許可證也同樣適用。但在微軟內(nèi)部,有些法律人士更樂意看到這樣,但不理解為組織設(shè)置獨(dú)立許可證的不利方面。


7jQuery添加到Visual Studio 2010中確實(shí)代表了一種新的風(fēng)險(xiǎn)

法律團(tuán)隊(duì)而言,在 Visual Studio 2010 中添加 jQuery 確實(shí)代表了一種新的風(fēng)險(xiǎn)——如果添加到 jQuery(包含 GPL 類型的許可證)的代碼會(huì)影響 Visual Studio 其余部分的許可會(huì)怎么樣?當(dāng)時(shí),對(duì) GPL“自由拷貝”法的擔(dān)憂意味著法律人士認(rèn)為它具有“傳染性”。將 GPL 許可軟件并入具有傳統(tǒng)版權(quán)(如 .NET)的軟件將侵犯版權(quán)。

如今,似乎這些擔(dān)憂有些過度,但這些是處理過以下類似訴訟案件的法律人士:Microsoft Word 中意外地含有一些代碼,導(dǎo)致從全球各地的商店貨架上刪除了 Word 的物理機(jī)器。該主張成本很高——2009年,我們?nèi)陨鲜辛舜罅寇浖?/span>

為了緩解 jQuery 的法律問題,我們實(shí)施了大量程序。我們構(gòu)建了工具,使用這些工具測(cè)試 jQuery 源代碼的出處——這些工具將查找代碼并檢查所有許可。只有一次,我們發(fā)現(xiàn)參與者添加了一些 GPL 許可代碼 — jQuery 工作人員甚至都不知道這件事!根據(jù) MIT 許可證,jQuery 被許可用于商業(yè)用途,jQuery 中的 GPL 許可代碼是沒有意義的。


8我們*永遠(yuǎn)*不應(yīng)該改變第三方開源庫的許可證

就在 Visual Studio 2010 發(fā)布之前,我接到了法律部的一位律師的電話 — 法律意見書認(rèn)為,Microsoft 軟件包中提供的任何代碼(包括 jQuery)都應(yīng)獲得 MS-PL 許可證的許可。我被拉進(jìn)一個(gè)電話會(huì)議,在會(huì)議上,我強(qiáng)烈主張(說了一些難聽的話)我們*永遠(yuǎn)*不應(yīng)該改變第三方開源庫的許可證。MIT 和 MS-PL 非常類似,這一點(diǎn)并不重要——像那樣更改許可證實(shí)在是太粗魯了。這樣做沒有得到什么有意義的好處,反倒對(duì)我們作為開源支持者的聲譽(yù)造成了重大損害。

最終,我們的法律團(tuán)隊(duì)接受了此次開源之旅,當(dāng) Studio 2010 發(fā)布時(shí),jQuery 的捆綁版與其原始的 MIT 許可證相關(guān)聯(lián)。Visual Studio 2010 還包括 ASP.NET MVC 第 2 版、Silverlight 4 以及其他大量出色的工具。

此版本奠定了基礎(chǔ),成為我們?nèi)绾卧谖④涢_源的榜樣項(xiàng)目。當(dāng) ASP.NET 團(tuán)隊(duì)開始規(guī)劃跨平臺(tái)的主要新版本時(shí),我們很自然地與社區(qū)合作,公開地構(gòu)建新版本。最終,這項(xiàng)工作擴(kuò)展成 .NET Core 以及 .NET Foundation 的成立,以支持 .NET 平臺(tái)上的開源協(xié)作。

(要了解有關(guān) .NET Foundation 歷史的更多信息,請(qǐng)查看?Beth Massi 的帖子:建立開源 .NET Foundation)。

回顧過去,看看我們?nèi)绾螄L試開源,學(xué)到一些經(jīng)驗(yàn)教訓(xùn),并繼續(xù)使用有效的方法進(jìn)行構(gòu)建也是一件很有意思的事情。如果當(dāng)時(shí)沒有做那些工作,我認(rèn)為我們不會(huì)有今天所取得的成就。


總結(jié)

以上是生活随笔為你收集整理的微软开源故事 | 开启 .NET 开源革命的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。