Table of Contents Previous Next
Logo
Copyright © 2003-2008 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 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 C#-Specific Metadata Directives
14.15 slice2cs Command-Line Options
14.16 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-Python Mapping
18.1 Chapter Overview
18.2 Introduction
18.3 Mapping for Identifiers
18.4 Mapping for Modules
18.5 The Ice Module
18.6 Mapping for Simple Built‑In Types
18.7 Mapping for User-Defined Types
18.8 Mapping for Constants
18.9 Mapping for Exceptions
18.10 Mapping for Run-Time Exceptions
18.11 Mapping for Interfaces
18.12 Mapping for Operations
18.13 Exception Handling
18.14 Mapping for Classes
18.15 Code Generation
18.16 Using Slice Checksums
Chapter 19
Developing a File System Client in Python
19.1 Chapter Overview
19.2 The Python Client
19.3 Summary
Chapter 20
Server-Side Slice-to-Python Mapping
20.1 Chapter Overview
20.2 Introduction
20.3 The Server-Side main Program
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 Python
21.1 Chapter Overview
21.2 Implementing a File System Server
21.3 Thread Safety
21.4 Summary
Chapter 22
Client-Side Slice-to-Ruby 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 The main Program
22.17 Using Slice Checksums
Chapter 23
Developing a File System Client in Ruby
23.1 Chapter Overview
23.2 The Ruby Client
23.3 Summary
Chapter 24
Ice Extension for PHP
24.1 Chapter Overview
24.2 Introduction
24.3 Configuration
24.4 Client-Side Slice-to-PHP Mapping
Chapter 25
Developing a File System Client in PHP
25.1 Chapter Overview
25.2 The PHP Client
25.3 Summary
Chapter 26
Ice Properties and Configuration
26.1 Chapter Overview
26.2 Properties
26.3 Configuration Files
26.4 Setting Properties on the Command Line
26.5 The Ice.Config Property
26.6 Command-Line Parsing and Initialization
26.7 The Ice.ProgramName property
26.8 Using Properties Programmatically
26.9 Unused Properties
26.10 Summary
Chapter 27
Threads and Concurrency with C++
27.1 Chapter Overview
27.2 Introduction
27.3 Library Overview
27.4 Mutexes
27.5 Recursive Mutexes
27.6 Read-Write Recursive Mutexes
27.7 Timed Locks
27.8 Monitors
27.9 Condition Variables
27.10 Efficiency Considerations
27.11 Threads
27.12 Portable Signal Handling
27.13 Summary
Chapter 28
The Ice Run Time in Detail
28.1 Introduction
28.2 Communicators
28.3 Communicator Initialization
28.4 Object Adapters
28.5 Object Identity
28.6 The Ice::Current Object
28.7 Servant Locators
28.8 Server Implementation Techniques
28.9 The Ice Threading Model
28.10 Proxies
28.11 The Ice::Context Parameter
28.12 Connection Timeouts
28.13 Oneway Invocations
28.14 Datagram Invocations
28.15 Batched Invocations
28.16 Testing Proxies for Dispatch Type
28.17 Location Services
28.18 Administrative Facility
28.19 The Ice::Logger Interface
28.20 The Ice::Stats Interface
28.21 Location Transparency
28.22 Dispatch Interceptors
28.23 String Conversion
28.24 Developing a Plugin
28.25 A Comparison of the Ice and CORBA Run Time
28.26 Summary
Chapter 29
Asynchronous Programming
29.1 Chapter Overview
29.2 Introduction
29.3 Using AMI
29.4 Using AMD
29.5 Summary
Chapter 30
Facets and Versioning
30.1 Introduction
30.2 Concept and APIs
30.3 The Versioning Problem
30.4 Versioning with Facets
30.5 Facet Selection
30.6 Behavioral Versioning
30.7 Design Considerations
30.8 Summary
Chapter 31
Object Life Cycle
31.1 Chapter Overview
31.2 Introduction
31.3 Object Existence and Non-Existence
31.4 Life Cycle of Proxies, Servants, and Ice Objects
31.5 Object Creation
31.6 Object Destruction
31.7 Removing Cyclic Dependencies
31.8 Life Cycle and Parallelism
31.9 Object Identity and Uniqueness
31.10 Object Life Cycle for the File System Application
31.11 Avoiding Server-Side Garbage
31.12 Summary
Chapter 32
Dynamic Ice
32.1 Chapter Overview
32.2 Streaming Interface
32.3 Dynamic Invocation and Dispatch
32.4 Asynchronous Dynamic Invocation and Dispatch
32.5 Summary
Chapter 33
Connection Management
33.1 Chapter Overview
33.2 Introduction
33.3 Connection Establishment
33.4 Active Connection Management
33.5 Obtaining a Connection
33.6 Connection Closure
33.7 Bidirectional Connections
33.8 Summary
Chapter 34
The Ice Protocol
34.1 Chapter Overview
34.2 Data Encoding
34.3 Protocol Messages
34.4 Compression
34.5 Protocol and Encoding Versions
34.6 A Comparison with IIOP
Chapter 35
IceGrid
35.1 Chapter Overview
35.2 Introduction
35.3 IceGrid Architecture
35.4 Getting Started
35.5 Using Deployment
35.6 Well-known Objects
35.7 Templates
35.8 IceBox Integration
35.9 Object Adapter Replication
35.10 Load Balancing
35.11 Sessions
35.12 Registry Replication
35.13 Application Distribution
35.14 Administrative Sessions
35.15 Glacier2 Integration
35.16 XML Reference
35.17 Variable and Parameter Semantics
35.18 Property Set Semantics
35.19 XML Features
35.20 Server Reference
35.21 Administrative Facility Integration
35.22 Securing IceGrid
35.23 Administrative Utilities
35.24 Server Activation
35.25 Solving Problems
35.26 Summary
Chapter 36
Freeze
36.1 Chapter Overview
36.2 Introduction
36.3 The Freeze Map
36.4 Using a Freeze Map in the File System Server
36.5 Freeze Evictors
36.6 Using the Freeze Evictor in a File System Server
36.7 The Freeze Catalog
36.8 Backups
36.9 Summary
Chapter 37
FreezeScript
37.1 Chapter Overview
37.2 Introduction
37.3 Database Migration
37.4 Transformation Descriptors
37.5 Using transformdb
37.6 Database Inspection
37.7 Using dumpdb
37.8 Descriptor Expression Language
37.9 Summary
Chapter 38
IceSSL
38.1 Chapter Overview
38.2 Introduction
38.3 Using IceSSL
38.4 Configuring IceSSL
38.5 Programming with IceSSL
38.6 Advanced Topics
38.7 Setting up a Certificate Authority
38.8 Summary
Chapter 39
Glacier2
39.1 Chapter Overview
39.2 Introduction
39.3 Using Glacier2
39.4 Callbacks
39.5 Router Security
39.6 Session Management
39.7 Dynamic Filtering
39.8 Request Buffering
39.9 Request Contexts
39.10 Firewalls
39.11 Advanced Client Configurations
39.12 IceGrid Integration
39.13 Summary
Chapter 40
IceBox
40.1 Chapter Overview
40.2 Introduction
40.3 Developing a Service
40.4 Starting IceBox
40.5 IceBox Administration
40.6 Summary
Chapter 41
IceStorm
41.1 Chapter Overview
41.2 Introduction
41.3 Concepts
41.4 IceStorm Interface Overview
41.5 Using IceStorm
41.6 Publishing to a Specific Subscriber
41.7 Highly Available IceStorm
41.8 IceStorm Administration
41.9 Topic Federation
41.10 Quality of Service
41.11 Delivery Mode
41.12 Configuring IceStorm
41.13 Summary
Chapter 42
IcePatch2
42.1 Chapter Overview
42.2 Introduction
42.3 Using icepatch2calc
42.4 Running the Server
42.5 Running the Client
42.6 Object Identities
42.7 The IcePatch2 Client Utility Library
42.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 Plugin 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