Skip to content
/ ice Public
forked from zeroc-ice/ice

Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.

License

Notifications You must be signed in to change notification settings

externl/ice

This branch is 4 commits ahead of, 1534 commits behind zeroc-ice/ice:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 18, 2024
314441c · Jan 18, 2024
Dec 27, 2023
Jan 18, 2024
Jul 27, 2022
Jan 11, 2024
Jan 17, 2024
Jan 17, 2024
Jan 26, 2021
Jan 15, 2024
Jan 12, 2024
Dec 20, 2023
Jan 13, 2024
Jan 18, 2024
Jan 18, 2024
Jan 17, 2024
Jan 17, 2024
Jan 11, 2024
Jan 11, 2024
Jan 18, 2024
Nov 6, 2017
Jan 18, 2024
May 11, 2015
Mar 28, 2017
Jun 7, 2017
Feb 17, 2019
Dec 7, 2017
Dec 6, 2023
Jan 11, 2024
Feb 21, 2023
Sep 19, 2023
Sep 19, 2023
Jan 19, 2019
May 3, 2017
Jan 19, 2019
Dec 19, 2023
Jun 2, 2020
Feb 10, 2021
Jan 9, 2024
Oct 25, 2023
Mar 2, 2018

Repository files navigation

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 : public Hello
{
public:

    virtual string sayHello(const Ice::Current&) override
    {
        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 | Objective-C | 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.

About

Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 41.7%
  • Java 20.1%
  • C# 14.2%
  • Python 5.1%
  • Swift 3.9%
  • Slice 3.8%
  • Other 11.2%