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

点击:15542[回复顶层] [树状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 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
 

在线用户
访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客
当前栏目在线用户数 28, 总在线用户数 29