2009年即将过去,微软的.NET平台到底推出了那些新技术,而微软在这些方面又是如何权衡的,我们在这和大家一起回顾一下2009年的微软几大新开发技术,并揭秘这些技术背后的技术走势。
1.云计算技术的兴起
2009年年初,微软首先推出的就是云计算的两款重量级产品Windows Azure以及SQL Azure,这两款产品于2008年10月的PDC2008大会上首次展示之后,就得到了业内的广泛认同。
Azure服务平台(Azure Service Platform)是一个构建在微软数据中心内,提供云计算的一个应用程序平台,而Windows Azure操作系统则是这个平台中的基底服务,它允许开发人员能够在上面开发,管理以及挂载其在线服务应用程序,并且也提供了一组开发工具让开发人员得以在本机上开发与测试其云应用程序,同时所有的在线服务都是基于Windows Azure之上运行,如SQL Azure。
Windows Azure的应用程序挂载环境(hosting environment)称为Fabric Controller ,这是一种提供给个别系统的网络应用程序集区,它会自动管理资源、负载平衡、地域复制(geo-replication)(无需在意机器位置的高可用性复制法)以及应用程序的生命周期,且不需要被挂载的应用程序明确的提出这些需求。另外,它也提供了大部份应用程序所需要的东西,例如 Windows Azure 存储服务 (Storage Service),它提供了应用程序具有存储非结构数据如大型二进制对象(BLOB),队列(Queue)以及非关系性表格的存储体,应用程序也可以使用其他架设在Windows Azure服务平台中的其他在线服务。
Azure服务平台提供了部份内置的API,像是REST、HTTP与XML等标准以允许其服务与Windows Azure本身来沟通,而客户端受管理库(指ADO.NET Data Services或其他功能的库)也提供了与服务交互所需功能的封装,并且与Visual Studio集成,让开发人员得以使用其集成开发环境来开发与部署要挂载于Azure上的应用程序。
应用这一平台的好处就是,无论用户身在何处,使用何种设备进行网络应用,只要他可以访问到互联网,就可以完成日常的所有工作。当然这与侧重用户层面的网络桌面应用如Google Chrome OS不同,微软的云技术的重点在于提供可靠的服务。
Windows Azure是一种特别针对云计算的在线服务所开发的网络操作系统,运行在它的"fabric layer" – 一种存在于微软数据中心的丛集架构(cluster),自动管理丛集中的计算机计算与存储资源,并提供资源(前述的计算与存储资源的一部份)给运行在 Windows Azure 之上的服务应用程序。Windows Azure 通常被描述成在一定数量的Windows Server系统之上,其使用了Windows Server 2008以及特制版本的Hyper-V,即已知的Windows Azure Hypervisor以提供服务所需要的虚拟化技术。
此平台上包含五种服务:
Live Services:Windows Live的众多在线服务。
SQL Services:提供云的关系数据库服务。
.NET Services:提供在云中的各式应用程序服务器服务,例如交易以及工作流程等。
SharePoint Services:提供在线版本的SharePoint Server服务。
Dynamic CRM Services:提供在线版本的Microsoft Dynamics CRM服务。
同时这些服务均有软件开发包(SDK),包含客户端库、工具、示例应用程序等,以及与Visual Studio的紧密集成。
扩充性以及稳定是由 Windows Azure Fabric Controller 所控制,因此服务与环境不会因为在微软数据中心的其中一台服务器当机而停摆,同时它也提供用户的服务应用程序的存储器资源,以及负载平衡的管理工作。
Azure服务平台目前能够运行编译给CLR运行的.NET Framework应用程序,并直接支持ASP.NET应用程序框架以及配合的部署方法以部署其应用程序至云平台,同时配合FastCGI模块的支持,让Windows Azure也可以使用PHP应用程序以及其他CGI应用程序。而微软也发布了Java SDK for .NET Services以及Ruby SDK for .NET Services让Java及Ruby开发人员也可以与.NET Services集成在一起。
当然,在微软提供了优质服务的前提下,价格因素也是被广为关注的,目前Windows Azure的价格为
Compute = $0.12 / hour
Storage = $0.15 / GB stored / month
Storage transactions = $0.01 / 10K
Data transfers = $0.10 in / $0.15 out / GB – ($0.30 in / $0.45 out / GB in Asia)
而Sql Server Azure的价格为
Web Edition: Up to 1 GB relational database = $9.99 / month
Business Edition: Up to 10 GB relational database = $99.99 / month
Data transfers = $0.10 in / $0.15 out / GB – ($0.30 in / $0.45 out / GB in Asia)
和亚马逊的价格比起来,微软产品的价格还算相对厚道。相信随着国内网络质量的进一步提高,微软的服务将会运用于商业应用。
2009年即将过去,微软的.NET平台到底推出了那些新技术,而微软在这些方面又是如何权衡的,我们在这和大家一起回顾一下2009年的微软几大新开发技术,并揭秘这些技术背后的技术走势。
2.Web开发技术表示层的复兴
在这一年当中,微软又一次旧话重提,开始从新关注表示层技术,在ASP.NET 2.0市场占有率开始被PHP侵蚀的情况下,微软及时的推出了一款新的ASP.NET表示层技术,ASP.NET MVC技术。
WebForm技术在推出之后曾经一度受到广泛赞许,由于其具有快速开发,从Windows开发平滑过渡等诸多优势,很多首次接触Web开发的开发者都义无反顾的投向了这一技术的怀抱,但是随着网络应用日趋复杂,可定制部分不够灵活成为了这一技术的瓶颈,而更纯粹的开发技术,比如PHP,ASP反而逐渐回到人们的怀抱,且客户端的JavaScript越来越丰富,表示层方面的快捷已经不足以为开发者带来更高的敏捷特性,也不能让设计人员平滑的进入开发工作,于是微软推出了ASP.NET MVC。
ASP.NET MVC是在现有ASP.NET 3.5运行时的顶层提供一种新的模型-视图-控制器(MVC, Model-View-Controller)框架。这就允许开发人员利用MVC设计模式的优势创建自己的ASP.NET Web应用程序,它将内容显示(UI或者View)、业务逻辑和后台数据进行了清晰分离,可以说是MVC在ASP.NET中的实现。ASP.NET MVC的主要优点是:
不再有ViewState:传统的ASP.NET WebForm模式利用ViewState保存表单的状态信息,由于B/S程序本身的限制,ViewState存储数据需要在隐藏表单域里面放置很大一段字符串,这会大大增加页面的字节数,导致网页加载变慢。
简洁的HTML:最终生成的 HTML最终生成的 HTML代码完全由自己控制,不会生成任何垃圾代码。
更快的服务器端处理和客户端呈现:MVC只简单地处理模板,而无需构建复杂的控件树,因此,无论是在服务器处理的时间,和客户端的呈现速度都会有所提高。
多种视图只需一种模型:有时候一个页面要显示的数据是同一个,但表现形式有细微的差别,此时只需要修改视图部分,可以采用现有的控制器行为。
单元测试:Webform的测试是很困难的,使用MVC,可以将业务逻辑与页面分离开,可以不在ASP.NET进程中执行控制器,方便测试。
ASP.NET MVC不会代替传统的ASP.NET WebForm,但是会将其作为良好的补充者长期共存,另一项让微软大力宣传的技术就是富媒体表现技术SilverLight,这一技术是针对日益丰富的富媒体互联网表现需要而提供的,这次微软在很短的时间内把这个产品的由1.0版升级到3.0版本,在3D硬件加速,高清视频播放、本地数据缓存、离线安装与桌面应用等方面做了大量扩展。
(1)Video/Audio
Silverlight除VC-1外还支持H.264视频格式。这是YouTube等使用的新兴业界标准格式,并在很多设备上有硬解码。Silverlight也支持AAC音频。二者都以MP4容器格式实现(如.MP4或.M4A格式文件)。
另外还支持F4v, Adobe的高清格式. 可惜的是在3.0这个版本中Silverlight还不支持Camera. 听说下一个版本会加入, 大家还需等待一年.
(2)GPU Acceleration
这是Silverlight 3运行时中opt-in的特性,in-browser和out-of-browser都可以。在HTML中的Silverlight tag中,添加一个EnableGPUAcceleration=true参数来启用GPU加速。
(3)3D Support
Silverlight 3带有透视3D,对于一个父元素,你使用一个Projection attached property,如:
Border.Projection
PlaneProjection x:Name=p3 RotationY=-30 /
/Border.Projection
这个perspective 3D也只是将平面对象转换成立体的对象, 而非真正的3D渲染引擎. 而Silverlight中还没出现Flash中的pv3d一类的3D engines.
Animation Easing新加入了很多easing的function, 和Flash里的Tween类似.
(4)Custom Dialogs
Silvelright 3现在支持SaveFileDialog。出于安全原因,我们不返回路径给开发者,相反,你可以从结果中打开文件:
mySaveFileDialog.Show();
if (mySaveFileDialog == true)
return mySaveFileDialog.OpenFile();
关于上传下载FlashPlayer10有一些新的更新. 另外笔者觉得如果禁止修改的, 打开文件也可以加上.
(5)Effects
Silverlight 3中引入的Effects提供低级手段来影响视觉效果。我们内置提供阴影和模糊两个效果,你也可以创建自己的效果。自定义效果以HLSL Shaders来实现用DirectX SDK工具编译成byte code供Silverlight 3使用。Shaders允许开发者在UI元素渲染前修改每个像素。
如果Silverlight也支持bitmapdata的话, 那么Effects的加入会对它的绘图功能提高很多.
(6)Pixel和Media APIs
你现在可以从位图中读/写像素。这个功能有两种使用方式:in-memory位图或保存visual到位图。同时支持的还有raw audio/video API实现动态声音生成,自定义视频codec,或者alpha video channels。
in-memory位图或保存visual到位图, 这个就是微软学习FlashPlayer的bitmap的方式加入的新功能, 效率问题还没有测试.
另外动态声音生成在新版本的FlashPlayer 10 也加入了.
(7)Local Messaging
在多个Silverlight插件间传递消息曾是个挑战。现在我们支持类似命名管道的消息,不但垮同一网页上的对象,甚至跨多浏览器的多个Silverlight实例。例如一个Chrome实例中的Silverlight和Firefox中的另一个实例通信。
Flash中用localConnection来实现, 另外Flash中的localConnection还有垃圾收集的特别功效, 这点微软好像没有加入哟 :).
(8)Out of Browser
通过一个manifest对每个应用程序启用(标准Silverlight 3模板中就有这个段落,你只要uncomment它)。一个用户可以右击Silverlight内容,或者点击应用里的一个按钮来启动Silverlight out-of-browser应用。
这个功能很不错, 可以让用户将web应用部署到本地, 增加用户对当前web应用的依赖. 不知道Adobe会不会加上, 其实就是在它的swf文件和AIR文件中做一下关联, 在发布的时候同时发布两个文件, 然后用户可以将这两个文件同时部署到Server side上. 就类似Flex中的view source功能一样.
(9)Tooling
Silverlight 3工具会包含新的压缩算法,XAP文件的大小会缩小10~30%。
Web表示层新技术的应用会成为短期内微软着重加强的部分,配合服务器方面的Micorosft WebsiteSpark火花计划。
继Microsoft DreamSpark(微软学生软件资源计划)和Microsoft BizSpark(微软创业企业扶植计划)之后,微软于24日正式发布Microsoft WebsiteSpark(微软网站火花计划),该计划旨在让网络开发人员及设计人员有三年的时间可以免费试用微软的开发工具以及服务器系统授权。除次之外还提供了现在培训以及2个专业性的支持事件。