朱立
摘 要:移動互聯網時代,雖然在移動終端市場還看不到微軟多少份額,但微軟的技術圈子里卻一點也不安靜,各種新技術、新模式、新應用紛至沓來,讓人一時眼花繚亂。該文從C#程序員的視角出發,將微軟技術體系作了一個淺層的梳理,其間對部分焦點性關鍵詞略加分析,并結合近期動態對dot NET技術環境稍作展望。
關鍵詞:微軟技術生態系統 ASP.NET MVC MVVM 移動互聯 C#程序員
中圖分類號:G71 文獻標識碼:A 文章編號:1674-098X(2015)03(a)-0050-02
自dot Net Framework面世以來,框架支持多種開發語言的特性一時成為軟件行業內關注的焦點。然而很快,C#成為了dot Net框架中的不二選擇。在Windows系統環境下,C#程序員基本上生活在圍繞Win Forms和Web Forms應用程序構成的技術生態系統中。雖然,伴隨C#和Framework的成長,其間有過一些波動,但微軟的Visual Studio IDE(Integrated Development Environment)始終奉行“降低開發人員工作量”的原則,以提高代碼生成(注意不只是編寫)的效率。所以相比Java程序員來講,C#程序員的生活顯然氣定神閑了許多,算得上平安幸福。然而,移動互聯時代的到來,一時讓人手足無措,這種幸福生活還能維持多久?
1 移動互聯網時代
2000年前后,信息化建設開始起步,經過近15年時間的醞釀,大量積累的需求催生了寬帶、物聯網、云、大數據等一系列新概念帶來的新技術、新模式、新應用。3G網形成的沖擊還余波未散,4G、5G網已經紛紛粉墨登場。蘋果手機成為粉絲們瘋狂追捧的時尚品,谷歌以開源的安卓平臺在市場上獨霸一方,智能手機以意想不到的速度開始普及。據2014年6月統計,中國手機網民的規模達到五億二千七百多萬人,占網民比例的83.4%。手機網上支付和網上購物的年增長率均在160%左右,剛剛過去的2014年“雙十一”,天貓總成交額高達571億,其中無線成交額達到243億。智能終端的普及,使得移動商務無所不在,其發展頻率超過了摩爾定律的描述……一切的一切都在表明,移動互聯網時代已經到來,手機已經開始超越PC機成為第一大上網終端。
嗅覺異常靈敏的微軟自然不會放過這樣一個巨大的市場。雖然早期的Windows CE、Windows Mobile沒有在移動互聯市場蓬勃發展的黃金時代帶來太多驚喜,繼放棄Windows Phone 7之后,Windows Phone 8也并未收獲預期的市場份額,但微軟新一代掌門人納德拉一直堅持的“三屏一云”戰略,和近兩年微軟在“云端”的不菲業績,讓人不能不作這樣一個猜測——微軟在與用戶體驗的博弈中似乎醞釀著一場巨大的“陰謀”,一旦雙方達成妥協,移動互聯市場不知又將是何格局。
市場風起云涌,身處敏感地帶的程序員們必然要經歷或大或小的沖擊。軟件公司對C#程序員的相關崗位劃分,也開始細化出前端、dot NET開發、移動開發、數據處理等等,甚至在一些規模大、業務復雜的項目中,還會把前端細分成交互、布局……但是,對C#程序員來說,依托微軟這樣一位軟件巨人,看清身處的技術生態系統,還是能閑庭信步,回復往日幸福時光的。
2 按架構劃分的技術生態系統
2.1 ASP.NET
移動互聯網時代,各類應用都在向移動平臺(至少是Web方向)傾斜,曾經的Win Forms程序及其技術架構將退居一隅(甚至有最終淡出市場的可能)。ASP.NET(Web Forms程序)將依托Web環境繼續存在,C#程序員面對的這一技術環境如表1所示。
*.aspx是傳統的微軟動態網頁格式,其中包含的主要是HTML標簽和ASP.NET對象,需要依靠設計器(Designer)設計編寫;*.xaml可以用于編寫WPF(Windows Presentation Foundation)、Silverlight、Win 8 Application等,是這些類型程序的典型界面文件格式,主要包含XAML對象元素。以上二者都是UI人員的工作對象,常用工具主要包括微軟的Microsoft Expression設計套裝,如Expression Web(所見即所得的網站設計器與HTML編輯器)、Expression Design(點陣與矢量圖像編輯器)、Expression Blend(用于可視化制作WPF及Silverlight、Win 8 Application等應用程序的用戶界面)等。
對C#程序員來講,這一環境中的主要工作文件是*.xaml.cs文件類型,也就是*.xaml文件的代碼隱藏文件,是程序員Coding的地方,主要工具是Microsoft Visual Studio(2012以上版本),與Microsoft Expression代碼兼容。
2.2 ASP.NET MVC和MVVM
近兩年來,微軟在云端的收獲頗豐。在C#程序員眼里,可以把它看作Windows Azure。Windows Azure提供了一個云環境,雖然帶有容器,可以進行小規模開發,但與本地開發工具不可同日而語,其應用性遠大于開發性。
ASP.NET MVC(Model-View-Controller)是微軟官方基于MVC模式編寫ASP.NET Web應用程序的框架,同時又是一種特有的Web應用軟件架構模式和技術,是ASP.NET技術的子集,以下簡稱MVC。MVVM(Model-View-ViewModel)框架是MVC一個變種,是基于MVP(Model-View-Presenter)模式與WPF相結合的應用方式發展演變而來的一種新型架構。二者的關系如圖1所示。
MVC主要針對具有人機交互功能的軟件,特別是基于Windows Azure的應用開發,MVC框架的使用更為廣泛。MVC具有敏捷開發的特點,可以快速生成解決方案,適用于電商、社區、CRM/ERP等大型Web應用。MVC還有一個重要優勢在于,Model、View、Controller三個組件相互之間是松耦合的關系,所以可以分別進行自動單元測試,大大提高了MVC應用程序的可測試性。截止2014年,最新版本是MVC6。從MVC4開始,View的文件類型是*.cshtml(之前是*.aspx),Controller和Model的文件類型都是*.cs,三者通過路由構建關系。
MVVM立足于原有MVP框架,并且把WPF的新特性揉合進去,以應對客戶日益復雜的需求變化。WPF的數據綁定與Presentation Model相結合的做法,使得開發人員可以將View和業務邏輯分離出來,這種WPF特有的數據綁定技術簡單實用,所以稱之為Model-View-ViewModel。VM相當于MVC中的Controller。MVVM中的View由一個個Partial View組成(簡稱PV),類似于自定義控件。每個PV與Model都有對應關系,每個PV都有邊界,可以單獨操作,也可以組成新的View。PV將頁面局部化,PV之間沒有交互。為View量身定制的mode也就是ViewModel,ViewModel包含所有由UI特定的接口和屬性,并由一個ViewModel的View(Partial View)綁定屬性,在獲得二者之間松散耦合的同時強化了整個應用程序的松耦合特性。MVVM的主要程序類別有WPF、Silverlight、Windows Phone Application等。MVC、MVVM程序可以部署到云端,MVC與MVVM的Windows Phone Application等程序相結合,可以實現面向“云+端”的開發,構成了“互聯網+移動互聯網”的模型。
基于云環境的應用軟件,業務邏輯部署在云端,界面只負責美觀,需要用到JavaScript、jQuery、Ajax等技術。在面向移動互聯編程中,HTML5+CSS3+JS技術方案漸成主流。
2.3 ASP.NET與ASP.NET MVC
ASP.NET(Web Forms)是一個開發框架,通過HTML、CSS、JavaScript 以及服務器腳本等來構建網頁和網站。ASP.NET支持三種開發模式:Web Pages、MVC以及Web Forms。也就是說,MVC是ASP.NET三個開發模型之一。
Web Pages主要運用*.cshtml文件進行開發,界面和業務邏輯代碼混排,維護起來非常不方便。之所以保留這種模式是因為簡單,非常適合做小東西。
Web Forms是從前到后的開發模式。通常先以硬拷貝的方式定義UI,其中包含業務邏輯的成分,也就是所謂的“前”。這樣的UI經用戶認可后,再交給開發團隊進行代碼開發,就是所謂的“后”。界面與后臺代碼是緊耦合的關系,修改起來不太方便,適合做簡單的Web應用程序。這種開發模式屬于形象思維方式,它的好處是所見即所得,但開發速度相對較慢。
MVC是從后向前的開發模式。首先定義程序功能,解決要做什么的問題,并在Controller中實現,要做幾件事就寫幾個Action,這是MVC的“后”。然后可以通過ViewEngine等自動生成技術(也可以借助母版頁等方式)快速得到UI,也就是MVC的“前”。這種模式屬于抽象思維,支持敏捷開發,所以開發速度相對快得多,適合做大型Web應用。
3 按崗位劃分的技術生態系統
3.1 前端工程師
在移動互聯環境的Application中,UI已經不僅是美工或稱視覺設計的工作層面,前端工程師崗位已經越來越明確地被細分出來。這一崗位的基本技術包括HTML5、CSS3和jQuery,在高級階段還要求熟練掌握JavaScript,能夠編寫原生的js應用。在一些類似BI(Business Intelligence)的復雜大型項目中,還可能把前端細分成前端布局(HTML5+CSS3)和前端交互(JavaScript)兩類崗位。同時,前端通常還要求熟悉MVVM模式。
3.2 dot NET工程師
這是一個比較傳統的崗位,要求熟悉ASP.NET MVC 5技術架構,在熟練掌握C#語言的同時,精通dot NET Framework 4.5,包括I/O、網絡、異步、線程、并發、安全、LINQ、XML、JSON等內容,還需熟悉Entity Framework 6。在高級階段,要能夠熟練進行Microsoft Office Sharepoint Server基礎開發,同時熟悉掌握各類相關開源框架,越多越好。
3.3 移動開發工程師
這一崗位的要求主要針對原生移動應用開發,包括Windows Phone、Windows 8開發,還有標準Android開發和標準iPhone開發。同時還要具備類似微信標準開發、數據庫支持開發等方向的標準技能。如果可能,最好掌握一些云技術運用。
4 不遠的未來
微軟“三屏一云”的戰略描繪道:手機、平板、PC,甚至還有Xbox運行著內核一致、界面一致的系統。Windows強調跨設備一致性的思想可見一斑。
微軟越過Windows 9,直接把Windows 10帶到用戶面前。在微軟的宣傳中,Windows 10并不是Windows 8.1的一個增量更新,而是一場質的變化。微軟正在努力打造一個平臺,一個從小型嵌入式物聯網,到平板、手機、PC,甚至最終涵蓋Xbox的生態系統。也就是說,Windows 10將覆蓋所有尺寸和品類的Windows設備,從微型計算機(類似英特爾伽利略,適用于物聯網設備)、手機、平板(ARM和x86芯片)、二合一設備、桌面電腦及服務器,這些設備共享一個應用商店。如果是這樣,那么開發者開發應用(Universal Windows Apps)時將會非常容易地進行跨平臺遷移,用戶在不同設備切換后也能保證一致的體驗。
2014年11月13日的一則新聞標題又一次讓眾人目光聚集微軟——dot NET架構開源了。一直為業內人士稱道的集成開發環境Visual Studio要正式支持Android和iOS。納德拉說過的“移動為先,云為先”和“找到微軟最初的本質”終于要兌現了,微軟開始為Android和iOS陣營的開發者提供服務,Visual Studio 2015將支持使用C#、C++和HTML/JavaScript編寫Windows、iOS、Android甚至其他平臺的應用。
這一切很可能意味著,C#程序員的技術生態系統又將發生一次不小的變革。
參考文獻
[1] 淺談MVP架構及開發模式.