我有可能是最近组内最闲的一个人,除了偶尔美国那边丢过来的小任务,我就剩大把的时间泡论坛,看博客和睡觉了。这期间C++0x,.net framework BCL及技术内幕,python,WinRT一通乱看,偶尔写写博客记录一下学习过程。除了逼自己忙碌一点和看过之后恍然大悟的舒畅之外,仔细想想还是感觉没有提高一点。 编程是一种学后不断代码实践,不断犯错的过程。学习之余写一些Demo小代码只是为了在技巧方面加深理解,更深层次语言和技术的理解还是在工程实践中(不是特别关注的话你Demo代码是不会太考虑健壮性,可维护性,效率等方面的问题的,而工程实践中一切的编程技法或者语言都是为这些问题服务的,可以说是工程实践推动了编程语言和技术的发展)。

      这周一吃午饭的时候头儿突然间问我是不是在研究metro,我说看WinRT文档的时候顺带着看了点,没有深入,然后就是可预见的然后。头儿交给我一个艰巨的任务:将组内原来一个网页版的应用复写成Metro风格,时间三周。我粗略算了一下:后台数据库是现成的,不用我写,后台逻辑好多接口都是现成的,我只负责界面写成Metro风格,并复写跟界面打交道的部分函数和接口而已,虽然Xaml不熟,ASP.net没用过,但三周应该可以完成,于是大大咧咧的就接了。当天下午就将工作机上VS2012Beta版卸掉,装上VS2012RC,动手写。Xaml这个东西原来只知道是干啥的,语法及语义是一点都不知道。结合着All-in-onecode上的示例代码尝试了一个小时才发现WinForm的开发经验用在Xaml上还是有点牵强。不过好在知道Xaml怎么用了。连着两天接连弄明白Style,Control Template等一些概念之后感觉前方就是康庄大道,一片通途(这两天也不知道怎么了,原来一周也没什么任务的美国那边天天弄些琐碎的事来耽误我三四个小时)。周四一早信心满满的要解决连接数据库,数据绑定到GridView上这一最难的一块。结果两行连接数据库接口代码敲进去,程序就抛异常,将.net4.5中System.Data引入Metro工程,sqlconnect试一下编译出错。试图查找示例代码怎么让Metro风格程序链接数据库,却怎么也找不到,霎那间诧异了:难道Metro不支持连接本地数据库?于是上MSDN论坛上发了一个提问题,怕中文关注的人少还用英语提问。发完后就开始搞GridView了,Xaml代码点儿了半天也没有找到定义Columns的属性。于是去Metro开发技术库里去找相关资料。看了几篇帖子之后直接崩溃了,Metro没有类似的概念,Metro每个数据行都算是一个Item,做为一个“块儿”直观的呈现给用户,这样显示是很酷,但这也就意味着倘若你要呈现一个8列的GriedView必须把它们都压缩成一个Item,这在办公及企业级应用中简直就是噩梦。崩溃之余去看了一下我的帖子,发现有人回了,意外的是一个台湾人回的,Metro还真不支持本地数据库链接。这也就意味着我只能使用Web service去间接访问数据库了。看来将办公应用写成Metro一开始就错了。回头跟头儿一说,他决定放弃这个有挑战性的任务了。也就是说项目宣告失败。

      其实仔细想想,Win8Metro风格程序和苹果安卓App一样都是为了移动应用,以娱乐为目的,一切数据放在云端,一切应用以移动网络为基石,不支持本地数据库也算是应该,其天生的基因就是为了愤怒的小鸟,Facebook等应用。而且一个新生事物诞生肯定不健全,想想.net 1.0吧。不过让人想不通的是,在VS2012beta版中的Win8模拟器,RC版中竟然移除了,这也就意味着要想开发Metro程序必须得装Win8。看来微软为了强推Win8真是不择手段了。

      有人说微软和苹果最大的区别在于,微软一直做加法,苹果一直做减法。微软推出一项技术或应用初期会完成部分重要功能,然后为了给用户和开发者提供便利一直补充细节;而苹果一项技术或者应用出来之后会随着用户的关注度减少部分功能,使使用者更加便利。所以跟着微软混你一直得不断学习,累得要死。从MFC,到WinForm到WPF到现在的Metro。这条学习链对一个初级开发者来说真的太长了。

posted on 2012-07-13 22:54  salomon  阅读(4268)  评论(13编辑  收藏  举报