Revolutionizing Distributed Applications: The Power of Internet Communications Engine (ICE)
The Internet Communications Engine (ICE) revolutionizes middleware by enabling developers to create distributed applications without deep networking knowledge. Unlike legacy solutions such as .NET, Java RMI, CORBA, and SOAP, which suffer from limitations or complexity, ICE offers powerful object-oriented, efficient designs that are language and platform-independent. With features like threading support, built-in security, and automatic code generation across languages like C++, Java, and Python, ICE enhances the application development experience while ensuring consistent data types and efficient communication.
Revolutionizing Distributed Applications: The Power of Internet Communications Engine (ICE)
E N D
Presentation Transcript
ICE By Matt Deakyne, Adam Krasny, and Derek Meek
History of ICE • ICE stands for Internet Communications Engine • Object-oriented middleware • allowed programmers to build distributed applications without having to be a networking guru • Middleware before ICE • .NET • Java RMI • CORBA • SOAP
Disadvantages of other options • .Net – only supports a few languages • Java RMI – only for Java • CORBA – unnecessarily complex • SOAP – inefficient, unsecured
Goals of ICE • Object-oriented middleware • Features that support development of realistic distributed applications • Avoid unnecessary complexity • Efficiency in bandwidth, memory use, and CPU overhead • Built-in security
Goals of ICE Summary: “Let’s build a middleware platform that is more powerful than CORBA, without making all of CORBA’s mistakes.”
Advantages of ICE • Independent of Machine, Language, Operating System, Implementation and Transport • Supports threading, multiple interfaces, and synchronous/asynchronous messaging • Available source code
How ICE works • Uses slice (specification language for ICE) to describe the types and object interfaces used by an application • Description independent of implementation • Uses compliers to generate code in specific language • C++, Java, C#, Python, Ruby, PHP • Purely declarative language
How ICE works (cont’d) • Generates Client and Server • Can be implemented in two different languages • Communicate through slice definitions • Can pass objects and make calls on each other
How we used ICE • Need ICE to integrate three main elements • CRM Database • Database in MySQL • Tracking Service • Java • Optimization Engine • Java
Short-Term Goals • Automatic updating to the CRM upon delivery • Automatic recalculation of routes with new orders • Web service allowing customers track order status
CRM Database • Accessed through web server when customers place orders, view current delivery status • Allow tracking service to update delivery status • Allow optimization engine to obtain new orders • Allow optimization engine to post optimal routes
Optimization Engine • Reorganizes orders for maximum efficiency • Needs to obtain new orders from CRM • Needs to obtain current routes from tracking service • Post routes back to tracking service
Tracking Service • Knows where all trucks are at all times • Post new routes from optimization engine • Send current routes to optimization engine • Send delivery notification to CRM Database
Consistent Data Types • ICE enforced data type coherency between platforms • ICE run time converted abstract definitions into concrete types
Long-Term Goals • Allow customers to place track orders online • Client auctions, bid for shipment
Conclusion • ICE is aggressively expanding • Support of PHP, Python, Ruby makes it unique • Very powerful, yet simple