朱立
摘 要:移动互联网时代,虽然在移动终端市场还看不到微软多少份额,但微软的技术圈子里却一点也不安静,各种新技术、新模式、新应用纷至沓来,让人一时眼花缭乱。该文从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架构及开发模式.