Handle System在.net站点中的应用

用数字对象唯一标识符(Digital object Identifier)来标识网络中的数字对象,从而将表现形式和物理位置不同但本质相同(内容相同)的数字对象标识出来,以方便人们的利用。Handle System就是出现最早、应用最广的全球数字对象唯一标识符系统,它作为第一个完整的数字对象唯一标识符系统,对数字对象描述、管理、利用以及开放式数字信息环境的构建都产生了深远的影响。

  Handle System可以提供下列服务:(1)Handle注册服务;(2)解析服务;(3)管理服务;(4)缓存服务;(5)代理服务;(6)安全管理服务。要想全球都能使用Digital object Identifier,需要注册,如在本地使用则不用。

  本文详细讨论Handle System结构及其内容,目的就是通过了解其内容,从而可以创建Handle System所使用的表的记录,可以把Handle System放在.net站点之下,只利用它来提供解析服务。

第一步,安装Handle System

1.安装Java运行环境,由于Handle SystemJava开发的,所以需要Java运行环境。

2.安装Handle System,下载http://handle.net/download.html Handle System

a. 使用命令行进行安装,注意安装文件的路径和命令路径是否一致:

On Windows systems:  \hs\hsj-7.0\bin\hdl-setup-server.bat \hs\svr_1

b. 由于Handle System可以支持多种数据库系统,由于使用JDBC联接数据库,所以需要数据库对JDBC驱动,如mysql: mysql-connector-java-3.1.12-bin.jar,Sql Server: sqljdbc.jar,把他们放到Java的运行环境,~\Java\jre6\lib\ext文件夹下。

c. 配置Handle System的配置文件,在安装目录下有config.dct文件,联接不同的数据库需要在配置节"server config”下添加不同的联接字符串。

1>.联接Mysql时:

storage_type = "sql"

sql_settings = {

sql_type = "MySQL"

mysql_bin = "D:\\mysql5.0\\bin"

 sql_url ="jdbc:mysql://127.0.0.1:3307/HandlesTest"

sql_driver = "com.mysql.jdbc.Driver"

 sql_login = "root"

sql_passwd = "123456"

sql_read_only = "no"}

 

2>.联接Sql Server时:

storage_type = "sql"

sql_settings = {

sql_type = "SQLServer"

sql_url = "jdbc:sqlserver://127.0.0.1;DatabaseName=HandlesTest"

sql_driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

sql_login = "sa"

sql_passwd = "sa"

sql_read_only = "no"}

 

3. 启动Handle System,使用命令行进行启动,注意路径:

On Windows systems: \hs\hsj-7.0\bin\hdl-server.bat \hs\svr_1

第二步,分析Handle System的数据库表

Handle System的表有handlesnashandles为主要使用到的表,用来存handle的所有信息,其中handleidx字段为联合主键。

1.idx=1的记录,存了handle的跳转所用的信息。字段类型及内容如下表:

字段名称

类型

内容

[handle]

Varchar

如:10.3321/j.issn:1003-207X.2006.04.024

[idx]

int

1

[type]

bianry

一般为“url

[data]

bianry

是具体的url地址,用于跳转

[ttl_type]

int

0

[ttl]

int

0

[timestamp]

int

当前时间戳

[refs]

bianry

Null

[admin_read]

boolean

1

[admin_write]

boolean

1

[pub_read]

boolean

1

[pub_write]

boolean

0

 

2Idx=100,时,上表中只有typedata字段不同,其他字段都相同。type字段内容为“HS_ADMIN,data字段的内容如下:

(byte[] adminId,int adminIdIndex,bool addHandle,bool deleteHandle,bool addNA,

bool deleteNA,bool readValue,bool modifyValue,bool removeValue,bool addValue,

bool modifyAdmin,bool removeAdmin,bool addAdmin,bool listHandles)

adminId为管理员ID,不过是binary类型,adminIdIndex是一个索引值,其他的为管理员的权限,引用该类型时如下:

(System.Text.Encoding.UTF8.GetBytes("0.NA/10.1234"), 300,true, true, true, true, true, true,true, true, true, true, true, true)

 

了解以上内容基本就够用了,如果还想了解细节,可以查看Handle System源码的simple文件夹,有例子。

另:由于是在.net下使用,所以就把这部分java代码迁移为.net代码,由于篇幅所限,代码无法全部贴出,如有需要,可以提供。

posted @ 2011-01-13 09:15  老贾  阅读(1187)  评论(0编辑  收藏  举报