上午第一个Session:突出重围,使用软件工厂和MSF成功打造优质的企业应用。因为昨天听的一个关于“微软软件工厂”的讲座,所以来听这个Session也是为了加深对“微软软件工厂”的认识的,来了一个才知道这个Session更多讲的是MSF。MSF是微软提出的一个软件开发方法学,我是第一次听说MSF,通过这个Session我感觉MSF是敏捷开发与CMMI的一个结合体。由于采用“微软软件工厂”以后系统就分为核心模块开发和外围Features的开发。采用MSF以后核心模块做不断的持续集成,而外围Features则在核心平台的每一个版本出来以后再做周期性集成。针对目前很多国内项目人数比较少的现状,他提出了进行角色合并的方式来组成一个小团队,比如测试人员和产品经理可以合并,但是开发人员就不能和测试人员合并。
国内软件企业面临的问题:
(1)、整体软件业在快速增长,但主要在外包领域
(2)、受到国外ISV强烈挑战,没有掌握标准和话语权。大部分是在做系统集成工作。
(3)、平台产品难以外化,成功外化的盗版横行。自己的平台自己用,一旦开放就会被盗版。比如WPS就无法维持金山的生存。
(4)、不重视规避法律问题。很多商业项目中大量使用GPL协议的开源产品。
(5)、项目管理和开发流程不规范,失败率高盈利率低
(6)、时间紧任务急,客户需求多变
(7)、人员素质参差不齐,缺乏优秀团队模型和技术交流
(8)、没有驾驭优质企业应用的经验,上线后问题众多。比如奥运订票网站的当级就是一个最生动的例子。
通过这个Session,我也终于纠正了我昨天的一个错误“微软软件工厂就是代码生成”,现在我的认识是“微软软件工厂就是基于某些方法论和架构的代码生成”,并且生成的代码也是无法用其他手法消除掉的boring代码。
上午第二个Session:SilverLight开发的极速体验。讲师是微软的美女郭晓颖(偶也系广大色狼中的一份子),讲座风格很有女孩子的特点,不知道是不是她做讲座的经验不多,感觉语气过于平淡,有点令人boring。SilverLight非常容易开发、调试和部署,可以很容易的自定义控件,并且可以很容易与服务器交互,比如在SilverLight中只要调用被标记为WebMethod的方法就可以很容易的与服务器交互;还可以在SilverLight中调用脚本或者Dom。
讲座结束以后我提问了我最关心的两个问题:是否可以把自定义的ActiveX控件加入SilverLight(应用场景就是用SilverLight做网银客户端);SilverLight是否可以操作本地硬件(应用场景就是用SilverLight做银行柜员终端显示技术)。这两个问题得到的回答都是“NO”,很失望,看来SilverLight是不能用来做银行相关的这些东西了,也许微软只是把它定位为一个多媒体的东西吧。
下午第一个Session:SilverLight1.1CLR内核架构。讲师是andrew pardoe和美女郭晓颖。这也是我唯一听的一个英文课程。可能考虑到了在场的大部分是国人,所以andrew的英文发音挺标准、听起来不算费劲,而且他还不时的蹦出几个中国字“你好,我是from。。。来的,不是牛”,呵呵。他主要讲了SilverLight的底层CoreCLR的实现内幕,不熟悉的读者可以把CoreCLR想像成运行SilverLight的虚拟机。CoreCLR和代码实用的是和CLR一样的代码,所以GC(垃圾收集)、JIT(实时编译,呵呵,从JavaHotSpot中学去的技术)都依然是存在的。不过为了减少无用的功能以减小CoreCLR的尺寸以及为了使用沙箱机制来保证应用的安全性,因此移除了正则表达式的编译、本地代码调用等功能,并且对于文件系统的访问也进行了受限处理(这让我想起了J2ME以及Applet)。由于CoreCLR就是SilverLight的虚拟机,所以客户端机器无需安装.Net Framework也能Run SilverLight的应用,这也就是为什么MACOS中也能Run SilverLight了,所以如果有耐心,我们也可以让SilverLight Run在Unix以及其他操作系统下。目前SilverLight即将支持Linux,不过SilverLight是只能运行在SUSE下的,不能运行在其他的Linux下,看来这也是和Novell合作的结果,刚才查了一下SUSE下是使用MONO实现的CoreCLR。
这个Session中让我感到的一个亮点是我们可以用Python(IronPython)以及Ruby(IronRuby)来写SilverLight(任何能生成CLR的语言都可以用来写SilverLight),也就是完全可以在运行时动态运行SilverLight。andrew用的演示Demo就是IronPython写的一个在线Python命令行界面,在这个界面中敲入Python指令就可以使得SilverLight中的图形发生变化,真的是太棒了。
讲座完了以后我同样问了andrew一个问题:从Tech-Ed的一开始到现在,我们看到的都是用SilverLight写游戏、写媒体播放器,那么我们是否可以用SilverLight来写企业级应用。也许是andrew只是做CoreCLR底层技术的,所以对这种商业性的问题也并不是很清楚,所以他的回答是:微软是一家大公司,而且我们有很多的合作ISV,所以没有做不到的事情,他还说百度不是用SilverLight做出来企业级应用吗(我注:貌似百度的那个视频播放频道不是我指的那种企业级应用)?他的回答比较失望,再次验证了我的结论:SilverLight只是用来做Game、Player等多媒体应用的东西,微软没有打算让我们用它来做企业级应用的表现层。
下午第二个Session:SoftGrid应用程序虚拟化。这个专题也是我最期待的。本以为SoftGrid是开幕式上鲍尔默演示的那个虚拟Office,听了以后才明白鲍尔默演示的是升级版的Windows Terminal,只是进行了输入输出的重定向。而SoftGrid则是另外一种程序的部署方式。程序以文件的形式保存在SoftGrid服务器中,当用户要运行程序的时候,只需要下载程序运行所需的最小组件集合(dll等),然后就可以运行了。程序是运行在客户机的SoftGrid提供的一个虚拟环境中,这个虚拟环境模拟了COM、注册表、字体等关键位置的调用,这样应用程序所做的任何修改都只会影响到这个虚拟环境,不过对客户机产生任何修改,这样就可以轻松运行相冲突的软件了(比如Office2003是不能和Office97同时安装的,但是通过使用SoftGrid,我们就可以在一台机器中同时运行他们)。由于SoftGridClient只是模拟了COM、注册表、字体等,并不像VMWare、VPC那样完全模拟以计算机,所以其运行效率非常高。由于它不像Windows Terminal那样是运行在远程终端服务器中的,所以可以减小服务器的压力、提高客户端的响应,而且不像Windows Terminal那样受服务器版本的限制大,同时当服务器Down掉或者处于脱机环境中的时候程序仍然可以运行(再次提醒,程序是Run在客户端的,而不是运行在服务器端的)。讲师给出的一个性能数据是:一台服务器上可以Run 1000个客户端。
SoftGrid不是Windows Terminal的终结者,它和Windows Terminal之间是一个互补的解决方案,在某些应用场景下可以发挥各自的优势来实现组合应用。
不过SoftGrid进行组件的依赖性判断不可能是完全准确的(比如有可能是动态的组件调用或者运行的程序是Java程序),所以如果第一次不是100%下载,那么运行时有可能出错,而如果第一次是100%下载,则就会大大减慢程序的部署速度。不过SoftGrid只是微软的一个刚刚起步的技术,希望它未来的发展不会让我们失望。也许银行的图形前端技术也能用它来实现呢!
下午第三个Session:通过微软Office Communications Server2007召开企业级的音频视频和在线会议。这是今年Tech-Ed的最后一节课,大部分人已经提前离开九华山庄了,所以参加课程的人非常少,主讲用非常幽默的方式把大家全部集中到了会议室的前边。由于是第一次接触OCS(因为错过了前边了解OCS的Session,所以我把握住了最后这个机会来了解它)。由于听课的人中有相当大一部分(听课的一共才二三十个人,呵呵)不了解OCS,所以主讲首先介绍了OCS,正好满足了我的愿望。OCS是一个非常优秀的企业级的办公系统,可以非常方便的使得员工能够通过语音、邮件、视频等各种方式进行交流,而且可以借助于会议预定、预约等功能轻松的进行时间管理。这个Session主要讲的就是使用OCS来组建公司内网视频会议系统,优点多多,无奈我是门外汉,只是概念上有了了解,这里就不献丑了。最后的一节课我回答对了问题,得到了我的唯一一个奖品:《Exchange Server2007安装部署指南》,正好送给我们公司做信息管理的同事:)。
三天的Tech-Ed就此结束,离开的时候还有点恋恋不舍。我这三天的“报道”也到此结束了,当然我对Tech-Ed的学习还没有到此结束,不仅因为很多我感兴趣的Session由于与我选的其他Session时间冲突造成没法去学习,而且也因为这三天我接触了很多好东西,需要进一步了解,这样我就需要对照着那三大本讲义继续研究微软产品好的一些东西。以后我也很可能会把我学习的经验教训继续与大家分享,不过这可不是我的promise呀,我尽力吧!好啦,午夜了,也该休息了,这三天睡眠明显不足(听课也比工作更累人,今天早晨都用咖啡来提神了),正好好好利用周六补个觉喽,明天睡到太阳下山,哈哈,晚安!