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
Overview of Application
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