本书是应日益重要的网络目录服务以及需要了解并运用Novell目录服务(NDS)的广大读者的需要而翻译的。本书在论述NDS的基本概念和基本框架的基础上,详细介绍了NDS高级编程和NDS系统底层接口,广泛讨论了利用各种流行的编程工具(如ActiveX、Delphi等)和API接口进行NDS开发。
本书内容丰富,条理清晰,深入浅出,实用性强。本书提供了大量示例代码,尤其适合于使用各种语言和接口进行NDS开发的程序员,对广大有兴趣了解和学习NDS的读者,
本书也是一本很好的教材和参考书。
译者序
作者简介
前言
序言
致谢
第一部分 NDS高级编程
第一章 为开发者介绍NDS
1. 1 目录与目录服务基础
1. 2 NDS:一个真正的目录服务
1. 2. 1 NDS与x. 500
1. 2. 2 NDS特性和优点
1. 3 Novell产品与NDS
1. 3. 1 Z. E. N. works
1. 3. 2 BorderManager
1. 3. 3 NDS for NT
1. 3. 4 GroupWise
1. 3. 5 Novell分布式打印服务
1. 4 Novell的合作者和顾客怎样在应用中使用NDS
1. 4. 1 0racle
1. 4. 2 C1emson大学
1. 4. 3 Novell的DeveloperNet计划
第二章 使用ActiveX控件的目录编程
2. 1 为什么使用网络目录
2. 1. 1 电话目录的简短历史
2. 1. 2 以服务器为中心的网络互联
2. 1. 3 以目录为中心的网络互联
2. 2 网络目录包括什么
2. 2. 1 网络目录术语基础
2. 2. 2 目录中经常使用的项
2. 3 NovellActivex控件包
2. 3. 1 NWSess:进程控件
2. 3. 2 NWDir:目录控件
2. 3. 3 NWBind:Bindery控件
2. 3. 4 NWIDir:Internet目录控件
2. 3. 5 NWSrvAdm:服务器管理控件
2. 3. 6 NWVolAdm:卷管理控件
2. 3. 7 NWPrtQAdm:打印队列管理控件
2. 3. 8 NWPrtSrvAdm:打印服务器管理控件
2. 3. 9 NWAppAdm:应用程序管理控件
2. 3. 10 NWCliSkt:客户Socket控件
2. 3. 11 NWSrvSkt:服务器Socket控件
2. 4 编程组件
2. 4. 1 利用Novell Activex控件
2. 4. 2 在Visual Basic中使用集合
2. 5 进程控件
2. 5. 1 NWSess:登录网络
2. 6 目录控件
2. 6. 1 NWDir:操纵网络目录子树
2. 6. 2 NWEntry:处理项对象
2. 7 卷管理控件
2. 7. 1 VWVo1Adm:管理NetWare卷
2. 7. 2 NWEntry:文件和目录项
2. 7. 3 NWTrustees:文件系统的受托人
2. 8 探索网络目录内容
2. 8. 1 一个较好的NDS浏览器程序
2. 8. 2 LDAP浏览器网页
2. 8. 3 捆绑浏览器网页
2. 9 从文件创建用户. 组和OUs
2. 9. 1 文件格式
2. 9. 2 创建用户项
2. 9. 3 添加组成员
2. 9. 4 添加原来并不存在的组织单元
2. 10 密码的验证和管理
2. 11 扩展User布局
2. 12 为应用程序增添NDS的易管理性
2. 13 未来的改进
第三章 使用Delphi的NDS编程
3. 1 使用Delphi的速成NDS编程:ActiveX控件
3. 1. 1 安装控件
3. 1. 2 NWDir. OCX:显示屏上的目录控件
3. 1. 3 通过NWDir访问目录
3. 2 Delphi与NetWare API
3. 2. 1 NetWare导入库
3. 2. 2 一个快速示例:WhoAmI程序的API风格
3. 2. 3 NDS上下文变量
3. 2. 4 使用NDS属性
3. 2. 5 Delphi中的一个密码工具
3. 2. 6 现在到哪了
第四章 使用JavaBeans的目录编程
4. 1 什么是JavaBean
4. 2 JavaBean的工具
4. 3 访问NetWare服务的Bean
4. 3. 1 可移植性
4. 3. 2 不可见的bean
4. 3. 3 Bean打包
4. 4 使用NovellBeans:基本概念
4. 4. 1 必需的JAR文件
4. 4. 2 导入Bean包
4. 4. 3 创建JavaBean实例
4. 4. 4 使用属性
4. 4. 5 使用集合属性
4. 4. 6 捕获Bean异常
4. 5 登录到一棵树
4. 5. 1 FullName语法
4. 5. 2 进程Bean的登录方法
4. 5. 3 注销方法
4. 6 目录Bean
4. 7 访问项
4. 7. 1 使用FullName和Entry属性
4. 7. 2 使用findEntry方法
4. 8 读取域值
4. 9 处理空值域
4. 10 读取多值域
4. 11 设置域值
4. 11. 1 删除域值
4. 11. 2 替换域值
4. 12 遍历目录树
4. 13 列举目录中的所有项
4. 14 获得项的布局说明
4. 15 在目录里添加项
4. 16 设置密码
4. 17 删除项
4. 18 获取布局信息
4. 18. 1 列举布局
4. 18. 2 域说明集合
4. 19 扩展布局信息
4. 20 在布局中添加域
4. 21 添加新的域类型
4. 22 增加新的布局
4. 22. 1 包含布局
4. 22. 2 可创建的布局和不可创建的布局
4. 22. 3 父布局
4. 22. 4 添加一个布局:一个例子
第五章 使用NDS ODBC Driver生成报表
5. 1 理解0DBC和NDS
5. 2 安装和配置Novell ODBC驱动器
5. 2. 1 安装0DBC驱动器
5. 2. 2 配置NDS数据源
5. 3 访问NDS信息
5. 3. 1 把NDS映射到关系型数据库表
5. 3. 2 理解SQL的基础
5. 3. 3 提取NDS数据
5. 4 应用Novell ODBC Driver for NDS
5. 4. 1 使用NDS ODBC驱动器建立报表
5. 4. 2 在Visual Basic中连接到NDS 0DBC驱动器
5. 4. 3 使用NDS ODBC驱动器的其他意见
第六章 脚本简化了网络编程
6. 1 通用组件系统
6. 2 Novell脚本编程
6. 2. 1 安装Novell脚本
6. 2. 2 使用NetBasic Shell
6. 2. 3 从Netscape FastTrack服务器使用NetBasic
6. 2. 4 NetBasic示例:用户信息管理器CGI脚本
6. 2. 5 从NetBasic 6移植到Novell脚本
6. 3 JavaScript for NetWare
6. 4 Perl 5 forNetWare
6. 4. 1 安装Perl
6. 4. 2 从NetWare系统控制台使用Perl
6. 4. 3 在Netscape FastTrack服务器上使用Perl
6. 4. 4 Perl和UCS
6. 4. 5 Perl示例
6. 5 NetPages
第二部分 NDS系统编程
第七章 NDS跨平台API
7. 1 示例代码描述
7. 2 准备开始
7. 2. 1 支撑平台
7. 2. 2 Unicode表和双字节支持
7. 2. 3 管理上下文
7. 2. 4 缓冲区管理
7. 2. 5 NDS命名概念
7. 3 建立一个蓝图
7. 3. 1 NDS框架结构
7. 3. 2 NDS框架API
7. 3. 3 为NDS书签对象建立蓝图
7. 4 使用目录
7. 4. 1 NDS访问函数
7. 4. 2 NDS访问控制
7. 5 利用目录服务加速对NDS的访问
7. 5. 1 NDS与目录服务
7. 5. 2 使用目录查询API
第八章 使用LDAPAPI
8. 1 NovellLDAP服务器设计和配置
8. 1. 1 LDAP ACL v11
8. 1. 2 LDAP使用明文密码
8. 1. 3 LDAP属性映射vII与LDAP类映射vII
8. 1. 4 LDAP后缀
8. 2 LDAP开发环境综述
8. 2. 1 API概述
8. 2. 2 初始化/认证/配置
8. 2. 3 异步例程
8. 3 协议操作
8. 3. 1 搜索
8. 3. 2 搜索过滤
8. 3. 3 目录
3. 3. 4 修改
8. 3. 5 添加/删除
第九章 NetBasic编程介绍
9. 1 NetBasic Version 6语法基础
9. 1. 1 怎样在控制台运行脚本文件
9. 1. 2 编写第一个BASIC脚本
9. 2 NetBasic NDS函数库调用
9. 2. 1 连接Novell目录服务(NDS)
9. 2. 2 在NDS中发现对象
9. 2. 3 创建. 删除和移动对象
9. 2. 4 读写属性
9. 2. 5 目录分区和复制
9. 3 其他与目录有关的NMX库
9. 3. 1 在卷上创建主目录
9. 3. 2 设置权限和受托人
9. 3. 3 从NetWare 3.x服务器移植用户
9. 4 简单的示例程序
9. 4. 1 用BASIC编写的NBCON.BAS SysCon
9. 4. 2 NBCHGPW BAS:基于网络的密码变换器
9. 4. 3 USERINFO.VBP:用户信息浏览器
第十章 用JNDI访问NDS
10. 1 使用Java和JNDI
10. 2 JNDI基础
10. 2. 1 术语
10. 2. 2 体系结构
10. 3 NdsObject接口
10. 3. 1 lookup和list方法
10. 3. 2 创建与销毁上下文
10. 3. 3 捆绑方法
10. 3. 4 取得和设置属性
10. 3. 5 Support方法
10. 4 NdsName类
10. 4. 1 Nnme接口
10. 4. 2 COmpositeName
l0. 5 Binding类
10. 6 搜索支持
10. 6. 1 近本搜索方法
10. 6. 2 SearchResult类
l0. 6. 3 SearchControls类
l0. 6. 4 其他搜索方法
l0. 7 初始Context和Factory
第十一章 用活动目录服务接口(ADSI)访问NDS
11. 1 ADSI概述
11. 1. 1 当前编程模型
11. 1. 2 ADSI编程模型
11. 1. 3 编程环境
11. 1. 4 准备开始
11. 1. 5 软件组件
11. 1. 6 路由层
11. 2 捆绑到对象
11. 2. 1 ADsPath
11. 2. 2 取得接口指针
11. 2. 3 在接口间移动
11. 2. 4 用特定信任书捆绑到对象上
11. 3 ADSI对象和接口
11. 3. 1 叶对象和容器对象
11. 3. 2 IADs接口
11. 3. 3 对象属性缓存
11. 3. 4 IADsContainer接口
11. 4 探索目录
11. 4. 1 列举对象
11. 4. 2 使用过滤器
11. 5 框架管理对象
11. 5. 1 框架容器对象
11. 5. 2 探索框架
11. 5. 3 框架类对象
11. 5. 4 框架属性对象
1I. 5. 5 框架语法对象
第十二章 扩展NetWarc管理器
12. 1 snap-in函数和类
12. 2 使用snaP-in向导
12. 2. 1 规划snap-in
12. 2. 2 运行向导
12. 2. 3 编译生成的代码
12. 2. 4 安装新的snap-in
12. 3 变成了snop-in
12. 4 增加对NDS类扩展的支持
12. 4. 1 提供基本NDS类支持
12. 4. 2 提供其他NDS类支持
12. 5 添加细节页
12. 5. 1 读NDS数据到细节页
12. 5. 2 向NDS写入细节页数据
12. 5. 3 使用其他细节页调用
12. 6 在NWAdmin的工具菜单添加菜单项
12. 7 添加自定义视图
12. 8 使用NWAdmin的对象浏览器/选择器
12. 9 使用多值编辑控件(MVED)
第十三章 扩展ConsoleOne
13. 1 可用snap-in类型
13. 2 注册机制
13. 2. 1 Registration接口
13. 2. 2 RegistrationItem
13. 2. 3 范围
13. 2. 4 ConsoleOne启动序列与集合
13. 2. 5 snap-in和包名
13. 2. 6 模板
13. 2. 7 ObjectEntry
13. 2. 8 ObjectType
13. 3 Snapin接口
13. 3. 1 InitSnapinInfo
13. 3. 2 SnapinContext
13. 4 编写第一个snap-in
13. 4. 1 RegistrationItem和Scope
13. 4. 2 DisplayNameSnapin
13. 4. 3 DisplayIconSnapin
13. 4. 4 PageSnapin
13. 4. 5 PropertyBook接口
13. 5 NDS名字空间
13. 5. 1 NSObject
13. 5. 2 NDSObjectAttribute
附录 CD-ROM上有什么内容
Novell一直以来都是网络产业中的佼佼者, Novell产品受到顾客的青睐和好评, 在市场上始终占领着领先的优势. 从NetWare 4. 11开始, Novell产品解决了部门内部和广域网之间的连接问题, 同时也引进了许多新特性. 为了帮助开发者充分利用Internet的力量, Novell派出了Novell内部最优秀的工程师撰写了这套丛书. 这套丛书以Novell最新的产品为中心, 而本书则是其中的一本, 专门讲述Novell目录服务系统(NDS).
我们很高兴能够把本书翻译出来, 与读者共享Novell带来的领先技术和可靠产品. 本书的作者都是Novell的专家, 他们亲自参与了NDS技术的开发, 并专长于各自所讨论的领域, 经验非常丰富. 全书的内容深入浅出, 道理通俗易懂. 本书提供了大量的示例代码和开发工具包. 这些代码都经过反复斟酌, 具有代表性. 很多代码稍加修改即可直接应用. 读者可以利用这些丰富的实例印证许多概念, 加深对它们的理解, 还可根据示例, 开发自己的NDS应用程序. 因此本书是一本不可多得的NDS开发指南图书.
无论读者使用什么语言和接口进行NDS编程, 本书都能起指导作用. 无论谁想利用NDS发挥互联网的威力, 通过NDS建立新的应用程序和服务, 更有效更方便地管理和使用网络, 使网络的拥有成本更低, 他都可以在这本书里找到满意的答案. 对于网络管理员. 网络工程师和Web规划和开发人员来说, 这是一本非常实用的参考书. 对于想了解和学习目录服务和NDS的读者, 本书也可作为一本很好的教材.
本书分两大部分, 第一部分讲述NDS的高级编程, 共包括六章. 第一部分介绍了NDS的一些重要概念, 分别讲述用现今流行的快速程序开发工具(RAD)进行NDS编程. 第二部分讲述NDS的底层开发, 包括第七章到第十三章. 这个部分主要讨论用各种API和脚本语言对NDS进行底层控制.
第一章介绍NDS, 讨论目录服务和NDS的基本概念和结构, 解释NDS对如今计算机网络的不可或缺的作用. 另外第一章还介绍了利用NDS的Novell产品和可用的高级开发工具. 第二章到第六章分别讲述用各种高级工具进行NDS编程. 第二章讨论Novell ActiveX控件的使用, 这些控件代表了NDS中的对象, 执行各种功能. 第二章分别在Visual Basic. Delphi和PowerBuilder里利用ActiveX控件开发简单的NDS程序. 第三章讨论Delphi中的NDS编程. 内容与NovellActiveX控件提供的C API有关. 最后举了一个用户密码的管理示例. 第四章讨论JavaBean的目录编程. JavaBean相当于Java做的组件, Novell开发了访问网络服务的JavaBean, 这章主要介绍了进程Bean和目录Bean. 详细讨论目录Bean. 第五章用NDS 0DBC驱动器生成报表. 本章说明如何把NDS层次树状结构的数据抽象到平面关系表, 利用简单的SQL语句从表里查询数据, 用NDS 0DBC驱动器生成报表. 第一部分的最后一章, 第六章, 谈论NDS脚本, 包括一些著名的脚本语言, 如JavaBean. Perl和NovellScript. 第七章到第十三章讨论了一些底层接口, 如跨平台API. LDSAP API. JNDI. ADSI和NetBasic. 这些内容深入到NDS内部, 直接操纵目录, 从NDS树中读写, 扩展NDS规划, 操纵树中的对象, 扩展目录命名和属性支持. 搜索等能力, 对象捆绑, 自定义对象. 属性和规划等. 第七章利用NDS跨平台API, 讨论对NDS信息的底层访问和修改, 包括扩展NDS框架, 管理自定义对象和属性. 第八章讨论LDAP API, 简要介绍了X. 500和LDAP的历史, 主要说明读写目录的细节. 第九章讨论NetWare平台上专用的编程语言NetBasic. 举了两个例子, 编写控制台和Web程序. 第十章介绍JNDI和命名接口及上下文接口. 第十一章用ADSI访问NDS, 主要介绍ADSI的接口及其与对象的捆绑. 第十二章举例说明扩展NetWare Administrator, 用snap—in与NDS通讯, 添加自定义的特性和功能. 第十三章扩展Conso1eOne程序, 这个例子主要是为类添加属性页和显示图标及显示名.
另外, 本书的最后还包含一个附录, 列举了本书附带的Cn—ROM上的内容, 并介绍怎样浏览和阅读CD—ROM.
本书附带的CD—ROM是本书极有价值的组成部分. 它包括开发软件包, 书上列举的程序源代码和其他信息. CD—ROM可以帮助读者更好地理解本书所讲的内容和概念, 寻求有利于开发人员的更多文档和资料.
本书由中科辅龙计算机技术有限公司抖斗书屋策划, 孔艳. 王莹翻译, 另外参加翻译的人员有石成玉. 张秦. 张锦. 包春霞. 冷发光. 唐小锋. 孙大波. 刘军宁. 任超. 韦石. 王永超. 郭美山. 石利文. 徐平. 刘小华. 王艳燕. 魏红. 杨桂莲. 郑红. 全书由史惠康审阅, 孔艳统稿.
本书的出版得到了中国水利水电出版社孙春亮老师等人的悉心指导和大力支持, 他们为本书的出版付出了辛勤的劳动. 在此表示由衷的感谢.
在本书的翻译过程中, 译者力求遵循原义. 对微软认可的术语尽量采用, 对新出现的或仍需商榷的术语, 我们竭力使用最贴切词进行表述. 尽管我们竭尽全力地追求尽善尽美, 由于时间仓促, 疏漏之处在所难免, 诚恳读者批评指正.
对本书内容有疑问的读者, 可向抖斗书屋读者服务部提出咨询.
咨询电话:010—62565533转3301
E—mail: Bookhouse@126. com
译者
2000年1月
关于作者
Peter Kuo, DreamLAN网络咨询公司(http://www. dreamlan.com)主席, 是CNI和CNE的专家. 早在1980年, 他就已经开始从事NetWare的工作, 并且在NetWare 4.o还是测试版的时候就开始从事NDS工作. 从1995年起, Peter就帮助过许多公司完成大规模NDS树和开发NDS应用程序方面的工作. Peter也是Novell Support Connetion和Novell DeveloperNet论坛的一个志愿SysOp.
Jim Henderson, 1989年在Florida, Daytona Beach的一所大学从事计算机网络方面的工作.
目录服务的时代来到了!不久前, 我们这些Novell的员工, 还在把很多的市场资源都投入到培训顾客上, 告诉他们什么是目录. 今天, 越来越多的客户告诉我们, 对他们商业核心的网络和应用程序来说, 目录变得有多么重要.
顾客告诉我们目录节省了他们的时间. 时间, 一种真正不可更新的资源. 任何投资, 只要可以节省我们的时间, 使我们更有效. 更有成果地利用时间, 我们就拥有了巨大的优势. 目录, 正如现在上百万用户所能证明的那样, 代表了这样的一种投资.
目录节省了客户的时间和金钱, 它使他们的网络更易于管理和使用. 本书向你解释, 像你这样的开发者, 怎样才能创建应用程序, 充分发挥目录服务的作用, 开发更灵活更容易管理的网络.
Novell目录服务(NDS)现在是, 将来也是目录服务技术中的领先者. 我们的投资每天都在给客户带来收益, 每当我们发现新的解决方案, 而NDS使之成为可能, 我们同时也在继续推动着技术的进步.
NDS工作在成千上万的客户站点, 支撑着上百万的日常用户, Novell这些来之不易的经验教会了我们东西, 怎样建立应用程序和服务才能真正最大限度地发挥目录服务的作用. 我们很高兴能与你这样的开发者一起从本书中分享这些经验.
利用NDS建立目录驱动的应用程序和服务, 这是本书所讲的全部内容, 它意味着你的产品将为你带来更多的价值, 为客户带来更多利益, 而这是你的竞争对手所没有的. 你能利用NDS的优势与它的健壮性, 及跨平台的兼容性, 创建新类型的应用程序, 发展新形式的电子业务. 而且, 在一个很多人用过的安全管理结构的基础上建立应用程序, 你可以把自己更多的精力放在开发产品的新特性和功能上.
这就是目录的承诺——给予开发人员更多的时间和技术去创新, 为客户的投资带来更丰厚的回报. 两者是一个无与伦比的配合.
Dr.Eric Schmidt
Novell公司主席兼执行总裁