B2B Application Integration Using Web Services Nagarjuna Nagulapati Under the guidance of Dr. Daniel Andresen (Major Professor) Dr. Torben Amtoft Dr. William J. Hankley Outline Problem Statement Solution Application Integration Technologies B2B Application Integration & Web Services SOAP SOAP Style & Encoding Implementation Performance Evaluation Problem Statement Market Globalization • Need to stay ahead of competitors Solutions from multiple vendors • Unable to share information and isolated functionality Solution Application Integration(AI) • Application integration is the real-time controlled sharing of data and business processes among any connected applications and data sources within inter and intra organizations. Advantages Increased productivity Controlled procurement processes Interoperability with partners Reuse of existing systems Types of AI Enterprise Application Integration • Integrating applications within an enterprise • EDI – based on ANSI standards • Point-to-point integration B2B Application Integration • Integrating applications across enterprises • Middlewares – facilitate communication between two or more software systems • Point-to-point NOT feasible Why Web Services? Java Middleware Technologies • RMI, JMS - Language dependent Distributed objects • CORBA, DCOM - Platform dependent Message Brokers • Require sweeping changes in participating applications and hence expensive Open standards, platform and language independent, loosely-coupled integration B2B AI and Web Services Organizations favoring open standard protocols XML becoming lingua franca for data formatting and interpretation Web Services are XML-based middleware built on open standards Web Services Web services are middleware components that implement business logic via services and expose these services programmatically over the web, which could be invoked by service clients using SOAP over HTTP Based on open standards like UDDI, WSDL, SOAP, XML, HTTP Separation of specification from implementation Web Services Stack Transport protocol – HTTP, SMTP Data encoding – XML Standard Message Structure – SOAP Service Description – WSDL Service Discovery - UDDI Web Services Framework Points to service WSDL Describes service UDDI description Publishes Finds service service Web Service SOAP Client HTTP proxy SOAP Simple Object Access Protocol, a lightweight, message-based protocol built on XML and standard Internet protocols, such as HTTP and SMTP for information exchange in a decentralized environment Defines specification for message structure and data encoding Facilitates structured and typed messages to be exchanged SOAP SOAP message must contain a SOAP envelope, a SOAP body and optional SOAP header Encoding - serialization of data inside a SOAP message SOAP encoding is based on XML Schemas and relies on the XML Schema data types, namespace and the type attribute SOAP SOAP envelope Container to hold the SOAP message <soap:envelope> <soap:header> ………………… </soap:header> <soap:body> <add> <num1 xsi:type="xsd:int">5</num1> <num2 xsi:type="xsd:int">10</num2> </add> </soap:body> </soap:envelope> SOAP header Sequence numbers, authentication credentials SOAP payload Method calls, parameters, Application-specific data WSDL Describes Web Service methods to heterogeneous clients in a platform and language independent manner SOAP toolkits generate proxy classes using WSDL Service contract which specifies the methods available and type information needed to properly compose SOAP requests WSDL public int add(int num1, int num2) <?xml version="1.0" encoding="utf8" ?> <definitions > Describes custom or complex <types /> Data types <message name="addSoapIn"> <part name="num1" type="s:int" /> <part name="num2" type="s:int" /> Number and type of input and output </message> parameters <message name="addSoapOut"> <part name="addResult" type="s:int" /> </message> <portType name="sampleSoap"> <operation name="add"> Methods available along with input <input message="tns:addSoapIn" /> <output message="tns:addSoapOut" /> and output messages </operation> </portType> <binding name="sampleSoap" type="tns:sampleSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" /> <operation name="add"> <soap:operation soapAction="http://tempuri.org/add" style="rpc" /> <input> <soap:body use="encoded" namespace="http://tempuri.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body use="encoded" namespace="http://tempuri.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> Describes style and encoding of the SOAP messages </operation> for each operation </binding> <service name=“Sample"> <port name="sampleSoap" binding="tns:sampleSoap"> <soap:address location="http://agena.cis.ksu.edu:8080/axis/services/Sample" /> </port> Describes entry points to web service </service> HTTP-POST, HTTP-GET, SOAP </definitions> Implementation Web Services feasibility in integrating heterogeneous applications B2B application modeling online trading system’s supply chain management Web Services integrate the business processes of participating applications in a real-time fashion System Architecture Publisher (.NET) Web Service Purchaser (.NET) Web Service SOAP OVER HTTP Web Service VENDOR (J2EE) Technologies used ASP.NET, ADO.NET, C# ASP.NET WebMethod Framework J2EE 1.3.1, EJB AXIS 1.1 Framework JBOSS 3.2.1 XDoclet IIS 5.0 Microsoft ACT Message Flow Purchaser Vendor Publisher orderAvailability() orderAvailabilityResponse confirmRequest() Delegates request to EJB which processes the request orderInvoice invoiceConfirmation orderInvoice Inserts order into database Detailed System Architecture Publisher (.NET) Database IIS Server Unmarshalls SOAP message to native .NET method calls .NET web service JBOSS Application Server IIS Server J2EE web service proxy Purchaser (.NET) SOAP/HTTP Vendor (J2EE) .NET web service Marshalls native .NET method calls to XML Business tier EJB EJB Unmarshalls SOAP message to native Java method calls Database RPC-Style ~1200 LOC Document-Style ~1350 LOC Class Diagram Publisher Module 2 classes Web Services Purchaser Module 12 classes Vendor Module 8 classes SOAP processing in .NET IIS SERVER ASP.NET Web Service Handler SOAP Request SOAP Response HTTP Handler ASP.NET Engine XmlSerializer HTTP modules Service Object SOAP processing in AXIS JBOSS APPLICATION SERVER JETTY WEB SERVER SOAP MESSAGE PROCESSOR EJB’S Handlers SOAP Request WS CONTAINER SERVICE provider HTTP Handler SOAP Response Serialization Framework Handlers Axis engine Web service Demo SOAP style & encoding RPC/Encoded One-to-one mapping between SOAP payload elements and service method Encoding is based on Section 5, SOAP specification SOAP framework handles (de)serializing of method calls to/from XML Application developer deals with native objects SOAP style & encoding Document/Literal No one-to-one mapping between SOAP payload and service method SOAP payload can contain arbitrary XML Encoding is based on the XML schema agreed upon by both parties Application developer deals with raw SOAP payload RPC (Vs) Document-style public int add(int num1, int num2) <soapenv:body> <ns:add> Method name <num1 xsi:type=“xsd:int”>10</num1> parameter <num2 xsi:type=“xsd:int”>8</num2> parameter </ns:add> </soapenv:body> --------------------------------------------------------------------------------------- public Document add(Document operation) <soapenv:body> <ns:operation> <add>10</add> <add>8</add> <multiply>1</multiply> <multiply>2</multiply> </ns:operation> </soapenv:body> Arbitrary XML Performance Evaluation SOAP payload (Vs) Processing time 2.65 2.6 Processing Time (log) 2.55 RPC-Style 2.5 ASPWEB Windows Box Dual processor 292 MHz, 512MB Doc-Style Agena Solaris Box 360 MHz, 128MB 2.45 2.4 2.35 5 10 15 SOAP Payload 20 Performance Evaluation SOAP payload (Vs) Requests/Sec 4 3.5 3 2.5 Req/Sec RPC-Style 2 Doc-Style 1.5 1 0.5 0 5 10 15 SOAP Payload 20 Results analysis Results RPC/Encoded solution performed better than Document/Literal solution Theoretically Document/Literal should perform better Analysis Implementation was limited to simple data types in RPC/Encoded • Document/Literal solutions perform better for complex data types Axis serialization (vs) Custom serialization • SAX (Vs) DOM Lessons learned Service-oriented application development in both .NET and J2EE Better understanding of SOAP protocol, message structure, encoding and SOAP message processing in .NET and Apache AXIS frameworks Application integration technologies currently being used in enterprises and how they work. Implementation issues Insufficient reference resources on the Document-styled Web services Interoperability between .NET and J2EE technologies still in its nascent stages Working simultaneously with both .NET based API’s and Java based API’s Conclusion SOAP is text-based, Web Service calls may be too slow for applications that require frequent and fast communications Web Services are not suitable for applications which need to access wide variety of objects and classes Future work Security is utmost concern • Authentication credentials in SOAP headers • User/Passwd, Security tokens and SSL • Encoded NOT encrypted Consortia and organizations working towards the interoperability and security of Web Services : WS-I & WSSecurity References www.msdn.com http://ws.apache.org/axis http://java.sun.com/blueprints/webservices/using/webservbp3.html http://nagoya.apache.org/wiki/apachewiki.cgi?AxisProjectPages/DotNetInterop http://www.gotdotnet.com/team/XMLwebservices/gxa_overview.aspx http://www.aei.on.ca/index.php/aei/notes/edi http://ecommerce.about.com/cs/b2bresources/a/aa080108a.htm http://www.topxml.com/b2b/articles/ts4b2b/default.asp http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnpag/html/eappint-ch01.asp http://www.darc.com/software/2ndLevelArt/News/Application_Integration_for_EBusiness.pdf http://www-900.ibm.com/developerWorks/cn/xml/developerConf/ http://www-106.ibm.com/developerworks/webservices/library/ws-whichwsdl/ http://www.jboss.org/index.html?module=bb www.msdn.com/newsgroups Acknowledgements Dr. Daniel Andresen Dr. Torben Amtoft Dr. William J. Hankley Sterling Hanenkamp Travis Bradshaw Questions?