II. Ice Overview
1.3) slice (standard ice LANGUAGE)
1.3.1) Overview
Each ICE object has an interface with some operations. Interfaces, operations, and data types exchanged between the customer and the server are defined in the slice language. The Slice language is a way to define a client-server contract independent of a specific programming language. Slice defines an API compiled by a compiler into a specific programming language. That is to say, the API that corresponds to the defined interface and type is grouped by the generated code.
1.3.2) Language ing (will be detailed later)
1.3.3) structure of customers and servers
Both the client and server are composed of the following code: application code, library code, and code generated according to the slice definition:
A) the core of ice provides support for remote communication between the client and the server.
B) the general part of the ice core, that is, the part unrelated to the specific type defined by slice, can be accessed through the ice API.
C) The proxy code is generated according to the slice definition. Therefore, it corresponds to the type of hot data of the slice-Defined Object.
1.3.4) Ice Protocol
Ice provides an RPC protocol that can either use TCP/IP or UDP as the underlying transmission mechanism. In addition, ice allows SSL to be used as a transmission mechanism to encrypt the communication between the customer and the server.
The ice Protocol defines the Message Type (request or reply), Protocol state machine, encoding rules, and message content.
1.3.5) Object Persistence
Ice has a built-in Object persistence service called freeze. Freeze allows us to store the object state in the database: first use slice to define the State of an object to be stored. The freeze compiler will generate code and use
The status of objects stored and retrieved from the database.
1.4) Ice Service
Ice provides a complete server platform for distributed application development. However, real applications often require far-reaching communication capabilities, including starting servers on demand, distributing agents to customers, distributing abnormal parts, configuring applications, and distributing application patches.
1.4.1) icepack: The locating server of the IC. It is used to resolve the symbolic adapter name to a protocol-address pair when binding the description.
1.4.2) icebox: a simple application server that can be used to coordinate the start and stop of many application components. Application components can be deployed as dynamic libraries rather than processes.
1.4.3) icestorm: icestorm is a publish-subscribe service that can remove coupling between customers and servers. Essentially, it acts as an event distribution switch. The publisher sends the event to the subscriber.
1.4.4) icepatch: icepatch is a software repair service that distributes software updates to customers.
1.4.5) Glacier: Ice's Firewall Service.
1.5) Advantages of ice in architecture
It provides application developers with the following benefits:
A) Object-oriented semantics: "online" retains the object-oriented model.
B) supports synchronous and asynchronous operation calls and dispatch, and provides a publishing-subscription message transmission mechanism through icestorm.
C) multiple interfaces are supported: objects can provide multiple irrelevant interfaces and span these interfaces to maintain a single object ID.
D) machine independence: customers and servers are isolated from the underlying machine architecture.
E) Language independence: customers and servers can be deployed in different languages. The Slice defines the interface contract between the two.
F) implementation independence: the internal implementation between the customer and the server is hidden for the other party.
G) transmission mechanism independence: customers and server code do not need to understand the underlying transmission mechanism. Currently, ice uses TCP/IP and UDP as the transmission protocol.