Table of Contents Previous Next
Logo
Copyright © 2003-2009 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 Objective‑C
3.8 Writing an Ice Application with Python
3.9 Writing an Ice Application with Ruby
3.10 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 Serializable Objects
4.19 Deprecating Slice Definitions
4.20 Using the Slice Compilers
4.21 Slice Checksums
4.22 A Comparison of Slice and CORBA IDL
4.23 Generating Slice Documentation
4.24 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 Serializable Objects
10.16 Customizing the Java Mapping
10.17 slice2java Command-Line Options
10.18 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 Constants
14.9 Mapping for Exceptions
14.10 Mapping for Interfaces
14.11 Mapping for Operations
14.12 Exception Handling
14.13 Mapping for Classes
14.14 Serializable Objects
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-Objective-C Mapping
18.1 Chapter Overview
18.2 Introduction
18.3 Mapping for Modules
18.4 The ICE Prefix
18.5 Mapping for Identifiers
18.6 Internal Identifiers
18.7 Mapping for Built-In Types
18.8 Mapping for User-Defined Types
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 Local Interfaces
18.15 Mapping for Classes
18.16 Interfaces by Value
18.17 slice2objc Command-Line Options
Chapter 19
Developing a File System Client in Objective‑C
19.1 Chapter Overview
19.2 The Objective‑C Client
19.3 Summary
Chapter 20
Server-Side Slice-to-Objective‑C Mapping
20.1 Chapter Overview
20.2 Introduction
20.3 The Server-Side main Function
20.4 Mapping for Interfaces
20.5 Parameter Passing
20.6 Raising Exceptions
20.7 Object Incarnation
20.8 Summary
Chapter 21
Developing a File System Server in Objective‑C
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 The main Program
26.17 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 Unused Properties
30.10 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 Condition Variables
31.10 Efficiency Considerations
31.11 Threads
31.12 Portable Signal Handling
31.13 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 Default Servants
32.9 Server Implementation Techniques
32.10 The Ice Threading Model
32.11 Proxies
32.12 The Ice::Context Parameter
32.13 Connection Timeouts
32.14 Oneway Invocations
32.15 Datagram Invocations
32.16 Batched Invocations
32.17 Testing Proxies for Dispatch Type
32.18 Location Services
32.19 Administrative Facility
32.20 The Ice::Logger Interface
32.21 The Ice::Stats Interface
32.22 Location Transparency
32.23 Automatic Retries
32.24 Dispatch Interceptors
32.25 String Conversion
32.26 Developing a Plug‑In
32.27 A Comparison of the Ice and CORBA Run Time
32.28 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 35
Object Life Cycle
35.1 Chapter Overview
35.2 Introduction
35.3 Object Existence and Non-Existence
35.4 Life Cycle of Proxies, Servants, and Ice Objects
35.5 Object Creation
35.6 Object Destruction
35.7 Removing Cyclic Dependencies
35.8 Life Cycle and Parallelism
35.9 Object Identity and Uniqueness
35.10 Object Life Cycle for the File System Application
35.11 Avoiding Server-Side Garbage
35.12 Summary
Chapter 36
Dynamic Ice
36.1 Chapter Overview
36.2 Streaming Interface
36.3 Dynamic Invocation and Dispatch
36.4 Asynchronous Dynamic Invocation and Dispatch
36.5 Summary
Chapter 37
Connection Management
37.1 Chapter Overview
37.2 Introduction
37.3 Connection Establishment
37.4 Active Connection Management
37.5 Obtaining a Connection
37.6 Connection Closure
37.7 Bidirectional Connections
37.8 Summary
Chapter 38
The Ice Protocol
38.1 Chapter Overview
38.2 Data Encoding
38.3 Protocol Messages
38.4 Compression
38.5 Protocol and Encoding Versions
38.6 A Comparison with IIOP
Chapter 39
IceGrid
39.1 Chapter Overview
39.2 Introduction
39.3 IceGrid Architecture
39.4 Getting Started
39.5 Using Deployment
39.6 Well-known Objects
39.7 Templates
39.8 IceBox Integration
39.9 Object Adapter Replication
39.10 Load Balancing
39.11 Sessions
39.12 Registry Replication
39.13 Application Distribution
39.14 Administrative Sessions
39.15 Glacier2 Integration
39.16 XML Reference
39.17 Variable and Parameter Semantics
39.18 Property Set Semantics
39.19 XML Features
39.20 Server Reference
39.21 Administrative Facility Integration
39.22 Securing IceGrid
39.23 Administrative Utilities
39.24 Server Activation
39.25 Solving Problems
39.26 Summary
Chapter 40
Freeze
40.1 Chapter Overview
40.2 Introduction
40.3 The Freeze Map
40.4 Using a Freeze Map in the File System Server
40.5 Freeze Evictors
40.6 Using the Freeze Evictor in a File System Server
40.7 The Freeze Catalog
40.8 Backups
40.9 Summary
Chapter 41
FreezeScript
41.1 Chapter Overview
41.2 Introduction
41.3 Database Migration
41.4 Transformation Descriptors
41.5 Using transformdb
41.6 Database Inspection
41.7 Using dumpdb
41.8 Descriptor Expression Language
41.9 Summary
Chapter 42
IceSSL
42.1 Chapter Overview
42.2 Introduction
42.3 Using IceSSL
42.4 Configuring IceSSL
42.5 Programming with IceSSL
42.6 Advanced Topics
42.7 Setting up a Certificate Authority
42.8 Summary
Chapter 43
Glacier2
43.1 Chapter Overview
43.2 Introduction
43.3 Using Glacier2
43.4 Callbacks
43.5 Router Security
43.6 Session Management
43.7 Dynamic Filtering
43.8 Request Buffering
43.9 Request Contexts
43.10 Firewalls
43.11 Advanced Client Configurations
43.12 IceGrid Integration
43.13 Summary
Chapter 44
IceBox
44.1 Chapter Overview
44.2 Introduction
44.3 Developing a Service
44.4 Starting IceBox
44.5 IceBox Administration
44.6 Summary
Chapter 45
IceStorm
45.1 Chapter Overview
45.2 Introduction
45.3 Concepts
45.4 IceStorm Interface Overview
45.5 Using IceStorm
45.6 Publishing to a Specific Subscriber
45.7 Highly Available IceStorm
45.8 IceStorm Administration
45.9 Topic Federation
45.10 Quality of Service
45.11 Delivery Mode
45.12 Configuring IceStorm
45.13 Summary
Chapter 46
IcePatch2
46.1 Chapter Overview
46.2 Introduction
46.3 Using icepatch2calc
46.4 Running the Server
46.5 Running the Client
46.6 Object Identities
46.7 The IcePatch2 Client Utility Library
46.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 Administrative Properties
C.6 Ice Plug‑In Properties
C.7 Ice Thread Pool Properties
C.8 Ice Default and Override Properties
C.9 Ice Proxy Properties
C.10 Ice Transport Properties
C.11 Ice Miscellaneous Properties
C.12 IceSSL Properties
C.13 IceBox Properties
C.14 IceBoxAdmin Properties
C.15 IceGrid Properties
C.16 IceGrid Administrative Client Properties
C.17 IceStorm Properties
C.18 Glacier2 Properties
C.19 Freeze Properties
C.20 IcePatch2 Properties
Appendix D
Proxies and Endpoints
D.1 Proxies
D.2 Endpoints
Appendix E
The C++ Utility Library
E.1 Introduction
E.2 AbstractMutex
E.3 Cache
E.4 CtrlCHandler
E.5 Exception
E.6 generateUUID
E.7 Handle Template
E.8 Handle Template Adaptors
E.9 Shared and SimpleShared
E.10 Threads and Synchronization Primitives
E.11 Time
E.12 Timer and TimerTask
E.13 Unicode and UTF‑8 Conversion Functions
E.14 Version Information
Appendix F
The Java Utility Library
F.1 Introduction
F.2 The IceUtil Package
F.3 The Ice.Util Class
Appendix G
The .NET Utility Library
G.1 Introduction
G.2 Communicator Initialization Methods
G.3 Identity Conversion
G.4 Property Creation Methods
G.5 Proxy Comparison Methods
G.6 Stream Creation
G.7 UUID Generation
G.8 Version Information
Appendix H
Windows Services
H.1 Introduction
H.2 Installing a Windows Service
H.3 The Ice Service Installer
H.4 Manual Installation
H.5 Troubleshooting
Appendix I
Binary Distributions
I.1 Introduction
I.2 Developer Kits
I.3 Guidelines
Appendix J
License Information
J.1 Definitions
J.2 Fair Use Rights
J.3 License Grant
J.4 Restrictions
J.5 Representations, Warranties and Disclaimer
J.6 Limitation on Liability
J.7 Termination
J.8 Miscellaneous
Bibliography

Table of Contents Previous Next
Logo