<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">BizTalk from the field</title><subtitle type="html">Alexander Georgiou</subtitle><id>http://blogs.msdn.com/alexgeo/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/alexgeo/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/alexgeo/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-11-21T17:27:00Z</updated><entry><title>Intro to BTS R2 + the WCF adapter</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/alexgeo/archive/2008/11/21/intro-to-bts-r2-the-wcf-adapter.aspx" /><id>http://blogs.msdn.com/alexgeo/archive/2008/11/21/intro-to-bts-r2-the-wcf-adapter.aspx</id><published>2008-11-21T20:27:00Z</published><updated>2008-11-21T20:27:00Z</updated><content type="html">&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;What is WCF (Indigo)? Well in a nutshell, this is Microsoft’s new programming model that allows you to create distributed service orientated architectures. Technologies such as COM+/.NET remoting (1.1/2.0) /Web services etc. have all been binded together (and hopefully replaced by WCF) in a uniform manner, allowing end-to-end point communication in a interoperable approach regardless of what network/wire protocols are in use. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;It’s a programming model that allows you to build services on the client and the server side, permitting you to expose these services using the same methods and techniques. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;Reference the below diagram for a high level overview of WCF:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;IMG title="WCP overview" style="WIDTH: 501px; HEIGHT: 351px" height=351 alt="WCP overview" src="http://geekswithblogs.net/images/geekswithblogs_net/alexg/WCF%20high%20level%20diagram.gif" width=501 mce_src="http://geekswithblogs.net/images/geekswithblogs_net/alexg/WCF%20high%20level%20diagram.gif"&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;Other client consuming applications can also plug into WCF such as MOSS (ASP.NET) or SSIS (ADO.NET)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;So, how is a WCF endpoint created? If you are already familiar with WCF, you will also be familiar with the ‘ABCs’:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;Address&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt; – The end point address of a client/server (Stored in the binding below)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0cm 0cm 0pt 36pt"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;lt;endpoint address=”http://localhost:8080/NumberMultiplication” /&amp;gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;Binding&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt; – Where all our configuration is stored. Decisions relating to security, atomic transactions, transport protocols &lt;EM&gt;(optional)&lt;/EM&gt; are all wrapped up here,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0cm 0cm 0pt 36pt"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;lt;configuration&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;lt;system.serviceModel&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;lt;services&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;service name="NumberMultiplicationService"&amp;gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=”http://localhost:8080/NumberMultiplication” contract="INumberMultiplication" &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;binding="wsHttpBinding"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt; /&amp;gt; &amp;lt;!—-Example data--&amp;gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;lt;/services&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;lt;/system.serviceModel&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;lt;/configuration&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0cm 0cm 0pt 36pt"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;Contract &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;– What is this service going to do? Will it be a one or two way communication? Or will it be a request- response pattern. (In its simplest form)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;using System.ServiceModel; //Base WCF runtime&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;using System.Runtime.Serialization;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;[ServiceContract] //a WCF contract defined using an interface&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;public interface INumberMultiplication &amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;{ &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract] &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Multiply(int x, int y); &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style="BACKGROUND: #dddddd; MARGIN: 0cm 11.25pt 0pt 0cm; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Lucida Console'"&gt;} &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;The funny this is, for you to create an endpoint, you have to start from the end (C) and work your way towards the beginning (A).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT face=Calibri&gt;More detail soon...&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;!--
&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"&gt;
&lt;rdf:Description
rdf:about="http://geekswithblogs.net/alexg/archive/2007/08/16/BTSR2WCFadapter.aspx"
dc:identifier="http://geekswithblogs.net/alexg/archive/2007/08/16/BTSR2WCFadapter.aspx"
dc:title="Intro to BTS R2 + the WCF adapter"
trackback:ping="http://geekswithblogs.net/alexg/services/trackbacks/114710.aspx"&gt;
&lt;/rdf:RDF&gt;
--&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9132079" width="1" height="1"&gt;</content><author><name>alexgeo</name><uri>http://blogs.msdn.com/members/alexgeo.aspx</uri></author></entry></feed>