ICE (от Internet Communications Engine) - is an object-oriented middleware, which uses mechanism of Remote procedure call.
Smartswitch uses ICE to provide API to its functionality.

This API allows to invoke functionality of Smartswitch from third-party applications using Retote procedure call.
Remote procedure calls are transferred through encrypted channel to application-router glacier2router, which is launched on Smartswitch server.

This application performs:
  • authentication of API uses
  • data encryption/decryption.

Then glacier2router transfers command for execution to ice_handler.

To accomplish this, third-party applications just invoke various functions in a native way, just as they invoked functions from standard libraries.
All the middleware implementation of Remote procedure call is hidden to API user.
Therefore, developer which uses API, doesn't have to understand the details of used protocols and encryption/decryption implementation.

Third-party applications could be (but not limited to):
  • web-sites
  • call-shop applications
  • billing applications
  • call-center applications
  • etc

ICE contains:
- various supported programming languages to develop on
- integrated means of data transfer protection based on SSL
- developer-friendly object-oriented API in generated programming interfaces
- interface description language Slice, which allows to easily add new interfaces and change old ones
- automated system of generation of header files and object modules according to chosen development programming language and basing on uniform interface description done by Slice language
- well-designed version system, which allows to add new interfaces (for example, on Smartswitch upgrade), without braking existing implementation (which is already used by customer)
- strict type system, which makes source code in interface descriptions, which are done by Slice, always synchronized with source code on server side and, in case if configured correctly, client-side.

Alailable languages to develop using ICE API:
- C++
- C#
- Java
- Python
- Ruby

Our company makes a big bet on using ICE.
This middleware is already used inside Smartswitch for Clustering setups for inter-server communication.
Also all future products, connected with Smartswitch, will base on this middleware.

Step-by-step instruction on development using ICE API is located in section Using ICE API.


In each Smartswitch installation ICE API of matching version is localed on URL https://name.of.your.server/ice/.
For example,
After software is updated, this location automatically is updated with actual files, which match the Smartswitch version.

Reference documents on functions of actual API version is located on URL https://name.of.your.server/ice/html/ and is generated automatically when new Smartswitch version is built.
Therefore, reference documents are always synchronized with published Smartswitch version.

Inside .ice files which are located in root directory there is located interface descriptions by Slice language.
You can generate from them header files and object modules to link for your language by yourself, in case if you have ICE package installed on your host.
Or you can use already generated interfaces which are located in folders which match to names of programming languages.
Например, https://имя.вашего.сервера/ice/cpp/, https://имя.вашего.сервера/ice/php/ итп.
Generated interfaces are generated automatically when Smartswitch software is built, therefore they are always synchronized with installed Smartswitch version.

Also there are some examples, they are located on URL https://name.of.your.servcer/ice/examples/.

Русский перевод

ice.gif (20.5 KB) Andrii Arsirii, 01/02/2014 12:23 PM

Also available in: PDF HTML TXT