XC#、Smart Client
1、最近最轰动的新闻就是Microsoft和SUN的和解了,真让人感叹商场无常啊。不过也从一个侧面反应出Microsoft和SUN都意识到了现在Java和.NET都已经成长到谁也不可能消灭谁,在相当长的一段时间内,很可能是双方共同发展,所以,对双方最有利的做法就是维持这样的一个“两极世界”(就像冷战时期的美苏),并同时把其他冒出来的第三方力量打压下去。
当然也有Microsoft的员工不忘调侃一下McNealy,这里收录了过去McNealy对Microsoft的“经典”评价。
2、XC#
XC#是什么东东?和C#有什么联系?呵呵。XC#是基于C#的一个扩展编译器,做为VS.NET的一个Add-in,它会在C#编译器编译完成后,再用自己的编译器将自己定义的扩展符号(以Attribute形式体现)编译成标准的IL嵌入最终生成的Assembly。
XC#能完成的扩展有:混淆代码、分析并校验代码、前置条件和后置条件的支持(我认为最有价值的就是这一点)等。
比如我有一个这样的函数:
public UserInfo BuildUserInfo( String username, Int32 age)
为了保证两个参数合法,同时保证返回的UserInfo对象不为空,我们或者加上检测的代码:
if ( (username != null) && (username.Length > 0))…
或者使用断言:
Debug.Assert( username != null)…
但XC#可以让我们用更加“优雅”的语法来定义这个函数的前置和后置条件:
[ Requires(“username != null” ] // 前置条件
[ Ensures(“result != null” ] // 后置条件
public UserInfo BuildUserInfo( String username, Int32 age)
或者,更灵活的写法:
[reture : NotNull]
public UserInfo BuildUserInfo( [NotNull] String username, Int32 age)
是不是有点Design By Contract的味道?? XC#(最新版本是2.0,开始收费了,而前一个版本1.2是免费的。从我各自安装并查看其帮助文件上看,1.2和2.0几乎没有什么功能上的差别,但是在我试验1.2版本时,它对前至和后至条件的支持有些问题。
3、微软发布了Smart Client Architecture and Design Guide,这份指南着眼于WinForms Smart Client的架构设计。不过现在还并不完整,只包含了介绍、Offline设计和多线程设计三章。另外,LonghornBlogs上一篇The Road to Longhorn Goes Through Windows Forms也值得一读,文章解释了即使Longhorn WinFX是更好的程序架构体系,但是WinForms仍然是现阶段非常有价值的技术。
我现在只对WinForms在企业内部的分布式架构技术的选择有点头疼,因为微软推荐的ES/COM+实在不是我擅长的,但又不甘心用.Net Remoting这样的以后很可能支持度很低(MS已经表示.Net Remoting CANNOT talk with Indigo on-the-fly)的技术,WSE又担心效率不行…Indigo在完成后,会发布一个能运行在WinXP上的单独分离版本,还是挺期待的。