Home arrow SOAP & Web Services arrow Page 4 - An Embeddable Standards Compliant Web Service Server

Appendix - Web Services

What would it take to make a fairly general purpose server that ties into the IT infrastructure and performs more than information retrieval and still be embeddable? The author outlines the requirements, the functions supported, and discusses issues such as performance and security.

TABLE OF CONTENTS:
  1. An Embeddable Standards Compliant Web Service Server
  2. Design
  3. Results
  4. Appendix
By: Terry Ess
Rating: starstarstarstarstar / 7
July 27, 2004

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

 
Appendix A: Reference Links

WS-I Basic Profile
http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html

Simple Object Access Protocol (SOAP) 1.1
http://www.w3.org/TR/2000/NOTE-SOAP-20000508

Extensible Markup Language (XML) 1.0 (Second Edition)
http://www.w3.org/TR/REC-xml

RFC2616: Hypertext Transfer Protocol -- HTTP/1.1
http://www.ietf.org/rfc/rfc2616

Web Services Description Language (WSDL) 1.1
http://www.w3.org/TR/wsdl.html

XML Schema Part 1: Structures
http://www.w3.org/TR/xmlschema-1

XML Schema Part 2: Datatypes
http://www.w3.org/TR/xmlschema-2

Appendix B: Server Reference Implementation WSDL

<?xml version="1.0" encoding="UTF-8"?>
<definitions
    targetNamespace="http://device/def/"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://device/def/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <types>
        <xs:schema targetNamespace="http://device/def/" xmlns="http://device/def/">

  <xs:complexType name="Passcode">
       <xs:sequence>
  <xs:element name="data" type="xs:unsignedByte" minOccurs="16" maxOccurs="16"/>
  </xs:sequence>
 </xs:complexType>

            <xs:complexType name="ConnectParameters">
                <xs:sequence>
                    <xs:element name="user" type="xs:string"/>
                    <xs:element name="pass" type="Passcode"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="ConnectResponse">
                <xs:sequence>
                    <xs:element name="result" type="xs:boolean"/>
                    <xs:element name="pass" type="Passcode"/>
                </xs:sequence>
            </xs:complexType>
            <xs:element name="Connect" type="ConnectParameters"/>
            <xs:element name="ConnectResp" type="ConnectResponse"/>

            <xs:complexType name="GetParameters">
                <xs:sequence>
                    <xs:element name="id" type="xs:short"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="GetShortResponse">
                <xs:sequence>
                    <xs:element name="id" type="xs:short"/>
                    <xs:element name="value" type="xs:short"/>
                </xs:sequence>
            </xs:complexType>
            <xs:element name="GetShort" type="GetParameters"/>
            <xs:element name="GetShortResp" type="GetShortResponse"/>


            <xs:complexType name="SetShortParameters">
                <xs:sequence>
                    <xs:element name="id" type="xs:short"/>
                    <xs:element name="value" type="xs:short"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="SetResponse">
                <xs:sequence>
                    <xs:element name="id" type="xs:short"/>
                    <xs:element name="result" type="xs:boolean"/>
                </xs:sequence>
            </xs:complexType>
            <xs:element name="SetShort" type="SetShortParameters"/>
            <xs:element name="SetShortResp" type="SetResponse"/>

            <xs:complexType name="StartStopParameters">
                <xs:sequence>
                    <xs:element name="op_code" type="xs:short"/>
                    <xs:element name="param" type="xs:short"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="StartStopResponse">
                <xs:sequence>
                    <xs:element name="op_code" type="xs:short"/>
                    <xs:element name="result" type="xs:boolean"/>
                </xs:sequence>
            </xs:complexType>
            <xs:element name="Start" type="StartStopParameters"/>
            <xs:element name="StartResp" type="StartStopResponse"/>
            <xs:element name="Stop" type="StartStopParameters"/>
            <xs:element name="StopResp" type="StartStopResponse"/>

        </xs:schema>
    </types>
    <message name="ConnectResponseMessage">
        <part element="tns:ConnectResp" name="parameters"/>
    </message>
    <message name="ConnectMessage">
        <part element="tns:Connect" name="parameters"/>
    </message>

    <message name="GetShortResponseMessage">
        <part element="tns:GetShortResp" name="parameters"/>
    </message>
    <message name="GetShortMessage">
        <part element="tns:GetShort" name="parameters"/>
    </message>

    <message name="SetShortResponseMessage">
        <part element="tns:SetShortResp" name="parameters"/>
    </message>
    <message name="SetShortMessage">
        <part element="tns:SetShort" name="parameters"/>
    </message>

    <message name="StartResponseMessage">
        <part element="tns:StartResp" name="parameters"/>
    </message>
    <message name="StartMessage">
        <part element="tns:Start" name="parameters"/>
    </message>

    <message name="StopResponseMessage">
        <part element="tns:StopResp" name="parameters"/>
    </message>
    <message name="StopMessage">
        <part element="tns:Stop" name="parameters"/>
    </message>

    <portType name="DeviceIO">
        <operation name="Connect">
            <input message="tns:ConnectMessage"/>
            <output message="tns:ConnectResponseMessage"/>
        </operation>

        <operation name="GetShort">
            <input message="tns:GetShortMessage"/>
            <output message="tns:GetShortResponseMessage"/>
        </operation>

        <operation name="SetShort">
            <input message="tns:SetShortMessage"/>
            <output message="tns:SetShortResponseMessage"/>
        </operation>

        <operation name="StartCmd">
            <input message="tns:StartMessage"/>
            <output message="tns:StartResponseMessage"/>
        </operation>

        <operation name="StopCmd">
            <input message="tns:StopMessage"/>
            <output message="tns:StopResponseMessage"/>
        </operation>

    </portType>
    <binding name="DeviceIOBinding" type="tns:DeviceIO">
        <soap:binding style="document" transport="
http://schemas.xmlsoap.org/soap/http"/>
        <operation name="Connect">
            <soap:operation soapAction="DeviceIO#Connect"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetShort">
            <soap:operation soapAction="DeviceIO#GetShort"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="SetShort">
            <soap:operation soapAction="DeviceIO#SetShort"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="StartCmd">
            <soap:operation soapAction="DeviceIO#Start"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="StopCmd">
            <soap:operation soapAction="DeviceIO#Stop"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

    </binding>
    <service name="Service">
        <port binding="tns:DeviceIOBinding" name="DevicePort">
            <soap:address location="
http://localhost:2000/DeviceIO"/>
        </port>
    </service>
</definitions>



 
 
>>> More SOAP & Web Services Articles          >>> More By Terry Ess
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

SOAP & WEB SERVICES ARTICLES

- Google Play Launched to Revive Brand
- Google Releases Preview of its Cloud SQL Ser...
- Microsoft and Amazon Team Up for the Cloud
- GoDaddy Joining the Cloud
- Amazon EBS Outage Challenges Cloud Supporters
- Dynamic Data Analysis on the Web-a Design Ap...
- Use collection types with SOAP and JAX-RPC
- Blogging Away To Glory (A bBlog Primer)
- Introduction to Service Oriented Architectur...
- Connecting Smart Devices on the Internet
- An Embeddable Standards Compliant Web Servic...

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: