欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 629

点击:15175[回复顶层] [树状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 1 楼
文章id: 628
dp2图书馆集成系统2.0版本即将推出

作者: xietao


这里给大家拜个晚年。

今天我告诉大家一个好消息,dp2图书馆集成系统2.0版本即将推出。目前已进入测试阶段,公司同事正在对它进行测试验证。

许多朋友也许知道,dp2图书馆系统的第一个版本,这里可以称为1.0版本,是基于Microsoft .NET Framework 2.0版本的。当然,最早的时候,它曾经是基于.NET Framework 1.1版本开发出来的。

几年来,.NET Framework的版本不断升级,经过了3.0, 3.5, 现在是4.0。从细节来说,.NET Framework的3.0和3.5并不算是独立的版本,它们还是属于2.0的,只有4.0是一个独立的版本。由于专注于软件的功能性开发,我们的dp2图书馆集成系统产品,以及它所基于的数据库内核模块,都没有来得及进行.NET Framework版本方面的升级更新,而依然沿用.NET Framework的2.0版本。

今年是个好年份。作为开局,我们选择年初这个时段,为dp2图书馆系统进行了大规模的升级改造。我们主要进行了下面几个方面的工作:

1) 将产品升级到基于.NET Framework 4.0。其中公共查询(OPAC)模块对应的是ASP.NET 4.0了。

2) 对若干服务器模块的宿主方式进行了调整,将原来的数据库内核(rmsws)和图书馆应用服务器(dp2libraryws)两个服务器模块,从宿主于IIS改变为标准的Windows Service形式。原来与图书馆应用服务器合并在一起的公共查询(OPAC)模块,和图书馆应用服务器剥离,单独成为一个模块,宿主于IIS之内。原来的Z39.50服务器模块(dp2zserver)依旧为Windows Service形式。

这样,新的2.0版本,服务器端的模块就有:

dp2Kernel -- 数据库内核,取代以前的rmsws

dp2Library -- 图书馆应用服务器,取代以前的dp2libraryws

dp2OPAC -- 公共查询,新剥离出来的模块

dp2ZServer -- Z39.50服务器。

3) 为公共查询增加了书评、浏览、我的书架等新功能。这些功能本来在去年下半年就已经(在1.0版中)投入开发和测试,但没有来得及向用户推广;借这次新版本发布的东风,我们目前已决定把它们放在新版本中正式首次发布。

4) 为编目前端(dp2Catalog)增加了不少功能。dp2Catalog目前在数据加工领域的应用得到了进一步拓展,我们将持续努力,把它打造成一个功能极大丰富的编目环境。

 



发表时间: 2011-02-18 22:15:04



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 2 楼
文章id: 629
Windows Service和IIS内Application之比较

作者: xietao


Windows Service 和 IIS 内 Application 之比较

这次dp2图书馆集成系统升级到2.0版本,其中一个重大的改进就是把若干宿主于IIS的服务器模块改为Windows Service形式。

这里对两种模块形式进行技术上的比较。以阐明这次升级的必要性和重要性。

dp2图书馆集成系统的1.0版本,当时选择若干服务器模块宿主于IIS,作为IIS里面的Application来实现,是由于这些服务器模块都需要WebService的能力,而当时Micsrosoft的开发方式中,只有IIS里面的Application能实现携带WebService接口的服务器模块功能。也就是说,当时Microsoft强迫WebService的开发者使用宿主于IIS的方式。

这种方式的缺点很多,比较重要的有:

1) IIS假定WebApplication适合多重启动和并行。从IIS 6.0的重叠启动功能就可以看出这方面的一些端倪。这是基于一种假定,就是WebApplication并不是数据源,它只是实现一些页面发生的功能,多重启动不但不是有害的,而且还是有益的。如果按照这种思路,势必要为一个服务器模块先设计出独立的数据层,例如实现为Windows Service形式,然后再在WebApplication中构造为各种页面,实现界面和交互功能。

如果说为了开发一个Web界面,这种做法是可以接受的,但是类似rmsws这样的纯数据服务模块,根本没有什么Web界面的必要,非要它宿主在IIS下面,这就是有些莫名其妙了。在这种既有格局下,如果另行实现一个Windows Service模块,和WebApplication配合,两个模块一起实现功能也是可能,但是,这个Windows Service模块和WebApplication之间靠什么设施来通讯呢?用WebService? 可是当时分明只能是WebApplication才能用.asmx实现WebService接口嘛,这就陷入了一个怪圈:

如果按照上面模式编写一个Windows Service模块,并自行为这个模块配备了类似RPC之类的通讯设施,那就似乎没有再寻找一个外壳WebApplication来装配成WebService模块的必要了,这个Windows Service模块自己和前端通讯不就得了。

所以,当时的开发小组,被迫在WebApplication里面实现全部功能,成为一个希望单一启动的Instance,而IIS的重叠启动等等的本来为WebApplication而服务器的“好”机制,变成了这样的纯数据服务模块的烦恼。这样,应用经常会被不经意重新启动,软件产品在如何处理随时升、降的Instance方面耗费了不少开发力量,而这些本来是可以避免的。

在用户方面,也增加了一些管理上的成本和消耗。当然,也不是全无好处,可以说好处是锻炼了系统管理员,使他们从各个方面加倍熟悉了IIS的配置和管理。

2) IIS这个额外多出来的要求,限制了服务器模块的安装环境,使得可安装环境范围变得狭窄。也就是说,必须要预先安装有IIS的服务器,才能安装这些服务器模块。dp2图书馆集成系统不囿于“阳春白雪”的自我定位中,其实它也很希望在比较轻型、小型的环境中发挥它的长处,想大展拳脚,想全线通吃。这样,安装环境的限制就造成了不少的遗憾。

3) IIS为了网络安全考量,对里面WebApplication的执行权限进行了若干限制,这样造成安装过程复杂,例如需要为数据目录专门增添特定的Windows用户权限。这些都是额外的开销。

4) IIS只允许Web类的相关通讯协议,例如HTTP协议,限制了采用诸如namepipe之类协议的可能。但是,我们知道,其实很多将几个服务器模块安装在同一台机器的情况下,模块之间本可以采用namepipe之类的协议,运行速度可能更快一些。同时因为不使用HTTP协议,某种角度增强了安全性(namepipe只能在本机内起作用)。

5) 不管IIS理论上安全性如何,IIS的所谓安全性在人群中的口碑不是太好,常有人诟病它的安全性。dp2图书馆系统的服务器模块,特别是纯粹提供数据服务的模块,本来根本没有必要使用IIS,平白担上IIS的风险,这有些冤枉。

现在好了。自动Microsof发布WCF框架以来,WCF就提供了独立宿主这样一种可能,也就是说如果要实现WebService接口,没有必要非宿主在IIS之内。实际上,宿主于IIS已逐渐退位为一种另类的方式了。

作为服务器模块,通常是实现为Windows Service,这样,只要服务器启动,无论是否登录进入控制台桌面环境,服务器模块都是可用的。

对应于上面说的几点宿主于IIS的缺点,现在说说作为独立的Windows Service模块的好处:

1) 完全独立的Instance。一经启动,就长期稳定运行,不会无端重启。

2) 安装环境非常广泛,没有什么限制。因为服务器模块是自带HTTP协议的,即便是使用HTTP协议,也不必借助IIS。只要是.NET Framework 4.0能安装的环境,服务器模块都可以安装。

3) 通常Windows Service本来就是以最高权限运行的,不需要为其数据目录额外设定什么Windows用户权限,安装非常简便。

4) 除了HTTP协议,服务器模块也支持namepipe等协议,能比较灵活地利用环境优势。

5) 从安全性的角度,首先在没有必要使用HTTP协议的场合可以不使用它,另外,即便是使用HTTP协议,新的服务器模块由于只支持基本的WebService调用,没有IIS的各种后门和漏洞,安全性也得以提升(实际上是一种回归)。而类似OPAC模块这样必须宿主于IIS的模块,由于其下级(例如dp2library和dp2kernel)层次被有效隔离(例如分置到不同的服务器,被防火墙所保护),由于OPAC主要是对信息的读取访问,写入和修改较少,少量的写入和修改也是在完整的帐户权限体系约束下进行的,所以整体安全性是很高的。

这样就返归正途了。有时候,这类事情会让我们不得不感叹,来得早不如来得巧。利用WCF方式来实现服务器模块的WebService接口,也算是Microsoft首次实现WebService的.asmx方式以后的“第二版”。常有说法是,每个程序员都有2.0情结,一般来说,一个产品的2.0版本才能接近成熟的,每个程序员都渴望实现自己的第二版产品。

正巧,我们现在推出的就是2.0版。其客观的2.0地位,恰逢其时,是个好彩头,让我们祝福这个产品一路走好。

Windows Service模块形式,会更“不显山不露水”,深藏在后面,给系统提供坚实的服务基础。这也符合我们公司求真务实低调的价值取向和品味所在。



发表时间: 2011-02-18 22:53:55
最后修改时间: 2011-02-18 23:13:31



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 3 楼
文章id: 644
再增添新功能

作者: xietao


在dp2图书馆集成系统V2版本的测试、完善过程中,又增添了一些新功能,介绍如下:

1) 多实例支持

dp2Kernel和dp2Library两个模块现在均增添了多实例的能力。

以前的版本,每个模块只能在同一台机器上安装一个实例。也就是一个物理目录、一套协议绑定。

例如,dp2Kernel作为内核模块,不但是dp2Library模块的下级支撑模块,而且是dp2BBS(论坛系统)的下级支撑模块。如果在同一台机器上安装了dp2Library和dp2BBS模块,那么dp2BBS中的数据库名将不得不加上一个前缀字符串,以实现区别。在dp2Kernel维护管理的时候,系统管理员看到的就是图书馆系统和论坛系统的全部数据库,需要协调好两者的共存。这是原来的情形。多实例能力具备后,我们可以为dp2Kernel模块安装两个(或以上)的实例,这样每个实例里面的数据库都是独立的,互相不会干扰了。

再如,有的单位可能希望在同一台机器上安装多套dp2Library,实现多个分馆(下级馆)共享同一台机器硬件的效果。现在这种模式可以实现了。方法就是安装一套dp2Library的多个实例。每个实例相当于一个完全独立的运行环境。当然,dp2Kernel模块也需要对应安装多个实例。

还有,有的用户单位的系统管理员可能希望保持一个测试环境,进行二次开发和一些试验,希望这个环境和正式的工作环境分开。现在可以在同一台服务器上安装多个实例,互相之间就不会有任何干扰了。

2) 数字签名证书的灵活设置

dp2Kernel和dp2Library模块的HTTP协议绑定,由于采用了安全的WebService协议方式,模块安装的时候需要设置专用的数字签名证书。这个证书需要用户单位根据自己的服务器域名等特征自行创建,或者请公司技术人员代为创建。

为了降低这两个模块的安装过程中,创建和设置证书的操作难度,我们特意为这两个模块设计了一种不需要显式配置证书的缺省模式。并在前端模块实现了两种模式的自动识别和兼容。

不过,倘若用户单位需要直接针对这两个模块的WebService接口进行开发,那么就要求必须为这两个模块显式配置专用证书。

3) Z39.50服务器增加了服务于联合编目的专用WebService接口

这是一个为上载MARC书目记录服务的WebService接口。

~~~

注:dp2Kernel和dp2Library的多实例功能(从第二个实例开始)需要现有用户另行付费购买以后才能开通使用。



发表时间: 2011-05-10 21:30:30



页 1 / 1
 

在线用户
(无) 
当前栏目在线用户数 0, 总在线用户数 0