译者序 1
关于作者 1
前言 1
第1章 理解分布式应用开发 1
1.1 简短历史 1
1.1.1 分布式体系结构 1
目录 1
1.1.2 分布式技术 4
1.3.1 容错 5
1.2 分布式对象——一个受欢迎的抽象概念 5
1.3 分布式应用开发的优点 5
1.3.2 可扩展性 6
1.3.3 管理 6
1.4 分布式应用开发的要求 6
1.4.1 性能 6
1.4.2 安全 7
1.4.4 Internet与防火墙 8
1.4.5 配置 8
1.4.3 互操作性与线路格式 8
1.4.6 位置无关性 9
1.4.7 对象生存期管理 9
1.5 使用.NET Remoting满足分布式应用开发要求 9
1.5.1 性能 9
1.5.2 扩展与自定义Remoting 10
1.5.3 配置 10
1.5.4 CLR与CTS的优点 11
1.5.5 互操作性 11
1.5.6 安全 12
1.5.7 生存期管理 13
1.5.8 企业服务 13
1.6 小结 14
第2章 理解.NET Remoting体系结构 15
2.1 Remoting边界 15
2.1.1 应用程序域 15
2.1.2 上下文 15
2.1.3 穿越边界 16
2.2 对象激活 18
2.2.1 服务器端激活 19
2.2.2 客户端激活 21
2.3 对象的生命租用 22
2.3.1 租用 23
2.3.2 租用管理器 24
2.3.3 发起者 25
2.4 穿越应用程序的边界 25
2.4.1 通过ObjRef列集远程对象引用 25
2.4.2 客户端经由代理与远程对象通信 26
2.4.4 通道越过Remoting边界传输消息 28
2.4.3 消息形成Remoting基础 28
2.4.5 通道接收器链可以作用于消息 29
2.5 小结 32
第3章 使用.NET Remoting建立分布式应用程序 33
3.1 设计一个分布式作业分配应用程序 33
3.2 实现JobServer应用程序 34
3.2.1 实现JobServer应用程序逻辑 34
3.2.2 添加.NET Remoting 38
3.3.1 选择客户端应用程序域 44
3.3 实现JobClient应用程序 44
3.3.2 获取服务器端元数据 51
3.3.3 为.NET Remoting配置JobClient应用程序 52
3.4 将JobServerImpl类暴露为一个Web服务 55
3.4.1 修改范例应用程序 56
3.4.2 使用SOAPSuds工具 58
3.4.3 给Web服务添加安全 59
3.4.4 .NET Remoting使用基于角色的安全 61
3.5.1 JobNotes类 63
3.5 扩展带有客户端激活对象的范例 63
3.5.2 JobClient应用程序的变动 64
3.5.3 为.NET Remoting客户端激活对象配置客户端 66
3.5.4 为.NET Remoting客户端激活对象配置服务器 68
3.5.5 给租用添加发起人 69
3.6 元数据相关性问题 71
3.6.1 删除JobServer对JobClient元数据的相关性 71
3.6.2 开发出替代类进行发布以取代JobServerImpl元数据 73
3.6.3 远程化IJobServer接口 74
3.7 小结 74
4.1 简单对象访问协议 75
第4章 SOAP与消息流 75
4.1.1 为什么要关注SOAP 76
4.1.2 基于HTTP的RPC 76
4.1.3 SOAP消息元素 76
4.1.4 文档/文字SOAP 78
4.2 消息流 79
4.2.1 add_JobEvent请求消息 79
4.2.2 add_JobEvent响应消息 84
4.2.3 GetJobs请求消息 84
4.2.4 GetJobs响应消息 85
4.2.5 CreateJob请求消息 86
4.2.6 CreateJob响应消息 87
4.2.7 UpdateJobState请求消息 87
4.2.8 UpdateJobState响应消息 88
4.2.9 JobNotes激活请求消息 88
4.2.10 JobNotes激活响应消息 89
4.2.11 remove_JobEvent请求消息 91
4.2.12 remove_JobEvent响应消息 95
4.3 小结 96
5.1.1 构造函数调用消息 97
第5章 消息与代理 97
5.1 消息 97
5.1.2 方法调用消息 98
5.1.3 消息类型 98
5.2 代理 99
5.2.1 TransparentProxy/透明代理 100
5.2.2 RealProxy/真实代理 100
5.2.3 扩展RealProxy 101
5.2.4 练习自定义代理对象 101
5.3 小结 116
第6章 消息接收器与上下文 117
6.1 消息接收器 117
6.1.1 IMessageSink 117
6.1.2 同步消息处理 119
6.1.3 异步消息处理 119
6.2 理解上下文 120
6.2.1 建立上下文 121
6.2.2 上下文属性和成员属性 121
6.2.3 上下文和Remoting 123
6.2.4 动态上下文接收器 125
6.2.5 客户端上下文接收器链 126
6.2.6 服务器上下文接收器链 126
6.2.7 服务器对象接收器链 133
6.2.8 特使对象接收器链 138
6.3 小结 147
7.1 如何构建通道 149
7.1.1 通道术语 149
第7章 通道与通道接收器 149
7.1.2 HttpChannel 150
7.1.3 HttpServerChannel 152
7.1.4 HttpServerTransportSink 153
7.1.5 HttpClientChannel 154
7.1.6 HttpClientTransportSinkProvider 154
7.1.7 HttpClientTransportSink 155
7.2 创建自定义通道 155
7.2.1 创建自定义.NET Remoting通道的步骤 155
7.2.2 创建自定义通道FileChannel 156
7.3 实现一个自定义的通道接收器 180
7.4 小结 186
第8章 序列化格式程序 187
8.1 对象序列化 187
8.1.1 可序列化属性 187
8.1.2 自定义对象序列化 188
8.1.3 对象图序列化 191
8.1.4 对象图逆序列化 192
8.1.5 序列化替代品及替代品选择器 193
8.2.1 获取某类型的可序列化成员 196
8.2 序列化格式程序 196
8.2.2 遍历对象图 197
8.2.3 使用ObjectManager类 199
8.2.4 使用Formatter类 201
8.2.5 实现一个自定义的序列化格式程序 202
8.3 创建一个格式程序接收器 224
8.3.1 客户端格式程序接收器 224
8.3.2 服务器端格式程序接收器 229
8.4 小结 234