The Internet Communications Engine (Ice)

Slides:



Advertisements
Similar presentations
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
Advertisements

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 9 Distributed Systems Architectures Slide 1 1 Chapter 9 Distributed Systems Architectures.
Common Object Request Broker Architecture (CORBA) By: Sunil Gopinath David Watkins.
CORBA - Common Object Request Broker Architecture.
Seminarium on Component-based Software Engineering Jan Willem Klinkenberg CORBA.
Component-based Software Engineering Marcello Bonsangue LIACS – Leiden University Fall 2005 Component Model Comparison.
Chapter 17: Client/Server Computing Business Data Communications, 4e.
Distributed Systems Architectures
CORBA Case Study By Jeffrey Oliver March March 17, 2003CORBA Case Study by J. T. Oliver2 History The CORBA (Common Object Request Broker Architecture)
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Distributed Service Architectures Yitao Duan 03/19/2002.
1. Introducing Java Computing  What is Java Computing?  Why Java Computing?  Enterprise Java Computing  Java and Internet Web Server.
Middleware Technologies compiled by: Thomas M. Cosley.
II. Middleware for Distributed Systems
Ch 12 Distributed Systems Architectures
Component Based Systems Analysis Introduction. Why Components? t Development alternatives: –In-house software –Standard packages –Components 60% of the.
Object Based Operating Systems1 Learning Objectives Object Orientation and its benefits Controversy over object based operating systems Object based operating.
Beyond DHTML So far we have seen and used: CGI programs (using Perl ) and SSI on server side Java Script, VB Script, CSS and DOM on client side. For some.
Introduction to Ice Copyright © ZeroC, Inc. Ice Programming with Java 1. Introduction to Ice.
Introduction to distributed systems Dr. S. Indran 23 January 2004.
Location Based Information Service using CORBA CS597 Direct Reading Madhu Narayanan & Rahul Vaghela Advisor: Dr. Yugi Lee.
J2EE Structure & Definitions Catie Welsh CSE 432
1 Distributed Systems Distributed Objects & Remote Invocation II (CORBA VS DCOM) Dr. Sunny Jeong. With Thanks to.
1 of of 25 3 of 25 ORBs (Object Request Broker) – A distributed software bus for communication among middleware services and applications – To.
Abhishek Bachchan Vishal Patangia
Introduction to CORBA University of Mazandran Science & Tecnology By : Esmaill Khanlarpour January
CORBA/IDL Common Object Resource Broker Architecture (CORBA) Interface Definition Language (IDL) Object Management Group (OMG) ( Specification.
SEMINOR. INTRODUCTION 1. Middleware is connectivity software that provides a mechanism for processes to interact with other processes running on multiple.
Distributed Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Chapter 17: Client/Server Computing Business Data Communications, 4e.
Distributed Objects and Middleware. Sockets and Ports Source: G. Coulouris et al., Distributed Systems: Concepts and Design.
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
CORBA Common Object Request Broker Architecture. Basic Architecture A distributed objects architecture. Logically, an object client makes method calls.
Presented By:- Sudipta Dhara Roll Table of Content Table of Content 1.Introduction 2.How it evolved 3.Need of Middleware 4.Middleware Basic 5.Categories.
The World Leader in Making Software Work Together ™ Copyright IONA Technologies 1999 Building CORBA Applications (On OS/390 ?) Dusty Rivers Enterprise.
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
S O A P ‘the protocol formerly known as Simple Object Access Protocol’ Team Pluto Bonnie, Brandon, George, Hojun.
An Introduction to Web Services Web Services using Java / Session 1 / 2 of 21 Objectives Discuss distributed computing Explain web services and their.
Tom Meyer, Iowa State SCT/Pixel Online Workshop June, 2001 CORBA Common Object Request Broker Architecture.
Distributed System Architectures Yonsei University 2 nd Semester, 2014 Woo-Cheol Kim.
Enterprise Computing Distribution and components.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 15 System Architecture III.
CORBA Antonio Vasquez, John Shelton, Nidia, Ruben.
1 Distributed Systems Architectures Distributed object architectures Reference: ©Ian Sommerville 2000 Software Engineering, 6th edition.
The Object-Oriented Thought Process Chapter 13
CIIT-Human Computer Interaction-CSC456-Fall-2015-Mr
Common Object Request Broker Architecture (CORBA)
The Client/Server Database Environment
WEB SERVICES.
CORBA Alegria Baquero.
CORBA Within the OS & Its Implementation
#01 Client/Server Computing
Ch > 28.4.
Knowledge Byte In this section, you will learn about:
Inventory of Distributed Computing Concepts and Web services
Component-Based Software Engineering: Technologies, Development Frameworks, and Quality Assurance Schemes X. Cai, M. R. Lyu, K.F. Wong, R. Ko.
Interpreter Style Examples
CORBA Alegria Baquero.
Inventory of Distributed Computing Concepts
Component--based development
Tango in a Nutshell 31/12/2018.
Chapter 17: Client/Server Computing
Quality Assurance for Component-Based Software Development
Design Yaodong Bi.
CCNA 4 v3.1 Module 6 Introduction to Network Administration
Message Passing Systems Version 2
Copyright 1999 B.Ramamurthy
#01 Client/Server Computing
Message Passing Systems
Presentation transcript:

The Internet Communications Engine (Ice) ZeroC’s object-oriented distributed middleware platform Presented by Michael Borosh UChicago MPCS 51025 QuickTalk

The Internet Communications Engine (Ice) Core product of ZeroC (small private company based in Jupiter, FL; founded in 2002; partial client list above) Available under GPL and commercial license

Context: CORBA Common Object Request Broker Architecture (CORBA)—middleware that enables communication between software components (which can be written in multiple computer languages and running on multiple computers). Broker design pattern (distributed system with decoupled components interacting by remote service invocations). Standard, defined by the Object Management Group (OMG, http://www.omg.org/; also associated with UML) Provides RPC invocation through a middle layer called the ORB Interface Definition Language (IDL)—mapping to Ada, C, C++, C++11, Lisp, Ruby, Smalltalk, Java, COBOL, PL/I, Java Michi Henning Essay: The Rise and Fall of Corba (http://queue.acm.org/detail.cfm?id=1142044; http://www.zeroc.com/riseAndFallOfCorba.html)

How Ice Differs From CORBA No “Design By Committee” Specification Language for Ice (SLICE) vs IDL Language Mappings: C++, Java, Python, Ruby, PHP, .NET Working with databases: SLICE can describe the state of persistent Ice objects Working with C++: C++ Mapping Based on STL No “Any” Type (something extensively used in CORBA) Asynchronous Message Invocation (supported by few CORBA products) Partial list. Source: http://www.zeroc.com/iceVsCorba.html

Ice Advantages Disadvantages Performance (http://www.zeroc.com/articles/IcePerformanceWhitePaper.pdf) Ease of use Forums/Support Documentation Disadvantages Lack of standardization Price

Ice Features IceStorm—service to efficiently distribute messages that have one source but many destinations (pub-sub); event subscriptions can be made persistent and there are tools for managing dysfunctional clients IceFIX—integrates the FIX protocol into Ice (http://www.zeroc.com/labs/icefix/)

Installation—Ice 3.5.1 Download at: http://zeroc.com/download.html Working with AWS ec2, I installed on Ubuntu 12.04 and 13.10 with minimal success before trying Red Hat Enterprise Linux 6, which I can recommend Note: uses Third-Party Frameworks including Qt that have to be compatibly installed and configured. Also, I had to separately install php-zeroc-ice package. Nice ZeroC supplied Demo—Chat Application (http://zeroc.com/chat/index.html)

Chat Demo: Requirements Client/Server architecture (clients are active entities that send requests while servers are passive entities that respond to requests) Minimal or no server administration Traffic between client/server must be secure Must work with firewalls Clients may be implemented in various languages Minimal network traffic as clients may have bandwidth constraints Source: http://zeroc.com/articles/chat.pdf

Chat Demo: Push Model Push Model: Reversal of normal roles. Clients provide an Ice object with an operation that the chat server invokes (asynchronously) to deliver messages to clients. // Slice module Chat { interface ChatRoomCallback // Implemented by clients void init(Ice::StringSeq users); //server invokes init when client first connects to the chat room, users informs clients of currently connected users void join(long timestamp, string name); void leave(long timestamp, string name); void send(long timestamp, string name, string message); //server invokes send when a client sends a message }; Source: http://zeroc.com/articles/chat.pdf

Chat Demo: Glacier2 Router Bidirectional connections—allows requests to flow in both directions, without regard to which side opened the connection. Server can invoke methods without having to open up a new connection from server to client. Source: http://zeroc.com/articles/chat.pdf

Glacier2::SessionPrx ChatSessionManagerI::create( const string& name, const Glacier2::SessionControlPrx& sessionControl, const Ice::Current& c) { string vname; try { vname = validateName(name); _chatRoom->reserve(vname); } … Glacier2::SessionPrx proxy; ChatSessionIPtr session = new ChatSessionI(_chatRoom, vname, _trace, _logger); proxy = Glacier2::SessionPrx::uncheckedCast( c.adapter -> addWithUUID(session)); Ice::IdentitySeq ids; ids.push_back(proxy->ice_getIdentity()); sessionControl->identities()->add(ids); if(_trace) { ostringstream os; os<< "Push session created for user '" << vname << "'."; _logger->trace("info", os.str()); } return proxy; } Session example

Code Sample Ice::Long Send Example ChatRoom::send(const string& name, const string& message) { IceUtil::Mutex::Lock sync(_mutex); IceUtil::Int64 timestamp = IceUtil::Time::now().toMilliSeconds(); PollingChat::MessageEventPtr e = new PollingChat::MessageEvent(timestamp, name, message); for(ChatRoomCallbackMap::iterator q = _members.begin(); q != _members.end(); ++q) q->second->send(e); } if(_trace) ostringstream os; os << "User '" << name << "' sent a message to the chat room."; _logger->trace("info", os.str()); return timestamp; Send Example Code Sample Source:: http://zeroc.com/articles/chat.pdf

Overall Architecture

Training / Resources Documentation http://doc.zeroc.com/display/Doc/Home Manual [3000+ Pages] (http://www.zeroc.com/Ice-Manual.pdf) Training (http://www.zeroc.com/training/index.html) C++ Deck [300+ Slides] (http://www.zeroc.com/download/Training/2.0/CPP_Slides.pdf) C++ Student Workbook [400+ Slides] (http://www.zeroc.com/download/Training/2.0/CPP_StudentWorkbook.pdf) Chat Demo Source (http://zeroc.com/chat/download.html) Technical Articles (http://zeroc.com/chat/articles.html)

Questions?