• Stars
    star
    2,008
  • Rank 23,060 (Top 0.5 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 9 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

All-in-one solution for creating networked applications with RPC, pub/sub, server deployment, and more.

Join the chat at https://gitter.im/zeroc-ice/ice GPLv2 Static Badge

The Ice framework

Ice helps you build networked applications with minimal effort. By taking care of all interactions with low-level network programming interfaces, Ice allows you to focus your efforts on your application logic. You don't need to worry about details such as opening network connections, encoding and decoding data for network transmission, or retrying failed connection attempts (to name just a few of dozens of such low-level details).

Downloads | Examples | Documentation

RPCs with Ice

Remote procedure calls (RPCs) are at the heart of the Ice framework.

You create RPCs with an easy 2-step process:

  1. Define the contract between your client and your server with the Slice language—Ice's IDL.
  2. Run the Slice compiler on these Slice definitions to generate stubs in the programming language(s) of your choice.

For example:

// The contract specified using Slice.
interface Hello
{
    // The caller says "hello".
    void sayHello();
}
# Compile the Slice contract with the Slice compiler for C++ (slice2cpp)
slice2cpp Hello.ice
// C++ client

// Call operation sayHello on a remote object that implements
// interface Hello using the generated proxy class (HelloPrx).
helloPrx->sayHello();
// C++ server

// Implements the Hello interface by deriving from the generated
// Hello abstract base class.
class Printer final : public Hello
{
public:

    string sayHello(const Ice::Current&) final
    {
        cout << "Hello World!" << endl;
    }
};

You can use any supported programming language for your client and server. For example, a Python client could call a C++ server; neither side knows the programming language used by the other side.

Complete solution with a uniform API

The Ice framework provides everything you need to build networked applications:

The Ice API is defined almost entirely using Slice; as a result, it is essentially the same in all programming languages.

Building Ice from source

C++ | C# | Java | JavaScript/TypeScript | MATLAB | PHP | Python | Ruby | Swift

Copyright and license

Ice is a single-copyright project: all the source code in this ice repository is Copyright © ZeroC, Inc., with very few exceptions.

As copyright owner, ZeroC can license Ice under different license terms, and offers the following licenses for Ice:

  • GPLv2, a popular open-source license with strong copyleft conditions (the default license)
  • Commercial or closed-source licenses

If you license Ice under GPLv2, there is no license fee or signed license agreement: you just need to comply with the GPLv2 terms and conditions. ZeroC also grants a few exceptions to the GPLv2 terms and conditions.

If you purchase a commercial or closed-source license for Ice, you must comply with the terms and conditions listed in the associated license agreement; the GPLv2 terms and conditions do not apply.

The Ice software itself remains the same: the only difference between an open-source Ice and a commercial Ice are the license terms.

More Repositories

1

ice-demos

Sample programs for Ice
C++
323
star
2

mcpp

Fork of mcpp, a C/C++ preprocessor
C
62
star
3

ice-builder-visualstudio

Configure Ice Builder for MSBuild from Visual Studio
C#
29
star
4

freeze

Persistent Storage for Ice Objects
C++
24
star
5

ice-builder-gradle

Gradle plug-in to automate the compilation of Slice files to Java
Groovy
24
star
6

ice-builder-xcode

Shell script to compile Slice files to C++ or Objective-C in Xcode
Shell
23
star
7

ice-protobuf

Sample applications to demonstrate how to integrate Google Protocol Buffers with Ice
Python
21
star
8

icee

Ice 3.6 for embedded Linux. For Ice 3.7+, use the ice repo.
Makefile
17
star
9

icetouch

Ice on iOS for versions 3.6 and older. For 3.7+, use the ice repo.
C++
15
star
10

ice-dockerfiles

Dockerfiles for ZeroC Ice
Dockerfile
13
star
11

datastorm

Data centric pub/sub framework based on Ice
C++
13
star
12

ice-builder-ant

Ant tasks to automate the compilation of Slice files to Java
Java
11
star
13

npm-slice2js

Npm package for the Slice to JavaScript compiler
Python
10
star
14

ice-builder-eclipse

Eclipse plugin to automate the compilation of Slice files to Java
Java
9
star
15

icecertutils

Python library for creating certificates
Python
8
star
16

ice-packaging

Files used to create Ice packages
Python
7
star
17

bower-ice

Bower package for Ice for JavaScript
JavaScript
6
star
18

homebrew-tap

ZeroC Homebrew Tap
Ruby
6
star
19

ice-builder-msbuild

Support for Slice (.ice) source files in MSBuild projects for C++ and C#
C#
5
star
20

meta-zeroc

Yocto BSP Layer for ZeroC products
BitBake
5
star
21

gulp-ice-builder

Gulp plugin to automate the compilation of Slice files to JavaScript
JavaScript
5
star
22

vscode-slice

Slice syntax highlighter for Visual Studio Code
Rust
5
star
23

ice-debian-packaging

Ice debian packaging repository. For Ice development use the zeroc-ice/ice repository.
C++
3
star
24

sublime-slice

Slice Package for Sublime Text
2
star
25

ice-ansible

Modules for use with Ice and Ice services.
Python
1
star
26

bzip2

bzip2 data compressor
C
1
star
27

github-actions

GitHub Actions used by ZeroC repositories
Python
1
star