Table of Contents Previous Next
Logo
Copyright © 2003-2007 ZeroC, Inc.

Table of Contents

Chapter 1
Introduction
1.1 Introduction
1.2 The Internet Communications Engine (Ice)
1.3 Organization of this Book
1.4 Typographical Conventions
1.5 Source Code Examples
1.6 Contacting the Authors
1.7 Ice Support
Chapter 2
Ice Overview
2.1 Chapter Overview
2.2 The Ice Architecture
2.3 Ice Services
2.4 Architectural Benefits of Ice
2.5 A Comparison with CORBA
Chapter 3
A Hello World Application
3.1 Chapter Overview
3.2 Writing a Slice Definition
3.3 Writing an Ice Application with C++
3.4 Writing an Ice Application with Java
3.5 Writing an Ice Application with C#
3.6 Writing an Ice Application with Visual Basic
3.7 Writing an Ice Application with Python
3.8 Writing an Ice Application with Ruby
3.9 Summary
Chapter 4
The Slice Language
4.1 Chapter Overview
4.2 Introduction
4.3 Compilation
4.4 Source Files
4.5 Lexical Rules
4.6 Modules
4.7 The Ice Module
4.8 Basic Slice Types
4.9 User-Defined Types
4.10 Interfaces, Operations, and Exceptions
4.11 Classes
4.12 Forward Declarations
4.13 Type IDs
4.14 Operations on Object
4.15 Local Types
4.16 Names and Scoping
4.17 Metadata
4.18 Deprecating Slice Definitions
4.19 Using the Slice Compilers
4.20 Slice Checksums
4.21 A Comparison of Slice and CORBA IDL
4.22 Generating Slice Documentation
4.23 Summary
Chapter 5
Slice for a Simple File System
5.1 Chapter Overview
5.2 The File System Application
5.3 Slice Definitions for the File System
5.4 The Complete Definition
Chapter 6
Client-Side Slice-to-C++ Mapping
6.1 Chapter Overview
6.2 Introduction
6.3 Mapping for Identifiers
6.4 Mapping for Modules
6.5 The Ice Namespace
6.6 Mapping for Simple Built-In Types
6.7 Mapping for User-Defined Types
6.8 Mapping for Constants
6.9 Mapping for Exceptions
6.10 Mapping for Run-Time Exceptions
6.11 Mapping for Interfaces
6.12 Mapping for Operations
6.13 Exception Handling
6.14 Mapping for Classes
6.15 slice2cpp Command-Line Options
6.16 Using Slice Checksums
6.17 A Comparison with the CORBA C++ Mapping
Chapter 7
Developing a File System Client in C++
7.1 Chapter Overview
7.2 The C++ Client
7.3 Summary
Chapter 8
Server-Side Slice-to-C++ Mapping
8.1 Chapter Overview
8.2 Introduction
8.3 The Server-Side main Function
8.4 Mapping for Interfaces
8.5 Parameter Passing
8.6 Raising Exceptions
8.7 Object Incarnation
8.8 Summary
Chapter 9
Developing a File System Server in C++
9.1 Chapter Overview
9.2 Implementing a File System Server
9.3 Summary
Chapter 10
Client-Side Slice-to-Java Mapping
10.1 Chapter Overview
10.2 Introduction
10.3 Mapping for Identifiers
10.4 Mapping for Modules
10.5 The Ice Package
10.6 Mapping for Simple Built‑In Types
10.7 Mapping for User-Defined Types
10.8 Mapping for Constants
10.9 Mapping for Exceptions
10.10 Mapping for Run-Time Exceptions
10.11 Mapping for Interfaces
10.12 Mapping for Operations
10.13 Exception Handling
10.14 Mapping for Classes
10.15 Customizing the Java Mapping
10.16 slice2java Command-Line Options
10.17 Using Slice Checksums
Chapter 11
Developing a File System Client in Java
11.1 Chapter Overview
11.2 The Java Client
11.3 Summary
Chapter 12
Server-Side Slice-to-Java Mapping
12.1 Chapter Overview
12.2 Introduction
12.3 The Server-Side main Function
12.4 Mapping for Interfaces
12.5 Parameter Passing
12.6 Raising Exceptions
12.7 Tie Classes
12.8 Object Incarnation
12.9 Summary
Chapter 13
Developing a File System Server in Java
13.1 Chapter Overview
13.2 Implementing a File System Server
13.3 Summary
Chapter 14
Client-Side Slice-to-C# Mapping
14.1 Chapter Overview
14.2 Introduction
14.3 Mapping for Identifiers
14.4 Mapping for Modules
14.5 The Ice Namespace
14.6 Mapping for Simple Built‑In Types
14.7 Mapping for User-Defined Types
14.8 Mapping for Dictionaries
14.9 Mapping for Constants
14.10 Mapping for Exceptions
14.11 Mapping for Interfaces
14.12 Mapping for Operations
14.13 Exception Handling
14.14 Mapping for Classes
14.15 C#-Specific Metadata Directives
14.16 slice2cs Command-Line Options
14.17 Using Slice Checksums
Chapter 15
Developing a File System Client in C#
15.1 Chapter Overview
15.2 The C# Client
15.3 Summary
Chapter 16
Server-Side Slice-to-C# Mapping
16.1 Chapter Overview
16.2 Introduction
16.3 The Server-Side Main Method
16.4 Mapping for Interfaces
16.5 Parameter Passing
16.6 Raising Exceptions
16.7 Tie Classes
16.8 Object Incarnation
16.9 Summary
Chapter 17
Developing a File System Server in C#
17.1 Chapter Overview
17.2 Implementing a File System Server
17.3 Summary
Chapter 18
Client-Side Slice-to-Visual Basic Mapping
18.1 Chapter Overview
18.2 Introduction
18.3 Mapping for Identifiers
18.4 Mapping for Modules
18.5 The Ice Namespace
18.6 Mapping for Simple Built‑In Types
18.7 Mapping for User-Defined Types
18.8 Mapping for Dictionaries
18.9 Mapping for Constants
18.10 Mapping for Exceptions
18.11 Mapping for Interfaces
18.12 Mapping for Operations
18.13 Exception Handling
18.14 Mapping for Classes
18.15 VB-Specific Metadata Directives
18.16 slice2vb Command-Line Options
18.17 Using Slice Checksums
Chapter 19
Developing a File System Client in Visual Basic
19.1 Chapter Overview
19.2 The VB Client
19.3 Summary
Chapter 20
Server-Side Slice-to-Visual Basic Mapping
20.1 Chapter Overview
20.2 Introduction
20.3 The Server-Side Main Method
20.4 Mapping for Interfaces
20.5 Parameter Passing
20.6 Raising Exceptions
20.7 Tie Classes
20.8 Object Incarnation
20.9 Summary
Chapter 21
Developing a File System Server in Visual Basic
21.1 Chapter Overview
21.2 Implementing a File System Server
21.3 Summary
Chapter 22
Client-Side Slice-to-Python Mapping
22.1 Chapter Overview
22.2 Introduction
22.3 Mapping for Identifiers
22.4 Mapping for Modules
22.5 The Ice Module
22.6 Mapping for Simple Built‑In Types
22.7 Mapping for User-Defined Types
22.8 Mapping for Constants
22.9 Mapping for Exceptions
22.10 Mapping for Run-Time Exceptions
22.11 Mapping for Interfaces
22.12 Mapping for Operations
22.13 Exception Handling
22.14 Mapping for Classes
22.15 Code Generation
22.16 Using Slice Checksums
Chapter 23
Developing a File System Client in Python
23.1 Chapter Overview
23.2 The Python Client
23.3 Summary
Chapter 24
Server-Side Slice-to-Python Mapping
24.1 Chapter Overview
24.2 Introduction
24.3 The Server-Side main Program
24.4 Mapping for Interfaces
24.5 Parameter Passing
24.6 Raising Exceptions
24.7 Object Incarnation
24.8 Summary
Chapter 25
Developing a File System Server in Python
25.1 Chapter Overview
25.2 Implementing a File System Server
25.3 Thread Safety
25.4 Summary
Chapter 26
Client-Side Slice-to-Ruby Mapping
26.1 Chapter Overview
26.2 Introduction
26.3 Mapping for Identifiers
26.4 Mapping for Modules
26.5 The Ice Module
26.6 Mapping for Simple Built‑In Types
26.7 Mapping for User-Defined Types
26.8 Mapping for Constants
26.9 Mapping for Exceptions
26.10 Mapping for Run-Time Exceptions
26.11 Mapping for Interfaces
26.12 Mapping for Operations
26.13 Exception Handling
26.14 Mapping for Classes
26.15 Code Generation
26.16 Using Slice Checksums
Chapter 27
Developing a File System Client in Ruby
27.1 Chapter Overview
27.2 The Ruby Client
27.3 Summary
Chapter 28
Ice Extension for PHP
28.1 Chapter Overview
28.2 Introduction
28.3 Configuration
28.4 Client-Side Slice-to-PHP Mapping
Chapter 29
Developing a File System Client in PHP
29.1 Chapter Overview
29.2 The PHP Client
29.3 Summary
Chapter 30
Ice Properties and Configuration
30.1 Chapter Overview
30.2 Properties
30.3 Configuration Files
30.4 Setting Properties on the Command Line
30.5 The Ice.Config Property
30.6 Command-Line Parsing and Initialization
30.7 The Ice.ProgramName property
30.8 Using Properties Programmatically
30.9 Summary
Chapter 31
Threads and Concurrency with C++
31.1 Chapter Overview
31.2 Introduction
31.3 Library Overview
31.4 Mutexes
31.5 Recursive Mutexes
31.6 Read-Write Recursive Mutexes
31.7 Timed Locks
31.8 Monitors
31.9 Efficiency Considerations
31.10 Threads
31.11 Portable Signal Handling
31.12 Summary
Chapter 32
The Ice Run Time in Detail
32.1 Introduction
32.2 Communicators
32.3 Communicator Initialization
32.4 Object Adapters
32.5 Object Identity
32.6 The Ice::Current Object
32.7 Servant Locators
32.8 Server Implementation Techniques
32.9 The Ice Threading Models
32.10 Proxies
32.11 The Ice::Context Parameter
32.12 Connection Timeouts
32.13 Oneway Invocations
32.14 Datagram Invocations
32.15 Batched Invocations
32.16 Testing Proxies for Dispatch Type
32.17 Location Services
32.18 The Ice::Logger Interface
32.19 The Ice::Stats Interface
32.20 Location Transparency
32.21 C++ String Conversion
32.22 A Comparison of the Ice and CORBA Run Time
32.23 Summary
Chapter 33
Asynchronous Programming
33.1 Chapter Overview
33.2 Introduction
33.3 Using AMI
33.4 Using AMD
33.5 Summary
Chapter 34
Facets and Versioning
34.1 Introduction
34.2 Concept and APIs
34.3 The Versioning Problem
34.4 Versioning with Facets
34.5 Facet Selection
34.6 Behavioral Versioning
34.7 Design Considerations
34.8 Summary
Chapter 37
The Ice Protocol
37.1 Chapter Overview
37.2 Data Encoding
37.3 Protocol Messages
37.4 Compression
37.5 Protocol and Encoding Versions
37.6 A Comparison with IIOP
Chapter 36
Connection Management
36.1 Chapter Overview
36.2 Introduction
36.3 Connection Establishment
36.4 Active Connection Management
36.5 Obtaining a Connection
36.6 Connection Closure
36.7 Bidirectional Connections
36.8 Summary
Chapter 35
Dynamic Ice
35.1 Chapter Overview
35.2 Streaming Interface
35.3 Dynamic Invocation and Dispatch
35.4 Asynchronous Dynamic Invocation and Dispatch
35.5 Summary
Chapter 38
IceGrid
38.1 Chapter Overview
38.2 Introduction
38.3 IceGrid Architecture
38.4 Getting Started
38.5 Well-known Objects
38.6 Templates
38.7 IceBox Integration
38.8 Object Adapter Replication
38.9 Load Balancing
38.10 Sessions
38.11 Registry Replication
38.12 Application Distribution
38.13 Dynamic Monitoring
38.14 Glacier2 Integration
38.15 XML Reference
38.16 Variable and Parameter Semantics
38.17 Property Set Semantics
38.18 XML Features
38.19 Server Reference
38.20 Administrative Utilities
38.21 Server Activation
38.22 Solving Problems
38.23 Summary
Chapter 39
Freeze
39.1 Chapter Overview
39.2 Introduction
39.3 The Freeze Map
39.4 Using a Freeze Map in the File System Server
39.5 The Freeze Evictor
39.6 Using the Freeze Evictor in a File System Server
39.7 The Freeze Catalog
39.8 Summary
Chapter 40
FreezeScript
40.1 Chapter Overview
40.2 Introduction
40.3 Database Migration
40.4 Transformation Descriptors
40.5 Using transformdb
40.6 Database Inspection
40.7 Using dumpdb
40.8 Descriptor Expression Language
40.9 Summary
Chapter 41
IceSSL
41.1 Chapter Overview
41.2 Introduction
41.3 Using IceSSL
41.4 Configuring IceSSL
41.5 Programming with IceSSL
41.6 Advanced Topics
41.7 Setting up a Certificate Authority
41.8 Summary
Chapter 42
Glacier2
42.1 Chapter Overview
42.2 Introduction
42.3 Using Glacier2
42.4 Callbacks
42.5 Router Security
42.6 Session Management
42.7 Dynamic Filtering
42.8 Request Buffering
42.9 Request Contexts
42.10 Firewalls
42.11 Advanced Client Configurations
42.12 IceGrid Integration
42.13 Summary
Chapter 43
IceBox
43.1 Chapter Overview
43.2 Introduction
43.3 The Service Manager
43.4 Developing a Service
43.5 Starting IceBox
43.6 Summary
Chapter 44
IceStorm
44.1 Chapter Overview
44.2 Introduction
44.3 Concepts
44.4 IceStorm Interface Overview
44.5 Using IceStorm
44.6 Publishing to a Specific Subscriber
44.7 IceStorm Administration
44.8 Topic Federation
44.9 Quality of Service
44.10 Delivery Mode
44.11 Configuring IceStorm
44.12 Summary
Chapter 45
IcePatch2
45.1 Chapter Overview
45.2 Introduction
45.3 Using icepatch2calc
45.4 Running the Server
45.5 Running the Client
45.6 Object Identities
45.7 Creating a Custom Client
45.8 Summary
Appendix A
Slice Keywords
Appendix B
Slice API Reference
Appendix C
Properties
C.1 Ice Configuration Property
C.2 Ice Trace Properties
C.3 Ice Warning Properties
C.4 Ice Object Adapter Properties
C.5 Ice Plugin Properties
C.6 Ice Thread Pool Properties
C.7 Ice Default and Override Properties
C.8 Ice Proxy Properties
C.9 Ice Miscellaneous Properties
C.10 IceSSL Properties
C.11 IceBox Properties
C.12 IceGrid Properties
C.13 IceGrid Administrative Client Properties
C.14 IceStorm Properties
C.15 Glacier2 Properties
C.16 Freeze Properties
C.17 IcePatch2 Properties
Appendix D
Proxies and Endpoints
D.1 Proxies
D.2 Endpoints
Appendix E
License Information
E.1 Definitions
E.2 Fair Use Rights
E.3 License Grant
E.4 Restrictions
E.5 Representations, Warranties and Disclaimer
E.6 Limitation on Liability
E.7 Termination
E.8 Miscellaneous
Bibliography

Table of Contents Previous Next
Logo