Microsoft Office以及Windows应该是微软的两个最大的盈利产品,所以它们的一举一动,最能牵扯广大最终用户的心。
Office System 2003的推出,让我们感受到其受为一个System的强大协作功能,但相信很多用户,对于Office 2003之外的InfoPath、OneNet等组件还不太了解。我在这儿想先讲讲啥是InfoPath。开心很难使用官方语言去为一个产品下定义,所以还是想到哪说到哪吧。
在几个PoC里面,简单的应用了InfoPath。最简单的,如果你开发了一个Web Service,在你不愿意为其编写ASP.NET的UI的时候,使用InfoPath是最佳选择,其操作就那么几步:
选择一个Web Service作为提交数据的数据源;
将数据列表中的Schema拖到表单设计器上;
再加一个Button按钮,就可以提交了,如果想美化一下,还有多种配色方案可供选择。
一切大功告成,就这么简单。做为一个表单设计工具来讲,InfoPath简单超强!!!有了它,你公司的部门秘书MM甚至不用学习任何编程,就可以做出一个像模像样的报销表单或者会议记录表单出来,供大家填写,甚至直接入库。所需要的就是拖拉而已。当然,再花哨一些的,就需要使用JavaScript编程了。
对于我来说,InfoPath让我感觉最不爽的有两点:
不支持.NET 语言编程,作为一个.NET时代出生的产品,不支持这.NET简单太不可思议了,竟然还使用老套的JS以及老大的VBS;
做出来的表单不能发布到Web上,再往前一步,如果像FrontPage一样,直接就设计出来生成ASP.NET网页,那不是超爽?那样,我们为什么还使用VS.NET来设计ASP.NET表单呢?
第一条不爽,估计下一版本就会有所改善。第二条不爽,估计不会有所改善了,至少MS官方不会提供类似的产品,因为这是Business,是By Design。
但官方不会,非官方就不会了吗?类似于.NET的跨平台,虽然MS没有提供官方实现,但Mono实现了呀。InfoPath也是同样的,有非官方提供的InfoView(http://infoview.uniqueworld.net/)。
可惜呀可惜,这个InfoView不像Mono那么慷慨,它不是免费的,其价格竟然是$12,000,而且还竟然是per CPU的。
世上无难事,只要肯登攀,老外能赚这钱,我们有五千年文明的老中们就不能赚这笔钱了吗?下载InfoPath的SDK,翻翻里面的内容,嘿嘿,还真有咱们需要的,那就是Downlevel工具,这是一个以三种外貌出现的工具,分别是cmd形式,JS形式以及xls形式。它可以将您的InfoPath表单给降格成HTML,为什么说是降格呢?因为在生成HTML后,所有的文本框都不再能填写呢,看来此路不通呀。
我们再来分析一下InfoPath的文件内容吧,InfoPath表单设计完后,其后缀名是一个XSN文件,其实如果你再深究一步,这是一个cab文件,你可以从InfoPath的文件菜单中选择“提取表单文件”将里面的文件全部提取出来,里面会有一个XML以及一个XSL(根据你定义的视图而定),XML是数据Schema,而XSL则是表现,主要是配色方案。此XSL其实也是Downlevel的,但如果转换一下思路,再用另外一个XSL,将里面的<span>转换为<asp:TextBox>也不是很难吧?再从js文件里面读取出来相应的验证,做一个InfoServer,相信几个人用半年时间也可以开发出来了。到时候,大把的钱不是到手了吗?