When companies build custom solutions, they often believe they can get either performance and throughput, or interoperability, but not both. Both of these things are important to a company. Performance sounds like a technical goodness, but it can have direct business benefits, like the difference between having a just-in-time inventory management system, and a not-quite-in-time system. Interoperability also sounds pretty geeky, but it is the thing that enables re-use of existing systems, flexibility in IT, and as a result, better ROI and better business agility. Are these two things –performance and interoperability – always by nature opposed? Further, is the need for performance and standards so important that organizations should buy off the shelf software even when it means tailoring the business to fit the software?
Ultimately, we concluded the best way to move the debate forward was to highlight the relationship between performance and standards through the development of a custom application. With this in mind, we decided to take an existing application, specifically IBM’s Trade 6.1 performance application, and rebuild it as a .NET application. The goal was to see:
· How long it would take to develop
· How hard it was to use components of each respective application in a mix-and-match format via Web Services standards
· How performant the application was given the previous two points
While the promise of SOA has many layers, there are a couple of critical elements that must exist for organizations to adopt the new architecture. The first, re-use, has been a promise of almost every major technology wave for the last fifteen years. Components, Object Orientation and now Services have all promised to move the bar higher and higher towards a write once, use many times paradigm. While it is far too early to declare victory, early signs for SOA are positive. The second, which is arguably more important, is platform-independent interoperability. In theory, Service Orientation applications that leverage Web Services standards (WS* and others) empower application to application connectivity without the enormous investments required to mediate interactions.
Through the development of the Service Oriented .NET Stock Trader application we demonstrated several things. First, custom development of a Services-Oriented Application using off the shelf technology from Microsoft (much of it in the base Windows platform) is as easy as you would expect it to be given Microsoft’s historical focus on developer empowerment. We invested less than 18 engineering days developing the application from scratch, using the Trade 6.1 application as a sort of functional model. Second, standards-based, Web Services Interop is easily within customers’ reach. IBM’s Trade 6.1 front-end JSP application, without modification, can seamlessly utilize the Windows Communication Foundation (WCF) C# services exposed by the .NET middle tier; and the ASP.NET Web client and the Windows Presentation Foundation (WPF) smart client likewise can both seamlessly utilize the J2EE/Java middle-tier services within IBM WebSphere 6.1. In addition to the benefits from simple interoperability, many organizations will find value in the ability to use components of one stack with components of another to build a new class of application that may have been challenging to deliver in isolation.
Rebuilding the IBM application with .NET allowed us to compare the performance of the two applications (.NET and IBM WebSphere / J2EE) on a variety of hardware configurations. That brings me to the third key learning. The performance of the .NET application (on the same hardware with all of the performance tuning recommendations from IBM) outperformed the J2EE application by significant margins in every application configuration). Here are the summary results:
· .NET 3.0 hosted on IIS with an Http binding and XML encoding offers 124% better throughput than the fastest WebSphere/EJB Web Service implementation tested; and 46% better throughput than the JDBC (no entity beans) WebSphere implementation tested.
· .NET 3.0 self-hosted over Http/XML offers 225% better throughput than the fastest WebSphere/EJB Web Service implementation tested; and 113% better throughput than the JDBC WebSphere implementation tested.
· .NET 3.0 with binary encoding over a TCP binding offers 488% better throughput than the fastest WebSphere EJB Web service implementation tested; and 284% better throughput than the JDBC WebSphere implementation tested. Using TCP/binary encoding with WCF is an interesting option, as (per the design of StockTrader) the service host can listen on both http/xml and TCP/binary endpoints simultaneously, still supporting any platform as a client with no extra programming required for the service. Wait, did you get that? No extra programming! It’s a configuration switch. And, this dual-mode communication is unique to WCF; there is no similar capability in the WebSphere Application Server today. Our tests show that significant performance gains are possible with .NET 3.0 and binary encoding, with the same Web Service programming model utilized. (The WCF TCP/Binary binding functionally replaces the previous .NET 2.0 binary remoting technology.)
In short, WCF enables people to get interoperability, and performance, at the same time. All the while leveraging the Windows platform with the .NET Framework, which means excellent developer productivity, good extensibility, a huge ecosystem, and so on.
We’ve shown it can be done in one particular scenario, but we hope that this effort will help organizations understand how to pragmatically deliver cross-platform Interop and help them understand the scalability / performance of .NET 3.0 for their own custom applications. To that end, we have drafted several papers on the application and have made the .NET application available for download. We encourage everyone who is interested to test it for themselves (download the respective .NET and WebSphere applications). We think those that do will get a sense for the value of Service Orientation, Standards-based Interop and the performance of .NET 3.0 / Windows Communication Foundation (WCF).
We will continue to evolve the application sample based on your feedback. Let us know what you think!