Введение
Программное обеспечение с открытым исходным кодом
Internet Communications Engine, или Ice, — это RPC-фреймворк с открытым исходным кодом, разработанный ZeroC. Он предоставляет SDK для C++, C#, Java, JavaScript, MATLAB, Objective C, PHP, Python, Ruby и Swift и может работать на различных операционных системах, включая Linux, Windows, macOS, iOS и Android. Ice реализует запатентованный протокол коммуникаций прикладного уровня, называемый протоколом Ice, который может работать поверх TCP, TLS, UDP, WebSocket и Bluetooth. Как следует из названия, Ice подходит для приложений, взаимодействующих через Интернет, и включает в себя функциональность для преодоления брандмауэров.
История
Первоначально выпущенный в феврале 2003 года, Ice был разработан под влиянием архитектуры Common Object Request Broker Architecture (CORBA) и создан несколькими ведущими разработчиками CORBA, включая Мичи Хеннинга. Однако, по заявлению ZeroC, он оказался меньше и проще CORBA, поскольку разрабатывался небольшой группой опытных специалистов, а не в результате коллективного проектирования. В 2004 году сообщалось, что Ice использовался в игре "Wish", разработанной компанией Mutable Realms. В 2008 году стало известно, что Солнечная обсерватория Большого Медведя использует это программное обеспечение с 2005 года. Репозиторий исходного кода Ice размещен на GitHub с мая 2015 года.
Компоненты
Компоненты Ice включают в себя объектно-ориентированный вызов удаленных объектов, репликацию, сетевые вычисления, механизмы отказоустойчивости, балансировку нагрузки, обход межсетевых экранов и сервисы публикации-подписки. Для доступа к этим сервисам приложения связываются с библиотекой или сборкой, которая генерируется из языково-независимого синтаксиса, подобного IDL, под названием Slice.
Ледяная буря
является объектно-ориентированным фреймворком публикации-подписки, который также поддерживает федерацию и качество обслуживания. В отличие от других фреймворков публикации-подписки, таких как Rendezvous от Tibco Software или SmartSockets, содержимое сообщений состоит из объектов четко определенных классов, а не из структурированного текста.
IceGrid
является набором фреймворков, предоставляющих объектно-ориентированное распределение нагрузки, отказоустойчивость, обнаружение объектов и сервисы реестра.
IcePatch (Ледяная повязка)
облегчает развертывание программного обеспечения, основанного на ICE. Например, пользователь, желающий развернуть новую функциональность и/или исправления на нескольких серверах, может использовать IcePatch.
Ледник
Это сервис на основе прокси, обеспечивающий связь через межсетевые экраны, тем самым превращая ICE в интернет-коммуникационный механизм.
IceBox (коробка для льда)
Icebox — это контейнер сервисно-ориентированной архитектуры для исполняемых служб, реализованных в виде библиотек DLL или SO. Это более легкая альтернатива созданию отдельных исполняемых файлов для каждой службы.
Клочок
Slice — это запатентованный файловый формат ZeroC, который программисты используют для редактирования языково-независимых объявлений и определений классов, интерфейсов, структур и перечислений. Файлы определений Slice служат входными данными для процесса генерации заглушек. Заглушка, в свою очередь, связывается с приложениями и серверами, которым необходимо взаимодействовать друг с другом на основе интерфейсов и классов, объявленных и определенных в файлах Slice. Помимо CORBA, классы и интерфейсы поддерживают наследование и абстрактные классы. Кроме того, Slice предоставляет возможности конфигурации в виде макросов и атрибутов для управления процессом генерации кода. Например, можно задать директиву для генерации конкретного шаблона `std::list<double>` вместо шаблона `std::vector<double>`, используемого по умолчанию.