1 / 37

implementing and accessing web services using visual basic 6.0 and ...

jaden
Télécharger la présentation

implementing and accessing web services using visual basic 6.0 and ...

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Implementing and Accessing Web Services Using Visual Basic 6.0 and the Visual Studio SOAP Toolkit

    2. 2

    3. 3 Agenda (2) ROPE Remote Object Proxy Engine Introduction What is it ? Purpose and usage ROPE Objects Labs, process and code Walkthroughs Setting up a VB6 Web Service using the SOAP Toolkit Setting up VB6 ROPE clients to access a Web Service Implementing a simple VB6 Web Services Discovery client using the ROPE Objects Returning ADO recordsets in SOAP messaging Q/A

    4. 4 Web Services A major shift in application development Distributing and integrating application logic over the Web Delivering software as a service accessible to anyone, anywhere, at anytime Joining tightly coupled component technologies with loosely coupled Internet messaging standards Components required to realize the concept of Web Services: A standard messaging format for requests and responses A service description language A Web Services Discovery Language/mechanism

    5. 5 Distributed Object Infrastructures Distributed object infrastructure = component technology + wire protocol Current distributed object infrastructures: COM/DCOM, Java RMI/JRMP, CORBA/GIOP Disadvantages of proprietary distributed object infrastructures: Vendor specific Platform specific Lack of interoperability Administrative costs Custom runtime Configuring firewalls

    6. 6 Introduction to SOAP What is SOAP ? An Internet standard specification, the goal of which is to define a platform and vendor-neutral WIRE PROTOCOL based on Internet standard protocols [HTTP & XML] to define and access Web Services Why SOAP ? Role of a Wire Protocol in accessing distributed object services Vendor and/or platform-specific nature of current wire protocols hinder interoperability SOAP Goals: Specify a platform independent Internet based format to package requests for services exposed by Web Services, and responses generates by Web Services [XML] Specify a platform independent format to describe Web Services [ XML ] Specify a platform independent Wire protocol [HTTP]

    7. 7 Introduction to SOAP (2) What SOAP is NOT ? SOAP is not a replacement for any of the current component technologies It does not specify how key infrastructural elements of a Distributed Object Infrastructure need to be implemented [ eg: Distributed garbage collection, Object activation etc. ]

    8. 8 Accessing a Web Service Using SOAP

    9. 9 The SOAP Request Payload A standard XML-based format to describe a SOAP request for a Web Service Provides all the information required by the Web Service provider to process the request General format of a SOAP request: HTTP Header SOAP Action <SOAP-ENV:Envelope> <SOAP-ENV:Header> <!-- Soap Header is optional --> </SOAP-ENV:Header> <SOAP-ENV:Body> <!-- Serialized method invocation data --> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

    10. 10 The SOAP Response Payload A standard XML-based format to describe the Response generated by a Web Service Contains information that is to be passed back to the client General format of a SOAP response: HTTP Header <SOAP-ENV:Envelope> <SOAP-ENV:Body> <!-- Serialized Response Data --> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

    11. 11 Advantages of SOAP Tremendously lightweight. Requires two fundamental capabilities: Capability to send and receive HTTP packets Capability to process XML [ Requires an XML parser ] Built on open technologies Facilitates true distributed interoperability No firewall restrictions

    12. 12 Disadvantages of SOAP Based on HTTP, and is therefore Stateless Based on a request/response architecture Implies no callback functionality Performance is slightly degraded for the following reasons: An XML processor needs to be loaded each time to parse a SOAP request/response The SOAP request/response has to be parsed to extract the required information Currently supports only parameter serialization by value Will require XML processors that support full schema parsing, if XML schema extensions are used to format SOAP messages

    13. 13 The Microsoft Visual Studio SOAP Toolkit What is it? A technology preview Microsofts first step in demonstrating its commitment to supporting SOAP functionality in its development tools Includes components that can be used to implement SOAP messaging/functionality in Visual Studio applications: Expose functionality implemented in COM components as Web Services Access Web Services using SOAP messaging Microsofts SOAP based distributed object infrastructure COM (Component Technology) + SOAP (Wire Protocol)

    14. 14 The Microsoft Visual Studio SOAP Toolkit What does it include? An SDL Generator: Used to generate XML based Service Descriptions for Web Services ROPE [ Remote Object Proxy Engine ]: A COM DLL which exposes objects that provide the infrastructure for binding SOAP clients and servers Sample Applications Online Documentation

    15. 15 SOAP Toolkit Terminology Web Service Service description language Web Services Discovery SOAP Listener ROPE The SOAP Toolkit SDL Wizard

    16. 16 Key SOAP Toolkit Technologies COM XML Writing well-formed XML, schemas, and namespaces HTTP HTTP GET and POST IIS Setting up virtual directories IIS security Directory permissions ASP/ISAPI Visual Studio development tools

    17. 17 ROPE Remote Object Proxy Engine A COM DLL [ ROPE.DLL ] Implements programmable objects that provide infrastructural services to bind SOAP clients and servers: Generating SOAP Request Payloads Generating SOAP Response Payloads Transporting the SOAP Requests and Responses using HTTP Interpreting Request payloads to extract method invocation information Interpreting Response payloads to extract results returned to the client Advantages of using ROPE

    18. 18 The ROPE Objects ROPE.Proxy Provides a high-level interface that enables client applications to access remote Web Services exposed using the SOAP protocol as if they were local COM objects ROPE.SOAPPackager Sending and receiving SOAP requests and responses Functionality for accessing contents of a SOAP envelope ROPE.WireTransfer Functionality for executing HTTP POST and GET ROPE.SDMethodInfo Provides Information about methods exposed by a Web Service

    19. 19 The ROPE Objects (2) ROPE.SDParameterInfo Describes the parameters for a method described by an SDMethodInfo object ROPE.SDEndPointInfo Describes the URI location of a Web Service ROPE.ServiceDescriptors A collection of SDMethodInfo and SDEndPointInfo objects

    20. 20 Lab 1: Installing the Visual Studio SOAP Toolkit Instructions on downloading and installing the SOAP Toolkit Exploring the SOAP Toolkit download What does it contain? Exploring the SOAP Toolkit documentation

    21. 21 Setting UP a VB 6.0 Web Service Create the VB COM DLL whose methods you wish to expose as Web Services Stateless methods, parameters should be passed by value Register the component on the Web server Grant the IIS account(s) NTFS Read & Execute access permissions to the component Use the SOAP Toolkit SDL Generation Wizard to generate the SDL and the ASP interface for the service; specify an HTTP-accessible IIS virtual directory as the location to store the generated files Place the generic ASP Listener in the IIS virtual directory that contains the SDL and ASP Interface for the Web Service

    22. 22 SDL Generation Wizard Screen 1 of 6

    23. 23 SDL Generation Wizard Screen 2 of 6

    24. 24 SDL Generation Wizard Screen 3 of 6

    25. 25 SDL Generation Wizard Screen 4 of 6

    26. 26 SDL Generation Wizard Screen 5 of 6

    27. 27 SDL Generation Wizard Screen 6 of 6

    28. 28 Lab 2: Setting Up the PRODUCTS Web Service Developing the PRODINFO COM DLL Implementing the PRODUCTS class module Methods: GetProducts(), GetUnitsInStock(ByVal ProductName as String) Setting up the Web Service Examining the SDL Examining the ASP interface file

    29. 29 Accessing the Web Service The three server components that expose a SOAP Toolkit Web Service SDL document [generated by the wizard] ASP/ISAPI interface [generated by the wizard] SOAP Toolkit Listener Client components required to access a SOAP Web Service Rope.dll Copy and register on the client workstation ROPE client A Visual Studio/ASP application that utilizes the ROPE objects to access a Web Service

    30. 30 Server Components What does the SDL document contain? Interface files What are they? What is a SOAP Listener? Types of VS SOAP Toolkit Listeners ASP and ISAPI Where are the generic Listeners located? ASP: <drive>:\Program Files\SOAP_Toolkit\ASP_Listener [Listener.ASP] ISAPI: <drive>:\Program Files\SOAP_Toolkit\ISAPI_Listener [soapisapi.dll] What does the generic ASP Listener do? How does it work with the ASP interface file?

    31. 31 Examining the Key Sections of a Sample SDL The SDL specifies the URL of the Web Services ASP interface file <service> <addresses> <address uri='http://karravms-srv2/soap/Products.asp'/> </addresses> <implements name='Products'/> </service> It contains XML-based specifications of the methods exposed by the Web Service <element name='GetUnitsInStock'> <type> <element name='ProductName' type='dt:string'/> </type> </element> <element name='GetUnitsInStockResponse'> <type> <element name='return' type='dt:short'/> </type> </element>

    32. 32 Examining an ASP Interface File <%@ Language=VBScript %> <% Option Explicit Response.Expires = 0 'URI of service description file Const SOAP_SDLURI = http://karravms-srv2/soap/Products.xml %> <!--#include file="listener.asp"--> <% Public Function GetProducts () Dim objGetProducts Set objGetProducts = Server.CreateObject("ProdInfo.Products") GetProducts = GetXMLFromADORS(objGetProducts.GetProducts()) 'Insert additional code here Set objGetProducts = NOTHING End Function Public Function GetUnitsInStock (ByVal ProductName) Dim objGetUnitsInStock Set objGetUnitsInStock = Server.CreateObject("ProdInfo.Products") GetUnitsInStock = objGetUnitsInStock.GetUnitsInStock(ProductName) 'Insert additional code here Set objGetUnitsInStock = NOTHING End Function %>

    33. 33 Anatomy of a SOAP Web Services Provider

    34. 34 Anatomy of a ROPE Client

    35. 35 SOAP Toolkit Client/Server Communication

    36. 36 Accessing a Web Service using a ROPE Client Using the ROPE.Proxy Object The ROPE.Proxy Object What is it? The LoadServicesDescription() method of the ROPE.Proxy Object: LoadServicesDescription icURI, <URL To the Web Services SDL> LoadServicesDescription icSTRING, <XML String representation of the Web Services SDL> Important properties of the ROPE.Proxy object ServicesDescription DataSent DataReceived FaultCode, FaultString, FaultDetail ROPE.Proxy object uses the ROPE.SoapPackager and the ROPE.WireTransfer objects

    37. 37 Using ROPE.Proxy to Access a Web Service: Code Walkthrough Dim rproxy As ROPE.Proxy Dim units As Integer Dim SelItem As String Set rproxy = New ROPE.Proxy rproxy.LoadServicesDescription icURI, "http://karravms-srv2/soap/Products.xml" If lstProducts.Text <> "" Then SelItem = lstProducts.Text txtUnits.Text = rproxy.GetUnitsInStock(SelItem) End If Set rproxy = Nothing Lab 3: Using the ROPE.Proxy Object to access the PRODINFO.PRODUCTS Web Service

    38. 38 The ROPE.SoapPackager and ROPE.WireTransfer Objects ROPE.SOAPPackager Sending and receiving SOAP requests and responses Access contents of a SOAP envelope ROPE.WireTransfer Execute HTTP POST and GET The ROPE.Proxy object uses these two objects to send and receive SOAP requests and responses Important methods of the ROPE.SOAPPackager object: LoadServicesDescription, GetMethodStruct, GetParameter, SetParameter, SetPayloadData Important methods/properties of the ROPE.WireTransfer object Methods: AddStdSOAPHeaders, PostDataToURI Properties: DataSent, DataReceived

    39. 39 Using the ROPE.SOAPPackager and ROPE.WireTransfer Objects to Access a Web Service Lab 4: Using the ROPE.SoapPackager and ROPE.WireTransfer objects to access the PRODUCTS Web Service SOAP payloads revisited Request and response SOAP payloads HTTP requests and responses XML parsers Lab 5: Examining the SOAP and HTTP request and response payloads generated by the ROPE.WireTransfer object

    40. 40 Web Services Discovery Concept of Web Services Discovery Need for a Web Services Discovery Language ROPE objects that aid in Web Services Discovery: ROPE.SDMethodInfo: Provides Information about methods exposed by a Web Service ROPE.SDParameterInfo: Describes the parameters for a method described by a SDMethodInfo object ROPE.SDEndPointInfo: Describes the URI location of a Web Service ROPE.ServiceDescriptors: A collection of SDMethodInfo and SDEndPointInfo objects Lab 6: Implementing a simple Web Services Discovery Client using the ROPE ServiceDescriptors, SDMethodInfo, and SDParameterInfo objects

    41. 41 SOAP Toolkit Data Types Currently only scalar atomic data types are supported: String, Integer, Double, Short, Float, Boolean, and Byte Methods returning composite data types like ADO Recordsets and Arrays require: Manual modifications must be made to the SDL file to describe the composite data type XML Schemas must be used to describe the composite type Additional wrapper code must be added to the ASP Interface to transform the return value into a form that can be packaged into a supported data type [ usually a String ] Custom code in the SOAP client to parse the return value and extract the required data Lab 7: Handling ADO Recordsets: Accessing the GetProducts() method of the PRODUCTS Web Service

    42. 42 Handling ADO Recordsets: Modifying the ASP Interface File Public Function GetProducts () Dim objGetProducts Set objGetProducts = Server.CreateObject("ProdInfo.Products") GetProducts = GetXMLFromADORS(objGetProducts.GetProducts()) 'Insert additional code here Set objGetProducts = NOTHING End Function What does the function GetXMLFromADORS do? Transforms the data in the ADO Recordset to a well formed XML String Calls the CDataIt() custom function to enclose the XML string within a CDATA section

    43. 43 Handling ADO Recordsets: Modifying the SDL File <element name='GetProductsResponse'> <type> <element name='PRODUCT' type='ProductStruct'/> </type> </element> <element name='ProductStruct'> <type> <element name='ProductID' type='dt:string'/> <element name='ProductName' type='dt:string'/> </type> </element>

    44. 44 Handling ADO Recordsets: Parsing the Returned XML String in the SOAP Client Dim opxy As ROPE.Proxy Dim result As String Dim ResultXML As MSXML2.DOMDocument26 Dim rs As ADODB.Recordset Set opxy = New ROPE.Proxy opxy.LoadServicesDescription icURI, "http://karravms-srv2/soap/Products.xml" result = opxy.GetProducts() Set ResultXML = New MSXML2.DOMDocument30 ResultXML.setProperty "SelectionLanguage", "XPath" ResultXML.loadXML result Dim ProductList As MSXML2.IXMLDOMNodeList Dim Product As MSXML2.IXMLDOMNode Set ProductList = ResultXML.selectNodes("//ProductName") For Each Product In ProductList lstProducts.AddItem Product.Text Next Set opxy = Nothing

    45. 45 XML Myths and Facts Myths XML is a great language It is the panacea for all problems encountered in current programming languages and tools SOAP is a good example of applying XML to address a real-world development requirement Facts XML is a great markup language for exchanging data It is not a replacement for any application development tool or component technology SOAP is a great example of applying XML to address a real-world development requirement

    46. 46 Additional Reading Online documentation: The ROPE Samples Tutorial Guide to using the SOAP Toolkit Wizard Troubleshooting the SOAP Toolkit Returning ADO Recordsets with SOAP Messaging http://msdn.microsoft.com/xml/articles/soapguide_ado.asp Understanding SOAP by Kennard Scribner ISBN: 0-672-31922-5 Publisher: SAMS

More Related