盡管現(xiàn)在的"微軟平臺(tái)"的含義已經(jīng)與往日大相徑庭,但微軟在紐約舉辦Connect 2016大會(huì)為開發(fā)人員制定了針對(duì)其平臺(tái)的計(jì)劃。
今天的口號(hào)是"任何開發(fā)人員,任何應(yīng)用程序,任何平臺(tái)",而幾年前的主題是"Windows無處不在"。
Connect大會(huì)屬于微軟的開發(fā)人員部門,與由Windows部門舉辦的Build活動(dòng)不同。因此,大會(huì)上的主題演講也不那么關(guān)注Windows操作系統(tǒng)的開發(fā)。
微軟同Windows的關(guān)系變得復(fù)雜。一方面,它有一個(gè)Windows開發(fā)人員社區(qū),希望保持其信心;但另一方面,它想要說服更廣泛的開發(fā)人員群體,讓他們相信該公司有適用于其他平臺(tái),特別是iOS和Android移動(dòng)客戶端以及用于Web和服務(wù)器應(yīng)用程序的Linux的工具和框架。
因此,該公司正忙于排除在Windows外使用其技術(shù)的障礙。只要快速瀏覽一下主要的Connect公告就表明了這一點(diǎn):微軟作為白金會(huì)員加入Linux基金會(huì),發(fā)布了SQL Server for Linux的公共預(yù)覽版。谷歌加入.NET基金會(huì),Visual Studio for Mac預(yù)覽版發(fā)布;Azure App Service現(xiàn)在支持Linux了。三星發(fā)布針對(duì)Tizen的Visual Studio Tools。Visual Studio Mobile Center宣布在iOS、Android和Windows上測(cè)試移動(dòng)應(yīng)用程序??缙脚_(tái).NET Core 1.1和Entity Framework Core 1.1發(fā)布。
現(xiàn)在沒有任何關(guān)于Windows Everywhere的跡象,不過有一些關(guān)于.NET Everywhere的證據(jù),谷歌和三星顯示出對(duì)它支持。
在今年早些時(shí)候被收購(gòu)之后,Xamarin對(duì)微軟的影響是Connect大會(huì)上另一個(gè)值得注意的地方。Xamarin成立的目的是使C#開發(fā)者能夠瞄準(zhǔn)移動(dòng)平臺(tái),并且由于iOS和安卓系統(tǒng)的成功而迅速增長(zhǎng)。另一方面,微軟一直在努力吸引開發(fā)人員到其通用Windows平臺(tái)(UWP)上,因?yàn)闆]有iOS和安卓,它就不夠通用。因此,Xamarin提供了答案。
多年來一直跟蹤微軟開發(fā)人員故事的轉(zhuǎn)折和轉(zhuǎn)向的開發(fā)人員,將知道有許多種XAML,一種基于XML的語言,最常被用來定義用戶界面。有WPF(Windows Presentation Foundation)XAML、Silverlight XAML和UWP XAML,所有的這些語言都有所不同。 Xamarin介紹了另一種變體, Xamarin.Forms技術(shù)使用它,允許開發(fā)人員一次性為多個(gè)平臺(tái)定義UI。
Xamarin.Forms立刻大受歡迎,甚至超出了它的創(chuàng)造者的期望,特別是因?yàn)樵摴鹃L(zhǎng)期以來一直主張為每個(gè)平臺(tái)單獨(dú)創(chuàng)建一個(gè)原生UI。盡管它有局限性,但是它可以創(chuàng)造高效率,特別是對(duì)于forms-over-data業(yè)務(wù)應(yīng)用程序更是如此,對(duì)這類程序來說,最后一個(gè)程度的美化是不必要的。Xamarin.Forms現(xiàn)在瞄準(zhǔn)UWP以及iOS和安卓系統(tǒng),并且顯然會(huì)在未來的版本中添加Mac OS。
負(fù)責(zé)開發(fā)部門的微軟企業(yè)副總裁Julia Liuson提醒我Xamarin.Forms的能力不如XAML的其他變體。
她表示,"UWP應(yīng)用程序使用的XAML版本是一個(gè)真正的平臺(tái),它可以讓你做一切可能的事情,而Xamarin.Forms是一個(gè)了不起的應(yīng)用,但你不能使用它來描述一切可能的東西,針對(duì)所有不同的平臺(tái)口味。"Xamarin.Forms和UWP XAML之間目前還沒有融合的計(jì)劃。
也就是說,與UWP XAML相比,Xamarin.Forms滿足的是開發(fā)者更迫切的需求,所以如果它有一個(gè)更光明的未來就毫不令人感到意外了。
我也向Liuson提出了Visual Basic(VB)是否有未來這個(gè)棘手的問題。她表示,Visual Studio 2017中的所有新功能--都可能會(huì)在Connect大會(huì)上發(fā)布--"都同樣地適用于Visual Basic和C#"。一個(gè)Visual Basic用戶"應(yīng)該對(duì)于我們?nèi)绾螏砀嗟哪芰透嗟纳a(chǎn)力的做法感覺非常好。
Liuson承認(rèn),這也就是說VB沒有像C#一樣獲得相同的投資。她對(duì)《The Reg》表示,"隨著.NET不斷擴(kuò)展,我們觀察到的是Visual Basic開發(fā)人員傾向于專注于一組知名的業(yè)務(wù)應(yīng)用程序:ASP.NET、Windows Forms和WPF。我們將繼續(xù)在這些領(lǐng)域提供大力支持,但是當(dāng)涉及到全新的功能集時(shí),我們沒有觀察到Visual Basic開發(fā)人員接受這些。所以我們把重點(diǎn)放在VB客戶工作的領(lǐng)域上。"
這意味著,想要跟隨微軟走出Windows的VB開發(fā)人員應(yīng)該學(xué)習(xí)C?;蛄硪环N語言。
Visual Studio 2017如何揭示出微軟的新方向
Visual Studio 2017還展示出微軟的方式是如何改變的。它比以往任何時(shí)候都更加巨大,雖然新的安裝程序可以減輕這種痛苦,使您能夠用比以前更清爽和更靈活的方式挑選并選擇所需的組件。選擇的菜單包括:
Python
Node.js
針對(duì)Linux Development的Visual C++
Clang with Microsoft CodeGen (對(duì)Windows 上的C++有更多標(biāo)準(zhǔn)兼容)
Docker工具
Azure工具堆棧
使用Visual Studio 2017,我開始一個(gè)新的ASP.NET Core項(xiàng)目,并檢查Enable Container (Docker) Support的選項(xiàng)。我被提示安裝Docker for Windows,這樣做了之后不久就啟動(dòng)并運(yùn)行了一個(gè)"Hello world"ASP.NET應(yīng)用程序。值得注意的是,Docker正在運(yùn)行一個(gè)Debian容器,快速查看PATH環(huán)境,現(xiàn)在是Hyper-V,而不是Virtual Box。
Visual Studio 2017在Windows上的Docker上的Linux容器中運(yùn)行ASP.NET Core
Stack Overflow的首席執(zhí)行官Joel Spolsky參加了Connect大會(huì)。早在九十年代,他的第一份工作是在微軟負(fù)責(zé)Excel方面的工作。因此,筆者請(qǐng)他比較一下曾經(jīng)的微軟和今天的微軟有什么不同。
他表示,"我在微軟共事的每個(gè)人都有這種態(tài)度,我們是巨大的,我們贏了,就算表現(xiàn)大度我們也負(fù)擔(dān)得起,我們可以幫助Lotus集成1-2-3到Windows并幫助WordPerfect到Windows,與此同時(shí),Excel團(tuán)隊(duì)和Word團(tuán)隊(duì)則正在與他們競(jìng)爭(zhēng)。"
"今天的微軟已經(jīng)把這一點(diǎn)帶到了另一個(gè)層面,想要成為每個(gè)人最喜歡的公司,無論你是誰。開發(fā)工具的錢已經(jīng)轉(zhuǎn)移到提供云計(jì)算服務(wù)--這是可計(jì)量的,而且無法盜版--現(xiàn)在Visual Studio只是在Azure上獲取東西的一種方式。這使他們處于一個(gè)非常舒適的位置,能夠?qū)κ澜缟厦總€(gè)人都友好。
不過Spolsky斷言,許多人仍然警惕微軟,不斷回憶起它是如何阻止瀏覽器的開發(fā),抵制開源或其他各種真實(shí)或想象中的罪行。
此外,有了吹噓了一年的一系列技術(shù),微軟平臺(tái)開發(fā)人員還沒有迎來一個(gè)輕松時(shí)刻,而忽略了下一個(gè)。
該公司對(duì)C#和.NET的承諾從來沒有食言,這仍然是真的,雖然它的投資現(xiàn)在更多地集中在跨平臺(tái).NET核心而不是讓只針對(duì)Windows的 .NET Framework發(fā)展成熟。
今天的微軟正在轉(zhuǎn)型??缙脚_(tái)的過程并不容易。新的.NET核心針對(duì)所有的帳戶,但長(zhǎng)期開發(fā).NET的開發(fā)人員卻由于缺少部件而感到沮喪。 Linux上的SQL Server不如Windows上那么好,并且.NET Stored Procedures到Reporting Services還有差異。Windows上的容器支持剛剛開始。
然而,在目前方向的背后有動(dòng)力,有些事情很明顯。 Xamarin工具是非常重要的并能夠滿足真正的需要。 無論UWP是否真的追上對(duì)公司來說不再是至關(guān)重要的了。它讓開源變得有意義,并樂于支持其他人的平臺(tái),只要它能帶來云計(jì)算銷售的希望就行。