1.1 目标 1
1.2 什么是分布式计算 1
第一部分 分布式计算基础 1
第1章 分布式应用开发介绍 1
1.4 为什么使用业务对象 2
1.3 什么是业务对象 2
1.5.1 基于窗口的体系结构 3
1.5 PowerBuilder体系结构进化 3
1.5.3 基于服务的体系结构 4
1.5.2 基于对象的体系结构 4
1.5.4 分布式体系结构 5
1.6.1 起源 6
1.6 客户/服务器体系结构进化 6
1.6.3 分布式体系结构 7
1.6.2 客户/服务器体系结构 7
1.7 分布式体系结构概念 9
1.8.1 TCP/IP 13
1.8 协议、套接字和端口 13
1.8.3 HTTP 14
1.8.2 套接字和端口 14
1.8.4 IIOP 15
1.9.2 负载均衡 16
1.9.1 代码分割 16
1.9 分布式概念 16
1.9.3 集群 17
1.9.4 故障切换 18
1.9.6 连接缓存 19
1.9.5 两阶段提交 19
1.9.8 实例池和无状态与状态组件 20
1.9.7 多线程 20
1.10.3 J2EE 21
1.10.2 COM 21
1.10 分布式对象模型 21
1.10.1 CORBA 21
1.11 小结 22
2.2 解释一个分布式应用 23
2.1 目标 23
第2章 使用PowerBuilder开发分布式应用介绍 23
2.3 使用PowerBuilder开发分布式系统的进化 24
2.3.1 分布式PowerBuilder 25
2.3.2 EAServer中的PowerBuilder 26
2.3.5 访问其他应用服务器上的组件 29
2.3.4 用于JSP的新Web目标 29
2.3.3 Web目标和Web DataWindow 29
2.4.2 组件和对象 30
2.4.1 分布式概念 30
2.3.6 部署PB组件到其他服务器 30
2.4 从PB角度看常见的分布式计算技术 30
2.5.1 胖客户 32
2.5 PowerBuilder在分布式计算中的作用 32
2.5.3 EAServer之外的组件 34
2.5.2 EAServer中的组件 34
2.6 现在可以用PB来做什么 35
2.5.4 Web服务 35
2.7 小结 36
3.2.1 概述 37
3.2 EAServer介绍 37
第3章 EAServer介绍 37
3.1 目标 37
3.2.2 EAServer家族 38
3.3 掌握Jaguar 39
3.4 EAServer的特性、服务和体系结构概述 40
3.4.3 Web容器 41
3.4.2 J2EE容器 41
3.4.1 HTTP服务器 41
3.4.7 CORBA支持 42
3.4.6 Web服务 42
3.4.4 EJB容器 42
3.4.5 J2EE应用编程接口网关 42
3.4.8 安全性服务 43
3.4.11 SNMP支持 44
3.4.10 管理和监控工具 44
3.4.9 集群服务 44
3.6 EAServer是否适合你的项目 45
3.5 EAServer在企业中的作用 45
3.4.12 Sybase提供的工具 45
3.7 小结 46
4.2 为什么移植 47
4.1 目标 47
第4章 移植现有应用 47
4.2.2 功能优点 48
4.2.1 投资回报 48
4.3 移植或重写 49
4.3.2 使用你现有的技术集 50
4.3.1 考虑PowerBuilder的情形 50
4.4 移植目标 51
4.4.3 进程监督 52
4.4.2 业务逻辑 52
4.4.1 界面生成 52
4.4.4 事务管理 53
4.5 结构良好的代码 54
4.5.2 从业务逻辑中分离GUI 55
4.5.1 良好的结构 55
4.6 移植 56
4.5.4 结构良好小结 56
4.5.3 细粒度对象和脚本 56
4.6.1 分析 57
4.6.3 移植业务逻辑到组件 60
4.6.2 移植数据访问逻辑到组件 60
4.6.4 移植进程监督代码到组件 62
4.6.5 服务端进程监督 63
4.6.6 客户端过程监督 64
4.7.1 参数 65
4.7 复杂性 65
4.7.3 全局函数 66
4.7.2 全局变量 66
4.7.5 WebDW 67
4.7.4 即时性 67
4.8.1 高级的多层模型移植任务计划示例 68
4.8 项目计划示例 68
4.8.2 高级的Web移植任务计划示例 69
4.9.1 Web.PB 71
4.9 Web.PB和DPB应用 71
4.9.3 Web.PB与DPB系统和EAServer系统之间的主要不同点 73
4.9.2 DPB应用 73
4.10 小结 74
4.9.5 为EAServer重新设计 74
4.9.4 不支持哪些组件 74
5.2.2 PB EAServer组件 76
5.2.1 标准PB NVO 76
第5章 开发组件 76
5.1 目标 76
5.2 什么是组件 76
5.2.3 EAServer组件限制 77
5.3.1 组件和对象的比较 78
5.3 不同类型的组件 78
5.2.4 有效的CORBA数据类型 78
5.3.3 标准组件 84
5.3.2 状态组件和无状态组件 84
5.3.4 共享组件 86
5.3.5 服务组件 87
5.4.1 理解开发过程 88
5.4 开发组件 88
5.4.3 基本对象 89
5.4.2 使用继承 89
5.4.4 使用标准PowerBuilder NVO和函数 92
5.4.5 数据访问 94
5.4.6 读和更新 96
5.4.7 事务管理 98
5.4.9 异常处理 101
5.4.8 自动分界 101
5.5.1 基本对象 103
5.5 组件开发示例 103
5.5.2 数据访问对象 104
5.5.3 使用这个结构 107
5.6 小结 108
6.1 目标 109
第6章 分布式应用分析与设计 109
第二部分 分布式应用开发 109
6.3 如何遵循系统开发生命周期(SDLC) 110
6.2 确定业务问题 110
6.4 分布式应用开发中的难点 111
6.6.1 业务过程模型 112
6.6 逻辑分析与设计 112
6.5 分布式应用SDLC 112
6.6.2 用例图 113
6.6.3 概念数据模型 114
6.6.5 封装逻辑设计 115
6.6.4 验证 115
6.8.1 对象模型 116
6.8 物理数据模型 116
6.7 物理设计 116
6.8.2 部署建模 121
6.9 测试——成功设计之路 122
6.11 小结 123
6.10 使用设计设置范围 123
7.2 DataWindow的功能 124
7.1 目标 124
第7章 探索Web DataWindow 124
7.5 体系结构 125
7.4 何时使用Web DataWindow 125
7.3 理解Web DataWindow 125
7.6 DataWindow设置 127
7.7 PowerDynamo 133
7.8 JavaServer页面 134
7.9 Active Server Pages(ASP) 140
7.10 应用服务器 141
7.10.2 HTMLGenerator 90组件方法 142
7.10.1 HTMLGenerator 90组件 142
7.12 微软事务服务器 146
7.11 自定义组件 146
7.13 客户事件和脚本 147
7.14.1 HTML Exits/Appended HTML 148
7.14 高级特性 148
7.14.2 HTML语法 149
7.14.3 网景绝对定位 151
7.14.4 JavaScript缓存 152
7.14.5 JavaScript Generation 153
7.15 小结 156
8.2 什么是XML 157
8.1 介绍 157
第8章 XML DataWindow 157
8.4 DataWindow导出引擎 160
8.3 XML解析器 160
8.5 导出模板:图形用户界面 162
8.5.1 导出模板的首部分 164
8.5.3 将DataWindow元素映射到XML节点 166
8.5.2 导出模板细节部分 166
8.6 导出XML 167
8.7 示例Ⅰ 169
8.9 示例Ⅲ 171
8.10 示例Ⅳ 173
8.12 新DLL 174
8.11 导入XML 174
8.13 小结 175
9.1 目标 176
9.2 JavaServer Page到底是什么 176
第9章 JSP的开发与使用 176
9.3 JavaServer Page机制 177
9.3.1 服务器端代码 178
9.3.2 指令 179
8.8 示例Ⅱ 179
9.3.4 scriptlet 182
9.3.3 声明 182
9.3.6 标准标签 183
9.3.5 表达式 183
9.3.7 客户端代码 184
9.4 JSP可以访问的对象 185
9.3.8 执行顺序 185
9.5.1 可以传递给组件的对象 186
9.5 为JSP开发EAServer组件 186
9.5.3 使用Web DataWindow 187
9.5.2 组件能够返回的值 187
9.6 编写自己的JSP 188
9.5.4 自定义标签库 188
9.6.2 调用EAServer组件 189
9.6.1 语法 189
9.6.3 数据库访问 190
9.7 完整的JSP过程 191
9.8 小结 192
10.2.1 组件接口 193
10.2 组件间调用 193
第10章 组件间开发 193
10.1 目标 193
10.2.3 使用代理 195
10.2.2 CreateInstance方法 195
10.3 CREATE和CreateInstance:了解它们的不同 196
10.5 组件类型:标准、共享和服务 198
10.4 组件生命周期 198
10.5.3 服务组件 199
10.5.2 共享组件 199
10.5.1 标准组件 199
10.6 应用体系结构 200
10.6.3 组件 201
10.6.2 包 201
10.6.1 服务器 201
10.7 组件间调用的利与弊 202
10.8 小结 203
11.1 目标 204
第11章 使用EAServer API 204
11.2.1 Jaguar/Repository组件 205
11.2 Jaguar模块 205
11.2.2 Jaguar/Management组件 212
11.2.4 Jaguar/Monitoring组件 213
11.2.3 Jaguar/CMPing和Jaguar/JCMPing组件 213
11.2.5 Jaguar/FileViewer组件 216
11.3.1 消息服务 218
11.3 CtsComponents模块 218
11.3.2 CtsComponents/ThreadManager组件 221
11.4.2 CtsSecurity∷AuthService接口 224
11.4.1 CtsSecurity/SessionInfo组件 224
11.4 CtsSecurity模块 224
11.4.3 CtsSecurity∷Authorization-Service接口 225
11.4.4 CtsSecurity∷RoleService接口 227
11.5 C/C++API 228
11.6 小结 230
12.2 什么是多线程 231
12.1 目标 231
第12章 EAServer的多线程 231
12.2.2 多线程的缺点 232
12.2.1 多线程的长处 232
12.4 EAServer中的多线程 233
12.3 EAServer线程类型 233
12.2.3 线程本地存储 233
12.5.1 将消息排队 238
12.5 使用消息服务 238
12.5.3 消息服务编码示例 239
12.5.2 消息服务 239
12.5.4 取出消息 242
12.5.5 放入消息 245
12.7 小结 249
12.6 线程的优先顺序 249
13.2 API概述 250
13.1 目标 250
第13章 访问J2EE结构 250
13.2.2 远程方法协议/调用(Remote Method Protocol/Invocation,RMP/RMI) 251
13.2.1 CORBA通信(IIOP/CORBA) 251
13.2.3 Java数据库连接(Java Database Connectivity,JDBC)API 252
13.2.4 企业JavaBean技术 253
13.2.5 命名和目录接口 254
13.2.8 Java标签库 255
13.2.7 JavaServer Page技术 255
13.2.6 Java servlet技术 255
13.2.9 Java消息服务 256
13.2.10 Java事务服务 258
13.2.11 JavaMail 259
13.3 J2EE连接器体系结构 261
13.2.12 可扩展标记语言(XML/XSL) 261
13.5.2 servlet如何交互 262
13.5.1 Web应用程序 262
13.4 Java验证和授权服务 262
13.5 以J2EE的方式使用PowerBuilder 262
13.5.3 用Struts创建一个简单的Web应用程序 264
13.5.4 编写一个Struts应用程序 265
13.6 小结 277
14.3 PowerBuilder框架的历史 279
14.2 什么是应用程序框架 279
第14章 使用基本组件框架的分布式应用开发 279
14.1 目标 279
14.4.2 来自于实例化 281
14.4.1 来自于继承 281
14.4 框架技术 281
14.4.3 组件间调用 282
14.4.4 胖客户端和Web客户端框架 283
14.4.5 数据驱动框架 284
14.5.1 客户端和服务器之间的通信 285
14.5 基本需求 285
14.5.2 服务器上的服务 287
14.6.2 双重应用程序框架:Hepek 288
14.6.1 企业应用程序框架:Cynergy System 288
14.6 PowerBuilder可用的框架 288
14.6.3 smlPortal:PowerObjects 289
15.3 客户/服务器和分布式 290
15.2 部署概述 290
第15章 部署到EAServer 290
15.1 目标 290
15.5 部署到一个EAServer开发服务器 292
15.4 组件部署的步骤 292
15.5.2 属性 294
15.5.1 选取对象 294
15.5.3 完成部署 299
15.7 组件推广 300
15.6 安装部署PBL 300
15.8.1 Component目录 303
15.8 使用WinZip进行推广 303
15.8.2 用WinZip移动组件 305
15.8.3 修改Jaguar.props 307
15.8.4 查看组件 308
15.10 部署方法小结 309
15.9 使用EAServer同步进行推广 309
15.11 小结 310
16.2 系统管理员的目标 311
16.1 目标 311
第三部分 高级特性及技巧 311
第16章 使用Jaguar Manager管理EAServer 311
16.4.1 建立连接 312
16.4 使用Jaguar Manager 312
16.3 Jaguar Manager 312
16.4.2 Jaguar Manager管理什么 314
16.5.1 配置管理口令 315
16.5 配置服务器 315
16.5.3 创建和删除服务器 316
16.5.2 关闭和启动 316
16.5.4 配置监听程序 317
16.6.2 服务器属性(Resources标签页) 318
16.6.1 服务器属性(Security标签页) 318
16.5.5 服务器属性 318
16.6 服务器属性(HTTP Config标签页) 318
16.6.5 服务器属性(Naming Service标签页) 319
16.6.4 服务器属性(Handlers标签页) 319
16.6.3 服务器属性(Log/Trace标签页) 319
16.6.8 服务器属性(Java Classes标签页) 320
16.6.7 服务器属性(Hot Standby标签页) 320
16.6.6 服务器属性(Dynamo标签页) 320
16.7 配置数据库访问 321
16.6.9 服务器属性(Static Page Caching标签页) 321
16.8.1 部署应用程序 323
16.8 部署 323
16.8.2 Web应用程序 324
16.9 命名服务 325
16.10 集群和同步 326
16.12 Web服务器重定向器 328
16.11 消息服务 328
16.13.1 jagtool 329
16.13 jagtool和jagant 329
16.13.2 自动执行操作 330
16.14 小结 331
16.13.3 jagant 331
17.2.1 客户端需求 332
17.2 客户端和服务器环境 332
第17章 EAServer问题分析和疑难解答 332
17.1 目标 332
17.2.2 服务器需求 333
17.3.1 诊断失效连接 336
17.3 连接到EAServer 336
17.3.2 跟踪客户端连通性请求 338
17.4 实例化组件 341
17.4.2 定位组件 342
17.4.1 建立服务器连通性 342
17.4.3 实例化组件 343
17.5.1 远程调试 345
17.5 跟踪组件执行 345
17.4.4 调用组件方法 345
17.5.2 跟踪方法执行 347
17.6 EAServer中的线程 349
17.6.1 EAServer组件设置 350
17.6.2 绑定EAServer到一个CPU 351
17.6.3 转储线程 353
17.7.2 特定销售商数据库跟踪 354
17.7.1 PowerBuilder数据库跟踪 354
17.7 数据库访问 354
17.8 小结 358
17.7.3 关于健全性检查 358
18.2.1 Jaguar Manager 359
18.2 监控EAServer实体 359
第18章 监控 359
18.1 目标 359
18.2.2 Sybase Enterprise Web Console 362
18.2.3 SNMP代理 363
18.2.4 Jaguar∷Monitoring API 366
18.3.1 EAServer内存管理 368
18.3 操作系统监控 368
18.3.2 EAServer中的CPU利用 371
18.3.3 EAServer中的线程 373
18.3.4 其他资源 375
18.4 小结 376
19.2 需要连接缓存的情形 377
19.1 目标 377
第19章 连接缓存 377
19.3 创建EAServer连接缓存 378
19.3.1 常规属性 379
19.3.2 驱动属性 380
19.3.3 缓存属性 381
19.3.4 所有属性 383
19.3.5 EAServer 3.6.1的不同点 384
19.3.6 使用jagtool 385
19.3.7 使用Jaguar∷Repository接口 386
19.4.3 使用Jaguar∷CMPing和Jaguar∷JCMPing接口测试连接缓存 388
19.4.2 用jagtool测试连接缓存 388
19.4 测试连接缓存 388
19.4.1 使用Jaguar Manager测试连接缓存 388
19.5.1 请求连接 389
19.5 在PowerBuilder中使用连接缓存 389
19.5.2 建立连接 390
19.5.3 使用连接 393
19.5.4 释放连接 394
19.5.5 其他PowerBuilder连接参数 395
19.7 XA资源 398
19.6 使用其他PowerBuilder数据库接口 398
19.8 小结 400
20.1 目标 401
第20章 XML的开发与使用 401
20.2 什么是XML 402
20.3.1 解析器 403
20.3 XML技术 403
20.3.2 XSL 404
20.3.5 SOAP 407
20.3.4 大纲 407
20.3.3 DTD 407
20.3.6 ebXML 409
20.3.7 格式化对象 410
20.4.3 使用其他解析器(MSXML) 411
20.4.2 PBDOM 411
20.4 在PowerBuilder分布式应用中如何使用XML 411
20.4.1 XML DataWindow 411
20.5 在PowerBuilder中使用XML的示例 413
20.4.5 数据/消息 413
20.4.4 Web服务 413
20.6 小结 420
21.2 为何采用Web服务方式 421
21.1 介绍 421
第21章 Web服务的开发与使用 421
21.3 Web服务体系结构 422
21.4 描述:WSDL 423
21.5 协议:SOAP 424
21.5.1 工作原理 425
21.5.2 请求 426
21.5.3 响应 427
21.7 实现Web服务 429
21.6 知识库:UDDI 429
21.7.1 创建服务器端部分 430
21.7.2 定义Web服务 431
21.7.3 PowerBuilder客户端 435
21.8 另一个Web服务实现:Axis 439
21.9 使用PowerBuilder 9创建Web服务的JSP客户端 440
21.10 小结 446
22.2 为受限设备开发 447
22.1 介绍 447
第22章 移动系统开发 447
22.3.2 迅速地定位到目标 448
22.3.1 了解用户 448
22.3 创建可用的移动应用 448
22.4 移动应用的内容 449
22.3.7 避免不必要的用户错误 449
22.3.3 将应用限制到只具有所属的功能 449
22.3.4 使应用程序易于导航 449
22.3.5 使应用程序保持一致性 449
22.3.6 避免文字输入 449
22.7 WAP模型 450
22.6 WAP介绍 450
22.5 WAP论坛 450
22.8 第一个WAP网页 451
22.9 在WAP客户环境中运行示例 452
22.10.1 开发瘦客户应用 453
22.10 Sybase iAnywhere m-Business Studio 453
22.11.1 iAnywhere无线服务器 455
22.11 Sybase iAnywhere m-Business Studio包含的内容 455
22.10.2 开发智能客户应用 455
22.11.6 应用管理服务 456
22.11.5 内容发送服务 456
22.11.2 同步和移动数据库 456
22.11.3 消息 456
22.11.4 Sybase企业门户集成 456
22.12 iAnywhere应用框架 457
22.11.7 同步和移动数据库 457
22.13 使用Sybase Adaptive Server UltraLite 461
22.14 使用数据复制 462
22.15 SQL特性 463
22.16 小结 465
23.2 企业JavaBean概述 466
23.1 目标 466
第23章 通过PowerBuilder访问EJB服务器 466
23.3.1 EJB客户端PBNI的实现 468
23.3 PowerBuilder实现概述 468
23.3.2 PowerBuilder JVM服务 470
23.3.3 PowerBuilder代理对象 473
23.4.1 加载Java VM 476
23.4 编写一个PowerBuilder EJB客户端应用 476
23.4.2 连接到EJB服务器 478
23.4.3 定位EJB 479
23.4.4 实例化EJB 480
23.4.5 调用EJB方法 481
23.5 部署EJB客户端应用 484
23.4.6 与EJB服务器断开连接 484
23.6.1 处理java.lang.Object 485
23.6 对基本客户端应用的扩展 485
23.6.2 动态转换对象和接口 486
23.6.3 创建附加的Java代理 488
23.7 客户端事务 489
23.7.2 处理事务异常 490
23.7.1 访问事务 490
23.7.3 管理事务 491
23.8 小结 493
24.2 为什么需要一个企业门户 494
24.1 目标 494
第24章 使用企业门户 494
24.4 为什么选择Sybase企业门户 495
24.3 什么是企业门户 495
24.5 Sybase企业门户(EP)的应用领域 496
24.6.1 主要特性 497
24.6 EP系统的特性 497
24.7 Sybase EP评估版本 498
24.6.2 其他特性与功能 498
24.8.1 安装步骤 499
24.8 安装评估版本 499
24.9 安装Sybase EP完全版本 501
24.8.2 运行Portal Studio 501
24.9.2 需要安装的模块介绍 502
24.9.1 Sybase EP 5.0产品正式版的内容 502
24.9.3 需要保留的信息 507
24.9.4 Portlet Builder和Portal Interface 508
24.10 使用Sybase企业门户开发PowerBuilder应用 509
24.10.2 Portal Studio 510
24.10.1 准备示例 510
24.10.3 创建模板 511
24.10.4 创建portlet 514
24.10.5 使用工作流和对工作流进行版本控制 518
24.10.6 创建一个页面 519
24.11 Sybase企业门户安全体系结构 523
24.11.1 设置安全系统 524
24.11.2 设置单点登录 526
24.12 小结 532
第25章 展望——PB和分布式应用开发的未来 533
25.1 目标 533
25.2 未来的新特性 533
25.3 PowerBuilder和.NET 534
25.4 PowerBuilder和Java 534
25.5 PowerBuilder和移动技术 534
25.6.2 集成PowerDesigner 535
25.7 其他技术 535
25.8 其他平台 535
25.6.1 PowerBuilder的Appeon 535
25.6 利用或影响PowerBuilder的技术 535
25.9 展望未来 536
附录附录A 出错信息和疑难解答索引 537