【新作】Office 2003 信息检索服务———热门新闻检索

前几天看到开心就好做的博客堂的随笔检索服务,觉得不错,于是自己动手做了一个更实用的热门新闻检索服务,为即将于明天发布的 Microsoft Office System 2003 中文版增光添彩。服务入口地址:http://ptv.sometips.com/news/news.asmx

信息检索服务概述

使用信息检索服务,Microsoft Office 2003 用户可直接在所使用的应用程序中进行信息检索,并利用检索结果创建和编辑文档。信息检索服务的调用方式包括:信息检索任务窗格,“工具”菜单,或者按住 Alt 并单击要检索的某个字词或短语。

安装 Office 2003 后,在 Internet Explorer 也能使用信息检索服务。

热门新闻检索服务

这是一个中文热门新闻的检索 Web 服务,提供了最近 5 日的各种新闻检索服务,并可以将检索服务返回的结果信息直接插入到文档或复制到剪贴板中。

热门新闻检索服务支持图像显示,为保证检索速度,返回的结果中只包括新闻的部分信息。

使用方式

  1. 从任何 Office 应用程序内,单击“工具”菜单上的 信息检索 ,打开“信息检索”任务窗格。
  2. 单击 信息检索选项 链接。
  3. 单击 添加服务。
  4. 将热门新闻检索服务URL (http://ptv.sometips.com/news/news.asmx)粘贴到“地址”框中并单击 添加。
  5. 按照屏幕提示操作即可。

其它

热门新闻检索服务提供多关键字检索,关键字之间用空格分开即可。

如果想开发自己的 Office 信息检索(Office Research)服务,去下载 Microsoft Office Research SDK ,参照其中的例程和文档。

效果截图

  

值得一看的 MSDN TV

MSDN Home感谢 kaneboy  提供的这个 Microsoft PDC 2003 的下载连接,Microsoft 网站上发布了 400 多个视频或音频片断,内容涉及 PDC 2003 上披露的一些新技术的相关信息、PDC 2003 实况以及一些采访,MSDN News 的两位主持人也同时出动了。

虽然只看了其中的几个,但觉得这个MSDN TV: Lap Around Longhorn 这个非常好,这个是由两位大名鼎鼎的重量级人物 Chris Anderson 和 Don Box “主演”的,在这个 TV 片断中,他们通过编写实际代码,提示了 Longhorn 中的一些新技术,如 Win FS、Indigo、Avalon 等,你可以在这个片断中看到他们对技术的激情、高超而快速的代码编写和演示技巧、同事间的合作无间等,注意到一个细节,Anderson 用的编辑器是 Emacs 吐舌笑脸

今年的 PDC 很不一样,大量相关信息通过 MSDNBlog 等渠道披露了出来,体现了 Microsoft 开放、共享、关注普通技术人员的作风,也足以弥补我们未能亲临现场的遗憾。

如何开发一个开发工具?

曾经完成过一个较为复杂的开发工具的项目,把一些体会写出来,供大家共享。这个开发工具主要用于银行前端,也就是我们在银行的柜台上看到柜员操作的系统。

开发工具的主要功能就是让系统开发人员能够按照银行交易的要求,在前端设计和开发银行交易、菜单定义、屏幕输入/输出界面,数据上下传格式(封包格式,这是同后台主机系统通讯必需的),设备输入/输出定义(包括磁条读写器、密码键盘、针式打印机、存折打印机等)、快捷键定义、系统参数设置等,此开发工具运行的效果图如下:


可以看出来,象 Visual Basic 这样的开发工具,如果不包括运行调试部分,大概包括以下部分:

1. 工程资源管理器
按照项目,分类别对一个项目内的所有资源(包括窗体、模块、类模块等)进行增/删/改,如果与 SourceSafe 集成,还可以Check IN/Check out 资源
  
2.窗体设计器与菜单编辑器 
用来设计窗口及其属性,其所包含的控件和控件的属性,以及窗体上的菜单及其事件 
打开 .frm 的窗体源文件就可以看到,VB的窗口被保存成具有层次的格式文件,有点象XML 文件

3.代码编辑器 
一个具有智能提示和语法着色的代码编写器

4.菜单及各种工具栏 
用来符助用户完成系统设置,资源管理、窗体的编辑、代码的编写/调试工作

5.其它 
如帮助,对象浏览器,外接程序等…


按照以上的需求分类,分部分列出我们的实现方法:

1.工程资源管理器 
   
这个好办,只要定义好你的开发工具要使用的资源种类,然后用一个 TreeView 就可以解决问题了 笑脸
关于版本管理,可以有两种实现办法: 
1) 如果你将资源保存在 Database(如 Sql Server) 或文件系统中,可以通过保存资源的多个版本和版本号(可能参照SourceSafe的实现),用户修改之前必须 Check in/Check Out,这种做法要求你自己实现”用户管理”(用户增删改/权限设置/登录/退出系统等)这个部分. 

2) 另外一种办法是利用 Visual SourceSafe , SourceSafe 提供了一套丰富的接口可以调用,你可以将你的所有资源保存在 Sourcesafe 中,让 SourceSafe 来替你进行版本管理,注意,这里是把 SourceSafe 直接集成在你的程序中,而不是单独打开 SourceSafe ,Check out 文件后再由你的工具进行修改。使用 SourceSafe ,你将省去用户管理这部分工作,SourceSafe 自己带这部分功能。 

建议,如果你的开发工具要实现多人协同开发的目的,则最好使用 DataBase (和你的开发工具是C/S架构) ,或者 SourceSafe (大家都用一个 SourceSafe Database),这样有利于资源的版本一致性和管理的简便性。

2.窗体设计器和菜单编辑器 

菜单编辑器比较简单,其实就是生成一个树而已,参照 VB 做一个对话框就可以了 笑脸
  
窗体设计器是个比较难的东西,不但要让用户所见即所得的设计窗口及各种控件(工具箱:Label、Text、Option、CheckBox、Select、Tabel、Frame、Line、Image、Shape等),这要设计窗体及控件的属性(类似于 VB 一样,要有一个属性编辑器) 

我相信如果有人让你做这样的一个东东,90% 都想到了用 C/C++ 去实现,本人 C/C++ 不熟,只好剑走偏锋,拿出最拿手的 DHTML 来实现它,以下是具体步骤: 

1) 利用 DHTML Edit Control 

这个相当于一个窗体的 Container ,然后你可以用程序往里面塞各种各样的 HTML Code,显示出来的就是象 VB 的窗体编辑器那样的一个一个的 Control 。 
注意,DHTML Edit Control必须设为浏览状态,这样才能捕获 Mouse 拖动/放大缩小等事件(DisplayChanged事件),才能自定义右键的快捷菜单,正因为此,所以不能使用 准的 IE 控件,使用它之后,就无法捕获事件. 
   
2) 控件的实现 

大家可以看到,VB 中的常用的控件,HTML 里都有:

 控件中采用的一些关键技术: 
 a) 合理设置 ContentEditable 属性 
 b) Behavior 技术 
 c) HTML Control等 

 注:以上的一些 DHTML 特性只有在 IE 5.5 以上版本才支持,所以一定要将 IE 升级到 5.5 以上版本。 

3)窗体的保存 

即然是 HTML ,就可以直接保存 HTML SourceCode 就可以,但我们的窗体解释器并不是一个浏览器,所以我们要转成格式化的,可以识别的格式,使用 IE 的 DOM 模型,取出放在上面的所有控件,保存成 XML 文件. 

如果用户要修改已保存的窗体,则是上面一个过程的逆向,利用 XSL 把 XML 转成 HTML ,或者用程序解释 XML ,Render 成 HTML 

4)属性的设置 

每个控件有不同的属性,这个属性有些是和 HTML 相同的,有些是不同的,如果我要定义一个 Button ,要求它带有一个特殊的属性 Tag ,则在生成此控件时,要这样做: 
doc.body.insertAdjacentHTML “BeforeEnd”, “<button>确定</button>”    
Tag 属性并不是 HTML Button 的标准属性,但你这样设置并不是错误的,利用 DOM 也能随便取出或设置 Tag 属性的值。 

此控件的所有属性取出来,列在一个可编辑 Grid 里,放在屏幕的右边,就实现了属性编辑器的功能,要注意两边的同步,如改变了控件的Width、Height 等属性后,在窗体编辑器中要反映出来,同样道理,当用 Mouse 把控件拖动,移动时也要更新属性列表中相关的值。要同步的值还有字体、颜色,风格(3D or flat)等。 
  
3 代码编辑器

本为是想自己写一个可以语法着色的代码编辑器,后来找到一个非常好用的控件:CodeMax ,这个控件可以根据语言设置的不同,自动将内容语法着色,绝佳的一个控件。

由于项目进度紧,我们没有实现一种自定义的编程语言,而是利用了标准的 C 语言作为我们的代码,用 CodeMax 这个控件,我们没有写一行代码,就实现了绝好的代码编辑器。

可以调用 VC6 的 CL.exe 来帮你完成代码的语法检查、编译工作,将 CL.EXE 的输出重定向到一个文件中,然后可以检查此文件来获得到语法检查、编译的信息,并可以利用行号来在开发工具中定位到程序中具体行,便于开发人员 Debug。

4.菜单及工具栏

这些东西比较好做,我们用的是 ActiveBar ,最好的工具栏控件,连资源管理器和属性编辑器的 Dock 功能都是它来实现的,功能很强大,开发 Windows 应用程序首选的工具栏控件。

5.帮助,对象浏览器,外接程序等…

帮助比较好做,HTML Help Workshop ,我们没有对象浏览器,也没有外接程序 笑脸

=============================================================================

以上只是对实现一个开发工具的开发端(不包括运行端)的技术要点做了一些说明,详细的实现过程就比较多了,那是系统详细设计的内容,不便公布 吐舌笑脸

另外,如何实现一种自定义的开发语言,是一个很有意思的话题,如果有时间,再和大家探讨,交流心得。

附:一些有用的资源

1. MSDN Library
DHTML Reference ,实现 DHTML Form Designer 的必备,在
http://msdn.microsoft.com 中有一个贺卡设计器 Card Designer ,就是用 DHTML 来实现的,和 Form Designer 的设计思想是一致的,值得参考

2. DHTML Edit Control 及其例程

3. ActiveBar 例程

XML 行业标准:以太网上的 TCP/IP

这两天去 BOC H.Q. 给全球金融市场部(这个名称够夸张吗 :P)提供技术支持,协助他们部署与实施一套新购进的金融衍生产品(互换、期权、利率合约等)的信息与交易系统,软件名称为 Summit ,这是一家法国公司的产品,在对此软件进行研究以及与此公司的技术专家交流的过程中,发现这个系统的一个主要部分是使用 CORBA 协议在前后台之间通讯,数据以 XML 格式为主,这可是一个比较经典的新老结合的架构呀 。而且在它提供的客户端 API 中,除了 CORBA IDL、Java、COM 等外,还提供了 SOAP 接口,让我对其刮目相看。

随后了解到,他们虽然使用 XML ,但却使用的是自定义的 Schema(XSD),现阶段国际上对于金融衍生产品的定义与数据交换已经有较成型的 XML 标准—–FpML:Finanica Product Markeup Language,当我询问此专家他们是否了解或采用此标准时, 他的回答是否定的。于是我用蹩脚的英语向他表达了这样一个观点:

Using XML standard for data exchange is just the first step , using the Industry XML standard is the second and more important step , because the nature and advantage of XML is it’s open features, but if every software vendor use their own schema in the system,it will do harm to or lost XML open features, if all the vendor use same XML schema in a specific industry field, the purpose of data exchange will be realy reached.

确实,在近一两年, XML 受到了越来越多的欢迎,在许多新开发的应用系统或程序中,都把 XML 作为数据交换的核心,但是一个被严重忽略的情况就是没有正视 XML 行业标准的运用,我曾经见过国内一家重量级保险公司提供的银保通的数据接口标准,完全是依据他们公司本身的产品和业务流程制作的,根本不具有普遍性,也无法在同行业其它公司或银行中具有适用性,这样的数据标准有什么用?和现阶段国内银行中间业务中普遍使用的 TXT 文件来传输数据的处理方式并无太大区别。

有了以太网,大家就在网络介质的电气标准上达到了统一,但要做到数据/信息包的传输与发送,则更进一步的 TCP/IP 协议一定不能少,XML 与 XML 行业标准的关系也是如此。

2003-2005 微软开发工具 路线图

微软的研发能力确实很强,眼光也很长远,早在 Visual Studio .NET 2002 发布时,就已经开始筹划下三个版本的开发计划,到现在为止, Visual Studio.NET 2003 (开发代号:Everett,我也是 Beta? 测试人员)已经正式发布,下一个版本 Whidbey 也已经快开始 Beta 测试了。

从路线图可以看出:

1、VBA 的前景不妙,可能将来会全部变成使于 .NET 的 Managed Code 来编写 Office 应用,当然了,我相信也会同现有 VBA 能很好地进行互操作的。

2、开发工具的路线图其实是和其它相关软件有关的,如 SQL Server 2000 的下一代?Yukon,Windows XP 的下一代 Longhorn 等,尤其是 Yukon 带来的存储技术的变化可能对将来的操作系统、开发工具和应用软件产生深远的影响。

3、在企业应用开发上提供增加特性,这也是同 WebSphere 的开发工具(WSAD,WSED),JBuilder 等展开进一步竞争。企业开发是指对应用开发全过程的支持,包括需求分析,建模,编码、单元/集成/性能测试、部署、协同开发、软件配置管理、测试管理等各个方面,例如 IBM 收购 Rational ,Borland 收购 TogetherSoft,都是这个目的。

详细参见:
http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx

WebDAV、SourceSafe 及其它

WebDAV : Web Distributed Authoring and Versioning 基于 Web 分布式内容创作与版本管理,关于此标准的详细信息是在 RFC 2518 中定义的。WebDAV 有很多好处,它允许成员在 Internet 上发布、共享文档,协同工作,它可以使用 SSL ,提供了高安全性,可以利用 Web Server 提供的各种验证方式(如 Basic、Digist Signature等),更重要的是,它使用传统的 HTTP 1.1 协议,可以容易地穿透大多数防火墙,从而易实现在各种网络环境下的文档共享。

WebDAV 扩展了HTTP/1.1通信协议,增加动词:PROPFIND, PROPPATCH, MOVE, DELETE, MKCOL, SEARCH等,它的内容全部采用XML格式,可以用XSLT进行格式化
特别适合Web应用程序的开发,如可以用它来访问 Hotmail ,访问 Exchange Server 的邮箱等。

WebDAV 的两个有用链接:

IIS 5.0 以上,Apache 的 mod_dav 都已提供了对 WebDAV 的支持。

这几天通过对 WebDAV 的研究,发现了很多有意思的东西:

1. 可以通过 Windows 2000/XP/2003 的 Network Place ,连接到 WebDAV 目录(也就是 Web Folder),通过系统内部的 WebDAV Redirector 来完成和资源浏览器类似的文件管理,在有的 Blog 上看到,有人竟然利用“Net Use * http://server/virtualdir” 来映射 WebDAV 目录,这让我很惊奇,我觉得在现有的 Windows XP/2003 上,好象还没有提供这样的功能。

在访问 Network Place 的时候,可以利用 HTTP Look 监测到,全是对 WebDAV 目录进行重定向的透明访问。

2. Office 2000/XP 可以直接编辑 WebDAV 目录中的文档,而且在编辑的时候对文档进行了锁定,从而避免了多个编辑同一文档时产生冲突。

微软已经在它的许多产品中使用了 WebDAV 技术,如:

  • Internet Explorer 5.0 以上
  • Office 2000/XP/2003
  • SharePoint Team Service
  • SharePoint Portal Server 2001
  • Windows Sharepoint Service (WSS)
  • Office SharePoint Portal Server 2003
  • Mobile Information Server 2001
  • Exchange 2000/2003 (OWA & OMA)
  • Biztalk 2000/2002/2004
  • Internet Information Server 5.0 以上等

其它也有许多厂商对 WebDAV 提供了很好的支持,如 IBM (DAV4J)、Macromedia 、Oracle 等

3. WebDAV 只能进行简单的版本管理,即 Lock/Unlock ,没有版本历史记录,将来的 DeltaV 标准会完善这方面的东西。

4. 有一个很好的工具,WebDrive可以将 WebDAV 目录映射为本地驱动器,这样可以更方便地使用户对 WebDAV 目录进行操作,例如编辑非 Office 类的文档。但带来的负面效应就是不象 Web Folder 那样能在编辑的时候自动锁定文档了,多人操作同一文档的时候会产生冲突。WebDrive 还可以将 FTP 和 FrontPage Server Extension 的服务器映射为本地驱动器,这个功能还是很有用的。

5. 即然 WebDAV? 的版本管理特性很弱,而 SourceSafe 又是大家最常用的源码管理工具,那将 SourceSafe 的数据库放在 WebDAV 目录上,让大家通过 Internet 来协同编码,是不是一个很 Cool 的想法?!

SourceSafe 只能打开本地驱动器或网络上映射的其它驱动器中的数据库,那如何让他打开 WebDAV 中的数据库呢? WebFolder 是不行的,那只有用 WebDrive 了

经过测试,SourceSafe 和 WebDrive 确实能集成起来,进行源代码的版本管理(Check In/Check Out/Show History etc.) ,但由于 SourceSafe 是一个 Event Base 的软件,它要同数据存储层(文件系统)实时交互以便工作,而 WebDrive 是使用 HTTP 1.1 这样的无状态协议同服务器同步的,另外,从文件系统的层次来看, SourceSafe 的数据库是许多目录和小文件构成的(我的一个 90 M 的数据库,有 3500 个文件),想象一下,用 HTTP 一个一个地把这些小文件 GET 下来,就花不少时间,所以 WebDrive + SourceSafe 效率较低,而且在多人操作同一个文件时,偶尔会产生一些小错误,如果把 WebDrive 的 Cache 设置为0 ,情况稍微好一些。

无论如何,SourceSafe + WebDrive 毕竟能通过 Internet/VPN 实现了基于 Web 的源代码管理,还是很不错的,对于一些参与人数较少(并发用户较少)的,需要在 Internet 上协同工作的小型项目来说,还是一个不错的选择。

6. 说到 SourceSafe ,感觉 Microsoft 好长时间没有对此产品升级了,在 Blog 上有人反映,说 SourceSafe 还是使用那么土的文件数据库,那么土的协议,那么土的图标等 ,据微软的 SourceSafe 开发组的人员透露,SourceSafe 的功能将在下一版的 Visual Studio.NET (开发代号:Whi )中得到较大的增强,但是人们期望的对 Internet/Web 的支持,好象并没有提多少。有个反馈者给微软提了一个非常好的建议:使用 SQL Server 来储数据,这样就变成了 Server-Base 的 SCM 工具了,使用 Web Service 接口操作,用 WS-Security 来保证安全性,听起来很诱人呀 ,详细情况可以参考 Korby Parnell’s BLog

7.即然现在 SourceSafe 功能不够强,也有第三方厂商提供了其它解决方案,例如:http://www.sourcegear.com/提供的sourceoffsite classic,功能好象还挺强。


整篇文章写的挺乱,有时间分两个题目:WebDAV 和基于 Internet 的分布式开发方法来好好组织一下思路。