diff options
Diffstat (limited to 'qpid/doc/book/src/WCF.xml')
-rw-r--r-- | qpid/doc/book/src/WCF.xml | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/qpid/doc/book/src/WCF.xml b/qpid/doc/book/src/WCF.xml new file mode 100644 index 0000000000..aaf54463db --- /dev/null +++ b/qpid/doc/book/src/WCF.xml @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> + +<section> + <title> + WCF + </title> + <section role="h1" id="WCF-Introduction"> + <title> + Introduction + </title> + + <para> + WCF (<emphasis>Windows Communication Foundation)</emphasis> unifies the .Net + communication capabilities into a single, common, general Web + service oriented framework. A good WCF tutorial can be found + <ulink url="http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2#WCFSilverlightIntroduction">here</ulink>. + </para> + <para> + WCF separates how service logic is written from how services + communicate with clients. Bindings are used to specify the + transport, encoding, and protocol details required for clients + and services to communicate with each other. Qpid provide a WCF + binding: org.apache.qpid.wcf.model.QpidBinding. WCF Services that + use the Qpid binding communicate through queues that are + dynamically created on a Qpid broker. + </para> + <!--h1--> + </section> + <section role="h1" id="WCF-HowtouseQpidbinding"> + <title> + How to use Qpid binding + </title> + + <para> + WCF services are implemented using: + </para> + <itemizedlist> + <listitem> + <para>A service contract with one or more operation contracts. + </para> + </listitem> + <listitem> + <para>A service implementation for those contracts. + </para> + </listitem> + <listitem> + <para>A configuration file to provide that implementation with an + endpoint and a binding for that specific contract. + </para> + </listitem> + </itemizedlist> + <para> + The following configuration file can be used to configure a Hello + Service: + </para> + <programlisting> +<configuration> + <system.serviceModel> + <services> + <!-- the service class --> + <service name="org.apache.qpid.wcf.demo.HelloService"> + <host> + <baseAddresses> + <!-- Use SOAP over AMQP --> + <add baseAddress="soap.amqp:///" /> + </baseAddresses> + </host> + + <endpoint + address="Hello" + <!-- We use a Qpid Binding, see below def --> + binding="customBinding" + bindingConfiguration="QpidBinding" + <!-- The service contract --> + contract="org.apache.qpid.wcf.demo.IHelloContract"/> + </service> + </services> + + <bindings> + <customBinding> + <!-- cf def of the qpid binding --> + <binding name="QpidBinding"> + <textMessageEncoding /> + <!-- specify the host and port number of the broker --> + <QpidTransport + host="192.168.1.14" + port="5673" /> + </binding> + </customBinding> + </bindings> + + <extensions> + <bindingElementExtensions> + <!-- use Qpid binding element: org.apache.qpid.wcf.model.QpidTransportElement --> + <add + name="QpidTransport" + type="org.apache.qpid.wcf.model.QpidTransportElement, qpidWCFModel"/> + </bindingElementExtensions> + </extensions> + + </system.serviceModel> +</configuration> + </programlisting> + <para> + Endpoints and bindings can also be set within the service code: + </para> + <programlisting> +/* set HostName, portNumber and MyService accordingly */ +Binding binding = new QpidBinding("HostName", portNumber); +ServiceHost service = new ServiceHost(typeof(MyService), new Uri("soap.amqp:///")); +service.AddServiceEndpoint(typeof(IBooking), binding, "MyService"); +service.Open(); +.... + </programlisting> + <!--h1--> + </section> +</section> |