<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Softwaremaker - Windows Communication Foundation (WCF) aka Indigo</title>
    <link>http://www.softwaremaker.net/blog/</link>
    <description>&lt;Challenging Conventions /&gt;</description>
    <language>en-us</language>
    <copyright>William T</copyright>
    <lastBuildDate>Thu, 15 Nov 2007 14:04:07 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>itnews@softwaremaker.net</managingEditor>
    <webMaster>itnews@softwaremaker.net</webMaster>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=36da6ce2-cf48-4417-902f-3992a5f246f8</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,36da6ce2-cf48-4417-902f-3992a5f246f8.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With the impending release of the <a href="http://www.microsoft.com/biztalk/" target="_blank">Microsoft
BizTalk Server</a> Adapter Pack (Beta 2 available <a href="https://connect.microsoft.com/Downloads/Downloads.aspx?SiteID=65&amp;wa=wsignin1.0" target="_blank">here</a>),
there are some confusions as to the differences between the BizTalk Adapter Pack, <a href="http://www.microsoft.com/biztalk/technologies/wcflobadaptersdk.mspx" target="_blank">Microsoft's
WCF Line of Business (LOB) Adapter SDK</a>, and of course, the (older) <a href="http://technet.microsoft.com/en-us/library/ms944509.aspx" target="_blank">BizTalk
Adapter Framework</a>.
</p>
        <p>
In a nutshell, <strong><em>the BizTalk Adapter Pack is written and developed on top
of the WCF LOB Adapter SDK</em></strong> (which is free and freely <a href="http://www.microsoft.com/biztalk/technologies/wcflobadaptersdk.mspx" target="_blank">downloadable</a>).
The value-add is that the LOBs that it can integrate with ootb are SAP (mySAP Business
Suite), ORACLE (Oracle Database) and SIEBEL (Siebel eBusiness Applications). Of course,
a lot of grunt work is taken away from you, as explained <a href="http://blogs.msdn.com/adapters/archive/2007/10/29/positioning-the-biztalk-adapter-pack.aspx" target="_blank">here</a>.
</p>
        <p>
One of the confusing part is the play of the words "BizTalk" in the product name.
As I have explained above, built on the WCF LOB Adapter SDK, these adapters are host
agnostic i.e. they are not tied to a specific product like BizTalk. You can use it
with BizTalk 2006 R2 specifically (The WCF LOB adapters cannot be used in BizTalk
Server versions prior to BizTalk Server 2006 R2) but you can use it outside of BizTalk
as well (some configuration work required, such as the Add Adapter Reference plug-in,
etc) but this also means you do not have to buy BizTalk for it, if you dont have to.
</p>
        <p>
This SDK is based on <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a>, and it surfaces an adapter
to an LOB system as a WCF binding. For an adapter consumer, the adapter can be accessed
like a typical WCF service; the consumer does not have to learn a new programming
model. The same adapter developed can be reused in multiple .NET applications including
custom .NET applications, Microsoft® BizTalk® Server 2006 R2, Microsoft Office SharePoint®
Server 2007 SP1, and Microsoft SQL Server™ Integration Services (SSIS) through adapter
development provided. In addition, the adapter provides metadata browse, search, and
retrieval functionality for the adapter consumer to selectively generate WCF contracts
that reflect live type modeling of the LOB system.
</p>
        <p>
Confusions from customers and partners alike usually stem from the the primary
differences between WCF LOB Adapter SDK and the BizTalk Adapter Framework. I will
hereby summarized it in the following table:
</p>
        <h3 class="subHeading">
        </h3>
        <p>
          <table style="BACKGROUND-COLOR: #cccccc" cellspacing="0" cellpadding="0" width="100%" border="1">
            <tbody>
              <tr>
                <th>
Feature 
</th>
                <th>
WCF LOB Adapter SDK 
</th>
                <th>
BizTalk Server Adapter Framework 
</th>
              </tr>
              <tr>
                <td>
                  <p>
API
</p>
                </td>
                <td>
                  <p>
.NET 3.0 Assembly, provides help classes for metadata processing, connection management,
and messaging
</p>
                </td>
                <td>
                  <p>
COM, provides basic support for adapter operations.
</p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
Adapter exposure
</p>
                </td>
                <td>
                  <ul>
                    <li>
Exposed as WCF binding; available to any application that can consume a WCF binding
including BizTalk Server 2006 R2 (using the WCF adapter)<br /><br /></li>
                  </ul>
                </td>
                <td>
                  <ul>
                    <li>
Exposed only to BizTalk Server; not reusable by other applications.<br /><br /></li>
                  </ul>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
Tools
</p>
                </td>
                <td>
                  <p>
Adapter Code Generation Wizard, metadata browser for Visual Studio 2005
</p>
                </td>
                <td>
                  <p>
n/a
</p>
                </td>
              </tr>
              <tr>
                <td>
                  <p>
Extensibility
</p>
                </td>
                <td>
                  <p>
Yes (as WCF channel extension)
</p>
                </td>
                <td>
                  <p>
No
</p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
If you are knee-deep into writing, shipping and selling adapters for BizTalk,
I strongly urge you to visit the Adapters' Team Blog <a href="http://blogs.msdn.com/adapters" target="_blank">here</a>.<br /></p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=36da6ce2-cf48-4417-902f-3992a5f246f8" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Differences between the Windows Communication Foundation (WCF) Line-Of-Business (LOB) Adapter Pack and the BizTalk Adapter Framework</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,36da6ce2-cf48-4417-902f-3992a5f246f8.aspx</guid>
      <link>http://www.softwaremaker.net/blog/DifferencesBetweenTheWindowsCommunicationFoundationWCFLineOfBusinessLOBAdapterPackAndTheBizTalkAdapterFramework.aspx</link>
      <pubDate>Thu, 15 Nov 2007 14:04:07 GMT</pubDate>
      <description>&lt;p&gt;
With the impending release of the &lt;a href=http://www.microsoft.com/biztalk/ target=_blank&gt;Microsoft
BizTalk Server&lt;/a&gt; Adapter&amp;nbsp;Pack (Beta 2 available &lt;a href="https://connect.microsoft.com/Downloads/Downloads.aspx?SiteID=65&amp;amp;wa=wsignin1.0" target=_blank&gt;here&lt;/a&gt;),
there are some confusions as to the differences between the BizTalk Adapter Pack, &lt;a href="http://www.microsoft.com/biztalk/technologies/wcflobadaptersdk.mspx" target=_blank&gt;Microsoft's
WCF Line of Business (LOB) Adapter SDK&lt;/a&gt;, and of course, the (older) &lt;a href="http://technet.microsoft.com/en-us/library/ms944509.aspx" target=_blank&gt;BizTalk
Adapter Framework&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
In a nutshell, &lt;strong&gt;&lt;em&gt;the BizTalk Adapter Pack is written and developed on top
of the WCF LOB Adapter SDK&lt;/em&gt;&lt;/strong&gt; (which is free and freely &lt;a href="http://www.microsoft.com/biztalk/technologies/wcflobadaptersdk.mspx" target=_blank&gt;downloadable&lt;/a&gt;).
The value-add is that the LOBs that it can integrate with ootb are SAP (mySAP Business
Suite), ORACLE (Oracle Database) and SIEBEL (Siebel eBusiness Applications). Of course,
a&amp;nbsp;lot of grunt work is taken away from you, as explained &lt;a href="http://blogs.msdn.com/adapters/archive/2007/10/29/positioning-the-biztalk-adapter-pack.aspx" target=_blank&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
One of the confusing part is the play of the words "BizTalk" in the product name.
As I have explained above, built on the WCF LOB Adapter SDK, these adapters are host
agnostic i.e. they are not tied to a specific product like BizTalk. You can use it
with BizTalk 2006 R2 specifically (The WCF LOB adapters cannot be used in BizTalk
Server versions prior to BizTalk Server 2006 R2) but you can use it outside of BizTalk
as well (some configuration work required, such as the Add Adapter Reference plug-in,
etc) but this also means you do not have to buy BizTalk for it, if you dont have to.
&lt;/p&gt;
&lt;p&gt;
This SDK is based on &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt;, and it surfaces an adapter
to an LOB system as a WCF binding. For an adapter consumer, the adapter can be accessed
like a typical WCF service; the consumer does not have to learn a new programming
model. The same adapter developed can be reused in multiple .NET applications including
custom .NET applications, Microsoft® BizTalk® Server 2006 R2, Microsoft Office SharePoint®
Server 2007 SP1, and Microsoft SQL Server™ Integration Services (SSIS) through adapter
development provided. In addition, the adapter provides metadata browse, search, and
retrieval functionality for the adapter consumer to selectively generate WCF contracts
that reflect live type modeling of the LOB system.
&lt;/p&gt;
&lt;p&gt;
Confusions from customers and partners alike usually stem from the&amp;nbsp;the primary
differences between WCF LOB Adapter SDK and the BizTalk Adapter Framework. I will
hereby summarized it in the following table:
&lt;/p&gt;
&lt;h3 class=subHeading&gt;
&lt;/h3&gt;
&lt;p&gt;
&lt;table style="BACKGROUND-COLOR: #cccccc" cellspacing=0 cellpadding=0 width="100%" border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;
Feature 
&lt;/th&gt;
&lt;th&gt;
WCF LOB Adapter SDK 
&lt;/th&gt;
&lt;th&gt;
BizTalk Server Adapter Framework 
&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
API
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
.NET 3.0 Assembly, provides help classes for metadata processing, connection management,
and messaging
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
COM, provides basic support for adapter operations.
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
Adapter exposure
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;
Exposed as WCF binding; available to any application that can consume a WCF binding
including BizTalk Server 2006 R2 (using the WCF adapter)&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;
Exposed only to BizTalk Server; not reusable by other applications.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
Tools
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
Adapter Code Generation Wizard, metadata browser for Visual Studio&amp;nbsp;2005
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
n/a
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
Extensibility
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
Yes (as WCF channel extension)
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
No
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
If you are knee-deep into writing, shipping and selling&amp;nbsp;adapters for BizTalk,
I strongly urge you to visit the Adapters' Team Blog &lt;a href="http://blogs.msdn.com/adapters" target=_blank&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=36da6ce2-cf48-4417-902f-3992a5f246f8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>BizTalk;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=30444bbe-15e6-45fd-adc2-18df79385216</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,30444bbe-15e6-45fd-adc2-18df79385216.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I know I havent been posting deep technical stuff that I <a href="http://www.softwaremaker.net/blog/CategoryView,category,Web%2BServices%2BEnhancements%2B(WSE).aspx" target="_blank">used
to do</a>. Contrary to what people think my current role entails, keeping abreast
of the technology landscape is what I am supposed to do and what I enjoy and so when
colleagues joked with me when was the last time I booted up <a href="http://msdn.microsoft.com/vstudio/" target="_blank">Visual
Studio</a>, for example, I enjoyed seeing their shocked faces when I told them: "<em>oh
- just last night. why you asked ?</em>" <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" />.
</p>
        <p>
I dont dwell deep like I used to but I still code up decent projects which I
implement within my own developmental testing environment (yes, I have one
running latest versions of <a href="http://www.microsoft.com/windowsserver2003/technologies/directory/activedirectory/default.mspx" target="_blank">Active
Directory</a>, <a href="http://office.microsoft.com/en-us/sharepointserver/FX100492001033.aspx" target="_blank">SharePoint</a>, <a href="http://www.microsoft.com/exchange/default.mspx" target="_blank">Exchange</a> and
all the other goodies), driving the houshold crazy when I think of new and different
ways to document expenses, publish a Book or CD library, home automation projects
using all sorts of different technologies (yes, that includes <a href="http://www.rubyonrails.org/" target="_blank">Ruby-on-Rails</a>) or
in my new <a href="http://www.htc.com/product/03-product_tytn_II.htm" target="_blank">Windows
Mobile 6 Device</a>. Of course, I admit I dont post topics deep like I used to.
It is not so much the content but more so, the limiting factor of time.
</p>
        <p>
Recently, I was involved in some internal technical discussions with regards to the
issue of scale comparisions between <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> and ASMX. Below are some discussions:
</p>
        <p>
If you have a web service that is going to be IO bound, you would definitely
want it to be scalable and <em>almost</em> every resource in the world tells you
to implement <a href="http://msdn.microsoft.com/msdnmag/issues/03/06/Threading/" target="_blank">ASP.NET
asynchronous pattern</a> (BeginSomething/EndSomething, etc) on it so to
go easy on the thread pool. ASP.NET uses an IAsyncHttpHandler to handle the request,
which means the worker threads are not blocked while the IO-bound operation executes
somewhere else. Sounds good so far.
</p>
        <p>
If you make a WCF version of it with <a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/18/9336.aspx" target="_blank">webHttpBinding</a> (which actually
means you can invoked it AJAX-style) following the same async pattern for the methods,
you may find that each invocation of the WCF service eats up two threads – one
for its ASP.NET HttpModule.ProcessRequest and the other for the actual IO. Ouch! You
may think that this means your WCF implementation may end up eating all threads
reserved for ASP.NET, which would indeed scale down the server
</p>
        <p>
Is this true OR are we missing the complete picture ?
</p>
        <p>
While the scenarios explained above are reasonable observations, it doesnt paint the
complete picture. WCF <strong><em>does</em></strong> perform better scalability than
ASMX.
</p>
        <ul>
          <li>
            <strong>
              <u>Threading:</u>
            </strong>
            <br />
For ASMX, when a request comes in, it would be queued up immediately for async ASMX.
So the thread is released for that request and a new thread will pick up the work
item later. 
</li>
        </ul>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
For WCF, when a request comes in, we queue it up in WCF and let an IO thread handle
the request. At the same time, the request thread-pool thread is held to wait for
the request to complete.
</p>
          <p>
Yes, WCF uses more threads than async ASMX. But there is a reason for this. Using
asynchronous ASMX is dangerous and not really a good practice (<em>and I have hinted
at this many times in the many Web Service/ASMX presentations I have done
over the past few years</em>). While it does well at what it is supposed
to do, it does trick the developer into a "<em>false sense of security</em>". Essentially,
if you dont know how the ASP.NET blackbox works, you may find yourself thrown against
the car wall when you take a hidden, unsuspecting corner at high speeds. It does not
provide enough throttling for client loads. Basically the server takes all items and
queue them up for later processing. The server does not have a good throttling mechanism
to control the number of work items. To everyone else, it seems that the server
is quite friendly to all clients. However, if the number of clients is unbounded,
this is really bad. First of all, the server working set would grow unlimited due
to unlimited requests queued up. Secondly, many client requests would become obsolete
when it’s picked up by the server from the queue. The latter accounts for a a
good set of problematic scenarios I have come across in my past consulting gigs with
regards to high-load and high-transactional ASMX asynchronous implementations
before I joined the borg.
</p>
          <p>
Think of it as a side of the brain (that tells you that you are about to be full)
not functioning properly when you sit down at a <a href="http://en.wikipedia.org/wiki/Buffet" target="_blank">buffet</a> table.
You eat and eat and eat without knowning when to stop and then your <a href="http://en.wikipedia.org/wiki/Digestion" target="_blank">ingestion/digestion</a> system
starts kicking in, you actually hit the wall. Hard. Literally.
</p>
        </blockquote>
        <ul>
          <li>
            <strong>
              <u>Server Throughput</u>
            </strong>
            <br />
When you measure scalability, the most important measurement is the server throughput.
That is, how many requests the server can handle per time unit? For async ASMX, it
would be pretty fast at the initial phase. However, like the ingestion/digestion analogy
I was referring to above - Once the server is in a steady phase (as when CPU
is fully loaded), the throughput will go down because the server capacity has reached.
You can compare the data between async ASMX and sync ASMX <strong><em>over the long
run</em></strong> to see what I mean. 
</li>
        </ul>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
Also you would see higher memory usage of the async approach.
</p>
        </blockquote>
        <ul>
          <li>
            <strong>
              <u>ASP.NET Throttling</u>
            </strong>
            <br />
That said, ASP.NET does have a throttling mechanism that is used for sync ASMX, which
is the threadpool thread limit. The number of threads used to handle requests are
bounded (<a href="http://support.microsoft.com/kb/821268" target="_blank">http://support.microsoft.com/kb/821268</a>).
WCF uses this fact to throttle incoming requests. You can always change the configuration
settings to increase number of threads to be used to allow more work items to be queued
up.</li>
        </ul>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
The max number of threads follows the following formula:<br /><strong><em>MaxWorkerThreads x #CPU – MinFreeThreads</em></strong><br />
This is 12 by default on a single-proc machine.
</p>
        </blockquote>
        <ul>
          <li>
            <strong>
              <u>Two-level Throttling for WCF<br /></u>
            </strong>WCF leverages the ASP.NET threadpool throttling to throttle client requests.
At the same time, WCF has its <a href="http://msdn2.microsoft.com/en-us/library/ms735114.aspx" target="_blank">own
item queue throttling</a>. The former is throttled by the setting mentioned in the
immediate above point, while the latter is controlled by <a href="http://kennyw.com/indigo/150" target="_blank">WCF
throttling settings (maxConcurrentCalls etc)</a>. ASP.NET can automatically adjust
threads based on CPU loads so that you would always get full load of the server.</li>
        </ul>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
In this way, you may experience client failures because the requests are rejected
at ASP.NET layer beforehand. So you can increase the ASP.NET throttling to get better
experience. But eventually you would still be bounded by the physical server capacity,
no matter whether you use async ASMX, sync ASMX, or WCF as mentioned above.
</p>
        </blockquote>
        <p>
There is improvement work done in .NET 3.0 SP1 and of course, .NET 3.5 (beta
2 <a href="http://www.microsoft.com/downloads/details.aspx?familyid=d2f74873-c796-4e60-91c8-f0ef809b09ee&amp;displaylang=en" target="_blank">here</a>),
with the use of <em>prioritized item queues. </em>Do expect even-better
WCF performance even in some of the common scenarios. Fine tuning minWorkerThreads
will even give us even better results.
</p>
        <p>
Thanks to <a href="http://blogs.msdn.com/wenlong/" target="_blank">Wenlong</a> for
helping out with the guidance and explanation. The complete scenario and the design
principles for it will be published in greater detail in a MSDN whitepaper later.
Do watch out for it.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=30444bbe-15e6-45fd-adc2-18df79385216" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Threading and Throttling differences between WCF and ASMX</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,30444bbe-15e6-45fd-adc2-18df79385216.aspx</guid>
      <link>http://www.softwaremaker.net/blog/ThreadingAndThrottlingDifferencesBetweenWCFAndASMX.aspx</link>
      <pubDate>Fri, 12 Oct 2007 22:40:28 GMT</pubDate>
      <description>&lt;p&gt;
I know I havent been posting deep technical stuff that I &lt;a href="http://www.softwaremaker.net/blog/CategoryView,category,Web%2BServices%2BEnhancements%2B(WSE).aspx" target=_blank&gt;used
to do&lt;/a&gt;. Contrary to what people think my current role entails, keeping abreast
of the technology landscape is what I am supposed to do and what I enjoy and so when
colleagues joked with me when&amp;nbsp;was the last time I booted up &lt;a href="http://msdn.microsoft.com/vstudio/" target=_blank&gt;Visual
Studio&lt;/a&gt;, for example, I enjoyed seeing their shocked faces when I told them: "&lt;em&gt;oh
- just last night. why you asked ?&lt;/em&gt;" &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;.
&lt;/p&gt;
&lt;p&gt;
I dont dwell deep like I used to but I still code up decent projects&amp;nbsp;which I
implement within my own developmental&amp;nbsp;testing&amp;nbsp;environment (yes, I have one
running latest versions of &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/directory/activedirectory/default.mspx" target=_blank&gt;Active
Directory&lt;/a&gt;, &lt;a href="http://office.microsoft.com/en-us/sharepointserver/FX100492001033.aspx" target=_blank&gt;SharePoint&lt;/a&gt;, &lt;a href="http://www.microsoft.com/exchange/default.mspx" target=_blank&gt;Exchange&lt;/a&gt;&amp;nbsp;and
all the other goodies), driving the houshold crazy when I think of new and different
ways to document expenses, publish a Book or CD library, home automation projects
using all sorts of different technologies (yes, that includes &lt;a href="http://www.rubyonrails.org/" target=_blank&gt;Ruby-on-Rails&lt;/a&gt;)&amp;nbsp;or
in my new &lt;a href="http://www.htc.com/product/03-product_tytn_II.htm" target=_blank&gt;Windows
Mobile 6 Device&lt;/a&gt;. Of course, I admit I dont post topics&amp;nbsp;deep like I used to.
It is not so much the content but more so, the limiting factor of time.
&lt;/p&gt;
&lt;p&gt;
Recently, I was involved in some internal technical discussions with regards to the
issue of scale comparisions between &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; and ASMX. Below are some discussions:
&lt;/p&gt;
&lt;p&gt;
If you&amp;nbsp;have a web service that is going to be IO bound, you would definitely
want it to be scalable and &lt;em&gt;almost&lt;/em&gt; every&amp;nbsp;resource in the world tells&amp;nbsp;you
to&amp;nbsp;implement&amp;nbsp;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/03/06/Threading/" target=_blank&gt;ASP.NET
asynchronous pattern&lt;/a&gt; (BeginSomething/EndSomething, etc)&amp;nbsp;on it&amp;nbsp;so to
go easy on the thread pool. ASP.NET&amp;nbsp;uses an IAsyncHttpHandler to handle the request,
which means the worker threads are not blocked while the IO-bound operation executes
somewhere else. Sounds good so far.
&lt;/p&gt;
&lt;p&gt;
If you make a WCF version of it with &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/18/9336.aspx" target=_blank&gt;webHttpBinding&lt;/a&gt; (which&amp;nbsp;actually
means you can invoked it AJAX-style) following the same async pattern for the methods,
you may find that&amp;nbsp;each invocation of the WCF service eats up two threads – one
for its ASP.NET HttpModule.ProcessRequest and the other for the actual IO. Ouch! You
may think that this means&amp;nbsp;your WCF implementation may end up eating all threads
reserved for ASP.NET, which would indeed scale down the server
&lt;/p&gt;
&lt;p&gt;
Is this true OR are we missing the complete picture ?
&lt;/p&gt;
&lt;p&gt;
While the scenarios explained above are reasonable observations, it doesnt paint the
complete picture. WCF &lt;strong&gt;&lt;em&gt;does&lt;/em&gt;&lt;/strong&gt; perform better scalability than
ASMX.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;u&gt;Threading:&lt;/u&gt;&lt;/strong&gt;
&lt;br&gt;
For ASMX, when a request comes in, it would be queued up immediately for async ASMX.
So the thread is released for that request and a new thread will pick up the work
item later. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
For WCF, when a request comes in, we queue it up in WCF and let an IO thread handle
the request. At the same time, the request thread-pool thread is held to wait for
the request to complete.
&lt;/p&gt;
&lt;p&gt;
Yes, WCF uses more threads than async ASMX. But there is a reason for this. Using
asynchronous ASMX is dangerous and not really a good practice&amp;nbsp;(&lt;em&gt;and I have&amp;nbsp;hinted
at this many times in the many&amp;nbsp;Web Service/ASMX presentations I have&amp;nbsp;done
over the past few&amp;nbsp;years&lt;/em&gt;).&amp;nbsp;While it does well at what it is supposed
to do, it does trick the developer into a "&lt;em&gt;false sense of security&lt;/em&gt;". Essentially,
if you dont know how the ASP.NET blackbox works, you may find yourself thrown against
the car wall when you take a hidden, unsuspecting corner at high speeds. It does not
provide enough throttling for client loads. Basically the server takes all items and
queue them up for later processing. The server does not have a good throttling mechanism
to control the number of work items. To everyone else, it seems&amp;nbsp;that the server
is quite friendly to all clients. However, if the number of clients is unbounded,
this is really bad. First of all, the server working set would grow unlimited due
to unlimited requests queued up. Secondly, many client requests would become obsolete
when it’s picked up by the server from the queue. The latter&amp;nbsp;accounts for a a
good set of problematic scenarios I have come across in my past consulting gigs with
regards to high-load and high-transactional&amp;nbsp;ASMX asynchronous implementations
before I joined the borg.
&lt;/p&gt;
&lt;p&gt;
Think of it as a side of the brain (that tells you that you are about to be full)
not functioning properly when you sit down at a &lt;a href="http://en.wikipedia.org/wiki/Buffet" target=_blank&gt;buffet&lt;/a&gt; table.
You eat and eat and eat without knowning when to stop and then your &lt;a href="http://en.wikipedia.org/wiki/Digestion" target=_blank&gt;ingestion/digestion&lt;/a&gt; system
starts kicking in, you actually hit the wall. Hard. Literally.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;u&gt;Server Throughput&lt;/u&gt;&lt;/strong&gt;
&lt;br&gt;
When you measure scalability,&amp;nbsp;the most important measurement is the server throughput.
That is, how many requests the server can handle per time unit? For async ASMX, it
would be pretty fast at the initial phase. However, like the ingestion/digestion&amp;nbsp;analogy
I was referring to above - Once the server is in&amp;nbsp;a steady phase (as when CPU
is fully loaded), the throughput will go down because the server capacity has reached.
You can compare the data between async ASMX and sync ASMX &lt;strong&gt;&lt;em&gt;over the long
run&lt;/em&gt;&lt;/strong&gt; to see what I mean. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
Also you would see higher memory usage of the async approach.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;u&gt;ASP.NET Throttling&lt;/u&gt;&lt;/strong&gt;
&lt;br&gt;
That said, ASP.NET does have a throttling mechanism that is used for sync ASMX, which
is the threadpool thread limit. The number of threads used to handle requests are
bounded (&lt;a href="http://support.microsoft.com/kb/821268" target=_blank&gt;http://support.microsoft.com/kb/821268&lt;/a&gt;).
WCF uses this fact to throttle incoming requests. You can always change the configuration
settings to increase number of threads to be used to allow more work items to be queued
up.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
The max number of threads follows the following formula:&lt;br&gt;
&lt;strong&gt;&lt;em&gt;MaxWorkerThreads&amp;nbsp;x #CPU – MinFreeThreads&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
This is 12 by default on a single-proc machine.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;u&gt;Two-level Throttling for WCF&lt;br&gt;
&lt;/u&gt;&lt;/strong&gt;WCF leverages the ASP.NET threadpool throttling to throttle client requests.
At the same time, WCF has its &lt;a href="http://msdn2.microsoft.com/en-us/library/ms735114.aspx" target=_blank&gt;own
item queue throttling&lt;/a&gt;. The former is throttled by the setting mentioned in the
immediate above point, while the latter is controlled by &lt;a href="http://kennyw.com/indigo/150" target=_blank&gt;WCF
throttling settings (maxConcurrentCalls etc)&lt;/a&gt;. ASP.NET can automatically adjust
threads based on CPU loads so that you would always get full load of the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
In this way, you may experience client failures because the requests are rejected
at ASP.NET layer beforehand. So you can increase the ASP.NET throttling to get better
experience. But eventually you would still be bounded by the physical server capacity,
no matter whether you use async ASMX, sync ASMX, or WCF as mentioned above.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
There is improvement work done in .NET 3.0 SP1&amp;nbsp;and of course, .NET 3.5 (beta
2 &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=d2f74873-c796-4e60-91c8-f0ef809b09ee&amp;amp;displaylang=en" target=_blank&gt;here&lt;/a&gt;),
with the use of&amp;nbsp;&lt;em&gt;prioritized item queues.&amp;nbsp;&lt;/em&gt;Do expect even-better
WCF performance&amp;nbsp;even in&amp;nbsp;some of the&amp;nbsp;common scenarios. Fine tuning minWorkerThreads
will even give us even better results.
&lt;/p&gt;
&lt;p&gt;
Thanks&amp;nbsp;to &lt;a href="http://blogs.msdn.com/wenlong/" target=_blank&gt;Wenlong&lt;/a&gt; for
helping out with the guidance and explanation. The complete scenario and the design
principles for it&amp;nbsp;will be published in greater detail in a MSDN whitepaper later.
Do watch out for it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=30444bbe-15e6-45fd-adc2-18df79385216" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>.NET;Software Development;Visual Studio 2005;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=54e70119-b6be-49b6-bbdf-075ca458da68</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,54e70119-b6be-49b6-bbdf-075ca458da68.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It was not so long ago when <a href="http://www.softwaremaker.net/blog/SteveIsAskingIfTheyShouldDumpTheSvcFileExtensionsInIndigo.aspx" target="_blank">I
made my intentions known</a> that the .svc extension in <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> is really a clutz. It is obstrusive
and really unnatural, especially when it comes to RESTful Web Services.
</p>
        <p>
In a closed door meeting with the product group folks back in 2005, before WCF rolled
out and way before I joined <a href="http://en.wikipedia.org/wiki/Borg" target="_blank">the
borg</a>, I was told that this is a issue not with WCF itself, but by its web host
- <a href="http://en.wikipedia.org/wiki/Internet_Information_Services" target="_blank">Microsoft
Internet Information Server (IIS)</a></p>
        <p>
There are some attempts to hack around it but one of the best I have
seen is to do URL Re-Writing: Off <a href="http://www.masteringbiztalk.com/blogs/jon" target="_blank">Jon
Flanders</a><a href="http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,9e0d8d1e-ac7c-49b5-8072-bde42609f5db.aspx" target="_blank">here</a>.
You can see from the bottom of his post via <a href="http://blogs.thinktecture.com/cweyer" target="_blank">Christian
Weyer</a> that this still will not work with IIS6 (damned legacies) but this will
give you a good excuse to move to a <a href="http://technet2.microsoft.com/windowsserver/en/library/9d93db52-0855-4161-b1d3-8581a8385f1f1033.mspx?mfr=true" target="_blank"><strong><em>Better</em></strong>, <strong><em>Leaner</em></strong> and <strong><em>Meaner</em></strong></a><a href="http://www.microsoft.com/windowsserver2008/default.mspx" target="_blank">IIS7</a>,
which is a <a href="http://msdn.microsoft.com/msdnmag/issues/07/03/IIS7/" target="_blank">complete
rewrite of its predecessor</a>. About time, I say.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=54e70119-b6be-49b6-bbdf-075ca458da68" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>How to hack around the .svc curse</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,54e70119-b6be-49b6-bbdf-075ca458da68.aspx</guid>
      <link>http://www.softwaremaker.net/blog/HowToHackAroundTheSvcCurse.aspx</link>
      <pubDate>Sat, 25 Aug 2007 06:06:02 GMT</pubDate>
      <description>&lt;p&gt;
It was not so long ago when &lt;a href="http://www.softwaremaker.net/blog/SteveIsAskingIfTheyShouldDumpTheSvcFileExtensionsInIndigo.aspx" target=_blank&gt;I
made my intentions known&lt;/a&gt; that the .svc extension in &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; is really a clutz. It is obstrusive
and really unnatural, especially when it comes to RESTful Web Services.
&lt;/p&gt;
&lt;p&gt;
In a closed door meeting with the product group folks back in 2005, before WCF rolled
out and way before I joined &lt;a href="http://en.wikipedia.org/wiki/Borg" target=_blank&gt;the
borg&lt;/a&gt;, I was told that this is a issue not with WCF itself, but by its web host
- &lt;a href="http://en.wikipedia.org/wiki/Internet_Information_Services" target=_blank&gt;Microsoft
Internet Information Server (IIS)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
There&amp;nbsp;are&amp;nbsp;some attempts to hack around it but one of the&amp;nbsp;best I have
seen is to do URL Re-Writing: Off &lt;a href="http://www.masteringbiztalk.com/blogs/jon" target=_blank&gt;Jon
Flanders&lt;/a&gt; &lt;a href="http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,9e0d8d1e-ac7c-49b5-8072-bde42609f5db.aspx" target=_blank&gt;here&lt;/a&gt;.
You can see from the bottom of&amp;nbsp;his post&amp;nbsp;via &lt;a href="http://blogs.thinktecture.com/cweyer" target=_blank&gt;Christian
Weyer&lt;/a&gt; that this still will not work with IIS6 (damned legacies) but this will
give you a good excuse to move to a &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/9d93db52-0855-4161-b1d3-8581a8385f1f1033.mspx?mfr=true" target=_blank&gt;&lt;strong&gt;&lt;em&gt;Better&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Leaner&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;Meaner&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt; &lt;a href="http://www.microsoft.com/windowsserver2008/default.mspx" target=_blank&gt;IIS7&lt;/a&gt;,
which is a &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/03/IIS7/" target=_blank&gt;complete
rewrite of its predecessor&lt;/a&gt;. About time, I say.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=54e70119-b6be-49b6-bbdf-075ca458da68" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=f6972fa2-2668-42fb-94d9-8a0849e30861</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,f6972fa2-2668-42fb-94d9-8a0849e30861.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <title>Windows Communication Foundation AND Compact Framework: Part II</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,f6972fa2-2668-42fb-94d9-8a0849e30861.aspx</guid>
      <link>http://www.softwaremaker.net/blog/WindowsCommunicationFoundationANDCompactFrameworkPartII.aspx</link>
      <pubDate>Tue, 21 Aug 2007 00:53:20 GMT</pubDate>
      <description>&lt;p&gt;
Following up on &lt;a href="http://www.softwaremaker.net/blog/WindowsCommunicationFoundationANDCompactFramework.aspx" target=_blank&gt;this&lt;/a&gt;,
here are some more aggregated shareable details with regards to the &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa497273.aspx" target=_blank&gt;Compact
Framework&lt;/a&gt; 3.5:
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #1f497d"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font face=Calibri size=3&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;table class=MsoNormalTable style="BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" cellspacing=0 cellpadding=0 border=0&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Feature&lt;b&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Desktop WCF&lt;b&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Compact WCF&lt;b&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Bindings:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;BasicHttpBinding&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 3"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;CustomBinding&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 4"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;WindowsMobileMailBinding&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;N/A&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 5"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;ExchangeWebServiceMailBinding&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes, via NetCF install&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 6"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Formatters:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 7"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;SoapFormatter&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 8"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;BinaryFormatter&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 9"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Encoders:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 10"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;TextMessageEncoder&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 11"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;BinaryMessageEncodingBindingElement&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 12"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;MTOMEncoder&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 13"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;GzipEncoder&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Sample available&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 14"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Transports:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 15"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;HttpTransportBindingElement&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 16"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;HttpsTransportBindingElement&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 17"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;MailTransportBindingElement&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes, via NetCF install&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 18"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;MsmqTransportBindingElement&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 19"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;TcpTransportBindingElement&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 20"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 21"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;XmlDictionaryReader/Writer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes; stub around XmlTextReader/Writer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 22"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;DataContractSerializer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No; but can be wire-compatible with
DCS via XmlSerializer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 23"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Service proxy generation&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes; via SvcUtil.exe&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes; via NetCFSvcUtil.exe, not integrated
into VS2008&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 24"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Non-HTTP
transports&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 25"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Custom
headers&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 26"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;WS-Addressing&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 27"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;WS-Security message level security&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 28"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;X.509&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 29"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Username/password&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 30"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;WS-ReliableMessaging&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 31"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Patterns&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;
&lt;o:p&gt;
&lt;font face=Calibri&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 32"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Service
model&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 33"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Message
layer programming&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 34"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: -0.25in; mso-list: l0 level2 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Buffered
messages&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 35"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: -0.25in; mso-list: l0 level2 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Streaming
messages&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 36"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=330&gt;
&lt;p class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;
&lt;span style="COLOR: #76923c; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Endpoint
descriptions in .config files&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #c0c0c0; BACKGROUND-COLOR: transparent" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 37; mso-yfti-lastrow: yes"&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 247.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid" valign=top width=330&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Extensibility&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 76.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid" valign=top width=102&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #c0c0c0; PADDING-RIGHT: 5.4pt; BORDER-TOP: #c0c0c0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #c0c0c0; WIDTH: 162.3pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid" valign=top width=216&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;
&lt;span style="COLOR: #76923c"&gt;&lt;font face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=f6972fa2-2668-42fb-94d9-8a0849e30861" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=9abb6870-b48b-4344-ab02-f408972d0cd1</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,9abb6870-b48b-4344-ab02-f408972d0cd1.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While I was still an <a href="http://mvp.support.microsoft.com/" target="_blank" title="Microsoft Most Valuable Professional">Microsoft
MVP</a> and a <a href="http://msdn.microsoft.com/isv/rd/default.aspx" target="_blank" title="Microsoft Regional Director">Microsoft
Regional Director</a>, one of the things I have always requested is to have <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> run in the <a href="http://msdn2.microsoft.com/en-us/netframework/aa497273.aspx" target="_blank">Compact
Framework</a> to enable ease of use of <a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" target="_blank">WS-Security
Specifications</a> in distributed <a href="http://www.w3.org/TR/soap/" target="_blank">(W3C)
SOAP</a> communications.
</p>
        <p>
I mean, really - even <a href="http://msdn2.microsoft.com/en-us/webservices/aa740663.aspx" target="_blank" title="Web Services Enchancements">Web
Services Enhancements (WSE)</a> did not work at the Compact Framework level. One of
my friends and a really technically-brillant guy, <a href="http://www.brains-n-brawn.com/default.aspx" target="_blank">Casey
Chesnut</a> cooked <a href="http://www.mperfect.net/cfWse2/" target="_blank">something</a> up
to enable us to use secured communications on the compact framework (which I used).
</p>
        <p>
Now, I guess the CF in WCF means it can work in the Compact Framework now, finally. This
is a good <a href="http://blogs.msdn.com/markprenticems/archive/2007/03/27/introduction-to-windows-communication-foundation-for-the-net-compact-framework-messaging-stack.aspx" target="_blank">read</a> to
show whats coming up. For more, you would have to attend <a href="https://www.medc2007.com/public/home.aspx" target="_blank">MEDC
2007 in Vegas</a> later this month.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=9abb6870-b48b-4344-ab02-f408972d0cd1" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Windows Communication Foundation AND Compact Framework</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,9abb6870-b48b-4344-ab02-f408972d0cd1.aspx</guid>
      <link>http://www.softwaremaker.net/blog/WindowsCommunicationFoundationANDCompactFramework.aspx</link>
      <pubDate>Thu, 05 Apr 2007 23:45:20 GMT</pubDate>
      <description>&lt;p&gt;
While I was still an &lt;a href="http://mvp.support.microsoft.com/" target="_blank" title="Microsoft Most Valuable Professional"&gt;Microsoft
MVP&lt;/a&gt; and a&amp;nbsp;&lt;a href="http://msdn.microsoft.com/isv/rd/default.aspx" target="_blank" title="Microsoft Regional Director"&gt;Microsoft
Regional Director&lt;/a&gt;, one of the things I have always requested is to have &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; run in the &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa497273.aspx" target=_blank&gt;Compact
Framework&lt;/a&gt; to enable ease of use of &lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" target="_blank"&gt;WS-Security
Specifications&lt;/a&gt; in distributed &lt;a href="http://www.w3.org/TR/soap/" target="_blank"&gt;(W3C)
SOAP&lt;/a&gt; communications.
&lt;/p&gt;
&lt;p&gt;
I mean, really - even &lt;a href="http://msdn2.microsoft.com/en-us/webservices/aa740663.aspx" target="_blank" title="Web Services Enchancements"&gt;Web
Services Enhancements (WSE)&lt;/a&gt; did not work at the Compact Framework level. One of
my friends and a really technically-brillant guy, &lt;a href="http://www.brains-n-brawn.com/default.aspx" target=_blank&gt;Casey
Chesnut&lt;/a&gt; cooked &lt;a href="http://www.mperfect.net/cfWse2/" target=_blank&gt;something&lt;/a&gt; up
to enable us to use secured communications on the compact framework (which I used).
&lt;/p&gt;
&lt;p&gt;
Now, I guess the CF in WCF means it can work in the Compact Framework now, finally.&amp;nbsp;This
is a good &lt;a href="http://blogs.msdn.com/markprenticems/archive/2007/03/27/introduction-to-windows-communication-foundation-for-the-net-compact-framework-messaging-stack.aspx" target=_blank&gt;read&lt;/a&gt; to
show whats coming up. For more, you would have to attend &lt;a href="https://www.medc2007.com/public/home.aspx" target=_blank&gt;MEDC
2007 in Vegas&lt;/a&gt; later this month.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=9abb6870-b48b-4344-ab02-f408972d0cd1" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=3fd01267-109b-4417-8852-4bfe4359fa81</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,3fd01267-109b-4417-8852-4bfe4359fa81.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is a continuation of my previous post: <a href="http://www.softwaremaker.net/blog/WSReliableMessagingSimplifiedWHY.aspx" target="_blank">WS-ReliableMessaging
Simplified - WHY</a></p>
        <p>
While this blog sits in my draft folder while I am busy solving and fire-fighting <em>other</em> real-world
problems, I just found out that my fellow distributed and connected systems enthusiast, <a href="http://www.request-response.com/blog" target="_blank">Matevz</a> has <a href="http://www.request-response.com/blog/PermaLink,guid,a6cb59e6-cbc2-4ce3-92b2-ea40bc5929f6.aspx" target="_blank">penned
down the WHATs and HOWs of WS-ReliableMessaging</a> faster than me, AND with even
greater details !!!
</p>
        <p>
So, instead of replicating that effort, it would be better for me to do a high level
post about the HOWs of WS-ReliableMessaing. The below diagram of WS-ReliableMessaging
explains the sequencing really well.
</p>
        <p>
          <img title="WS-ReliableMessaging - HOW" height="447" alt="WS-ReliableMessaging - HOW" src="http://www.softwaremaker.net/blog/content/binary/WSRMHow.JPG" width="581" border="0" />
        </p>
        <p>
 
</p>
        <p>
Let me explain the concepts of WS-ReliableMessaging in terms of a conversation between
Alice and Bob:
</p>
        <p>
          <strong>Alice</strong>: Let me call Bob on his mobile telephone.<em><font color="#ff0000"><strong>(CreateSequence)</strong></font></em><br /><em>(Ring Ring ... Bob Picks up the phone)<br /></em><strong>Bob</strong>: Hello ? <strong><em><font color="#ff0000">(CreateSequenceResponse)</font></em></strong><br /><strong>Alice: </strong>Hi Bob, this is Alice<strong><em><font color="#ff0000">(CreateSequenceResponse)</font></em></strong><br /><strong>Bob:</strong> Hi Alice <strong><em><font color="#ff0000">(CreateSequenceResponse,
Identifier)</font></em></strong><br /><strong>Alice:</strong> I would like to have a meeting with you tomorrow at 1000 hours <strong><em><font color="#ff0000">(MessageNumber=1)<br /></font></em>Bob:</strong> Cool. Roger. I got that. Sure, let meet tomorrow at 1000
hours.<br /><strong>Alice:</strong> Can we meet at my office in North Ryde ? <em><strong><font color="#ff0000">(MessageNumber=2)<br /></font></strong>(Bob walks into a GSM blind spot ...)</em><br /><strong>Alice:</strong> Oh yeah, and Bob, please bring those M&amp;A files for clearance
for our senior VP <strong><em><font color="#ff0000">(MessageNumber=3)</font></em></strong><br /><strong>Alice:</strong> Hello Bob, did you get that ? Please repeat. <font color="#ff0000"><strong><em>(AckRequested)</em></strong></font><br /><strong>Bob:</strong> Yes, I got that you are saying that we should meet up at 1000
hours at your office. Period <strong><em><font color="#ff0000">(SequenceAcknowledgement)<br /></font></em>Alice:</strong> No, you are not getting the full picture. You need to
bring those M&amp;A files for clearance for our senior VP <strong><em><font color="#ff0000">(Resend
MessageNumber=3)</font></em></strong>. Kindly repeat what I just said <strong><em><font color="#ff0000">(AckRequested)</font></em></strong><br /><strong>Bob:</strong> Yeah. Got it. We should meet up at 1000 hours at your office
and I will bring those M&amp;A files for clearance for our senior VP. <strong><em><font color="#ff0000">(SequenceAcknowledgement)<br /></font></em>Alice:</strong> Bingo. Good. Please make a reservation for 1200 hours
for lunch at "Steaks by the Bay" as well. <em><strong>(MessageNumber=4)<br /></strong>(Bob's phone went dead ...)<br /></em><strong>Alice:</strong> Hello ? Bob, did you get that ? <strong><em><font color="#ff0000">(AckRequested)<br /></font></em>Alice:</strong> Hello ? Bob, did you get that ? <strong><em><font color="#ff0000">(AckRequested)</font></em></strong><br /><strong>Alice:</strong> Hello ? Bob, did you get that ? <strong><em><font color="#ff0000">(AckRequested)</font></em></strong><br /><strong>Alice:</strong> Hmmm. Something is wrong. Let me call Bob again. <strong><em><font color="#ff0000">(AcknowledgementInterval
is up)</font></em></strong><br /><em>(Ring Ring ... Bob Picks up the phone)</em><br /><strong>Alice:</strong> Hi Bob, this is Alice. Sorry, I think I got cut-off from the
earlier call. <strong><em><font color="#ff0000">(CreateSequence)</font></em></strong><br /><strong>Bob:</strong> Hi Alice. Sorry, yeah, my fault. I pressed the wrong button <strong><em><font color="#ff0000">(CreateSequenceResponse
with prev Identifier establised)<br /></font></em>Alice:</strong> I was wondering if you can make a reservation for 1200
hours for lunch at "Steaks by the Bay" after that 1000 meeting tomorrow. <strong><em><font color="#ff0000">(MessageNumber=1)</font></em></strong> Please
acknowledge. <strong><em><font color="#ff0000">(AckRequested)</font></em></strong><br /><strong>Bob:</strong> Sure, of course. I will make a reservation for 1200 hours for
lunch at "Steaks by the Bay" <strong><em><font color="#ff0000">(SequenceAcknowledgement)</font></em></strong><br /><strong>Alice:</strong> Alright then. Lets end this phone call. See you tomorrow.
Thanks and Bye. <strong><em><font color="#ff0000">(TerminateSequence of this Identifier)</font></em></strong><br /><strong>Bob:</strong> See you tomorrow, Alice. <strong><em><font color="#ff0000">(TerminateSequenceResponse)</font></em></strong></p>
        <p>
Of course, the above is a simplistic view and there is a lot more to WS-ReliableMessaging
than what I have just illustrated above with buffers, inactivitytimeouts due to infrastructure
faults, in-order deliveries, maxRetryCount, maxTransferWindowSize, etc. But you get
the jizz of this picture of why InOrder, idempotent-aware ReliableMessaging is needed
in complex real-world enterprise-scale distributed communications.
</p>
        <p>
If you want to know the WHATS and all in better detail, do visit Matevz's post <a href="http://www.request-response.com/blog/PermaLink,guid,a6cb59e6-cbc2-4ce3-92b2-ea40bc5929f6.aspx" target="_blank">here</a> and
a continuation <a href="http://www.request-response.com/blog/PermaLink,guid,aa617aa7-1073-422c-86f5-deaaa0758e7d.aspx" target="_blank">here</a>.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=3fd01267-109b-4417-8852-4bfe4359fa81" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>WS-ReliableMessaging Simplified - WHAT and HOW ?</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,3fd01267-109b-4417-8852-4bfe4359fa81.aspx</guid>
      <link>http://www.softwaremaker.net/blog/WSReliableMessagingSimplifiedWHATAndHOW.aspx</link>
      <pubDate>Mon, 19 Feb 2007 02:57:18 GMT</pubDate>
      <description>&lt;p&gt;
This is a continuation of my previous post: &lt;a href="http://www.softwaremaker.net/blog/WSReliableMessagingSimplifiedWHY.aspx" target=_blank&gt;WS-ReliableMessaging
Simplified - WHY&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
While this blog sits in my draft folder while I am busy solving and fire-fighting &lt;em&gt;other&lt;/em&gt; real-world
problems, I just found out that my fellow distributed and connected systems enthusiast, &lt;a href="http://www.request-response.com/blog" target=_blank&gt;Matevz&lt;/a&gt; has &lt;a href="http://www.request-response.com/blog/PermaLink,guid,a6cb59e6-cbc2-4ce3-92b2-ea40bc5929f6.aspx" target=_blank&gt;penned
down the WHATs and HOWs of WS-ReliableMessaging&lt;/a&gt; faster than me, AND with even
greater details !!!
&lt;/p&gt;
&lt;p&gt;
So, instead of replicating that effort, it would be better for me to do a high level
post about the HOWs of WS-ReliableMessaing. The below diagram of WS-ReliableMessaging
explains the sequencing really well.
&lt;/p&gt;
&lt;p&gt;
&lt;img title="WS-ReliableMessaging - HOW" height=447 alt="WS-ReliableMessaging - HOW" src="http://www.softwaremaker.net/blog/content/binary/WSRMHow.JPG" width=581 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Let me explain the concepts of WS-ReliableMessaging in terms of a conversation between
Alice and Bob:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Alice&lt;/strong&gt;: Let me call Bob on his mobile telephone.&lt;em&gt;&lt;font color=#ff0000&gt;&lt;strong&gt;(CreateSequence)&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;
&lt;br&gt;
&lt;em&gt;(Ring Ring ... Bob Picks up the phone)&lt;br&gt;
&lt;/em&gt;&lt;strong&gt;Bob&lt;/strong&gt;: Hello ? &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(CreateSequenceResponse)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Alice: &lt;/strong&gt;Hi Bob, this is Alice&lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(CreateSequenceResponse)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Bob:&lt;/strong&gt; Hi Alice &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(CreateSequenceResponse,
Identifier)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; I would like to have a meeting with you tomorrow at 1000 hours &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(MessageNumber=1)&lt;br&gt;
&lt;/font&gt;&lt;/em&gt;Bob:&lt;/strong&gt; Cool. Roger. I got that. Sure, let meet tomorrow at 1000
hours.&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; Can we meet at my office in North Ryde ? &lt;em&gt;&lt;strong&gt;&lt;font color=#ff0000&gt;(MessageNumber=2)&lt;br&gt;
&lt;/font&gt;&lt;/strong&gt;(Bob walks into a GSM blind spot ...)&lt;/em&gt;
&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; Oh yeah, and Bob, please bring those M&amp;amp;A files for clearance
for our senior VP &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(MessageNumber=3)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; Hello Bob, did you get that ? Please repeat. &lt;font color=#ff0000&gt;&lt;strong&gt;&lt;em&gt;(AckRequested)&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;
&lt;br&gt;
&lt;strong&gt;Bob:&lt;/strong&gt; Yes, I got that you are saying that we should meet up at 1000
hours at your office. Period &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(SequenceAcknowledgement)&lt;br&gt;
&lt;/font&gt;&lt;/em&gt;Alice:&lt;/strong&gt; No, you are not getting the full picture. You need to
bring those M&amp;amp;A files for clearance for our senior VP &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(Resend
MessageNumber=3)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;. Kindly repeat what I just said &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(AckRequested)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Bob:&lt;/strong&gt; Yeah. Got it. We should meet up at 1000 hours at your office
and I will bring those M&amp;amp;A files for clearance for our senior VP. &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(SequenceAcknowledgement)&lt;br&gt;
&lt;/font&gt;&lt;/em&gt;Alice:&lt;/strong&gt; Bingo. Good. Please make a reservation for 1200 hours
for lunch at "Steaks by the Bay" as well. &lt;em&gt;&lt;strong&gt;(MessageNumber=4)&lt;br&gt;
&lt;/strong&gt;(Bob's phone went dead ...)&lt;br&gt;
&lt;/em&gt;&lt;strong&gt;Alice:&lt;/strong&gt; Hello ? Bob, did you get that ? &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(AckRequested)&lt;br&gt;
&lt;/font&gt;&lt;/em&gt;Alice:&lt;/strong&gt; Hello ? Bob, did you get that ? &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(AckRequested)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; Hello ? Bob, did you get that ? &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(AckRequested)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; Hmmm. Something is wrong. Let me call Bob again. &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(AcknowledgementInterval
is up)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;em&gt;(Ring Ring ... Bob Picks up the phone)&lt;/em&gt;
&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; Hi Bob, this is Alice. Sorry, I think I got cut-off from the
earlier call. &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(CreateSequence)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Bob:&lt;/strong&gt; Hi Alice. Sorry, yeah, my fault. I pressed the wrong button &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(CreateSequenceResponse
with prev Identifier establised)&lt;br&gt;
&lt;/font&gt;&lt;/em&gt;Alice:&lt;/strong&gt; I was wondering if you can make a reservation for 1200
hours for lunch at "Steaks by the Bay" after that 1000 meeting tomorrow. &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(MessageNumber=1)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; Please
acknowledge. &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(AckRequested)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Bob:&lt;/strong&gt; Sure, of course. I will make a reservation for 1200 hours for
lunch at "Steaks by the Bay" &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(SequenceAcknowledgement)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Alice:&lt;/strong&gt; Alright then. Lets end this phone call. See you tomorrow.
Thanks and Bye. &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(TerminateSequence of this Identifier)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Bob:&lt;/strong&gt; See you tomorrow, Alice. &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;(TerminateSequenceResponse)&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Of course, the above is a simplistic view and there is a lot more to WS-ReliableMessaging
than what I have just illustrated above with buffers, inactivitytimeouts due to infrastructure
faults, in-order deliveries, maxRetryCount, maxTransferWindowSize, etc. But you get
the jizz of this picture of why InOrder, idempotent-aware ReliableMessaging is needed
in complex real-world enterprise-scale distributed communications.
&lt;/p&gt;
&lt;p&gt;
If you want to know the WHATS and all in better detail, do visit Matevz's post &lt;a href="http://www.request-response.com/blog/PermaLink,guid,a6cb59e6-cbc2-4ce3-92b2-ea40bc5929f6.aspx" target=_blank&gt;here&lt;/a&gt;&amp;nbsp;and
a continuation &lt;a href="http://www.request-response.com/blog/PermaLink,guid,aa617aa7-1073-422c-86f5-deaaa0758e7d.aspx" target=_blank&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=3fd01267-109b-4417-8852-4bfe4359fa81" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Technology;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=dc33c7ac-e541-47d6-972c-24a49d02a694</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,dc33c7ac-e541-47d6-972c-24a49d02a694.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
These are just some of the tabs that can be found if you expose a <a href="http://www.microsoft.com/biztalk/" target="_blank">Microsoft
BizTalk Server</a> 2006 R2 process via a <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> Service.
</p>
        <p>
          <img title="Binding Tab of BizTalk 2006 R2" height="284" alt="BTS06R2Binding.JPG" src="http://www.softwaremaker.net/blog/content/binary/BTS06R2Binding.JPG" width="477" border="0" />
          <br />
          <img title="Security Tab of BizTalk 2006 R2" height="399" alt="BTS06R2Security.JPG" src="http://www.softwaremaker.net/blog/content/binary/BTS06R2Security.JPG" width="476" border="0" />
          <br />
          <img title="Messaging Tab of BizTalk 2006 R2" height="539" alt="BTS06R2Message.JPG" src="http://www.softwaremaker.net/blog/content/binary/BTS06R2Message.JPG" width="522" border="0" />
        </p>
        <p>
The interesting part of the Messaging Tab of BizTalk 2006 R2 is that you are able
to dictate the source of the inbound message body that you would like BizTalk to handle.
</p>
        <p>
You can specify it to be the entire <strong><em><font color="#ff0000">&lt;soap:Envelope&gt;</font></em></strong> or
just the <strong><em><font color="#ff0000">&lt;soap:Body&gt;</font></em></strong>,
which essentially strips out the <strong><em><font color="#ff0000">&lt;soap:Header&gt;</font></em></strong> element
from the entire envelope. The flexibility comes in when you can dictate and customize the
message content via an <a href="http://www.w3.org/TR/xpath20/" target="_blank">XPath</a> expression
that you would like BizTalk to process such as: <strong><em><font color="#ff0000">/bookstore/book[0]</font></em></strong> ...
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=dc33c7ac-e541-47d6-972c-24a49d02a694" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>BizTalk Server 2006 R2 and WCF Integration</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,dc33c7ac-e541-47d6-972c-24a49d02a694.aspx</guid>
      <link>http://www.softwaremaker.net/blog/BizTalkServer2006R2AndWCFIntegration.aspx</link>
      <pubDate>Thu, 15 Feb 2007 07:34:21 GMT</pubDate>
      <description>&lt;p&gt;
These are just some of the tabs that can be found if you expose a &lt;a href=http://www.microsoft.com/biztalk/ target=_blank&gt;Microsoft
BizTalk Server&lt;/a&gt; 2006 R2 process via a &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; Service.
&lt;/p&gt;
&lt;p&gt;
&lt;img title="Binding Tab of BizTalk 2006 R2" height=284 alt=BTS06R2Binding.JPG src="http://www.softwaremaker.net/blog/content/binary/BTS06R2Binding.JPG" width=477 border=0&gt;
&lt;br&gt;
&lt;img title="Security Tab of BizTalk 2006 R2" height=399 alt=BTS06R2Security.JPG src="http://www.softwaremaker.net/blog/content/binary/BTS06R2Security.JPG" width=476 border=0&gt;
&lt;br&gt;
&lt;img title="Messaging Tab of BizTalk 2006 R2" height=539 alt=BTS06R2Message.JPG src="http://www.softwaremaker.net/blog/content/binary/BTS06R2Message.JPG" width=522 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
The interesting part of the Messaging Tab of BizTalk 2006 R2 is that you are able
to dictate the source of the inbound message body that you would like BizTalk to handle.
&lt;/p&gt;
&lt;p&gt;
You can specify it to be the entire &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;&amp;lt;soap:Envelope&amp;gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; or
just the &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;&amp;lt;soap:Body&amp;gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;, which
essentially strips out the &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;&amp;lt;soap:Header&amp;gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; element
from the entire envelope. The flexibility comes in when you can dictate and customize&amp;nbsp;the
message content via an &lt;a href="http://www.w3.org/TR/xpath20/" target=_blank&gt;XPath&lt;/a&gt; expression
that you would like BizTalk to process such as: &lt;strong&gt;&lt;em&gt;&lt;font color=#ff0000&gt;/bookstore/book[0]&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; ...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=dc33c7ac-e541-47d6-972c-24a49d02a694" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>BizTalk;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=99c0f411-99c8-41a7-aebf-cc74947d338d</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,99c0f411-99c8-41a7-aebf-cc74947d338d.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It is amazing to note the reach to the masses of a single MSDN Webcast. I had <a href="http://www.softwaremaker.net/blog/MSDNRedmondWebcastingFromSingapore.aspx" target="_blank">conducted
a MSDN Webcast</a> titled: "<a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032299329&amp;EventCategory=5&amp;culture=en-US&amp;CountryCode=US" target="_blank">Acks
and NAcks: Why We Need the Principles of TCP/IP Reliability in SOAP</a>" in mid-2006
and till this day, I am still receiving questions and feedback about that topic I
presented in the webcast. (Incidentally, you can view the on-demand webcast <a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032299329%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e" target="_blank">here</a>.)
</p>
        <p>
For those of you who do not want to go through this webcast again, I am going to break
that presentation into the WHYs, WHATs and HOWs on this blog. This will make for easy-reading
and straight-to-the-point as well.
</p>
        <p>
          <font color="#ff0000" size="4">WHY ?</font>
        </p>
        <p>
This is rather straightforward. Why is it important? Why does it matter whether messages
can be sent and received reliably? Web services is based on XML messages being sent
and received. The most useful Web services will often be those that are the most complex
and that rely on many messages being sent and received in a very specific order. That's
the way that complex transactions can be built, after all. 
</p>
        <p>
Let us look at this problem in context before figuring out where the pain-points are.
Most complex transactions in enterprises require far more messages to be sent and
received. The messages will be much more intricate and may have very complex dependencies
on one another, so that certain processes can't be kicked off until certain previous
messages have been sent and acknowledged. Entire complex transactions can fail because
a simple message didn't get through. And while it may sound simple to guarantee reliability,
it's much more difficult than you might expect.
</p>
        <p>
To add to the complexity, the main characteristics of Web services is communication
over unreliable communication channels such as the Internet employing unreliable data
transfer protocols such as HTTP, SMTP and FTP. These are considered unreliable, as
they do not offer the reliable messaging services such as guaranteed delivery. Accordingly
reliable messaging becomes one of the first problems that need to be addressed for
Web services to become truly enterprise-capable technologies.
</p>
        <p>
          <strong>
            <em>
              <font color="#808080">
                <img height="34" alt="openquotes.png" src="http://www.softwaremaker.net/blog/content/binary/openquotes.png" width="44" border="0" />...there
is nothing in SOAP or even HTTP that guarantees anyone that a message is delivered,
or that allows a someone to tell the sender he/she has received
the message...<img height="34" alt="closequotes.png" src="http://www.softwaremaker.net/blog/content/binary/closequotes.png" width="44" border="0" /></font>
            </em>
          </strong>
        </p>
        <p>
Making reliable messaging more difficult is that messages are sent not just over the
notoriously unreliable Internet, but also between partners that use entirely different
networking infrastructures.
</p>
        <p>
What many companies did in the past was to rely on proprietary messaging infrastructures
to connect applications with one another. In these days of "open-standards",
the industry would much prefer what Web services promises -- a messaging paradigm
NOT based on any proprietary implementations."
</p>
        <p>
To put it simply - If that reliability can't be guaranteed, Web services simply won't
be used in the enterprise. The benefits of Web Services cannot be realized if it is
not being used for complex scenarios in the enterprise.
</p>
        <p>
Let us look at some of the inherent problems in which cross-boundaries communication
happen today, especially over the cloud:
</p>
        <ol>
          <li>
            <strong>
              <font color="#ff0000">Re-ordering of Messages in Multi-Path Routing Scenario</font>
            </strong>
            <br />
            <br />
This is one problem that not many people realize because not many people would know
the entire infrastructure physical topology of a end-to-end communication network
channel. If you have 2 or more intermediaries that act as routers over a load-balanced
network for example, messages being sent out may be routed differently over the network.
In other words - The first Message ONE may be routed via Router 2 while the
second Message TWO routed over Router 1. The complexity arises when the
routers have their own routing table and paths and due to congestion of Router
2 over Router 1, the second Message TWO may arrive first, faster than
Message ONE, at the final destination.<br /><br /></li>
          <li>
            <strong>
              <font color="#ff0000">Intermediary Reliability</font>
            </strong>
            <br />
            <br />
What is not so self-explanatory is this - What happens if/when the intermediary drops
my message ? How do I know if the other party has received it ? If I should send the
same message again (just to be sure), how do I know if the serivce is designed to
be "<a href="http://dotnetjunkies.com/WebLog/softwaremaker/archive/2004/09/02/24049.aspx" target="_blank">idempotent</a>"
? This point has very explicit relations with the Quality-of-Service (QoS) assertions
of a service. Each message sent must be received exactly once (once and only once). Failure
to deliver a message be made known to both the sender and receiver.<br /><br /></li>
          <li>
            <strong>
              <font color="#ff0000">Connection Management</font>
            </strong>
            <br />
            <br />
            <ul>
              <li>
“… my connection with the service drops frequently within this Wi-Fi network, but
I don’t want to lose messages or the underlying session …” 
</li>
              <li>
“Bursty Connections - I may go idle for long periods of time and I don’t want to hold
transport connections open …” 
</li>
              <li>
“… my service is using resources for each session and I want to release those resources
if the client is not there anymore …”<br /><br /></li>
            </ul>
          </li>
          <li>
            <strong>
              <font color="#ff0000">Need for Transport Independence</font>
            </strong>
            <br />
            <br />
As I have mentioned earlier, different partners have different networking infrastructures
and the need to rely on "open-standards" means that there is a need to decouple that
reliablity element away from the transport. This ensures that different parties can
choose to use whichever transport that suits them best but yet have a common accepted
understanding on the reliability protocol that is independent of the chosen mode of
transport.<br /><br /></li>
        </ol>
        <p>
To sum it up simply, we live in the real world. One that is not so perfect. The one
where
</p>
        <ul>
          <li>
Servers fail 
</li>
          <li>
Systems get out of synch 
</li>
          <li>
Messages get lost 
</li>
          <li>
Messages get re-ordered 
</li>
          <li>
Messages cannot be safely re-tried</li>
        </ul>
        <p>
and the same one that explains why we need reliable messaging in Web Services.
</p>
        <p>
NEXT UP: <a href="http://www.softwaremaker.net/blog/WSReliableMessagingSimplifiedWHATAndHOW.aspx" target="_blank">WS-ReliableMessaging
Simplified - WHAT and HOW</a> ?
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=99c0f411-99c8-41a7-aebf-cc74947d338d" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>WS-ReliableMessaging Simplified - WHY ?</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,99c0f411-99c8-41a7-aebf-cc74947d338d.aspx</guid>
      <link>http://www.softwaremaker.net/blog/WSReliableMessagingSimplifiedWHY.aspx</link>
      <pubDate>Sat, 27 Jan 2007 23:28:19 GMT</pubDate>
      <description>&lt;p&gt;
It is amazing to note the reach to the masses of a single MSDN Webcast. I had&amp;nbsp;&lt;a href="http://www.softwaremaker.net/blog/MSDNRedmondWebcastingFromSingapore.aspx" target=_blank&gt;conducted
a MSDN Webcast&lt;/a&gt; titled: "&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032299329&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US" target=_blank&gt;Acks
and NAcks: Why We Need the Principles of TCP/IP Reliability in SOAP&lt;/a&gt;" in mid-2006
and till this day, I am still receiving questions and feedback about that topic I
presented in the webcast. (Incidentally, you can view the on-demand webcast &lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032299329%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e" target=_blank&gt;here&lt;/a&gt;.)
&lt;/p&gt;
&lt;p&gt;
For those of you who do not want to go through this webcast again, I am going to break
that presentation into the WHYs, WHATs and HOWs on this blog. This will make for easy-reading
and straight-to-the-point as well.
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#ff0000 size=4&gt;WHY ?&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
This is rather straightforward. Why is it important? Why does it matter whether messages
can be sent and received reliably? Web services is based on XML messages being sent
and received. The most useful Web services will often be those that are the most complex
and that rely on many messages being sent and received in a very specific order. That's
the way that complex transactions can be built, after all. 
&lt;/p&gt;
&lt;p&gt;
Let us look at this problem in context before figuring out where the pain-points are.
Most complex transactions in enterprises require far more messages to be sent and
received. The messages will be much more intricate and may have very complex dependencies
on one another, so that certain processes can't be kicked off until certain previous
messages have been sent and acknowledged. Entire complex transactions can fail because
a simple message didn't get through. And while it may sound simple to guarantee reliability,
it's much more difficult than you might expect.
&lt;/p&gt;
&lt;p&gt;
To add to the complexity, the main characteristics of Web services is communication
over unreliable communication channels such as the Internet employing unreliable data
transfer protocols such as HTTP, SMTP and FTP. These are considered unreliable, as
they do not offer the reliable messaging services such as guaranteed delivery. Accordingly
reliable messaging becomes one of the first problems that need to be addressed for
Web services to become truly enterprise-capable technologies.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;&lt;font color=#808080&gt;&lt;img height=34 alt=openquotes.png src="http://www.softwaremaker.net/blog/content/binary/openquotes.png" width=44 border=0&gt;...there
is nothing in SOAP or even HTTP that guarantees&amp;nbsp;anyone that a message is delivered,
or that allows a&amp;nbsp;someone to tell&amp;nbsp;the&amp;nbsp;sender&amp;nbsp;he/she has&amp;nbsp;received
the message...&lt;img height=34 alt=closequotes.png src="http://www.softwaremaker.net/blog/content/binary/closequotes.png" width=44 border=0&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Making reliable messaging more difficult is that messages are sent not just over the
notoriously unreliable Internet, but also between partners that use entirely different
networking infrastructures.
&lt;/p&gt;
&lt;p&gt;
What many companies did in the past was to&amp;nbsp;rely on proprietary messaging infrastructures
to connect applications with one another.&amp;nbsp;In these days of "open-standards",
the&amp;nbsp;industry would much prefer what Web services promises -- a messaging paradigm
NOT based on&amp;nbsp;any proprietary implementations."
&lt;/p&gt;
&lt;p&gt;
To put it simply - If that reliability can't be guaranteed, Web services simply won't
be used in the enterprise. The benefits of Web Services cannot be realized if it is
not being used for complex scenarios in the enterprise.
&lt;/p&gt;
&lt;p&gt;
Let us look at some of the inherent problems in which cross-boundaries communication
happen today, especially over the cloud:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;font color=#ff0000&gt;Re-ordering of Messages in Multi-Path Routing Scenario&lt;/font&gt;&lt;/strong&gt; 
&lt;br&gt;
&lt;br&gt;
This is one problem that not many people realize because not many people would know
the entire infrastructure physical topology of a end-to-end communication network
channel. If you have 2 or more intermediaries that act as routers over a load-balanced
network for example, messages being sent out may be routed differently over the network.
In other words - The first Message&amp;nbsp;ONE may be routed via Router 2 while&amp;nbsp;the
second Message&amp;nbsp;TWO&amp;nbsp;routed over Router 1. The complexity arises when the
routers have their own routing table and paths and due to congestion of&amp;nbsp;Router
2&amp;nbsp;over&amp;nbsp;Router 1, the second Message&amp;nbsp;TWO may arrive first, faster than
Message&amp;nbsp;ONE,&amp;nbsp;at the final destination.&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;strong&gt;&lt;font color=#ff0000&gt;Intermediary Reliability&lt;/font&gt;&lt;/strong&gt; 
&lt;br&gt;
&lt;br&gt;
What is not so self-explanatory is this - What happens if/when the intermediary drops
my message ? How do I know if the other party has received it ? If I should send the
same message again (just to be sure), how do I know if the serivce is designed to
be "&lt;a href="http://dotnetjunkies.com/WebLog/softwaremaker/archive/2004/09/02/24049.aspx" target=_blank&gt;idempotent&lt;/a&gt;"
? This point has very explicit relations&amp;nbsp;with the Quality-of-Service (QoS) assertions
of a service. Each message sent must be received exactly once (once and only once).&amp;nbsp;Failure
to deliver a message be made known to both the sender and receiver.&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
&lt;strong&gt;&lt;font color=#ff0000&gt;Connection Management&lt;/font&gt;&lt;/strong&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
“… my connection with the service drops frequently within this Wi-Fi network, but
I don’t want to lose messages or the underlying session …” 
&lt;li&gt;
“Bursty Connections - I may go idle for long periods of time and I don’t want to hold
transport connections open …” 
&lt;li&gt;
“… my service is using resources for each session and I want to release those resources
if the client is not there anymore …”&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;font color=#ff0000&gt;Need for Transport Independence&lt;/font&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
As I have mentioned earlier, different partners have different networking infrastructures
and the need to rely on "open-standards" means that there is a need to decouple that
reliablity element away from the transport. This ensures that different parties can
choose to use whichever transport that suits them best but yet have a common&amp;nbsp;accepted
understanding on the reliability protocol that is independent of the chosen mode of
transport.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
To sum it up simply, we live in the real world. One that is not so perfect. The one
where
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Servers fail 
&lt;li&gt;
Systems get out of synch 
&lt;li&gt;
Messages get lost 
&lt;li&gt;
Messages get re-ordered 
&lt;li&gt;
Messages cannot be safely re-tried&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
and the same one that explains why we need reliable messaging in Web Services.
&lt;/p&gt;
&lt;p&gt;
NEXT UP: &lt;a href="http://www.softwaremaker.net/blog/WSReliableMessagingSimplifiedWHATAndHOW.aspx" target=_blank&gt;WS-ReliableMessaging
Simplified - WHAT and HOW&lt;/a&gt;&amp;nbsp;?
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=99c0f411-99c8-41a7-aebf-cc74947d338d" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Technology;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=7fc4db78-44ae-42fa-a7c9-ad91d9186e01</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,7fc4db78-44ae-42fa-a7c9-ad91d9186e01.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The trouble with being part of the early adopters curve is that most of the time,
your time is spend very unproductively trying to figure out, if samples dont work
well, the reason why.
</p>
        <p>
Is it a bad installation? bad configuration? corrupted downloads? or just simply the
fact that the product team, while in a rush to get things out, forgot to update or
remove the "deprecated" samples ?
</p>
        <p>
While working very deeply with <a href="http://msdn.microsoft.com/en-us/netframework/aa663320.aspx" target="_blank">Microsoft
Cardspace</a> for a few months now and I mean doing "real" work for "real"
clients, I would be one of the first to keep up to date on the new and upcoming Cardspace
technicals.
</p>
        <p>
While downloading and installing the July CTP SDK Cardspace samples, I found out that both
the Cardspace SDK samples could not work at all - out of the box. I installed the
CTP and the SDK twice to make sure that I didnt screw up the first time around (that
means an hour of unproductive time wasted).
</p>
        <p>
I was rather shocked when I found out that the <a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=601808&amp;SiteID=1" target="_blank">Cardspace
SDK samples have been deprecated BUT have not been removed by the team in time and
my frustrations grew when the new working samples have not been uploaded in time as
promised</a>.
</p>
        <p>
Who can I blame ? - No one forced me to be part of the Early Adopter's curve
and no one asked me to download the July CTP SDK and its samples. Afterall, it is
supposed to be an <a href="http://wcs.netfx3.com/blogs/news_and_announcements/archive/2006/07/17/July-CTP-arrives-and-Sandbox-goes-live_2100_.aspx" target="_blank">eagerly-anticipated
drop</a>. That said, the previous samples, in some way or another, have not been
working too well at all. Some works perfectly on the local machine but have some troubles
going out to the wild, while others like the June CTP, had <a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=539190&amp;SiteID=1" target="_blank">its own
host of problems</a>.
</p>
        <p>
So, what better way to do this than to roll-up-your sleeves and do-it-yourself ? While
doing some reflecting, I found out some of the Cardspace July CTP SDK samples had
not had its config and script files updated.
</p>
        <ul>
          <li>
The setup scripts had some errors. &gt; set InfoCardServiceName="idsvc".
Therefore, it is "net start idsvc". I answered my own post <a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=601416&amp;SiteID=1" target="_blank">here</a>. 
</li>
          <li>
For the Simple Infocard sample under Basic\Bindings\WS\Infocard\Simple. Service config
should have their behavior element changed as such. The issuedTokenAuthentication
element is a key change/update.</li>
        </ul>
        <p>
    &lt;behaviors&gt;<br />
      &lt;serviceBehaviors&gt;<br />
        &lt;behavior name="ServiceCredentials"&gt;<br />
          &lt;serviceCredentials&gt;<br />
            &lt;serviceCertificate
findValue="Whatever_you_are_using" x509FindType="FindBySubjectName"
storeLocation="LocalMachine" storeName="My" /&gt;<br />
     <font color="#ff0000">&lt;issuedTokenAuthentication allowUntrustedRsaIssuers="true"/&gt;</font><br />
          &lt;/serviceCredentials&gt;<br />
          &lt;serviceDebug includeExceptionDetailInFaults="False"
/&gt;<br />
    &lt;serviceMetadata httpGetEnabled="true" /&gt;<br />
  &lt;/behavior&gt;<br />
      &lt;/serviceBehaviors&gt;<br />
    &lt;/behaviors&gt;
</p>
        <p>
      &lt;service name="Microsoft.ServiceModel.Samples.CalculatorService" 
<br />
    behaviorConfiguration="ServiceCredentials"&gt;<br />
        &lt;endpoint address="" binding="wsHttpBinding" bindingConfiguration="requireInfoCard"<br />
       contract="Microsoft.ServiceModel.Samples.ISecureCalculator"
&gt;<br />
          &lt;identity&gt;<br />
            &lt;certificateReference findValue="Whatever_you_are_using" x509FindType="FindBySubjectName" 
<br />
       storeLocation="LocalMachine" 
<br />
       storeName="My" /&gt;<br />
          &lt;/identity&gt;<br />
        &lt;/endpoint&gt;<br />
  &lt;endpoint contract="IMetadataExchange" binding="mexHttpBinding"
address="mex" /&gt;<br />
      &lt;/service&gt;
</p>
        <p>
   &lt;bindings&gt;<br />
  &lt;wsHttpBinding&gt;<br />
   &lt;binding name="requireInfoCard"&gt;<br />
          &lt;security mode="Message"&gt;<br />
            &lt;message clientCredentialType="IssuedToken"
establishSecurityContext="true" negotiateServiceCredential="true"
/&gt;<br />
          &lt;/security&gt;<br />
        &lt;/binding&gt;<br />
      &lt;/wsHttpBinding&gt;<br />
    &lt;/bindings&gt;
</p>
        <ul>
          <li>
For the app config. Take note:</li>
        </ul>
        <p>
  &lt;system.serviceModel&gt;<br />
    &lt;client&gt;<br />
      &lt;endpoint address="http://swmvm2k3/ServiceModelSamples/service.svc/"<br />
               
bindingConfiguration="requireInfoCard" 
<br />
               
binding="wsHttpBinding"<br />
               
contract="ISecureCalculator"<br />
               
behaviorConfiguration="ClientCredentials"&gt;<br />
    &lt;identity&gt;<br />
     &lt;certificateReference<br />
        findValue="Whatever_you_are_using" x509FindType="FindBySubjectName"<br />
        storeLocation="CurrentUser" storeName="TrustedPeople"
/&gt;<br />
    &lt;/identity&gt;<br />
   &lt;/endpoint&gt;<br />
    &lt;/client&gt;
</p>
        <p>
    &lt;bindings&gt;<br />
      &lt;wsHttpBinding&gt;<br />
        &lt;binding name="requireInfoCard"&gt;<br />
          &lt;security mode="Message"&gt;<br />
            &lt;message clientCredentialType="IssuedToken"
establishSecurityContext="true"/&gt;<br />
          &lt;/security&gt;<br />
        &lt;/binding&gt;<br />
   &lt;/wsHttpBinding&gt;<br />
    &lt;/bindings&gt;
</p>
        <p>
    &lt;behaviors&gt;<br />
      &lt;endpointBehaviors&gt;<br />
        &lt;behavior name="ClientCredentials"
includeExceptionDetailInFaults="true"&gt;<br />
          &lt;clientCredentials&gt;<br />
            &lt;serviceCertificate&gt;<br />
              &lt;defaultCertificate
findValue="Fabrikam" x509FindType="FindBySubjectName" storeLocation="CurrentUser"
storeName="TrustedPeople" /&gt;<br />
              &lt;authentication
revocationMode="NoCheck" certificateValidationMode="PeerOrChainTrust"
trustedStoreLocation="CurrentUser" /&gt;<br />
            &lt;/serviceCertificate&gt;<br />
          &lt;/clientCredentials&gt;<br />
        &lt;/behavior&gt;<br />
      &lt;/endpointBehaviors&gt;<br />
    &lt;/behaviors&gt;<br />
  &lt;/system.serviceModel&gt;
</p>
        <ul>
          <li>
For the \UsingWSFederation sample. Here are the changes to the service config. Take
note of the issuedTokenAuthentication element:</li>
        </ul>
        <p>
    &lt;services&gt;<br />
      &lt;service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="ServiceCredentials"&gt;<br />
        &lt;endpoint address="" binding="wsFederationHttpBinding"
bindingConfiguration="requireInfoCard"<br />
 contract="Microsoft.ServiceModel.Samples.ISecureCalculator" &gt;<br />
        &lt;/endpoint&gt;<br />
 &lt;endpoint contract="IMetadataExchange" binding="mexHttpBinding"
address="mex" /&gt;<br />
   &lt;/service&gt;<br />
    &lt;/services&gt;
</p>
        <p>
    &lt;bindings&gt;<br />
      &lt;wsFederationHttpBinding&gt;<br />
        &lt;binding name="requireInfoCard"&gt;<br />
          &lt;security mode="Message"&gt;<br />
            &lt;message issuedTokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1"
issuedKeyType="AsymmetricKey"&gt;<br />
              &lt;claimTypeRequirements&gt;<br />
      &lt;clear /&gt;<br />
               
&lt;add claimType  ="http://schemas.microsoft.com/ws/2005/05/identity/claims/emailaddress"/&gt;<br />
  &lt;add claimType  ="http://schemas.microsoft.com/ws/2005/05/identity/claims/privatepersonalidentifier"/&gt;<br />
              &lt;/claimTypeRequirements&gt;<br />
              &lt;issuer
address="http://schemas.microsoft.com/ws/2005/05/identity/issuer/self"/&gt;<br />
            &lt;/message&gt;<br />
          &lt;/security&gt;<br />
        &lt;/binding&gt;<br />
      &lt;/wsFederationHttpBinding&gt;<br />
    &lt;/bindings&gt;
</p>
        <p>
    &lt;behaviors&gt;<br />
      &lt;serviceBehaviors&gt;<br />
        &lt;behavior name="ServiceCredentials"&gt;<br />
          &lt;serviceCredentials&gt;<br />
            &lt;serviceCertificate
findValue="Fabrikam" x509FindType="FindBySubjectName" storeLocation="LocalMachine"
storeName="My" /&gt;<br />
    <font color="#ff0000">&lt;issuedTokenAuthentication allowUntrustedRsaIssuers="true"/&gt;</font><br />
          &lt;/serviceCredentials&gt;<br />
   &lt;serviceDebug includeExceptionDetailInFaults="False"
/&gt;<br />
   &lt;serviceMetadata httpGetEnabled="true" /&gt;<br />
        &lt;/behavior&gt;<br />
      &lt;/serviceBehaviors&gt;<br />
    &lt;/behaviors&gt;
</p>
        <ul>
          <li>
Client config as follows:</li>
        </ul>
        <p>
  &lt;system.serviceModel&gt;<br />
    &lt;client&gt;<br />
      &lt;endpoint address="http://swmvm2k3/servicemodelsamples/service.svc"<br />
       bindingConfiguration="WSFederationHttpBinding_ISecureCalculator"
binding="wsFederationHttpBinding"<br />
               
contract="ISecureCalculator" behaviorConfiguration="ClientCredentials"&gt;<br />
    &lt;identity&gt;<br />
     &lt;certificate encodedValue="Do a svcutil and you will
see the light ..." /&gt;<br />
    &lt;/identity&gt;    
<br />
      &lt;/endpoint&gt;<br />
    &lt;/client&gt;
</p>
        <p>
    &lt;bindings&gt;<br />
      &lt;wsFederationHttpBinding&gt;<br />
      &lt;binding name="WSFederationHttpBinding_ISecureCalculator"
closeTimeout="00:01:00"<br />
 openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"<br />
 bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"<br />
 maxBufferPoolSize="524288" maxReceivedMessageSize="65536"<br />
 messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"&gt;<br />
 &lt;readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384"<br />
 maxBytesPerRead="4096" maxNameTableCharCount="16384" /&gt;<br />
 &lt;reliableSession ordered="true" inactivityTimeout="00:10:00"<br />
 enabled="false" /&gt;<br />
 &lt;security mode="Message"&gt;<br />
 &lt;message algorithmSuite="Default" issuedKeyType="AsymmetricKey"
isuedTokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1"<br />
       negotiateServiceCredential="true"&gt;<br />
       &lt;claimTypeRequirements&gt;<br />
        &lt;add claimType="http://schemas.microsoft.com/ws/2005/05/identity/claims/emailaddress"<br />
         isOptional="false" /&gt;<br />
        &lt;add claimType="http://schemas.microsoft.com/ws/2005/05/identity/claims/privatepersonalidentifier"<br />
         isOptional="false" /&gt;<br />
       &lt;/claimTypeRequirements&gt;<br />
       &lt;issuer address="http://schemas.microsoft.com/ws/2005/05/identity/issuer/self"
/&gt;<br />
      &lt;/message&gt;<br />
     &lt;/security&gt;<br />
    &lt;/binding&gt;<br />
      &lt;/wsFederationHttpBinding&gt;<br />
    &lt;/bindings&gt;
</p>
        <p>
    &lt;behaviors&gt;<br />
      &lt;endpointBehaviors&gt;<br />
        &lt;behavior name="ClientCredentials"
includeExceptionDetailInFaults="true"&gt;<br />
          &lt;clientCredentials&gt;<br />
            &lt;serviceCertificate&gt;<br />
              &lt;defaultCertificate
findValue="Whatever_you_are_using" x509FindType="FindBySubjectName"
storeLocation="CurrentUser" storeName="TrustedPeople" /&gt;<br />
              &lt;authentication
revocationMode="NoCheck" certificateValidationMode="PeerOrChainTrust"
/&gt;<br />
            &lt;/serviceCertificate&gt;<br />
          &lt;/clientCredentials&gt;<br />
        &lt;/behavior&gt;<br />
      &lt;/endpointBehaviors&gt;<br />
    &lt;/behaviors&gt;&lt;/system.serviceModel&gt;
</p>
        <p>
With that all done, you should be able to get both Cardspace samples in the July CTP
SDK running, which will give you some relief that, at least, the installation is fine.
</p>
        <p>
Hope this helps someone out there. Now, moving on to fix the sts.labs.live.com and
the relay.labs.live.com issues ... &lt;sigh /&gt;
</p>
        <img src="http://www.softwaremaker.net/blog/cptrk.ashx?id=ed443ae7-6e35-4729-a2e6-1ff2b4fda1ef" alt="" width="0" height="0" />
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=7fc4db78-44ae-42fa-a7c9-ad91d9186e01" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>.NET 3.0 (WinFX) July CTP Cardspace samples that works ...</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,7fc4db78-44ae-42fa-a7c9-ad91d9186e01.aspx</guid>
      <link>http://www.softwaremaker.net/blog/NET30WinFXJulyCTPCardspaceSamplesThatWorks.aspx</link>
      <pubDate>Mon, 07 Aug 2006 06:16:28 GMT</pubDate>
      <description>&lt;p&gt;
The trouble with being part of the early adopters curve is that most of the time,
your time is spend very unproductively trying to figure out, if samples dont work
well, the reason why.
&lt;/p&gt;
&lt;p&gt;
Is it a bad installation? bad configuration? corrupted downloads? or just simply the
fact that the product team, while in a rush to get things out, forgot to update or
remove the &amp;quot;deprecated&amp;quot; samples ?
&lt;/p&gt;
&lt;p&gt;
While working very deeply with &lt;a href=http://msdn.microsoft.com/en-us/netframework/aa663320.aspx target=_blank&gt;Microsoft
Cardspace&lt;/a&gt; for a few months now and I mean doing &amp;quot;real&amp;quot; work for &amp;quot;real&amp;quot;
clients, I would be one of the first to keep up to date on the new and upcoming Cardspace
technicals.
&lt;/p&gt;
&lt;p&gt;
While downloading and installing the July CTP SDK Cardspace samples, I found out that&amp;nbsp;both
the Cardspace SDK samples could not work at all - out of the box. I installed the
CTP and the SDK twice to make sure that I didnt screw up the first time around (that
means an hour of unproductive time wasted).
&lt;/p&gt;
&lt;p&gt;
I was rather shocked&amp;nbsp;when I found out that the &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=601808&amp;amp;SiteID=1" target="_blank"&gt;Cardspace
SDK samples have been deprecated BUT have not been removed by the team in time&amp;nbsp;and
my frustrations grew when the new working samples have not been uploaded in time as
promised&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Who can I blame ?&amp;nbsp;- No one forced me to be part of the Early Adopter&amp;#39;s curve
and no one asked me to download the July CTP SDK and its samples. Afterall, it is
supposed to be an &lt;a href="http://wcs.netfx3.com/blogs/news_and_announcements/archive/2006/07/17/July-CTP-arrives-and-Sandbox-goes-live_2100_.aspx" target="_blank"&gt;eagerly-anticipated
drop&lt;/a&gt;. That said, the previous samples, in some way or another,&amp;nbsp;have not been
working too well at all. Some works perfectly on the local machine but have some troubles
going out to the wild, while others like the June CTP, had &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=539190&amp;amp;SiteID=1" target="_blank"&gt;its&amp;nbsp;own
host of problems&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
So, what better way to do this than to roll-up-your sleeves and do-it-yourself ? While
doing some reflecting, I found out some of the Cardspace July CTP SDK samples had
not had its config and script files updated.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
The setup scripts had some errors. &amp;gt; set InfoCardServiceName=&amp;quot;idsvc&amp;quot;.
Therefore, it is &amp;quot;net start idsvc&amp;quot;. I answered my own post &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=601416&amp;amp;SiteID=1" target="_blank"&gt;here&lt;/a&gt;. 
&lt;/li&gt;
&lt;li&gt;
For the Simple Infocard sample under Basic\Bindings\WS\Infocard\Simple. Service config
should have their behavior element changed as such. The issuedTokenAuthentication
element is a key change/update.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name=&amp;quot;ServiceCredentials&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceCertificate
findValue=&amp;quot;Whatever_you_are_using&amp;quot; x509FindType=&amp;quot;FindBySubjectName&amp;quot;
storeLocation=&amp;quot;LocalMachine&amp;quot; storeName=&amp;quot;My&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff0000"&gt;&amp;lt;issuedTokenAuthentication allowUntrustedRsaIssuers=&amp;quot;true&amp;quot;/&amp;gt;&lt;/font&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceDebug includeExceptionDetailInFaults=&amp;quot;False&amp;quot;
/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceMetadata httpGetEnabled=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/behavior&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behaviors&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service&amp;nbsp;name=&amp;quot;Microsoft.ServiceModel.Samples.CalculatorService&amp;quot; 
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;behaviorConfiguration=&amp;quot;ServiceCredentials&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=&amp;quot;&amp;quot;&amp;nbsp;binding=&amp;quot;wsHttpBinding&amp;quot;&amp;nbsp;bindingConfiguration=&amp;quot;requireInfoCard&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;contract=&amp;quot;Microsoft.ServiceModel.Samples.ISecureCalculator&amp;quot;
&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;identity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;certificateReference&amp;nbsp;findValue=&amp;quot;Whatever_you_are_using&amp;quot;&amp;nbsp;x509FindType=&amp;quot;FindBySubjectName&amp;quot; 
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;storeLocation=&amp;quot;LocalMachine&amp;quot; 
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;storeName=&amp;quot;My&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/identity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/endpoint&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;endpoint contract=&amp;quot;IMetadataExchange&amp;quot; binding=&amp;quot;mexHttpBinding&amp;quot;
address=&amp;quot;mex&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;bindings&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;wsHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;binding name=&amp;quot;requireInfoCard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security mode=&amp;quot;Message&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;message clientCredentialType=&amp;quot;IssuedToken&amp;quot;
establishSecurityContext=&amp;quot;true&amp;quot; negotiateServiceCredential=&amp;quot;true&amp;quot;
/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/wsHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bindings&amp;gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
For the app config. Take note:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp; &amp;lt;system.serviceModel&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;client&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=&amp;quot;http://swmvm2k3/ServiceModelSamples/service.svc/&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingConfiguration=&amp;quot;requireInfoCard&amp;quot; 
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
binding=&amp;quot;wsHttpBinding&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
contract=&amp;quot;ISecureCalculator&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
behaviorConfiguration=&amp;quot;ClientCredentials&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;identity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;certificateReference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;findValue=&amp;quot;Whatever_you_are_using&amp;quot;&amp;nbsp;x509FindType=&amp;quot;FindBySubjectName&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;storeLocation=&amp;quot;CurrentUser&amp;quot;&amp;nbsp;storeName=&amp;quot;TrustedPeople&amp;quot;
/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/identity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/endpoint&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/client&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bindings&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;wsHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binding name=&amp;quot;requireInfoCard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security mode=&amp;quot;Message&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;message clientCredentialType=&amp;quot;IssuedToken&amp;quot;
establishSecurityContext=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/wsHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bindings&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpointBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name=&amp;quot;ClientCredentials&amp;quot;
includeExceptionDetailInFaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;clientCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceCertificate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultCertificate
findValue=&amp;quot;Fabrikam&amp;quot; x509FindType=&amp;quot;FindBySubjectName&amp;quot; storeLocation=&amp;quot;CurrentUser&amp;quot;
storeName=&amp;quot;TrustedPeople&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;authentication
revocationMode=&amp;quot;NoCheck&amp;quot; certificateValidationMode=&amp;quot;PeerOrChainTrust&amp;quot;
trustedStoreLocation=&amp;quot;CurrentUser&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceCertificate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/clientCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/endpointBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behaviors&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/system.serviceModel&amp;gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
For the \UsingWSFederation sample. Here are the changes to the service config. Take
note of the issuedTokenAuthentication element:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;services&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service name=&amp;quot;Microsoft.ServiceModel.Samples.CalculatorService&amp;quot;
behaviorConfiguration=&amp;quot;ServiceCredentials&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=&amp;quot;&amp;quot; binding=&amp;quot;wsFederationHttpBinding&amp;quot;
bindingConfiguration=&amp;quot;requireInfoCard&amp;quot;&lt;br /&gt;
&amp;nbsp;contract=&amp;quot;Microsoft.ServiceModel.Samples.ISecureCalculator&amp;quot; &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/endpoint&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;endpoint contract=&amp;quot;IMetadataExchange&amp;quot; binding=&amp;quot;mexHttpBinding&amp;quot;
address=&amp;quot;mex&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/services&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bindings&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;wsFederationHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binding name=&amp;quot;requireInfoCard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security mode=&amp;quot;Message&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;message issuedTokenType=&amp;quot;http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1&amp;quot;
issuedKeyType=&amp;quot;AsymmetricKey&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;claimTypeRequirements&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;clear /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;add claimType&amp;nbsp; =&amp;quot;http://schemas.microsoft.com/ws/2005/05/identity/claims/emailaddress&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;add claimType&amp;nbsp; =&amp;quot;http://schemas.microsoft.com/ws/2005/05/identity/claims/privatepersonalidentifier&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/claimTypeRequirements&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;issuer
address=&amp;quot;http://schemas.microsoft.com/ws/2005/05/identity/issuer/self&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/wsFederationHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bindings&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name=&amp;quot;ServiceCredentials&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceCertificate
findValue=&amp;quot;Fabrikam&amp;quot; x509FindType=&amp;quot;FindBySubjectName&amp;quot; storeLocation=&amp;quot;LocalMachine&amp;quot;
storeName=&amp;quot;My&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff0000"&gt;&amp;lt;issuedTokenAuthentication allowUntrustedRsaIssuers=&amp;quot;true&amp;quot;/&amp;gt;&lt;/font&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;serviceDebug includeExceptionDetailInFaults=&amp;quot;False&amp;quot;
/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;serviceMetadata httpGetEnabled=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behaviors&amp;gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Client config as follows:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp; &amp;lt;system.serviceModel&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;client&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=&amp;quot;http://swmvm2k3/servicemodelsamples/service.svc&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bindingConfiguration=&amp;quot;WSFederationHttpBinding_ISecureCalculator&amp;quot;
binding=&amp;quot;wsFederationHttpBinding&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
contract=&amp;quot;ISecureCalculator&amp;quot; behaviorConfiguration=&amp;quot;ClientCredentials&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;identity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;certificate encodedValue=&amp;quot;Do a svcutil and you will
see the light ...&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/identity&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/endpoint&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/client&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bindings&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;wsFederationHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binding name=&amp;quot;WSFederationHttpBinding_ISecureCalculator&amp;quot;
closeTimeout=&amp;quot;00:01:00&amp;quot;&lt;br /&gt;
&amp;nbsp;openTimeout=&amp;quot;00:01:00&amp;quot; receiveTimeout=&amp;quot;00:10:00&amp;quot; sendTimeout=&amp;quot;00:01:00&amp;quot;&lt;br /&gt;
&amp;nbsp;bypassProxyOnLocal=&amp;quot;false&amp;quot; transactionFlow=&amp;quot;false&amp;quot; hostNameComparisonMode=&amp;quot;StrongWildcard&amp;quot;&lt;br /&gt;
&amp;nbsp;maxBufferPoolSize=&amp;quot;524288&amp;quot; maxReceivedMessageSize=&amp;quot;65536&amp;quot;&lt;br /&gt;
&amp;nbsp;messageEncoding=&amp;quot;Text&amp;quot; textEncoding=&amp;quot;utf-8&amp;quot; useDefaultWebProxy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;readerQuotas maxDepth=&amp;quot;32&amp;quot; maxStringContentLength=&amp;quot;8192&amp;quot;
maxArrayLength=&amp;quot;16384&amp;quot;&lt;br /&gt;
&amp;nbsp;maxBytesPerRead=&amp;quot;4096&amp;quot; maxNameTableCharCount=&amp;quot;16384&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;reliableSession ordered=&amp;quot;true&amp;quot; inactivityTimeout=&amp;quot;00:10:00&amp;quot;&lt;br /&gt;
&amp;nbsp;enabled=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;security mode=&amp;quot;Message&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;message algorithmSuite=&amp;quot;Default&amp;quot; issuedKeyType=&amp;quot;AsymmetricKey&amp;quot;
isuedTokenType=&amp;quot;http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; negotiateServiceCredential=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;claimTypeRequirements&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add claimType=&amp;quot;http://schemas.microsoft.com/ws/2005/05/identity/claims/emailaddress&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isOptional=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add claimType=&amp;quot;http://schemas.microsoft.com/ws/2005/05/identity/claims/privatepersonalidentifier&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isOptional=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/claimTypeRequirements&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;issuer address=&amp;quot;http://schemas.microsoft.com/ws/2005/05/identity/issuer/self&amp;quot;
/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/wsFederationHttpBinding&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bindings&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpointBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name=&amp;quot;ClientCredentials&amp;quot;
includeExceptionDetailInFaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;clientCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceCertificate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultCertificate
findValue=&amp;quot;Whatever_you_are_using&amp;quot; x509FindType=&amp;quot;FindBySubjectName&amp;quot;
storeLocation=&amp;quot;CurrentUser&amp;quot; storeName=&amp;quot;TrustedPeople&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;authentication
revocationMode=&amp;quot;NoCheck&amp;quot; certificateValidationMode=&amp;quot;PeerOrChainTrust&amp;quot;
/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceCertificate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/clientCredentials&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/endpointBehaviors&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behaviors&amp;gt;&amp;lt;/system.serviceModel&amp;gt;
&lt;/p&gt;
&lt;p&gt;
With that all done, you should be able to get both Cardspace samples in the July CTP
SDK running, which will give you some relief that, at least, the installation is fine.
&lt;/p&gt;
&lt;p&gt;
Hope this helps someone out there. Now, moving on to fix the sts.labs.live.com and
the relay.labs.live.com issues ... &amp;lt;sigh /&amp;gt;
&lt;/p&gt;
&lt;img src="http://www.softwaremaker.net/blog/cptrk.ashx?id=ed443ae7-6e35-4729-a2e6-1ff2b4fda1ef" alt="" width="0" height="0" /&gt;&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=7fc4db78-44ae-42fa-a7c9-ad91d9186e01" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Cardspace aka Infocards;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=ad3c6792-af43-4c69-a705-af703936bedd</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,ad3c6792-af43-4c69-a705-af703936bedd.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While running the setup scripts for the Message Security (Certificate) samples for
the July CTP of WCF, I came across an error that barks an "not finding file/folder"
exception:
</p>
        <p>
Upon further investigation into the setup batch scripts reveal this:
</p>
        <p>
          <em>for /F "delims=" %%i in ('"%MSSDK%\bin\FindPrivateKey.exe" My LocalMachine -n
...</em>
        </p>
        <p>
where I discovered the variable %MSSDK% was not defined in file.
</p>
        <p>
So add this line to the variable settings on the top of the batch script:
</p>
        <p>
          <strong>set MSSDK=C:\Program Files\Microsoft SDKs\Windows\v6.0</strong>
        </p>
        <p>
This should help solve the puzzule of the missing directory name ...
</p>
        <img height="0" alt="" src="http://www.softwaremaker.net/blog/cptrk.ashx?id=769ce3a6-a650-41cb-a739-599fb2f25e48" width="0" />
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=ad3c6792-af43-4c69-a705-af703936bedd" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Slight miss in the WinFX (.NET 3.0) July CTP WCF Samples</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,ad3c6792-af43-4c69-a705-af703936bedd.aspx</guid>
      <link>http://www.softwaremaker.net/blog/SlightMissInTheWinFXNET30JulyCTPWCFSamples.aspx</link>
      <pubDate>Wed, 02 Aug 2006 06:15:22 GMT</pubDate>
      <description>&lt;p&gt;
While running the setup scripts for the Message Security (Certificate) samples for
the July CTP of WCF, I came across an error that barks an "not finding file/folder"
exception:
&lt;/p&gt;
&lt;p&gt;
Upon further investigation into the setup batch scripts reveal this:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;for /F "delims=" %%i in ('"%MSSDK%\bin\FindPrivateKey.exe" My LocalMachine -n
...&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
where I discovered the variable %MSSDK% was not defined in file.
&lt;/p&gt;
&lt;p&gt;
So add this line to the variable settings on the top of the batch script:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;set MSSDK=C:\Program Files\Microsoft SDKs\Windows\v6.0&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This should help solve the puzzule of the missing directory name ...
&lt;/p&gt;
&lt;img height=0 alt="" src="http://www.softwaremaker.net/blog/cptrk.ashx?id=769ce3a6-a650-41cb-a739-599fb2f25e48" width=0&gt;&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=ad3c6792-af43-4c69-a705-af703936bedd" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Cardspace aka Infocards;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=899fe212-5778-451a-b2cc-0b27f39349c2</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,899fe212-5778-451a-b2cc-0b27f39349c2.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <title>Published: WCF Interoperability with WSE 2.0 and the Migration Incentive</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,899fe212-5778-451a-b2cc-0b27f39349c2.aspx</guid>
      <link>http://www.softwaremaker.net/blog/PublishedWCFInteroperabilityWithWSE20AndTheMigrationIncentive.aspx</link>
      <pubDate>Fri, 07 Jul 2006 06:11:57 GMT</pubDate>
      <description>&lt;p&gt;
Blasphemy ...
&lt;/p&gt;
&lt;p&gt;
It is finally &lt;a href="http://wcf.netfx3.com/content/WindowsCommunicationFoundationWCFInteroperabilityandMigrationwithWSE20.aspx" target="_blank"&gt;published&lt;/a&gt;.
After many, many, and I mean, many months of paying the process tax for this piece,
it is finally &lt;a href="http://wcf.netfx3.com/content/WindowsCommunicationFoundationWCFInteroperabilityandMigrationwithWSE20.aspx" target="_blank"&gt;LIVE&lt;/a&gt; !
&lt;/p&gt;
&lt;p&gt;
I started this piece with the first ever March 2005 CTP of &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; and I went through so many
port demos and edit document cycles its so unbelievably painful ...
&lt;/p&gt;
&lt;p&gt;
But it is really good to see this in online form and shape.
&lt;/p&gt;
&lt;p&gt;
I started with this idea even though &lt;a href=http://www.microsoft.com target=_blank&gt;MSFT
Corp&lt;/a&gt; has &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/WSS_Appx_InteropCons_WSE30.asp" target="_blank"&gt;explicity
stated that it will not support any form of interoperability&lt;/a&gt; between &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=1ba1f631-c3e7-420a-bc1e-ef18bab66122&amp;amp;displaylang=en" target="_blank"&gt;WSE
2.0&lt;/a&gt; and WCF, even though it is &amp;quot;&lt;em&gt;theoretically possible to develop Web
services using WSE 2.0 in such a way that they can interoperate with WSE 3.0 (and
WCF) by using only a &lt;strong&gt;reduced set of specifications&lt;/strong&gt;&lt;/em&gt;&amp;quot;
&lt;/p&gt;
&lt;p&gt;
More importantly, the main reason for the motivation to write such a piece&amp;nbsp;is
written in the article itself and I quote:
&lt;/p&gt;
&lt;p&gt;
[BEGIN QUOTE] 
&lt;/p&gt;
&lt;hr /&gt;
&lt;em&gt;&lt;font color="#808080"&gt;...WSE 2.0 has seen 3 service pack releases since its official
launch in 2004. It implemented the OASIS Web Services Security 1.0 specification which
was the widely accepted interoperability standard protocols between secured web services
as well as the implementations of WS-Addressing, WS-SecureConversation and WS-Trust.
It was integrated very nicely into Visual Studio 2003. Even BizTalk Server 2004 carries
with it a WSE 2.0 adapter for securing of Web Services. Thus, it would be fair to
assume that there is more than its fair share of implementations in the market today.&lt;/font&gt;&lt;/em&gt; 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;font color="#808080"&gt;Depending on timing, budget, complexity and a whole host
of other requirements, some of these applications will need to be moved and migrated
to WSE3.0 and some to WCF. Aaron Skonnard has provided a great &lt;/font&gt;&lt;/em&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/04/ServiceStation/" target="_blank"&gt;&lt;em&gt;&lt;font color="#808080"&gt;resource&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font color="#808080"&gt; in
his &amp;ldquo;Service Station&amp;rdquo; column on MSDN on a brief overview on the migration
of WSE 2.0 applications to WSE 3.0 ones. However, as stated in his article, there
are some major changes in the programming model and architecture in WSE 3.0 and migrating
them from WSE 2.0 may not be trivial.&lt;/font&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;font color="#808080"&gt;Another very important factor to take note is while WinFX,
and therefore WCF, is available downstream from Windows Vista to Windows 2003 and
Windows XP. That is as far down as it goes. There still exists a huge installed base
of Windows 2000 Servers out there running on server and data farms and if you need
to implement the advanced Web Services stacks on those servers, WSE is still a very
important strategy you cannot ignore.&lt;/font&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;font color="#808080"&gt;As noted in the above guidelines, even though Microsoft
will not guarantee interoperability between WSE 2.0 and WCF, the good news is that
there are a few WSE 2.0 common scenarios, which can allow wire-interoperability with
WCF. I will illustrate them in the next section...&lt;/font&gt;&lt;/em&gt; 
&lt;/p&gt;
&lt;hr /&gt;
[END QUOTE] 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
So, &lt;a href="http://wcf.netfx3.com/content/WindowsCommunicationFoundationWCFInteroperabilityandMigrationwithWSE20.aspx" target="_blank"&gt;this
article&lt;/a&gt; will outlined &lt;strong&gt;WHAT&lt;/strong&gt; that reduced set of specifications
are and &lt;strong&gt;HOW&lt;/strong&gt; to go about using them.
&lt;/p&gt;
&lt;p&gt;
Many Special Thanks go to &lt;a href="http://pluralsight.com/blogs/kirillg/" target="_blank"&gt;Kirill&lt;/a&gt;,&amp;nbsp;the
Interop PM on WCF, who&amp;nbsp;gave me&amp;nbsp;a couple of&amp;nbsp;tips to get over the&amp;nbsp;port-over
humps I had thoughout this piece since last year. And of course, I cannot forget &lt;a href="http://friends.newtelligence.net/clemensv/" target="_blank"&gt;Clemens&lt;/a&gt;,
who is the catalyst to making this publication happen when he came onboard.
&lt;/p&gt;
&lt;p&gt;
I hope this helps at least someone out there. Enjoy !
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=899fe212-5778-451a-b2cc-0b27f39349c2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Articles;Community;Interoperability;Software Development;Web Services Enhancements (WSE);Windows Communication Foundation (WCF) aka Indigo;WS-Splat Specs;XML Services</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=af9c64c8-73cf-4ba2-a1b1-536a4c871dae</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,af9c64c8-73cf-4ba2-a1b1-536a4c871dae.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
During my <a href="http://www.softwaremaker.net/blog/MSDNRedmondWebcastingFromSingapore.aspx" target="_blank">webcast</a> on
"Why we need Reliablility in SOAP: Web Services", there were a couple of
hiccups which hindered a better listening experience.
</p>
        <ol>
          <li>
I cannot see the animation on the slides I am presenting, even though I am assured
by the producer that the floor is seeing it. Therefore, I am "guessing"
what the audience is actually seeing in my click-animation and gauging my content
from there. It was neither easy nor pleasant. 
</li>
          <li>
There was a disconnect incident in my demos that also marred the listener's experience.
I had to re-login again. Not Good.</li>
        </ol>
        <p>
Isnt it ironic? My network connection showed lack of reliability when I am talking
about Reliability as a topic. <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" />. Now
the least I can do is to answer a couple of questions that popped up after the session:
</p>
        <p>
Q: Is RM available for all the bindings in <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> ? <br />
A: <strong>Yes, it is available for MOST of the standard bindings in WCF. In some
bindings such as the netTcpBinding I showed, it is On-by-Default. In bindings such
as wsDualHttpBinding where you need correlation of different channels and such, it
is Always-On. It doesnt make sense to stick &lt;reliableSession /&gt; in a netMsmqBinding,
for example.</strong></p>
        <p>
Q: Is this the same WS-RM spec that is authored by IBM, Microsoft
and TIBCO ? <br />
A: <strong>Yes. In my slide, I mentioned - I.B.M and <a href="http://www.tibco.com/" target="_blank">TIBCO</a>.
I.B.M is actually the acronym I used for <a href="http://www.ibm.com/" target="_blank">IBM</a>, <a href="http://www.bea.com/" target="_blank">BEA</a> and <a href="http://www.microsoft.com/" target="_blank">Microsoft</a>. <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" /></strong></p>
        <p>
Q: Can I get the demo you showed? <br />
A: <strong>No, I am sorry. In any case, my demos will not work with the lastest
WinFX B2 bits today. I will need time to port them over. I recommend you go bug <a href="http://blogs.msdn.com/shycohen" target="_blank">Shy</a> when
you see him and ask him for his WS-RM demo which consists of a WPF stack in there
and a "awesomely" cool Rubik's Cube demo and is 100x better than mine.</strong></p>
        <p>
All in all, it is quite a different experience than doing an on-stage presentation,
especially when you spent an hour talking to yourself and you cannot see the audience
faces and cannot manipulate your content and presentation based on their moods.
</p>
        <p>
But then again, no one can see that I am wearing my <a href="http://www.treasurekingdom.com/miva/graphics/00000001/boxerlarge3.jpg" target="_blank">Mickey-Mouse
boxers</a> while I am presenting, so I guess that is a good trade-off.
</p>
        <img src="http://www.softwaremaker.net/blog/cptrk.ashx?id=45671be1-e92e-44f8-9862-f72f472f67ee" alt="" width="0" height="0" />
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=af9c64c8-73cf-4ba2-a1b1-536a4c871dae" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Webcast Experience: WS-ReliableMessaging in WCF</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,af9c64c8-73cf-4ba2-a1b1-536a4c871dae.aspx</guid>
      <link>http://www.softwaremaker.net/blog/WebcastExperienceWSReliableMessagingInWCF.aspx</link>
      <pubDate>Wed, 07 Jun 2006 06:06:48 GMT</pubDate>
      <description>&lt;p&gt;
During my &lt;a href="http://www.softwaremaker.net/blog/MSDNRedmondWebcastingFromSingapore.aspx" target="_blank"&gt;webcast&lt;/a&gt; on
&amp;quot;Why we need Reliablility in SOAP: Web Services&amp;quot;, there were a couple of
hiccups which hindered a better listening experience.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
I cannot see the animation on the slides I am presenting, even though I am assured
by the producer that&amp;nbsp;the floor is seeing it. Therefore, I am &amp;quot;guessing&amp;quot;
what the audience is actually seeing in my click-animation and gauging my content
from there. It was neither easy nor pleasant. 
&lt;/li&gt;
&lt;li&gt;
There was a disconnect incident in my demos that also marred the listener&amp;#39;s experience.
I had to re-login again. Not Good.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Isnt it ironic? My network connection showed&amp;nbsp;lack of reliability when I am talking
about Reliability&amp;nbsp;as a topic. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;.&amp;nbsp;Now
the least I can do is to answer a couple of questions that popped up after the session:
&lt;/p&gt;
&lt;p&gt;
Q: Is RM available for all the bindings in &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; ?&amp;nbsp;&lt;br /&gt;
A: &lt;strong&gt;Yes, it is available for MOST of the standard bindings in WCF. In some
bindings such as the netTcpBinding I showed, it is On-by-Default. In bindings such
as wsDualHttpBinding where you need correlation of different channels and such, it
is Always-On. It doesnt make sense to stick &amp;lt;reliableSession /&amp;gt; in a netMsmqBinding,
for example.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Q:&amp;nbsp;Is this the same&amp;nbsp;WS-RM spec&amp;nbsp;that is&amp;nbsp;authored by IBM, Microsoft
and TIBCO&amp;nbsp;?&amp;nbsp;&lt;br /&gt;
A: &lt;strong&gt;Yes. In my slide, I mentioned - I.B.M&amp;nbsp;and &lt;a href="http://www.tibco.com/" target="_blank"&gt;TIBCO&lt;/a&gt;.
I.B.M&amp;nbsp;is actually the acronym I&amp;nbsp;used for &lt;a href="http://www.ibm.com/" target="_blank"&gt;IBM&lt;/a&gt;, &lt;a href="http://www.bea.com/" target="_blank"&gt;BEA&lt;/a&gt; and &lt;a href="http://www.microsoft.com/" target="_blank"&gt;Microsoft&lt;/a&gt;. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Q:&amp;nbsp;Can I get the demo you showed?&amp;nbsp;&lt;br /&gt;
A: &lt;strong&gt;No, I am sorry.&amp;nbsp;In any case, my demos will not work with the lastest
WinFX B2 bits&amp;nbsp;today. I will need time to port them over. I recommend you go bug &lt;a href="http://blogs.msdn.com/shycohen" target="_blank"&gt;Shy&lt;/a&gt; when
you see him and ask him for his WS-RM demo which consists of a WPF stack in there
and a &amp;quot;awesomely&amp;quot; cool Rubik&amp;#39;s Cube demo and is 100x better than mine.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
All in all, it is quite a different experience than doing an on-stage presentation,
especially when you spent an hour talking to yourself and you cannot see the audience
faces and cannot manipulate your content and presentation based on their moods.
&lt;/p&gt;
&lt;p&gt;
But then again, no one can see that I am wearing my &lt;a href="http://www.treasurekingdom.com/miva/graphics/00000001/boxerlarge3.jpg" target="_blank"&gt;Mickey-Mouse
boxers&lt;/a&gt; while I am presenting, so I guess that is a good trade-off.
&lt;/p&gt;
&lt;img src="http://www.softwaremaker.net/blog/cptrk.ashx?id=45671be1-e92e-44f8-9862-f72f472f67ee" alt="" width="0" height="0" /&gt;&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=af9c64c8-73cf-4ba2-a1b1-536a4c871dae" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo;WS-Splat Specs;XML Services</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=83fc4d6e-6612-46a0-9111-113e759ffc83</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,83fc4d6e-6612-46a0-9111-113e759ffc83.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here I am - proud to announce that I will be doing a <a href="http://msdn.microsoft.com/" target="_blank">MSDN</a> Redmond-hosted <a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032299329%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e" target="_blank">Webcast</a> right
from the other side of the hemisphere in Singapore.
</p>
        <p>
I will be speaking on concepts of Reliability in Soap:Web Services, why its needed, as
well as the context of it in <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a>.
</p>
        <p>
More importantly, a 40GB <a href="http://www.creative.com/" target="_blank">Creative</a> (another
homegrown Singapor<em>ean</em> product) ZEN MP3 player is at stake here waiting to
be won. So, do sign up quickly for a chance to win this. Rules <a href="http://www.microsoft.com/events/officialrules_mp3.mspx" target="_blank">here</a>.
</p>
        <p>
If you are one of those <a href="http://en.wikipedia.org/wiki/Insomniac_(health)" target="_blank">insomniacs</a> in
Asia-Pacific, do try to tune-in. I hope this blazes a trail for the other community
leaders in Asia-Pacific to follow suit and show that we are right on par there with
the best in technology. <img src="http://www.softwaremaker.net/pictures/swmemoticons/smile.gif" /></p>
        <p>
Click <a href="http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032299329&amp;Culture=en-US" target="_blank">here</a> for
more details on this webcast.
</p>
        <img src="http://www.softwaremaker.net/blog/cptrk.ashx?id=85f01ab2-ee37-48c8-bd25-8f1d68347c29" alt="" width="0" height="0" />
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=83fc4d6e-6612-46a0-9111-113e759ffc83" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>MSDN Redmond Webcasting from Singapore</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,83fc4d6e-6612-46a0-9111-113e759ffc83.aspx</guid>
      <link>http://www.softwaremaker.net/blog/MSDNRedmondWebcastingFromSingapore.aspx</link>
      <pubDate>Sat, 27 May 2006 06:03:37 GMT</pubDate>
      <description>&lt;p&gt;
Here I am - proud to announce that I will be doing a &lt;a href="http://msdn.microsoft.com/" target="_blank"&gt;MSDN&lt;/a&gt; Redmond-hosted &lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032299329%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e" target="_blank"&gt;Webcast&lt;/a&gt; right
from the other side of the hemisphere&amp;nbsp;in Singapore.
&lt;/p&gt;
&lt;p&gt;
I will be speaking on concepts of Reliability in Soap:Web Services, why&amp;nbsp;its needed,&amp;nbsp;as
well as the context of it in &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
More importantly, a 40GB &lt;a href="http://www.creative.com/" target="_blank"&gt;Creative&lt;/a&gt; (another
homegrown Singapor&lt;em&gt;ean&lt;/em&gt; product) ZEN MP3 player is at stake here waiting to
be won. So, do sign up quickly for a chance to win this. Rules &lt;a href="http://www.microsoft.com/events/officialrules_mp3.mspx" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you are one of those &lt;a href="http://en.wikipedia.org/wiki/Insomniac_(health)" target="_blank"&gt;insomniacs&lt;/a&gt; in
Asia-Pacific, do try to tune-in. I hope this blazes a trail for the other community
leaders in Asia-Pacific to follow suit and show that we are right on par there with
the best in technology. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/smile.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
Click &lt;a href="http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032299329&amp;amp;Culture=en-US" target="_blank"&gt;here&lt;/a&gt; for
more details on this webcast.
&lt;/p&gt;
&lt;img src="http://www.softwaremaker.net/blog/cptrk.ashx?id=85f01ab2-ee37-48c8-bd25-8f1d68347c29" alt="" width="0" height="0" /&gt;&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=83fc4d6e-6612-46a0-9111-113e759ffc83" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Community;Presentations;Software Development;Windows Communication Foundation (WCF) aka Indigo;WS-Splat Specs;XML Services</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=090d9f24-6788-49e4-ba2b-1a775a2033b6</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,090d9f24-6788-49e4-ba2b-1a775a2033b6.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Fellow <a href="http://msdn.microsoft.com/isv/rd/default.aspx" target="_blank" title="Microsoft Regional Director">Microsoft
Regional Director</a> and well-known distributed systems expert <a href="http://www.request-response.com/blog" target="_blank">Matevz
Gacnik</a> has a great blog to add on top of mine called: <a href="http://www.request-response.com/blog/PermaLink,guid,21c95c2c-63d7-44f6-8357-1be0ecb6f264.aspx" target="_blank">Windows
Workflow Foundation: Exposing Workflows as Services</a>. Trust me, Matevz is a lot
more than Request-Response or what his blog suggested <img src="http://www.softwaremaker.net/pictures/swmemoticons/smile.gif" />.
</p>
        <p>
In it, he explains some of the ways you can do so and the pitfalls to watch out for.
Of course, you can get around the "<em>workflow runtime can only get loaded once per
appdomain</em>" issues by having it static to the service implementation class OR
if you want only one instance of each - <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> also gives you a singleton-like
instancing mode as well - <strong><em>InstanceContextMode:=InstanceContextMode.Single</em></strong>.
</p>
        <p>
(<em>I would be interested to find out the naming convention to call it Single in
the latest CTP instead of Singleton</em>)
</p>
        <p>
My tip highlighted <a href="http://www.softwaremaker.net/blog/HookingAWorkflowIntoYourWCFDispatcher.aspx" target="_blank">here</a> is
not really about exposing workflows as services. It is more about how you can hook
a workflow into a already-hosted WCF service as part of its configured behavior, if
need be. For example, you may want to have a non-intrusive workflow for you to raise
an event that calls into your defined <strong>HandleExternalMethod</strong> (called
EventSink before) and then you may just terminate that activity. The reason is because
the workflow thread doesnt return unless you called a <strong>WaitHandle.Set</strong>,
which you can call when a workflow is completed or terminated.
</p>
        <p>
Having said all that - Remember that most of the current implementations of Web Services
today work on a Request-Response model and many more are betting on that it will remain
like that for a long time. Isnt this one of the reasons we have long arguments
of <a href="http://en.wikipedia.org/wiki/POX" target="_blank">POX</a>/<a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">REST</a> ?
Workflows, on the other hand, are made to handle long running work and therefore,
you need to design and handle both properly as its design principles and most-used
implementations do conflict.
</p>
        <p>
Now, if you forsake the Request-Response model and think about the wonderful partnership
and the options abound once you hit <strong>&lt;OperationContract(IsOneWay:=True)&gt;</strong> on
top of the MSMQ transport, <a href="http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx" target="_blank">Windows
Workflow Foundation (WF)</a> + <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> does look very delicious and
promising indeed.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=090d9f24-6788-49e4-ba2b-1a775a2033b6" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Matevz adds his weight on Workflows and Services...</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,090d9f24-6788-49e4-ba2b-1a775a2033b6.aspx</guid>
      <link>http://www.softwaremaker.net/blog/MatevzAddsHisWeightOnWorkflowsAndServices.aspx</link>
      <pubDate>Wed, 10 May 2006 10:21:25 GMT</pubDate>
      <description>&lt;p&gt;
Fellow &lt;a href="http://msdn.microsoft.com/isv/rd/default.aspx" target="_blank" title="Microsoft Regional Director"&gt;Microsoft
Regional Director&lt;/a&gt; and well-known distributed systems expert &lt;a href="http://www.request-response.com/blog" target=_blank&gt;Matevz
Gacnik&lt;/a&gt; has a great blog to add on top of mine called: &lt;a href="http://www.request-response.com/blog/PermaLink,guid,21c95c2c-63d7-44f6-8357-1be0ecb6f264.aspx" target=_blank&gt;Windows
Workflow Foundation: Exposing Workflows as Services&lt;/a&gt;. Trust me, Matevz is a lot
more than Request-Response or what his blog suggested &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/smile.gif"&gt;.
&lt;/p&gt;
&lt;p&gt;
In it, he explains some of the ways you can do so and the pitfalls to watch out for.
Of course, you can get around the "&lt;em&gt;workflow runtime can only get loaded once per
appdomain&lt;/em&gt;" issues by having it static to the service implementation class OR
if you want only one instance of each - &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; also gives you a singleton-like
instancing mode as well - &lt;strong&gt;&lt;em&gt;InstanceContextMode:=InstanceContextMode.Single&lt;/em&gt;&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
(&lt;em&gt;I would be interested to find out the naming convention to call it Single in
the latest CTP instead of Singleton&lt;/em&gt;)
&lt;/p&gt;
&lt;p&gt;
My&amp;nbsp;tip highlighted &lt;a href="http://www.softwaremaker.net/blog/HookingAWorkflowIntoYourWCFDispatcher.aspx" target=_blank&gt;here&lt;/a&gt;&amp;nbsp;is
not really about exposing workflows as services. It is more about how you can hook
a workflow into a already-hosted WCF service as part of its configured behavior, if
need be. For example, you may want to have a non-intrusive workflow for you to raise
an event that calls into your defined &lt;strong&gt;HandleExternalMethod&lt;/strong&gt; (called
EventSink before) and then you may just terminate that activity. The reason is because
the workflow thread doesnt return unless you called a &lt;strong&gt;WaitHandle.Set&lt;/strong&gt;,
which you can call when a workflow is completed or terminated.
&lt;/p&gt;
&lt;p&gt;
Having said all that - Remember that most of the current implementations of Web Services
today work on a Request-Response model and many more are betting on that it will remain
like that for a long time. Isnt this&amp;nbsp;one of the reasons we have long arguments
of &lt;a href="http://en.wikipedia.org/wiki/POX" target=_blank&gt;POX&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target=_blank&gt;REST&lt;/a&gt; ?
Workflows, on the other hand, are made to handle long running work and therefore,
you need to design and handle both properly as its&amp;nbsp;design principles and most-used
implementations do conflict.
&lt;/p&gt;
&lt;p&gt;
Now, if you forsake the Request-Response model and think about the wonderful partnership
and the options abound once you hit &lt;strong&gt;&amp;lt;OperationContract(IsOneWay:=True)&amp;gt;&lt;/strong&gt; on
top of the MSMQ transport, &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx target=_blank&gt;Windows
Workflow Foundation (WF)&lt;/a&gt; + &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; does look very delicious and
promising indeed.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=090d9f24-6788-49e4-ba2b-1a775a2033b6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo;XML Services;Windows Workflow Foundation (WF)</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=0dd9ebed-4ad1-4b8b-8824-19bbad48985a</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,0dd9ebed-4ad1-4b8b-8824-19bbad48985a.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the common questions I came across my <a href="http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx" target="_blank">Windows
Workflow Foundation (WF)</a> and <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> consultancy <a href="http://www.softwaremaker.net/blog/YesIWillCoverInfocardsAsWell.aspx" target="_blank">tour</a> is
how do we logically use WF inside a WCF-hosted service.
</p>
        <p>
I had spent some time talking about how we can host a WF in a WCF:ServiceHost and
how we can create a channel to invoke a workflow inside a WCF Service.
</p>
        <p>
Of course, we can always bring up a Workflow runtime and create a new workflow
instance within the ServiceHost. However, some of us may prefer a more non-intrusive
mode of a workflow invocation style.
</p>
        <p>
There are actually many extensible points at the Service Dispatcher which you can
hook into that is part of a service behavior. There is the <strong>IServiceBehavior</strong>, <strong>IOperationBehavior</strong> and
one of my favourite extensible behavior points I like to hook into is at the <strong>IEndpointBehavior.</strong></p>
        <p>
For instance, you may want to inspect a message in its raw glory and depending on
its headers or the request properties, you may choose to invoke an appropriate
action or workflow. You<strong> </strong>would need to implement the ApplyDispatchBehavior
routine which gives you acccess to an EndpointDispatcher, which in turn, gives you
a chance to implement a <strong>IDispatchMessageInspector. </strong>The<strong> IDispatchMessageInspector</strong> exposes
some very useful routines which allows you to hook into the request message just after
it has been received as well as before sending the reply message back.
</p>
        <p>
I would probably inspect the messages at this point and invoke the appropriate workflow
and send the appropriate values into the <strong>ExternalDataEventArgs</strong> of
the workflow based on the message values.
</p>
        <p>
Of course, this is not a hard and fast rule. How and when you do it is totally up
to you. You may want to do it at the <strong>IOperationBehaviour</strong> and have
the message dispatched to another entirely different operation if you want to (or
if you dont agree with how WCF dispatches its messages).
</p>
        <p>
Below are some snippets that will help you along. I will be going more in-depth into
these details in <a href="http://www.microsoft.com/malaysia/techedsea2006/" target="_blank">TechED
Asia 2006</a> in Malaysia where I will show some really cool never-seen-before demos
that is a mixture of WF and WCF. If you havent planned to be be there at TechED Asia
2006, do so now ! <img src="http://www.softwaremaker.net/pictures/swmemoticons/smile.gif" /></p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Namespace</span> Softwaremaker.NET.Wcf.Demos<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span> WcfMessageInspectorWorkflowInvoker
: <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Implements</span> IDispatchMessageInspector<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span>()<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">MyBase</span>.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span>()<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Function</span> AfterReceiveRequest(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByRef</span> request <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> Message, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> channel <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> IClientChannel, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> instanceContext <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> InstanceContext) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Object</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Implements</span> IDispatchMessageInspector.AfterReceiveRequest<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Try</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'Inspecting
Message Request ...</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'Invoking
appropriate Workflows based on values found in request message</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Catch</span> e <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> Exception<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Throw</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> FaultException(e.Message)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Try</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Nothing</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Function</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span> BeforeSendReply(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByRef</span> reply <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> Message, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> correlationState <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Object</span>) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Implements</span> IDispatchMessageInspector.BeforeSendReply<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Try</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'Inspecting
Message Reply ...</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'Invoking
appropriate Workflows based on values found in reply message</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Catch</span> e <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> Exception<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Throw</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> FaultException(e.Message)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Try</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span></span>
        </p>
        <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
          <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <p>
              <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span>
                <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span> WcfMessageInspectorWorkflowInvokerBehavior
: <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Implements</span> IEndpointBehavior<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'...</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span> ApplyDispatchBehavior(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> serviceEndpoint <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> ServiceEndpoint, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> endpointDispatcher <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> EndpointDispatcher) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Implements</span> IEndpointBehavior.ApplyDispatchBehavior<br />
endpointDispatcher.DispatchRuntime.MessageInspectors.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Add</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> WcfMessageInspectorWorkflowInvoker)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'...</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span></span>
            </p>
          </span>
        </span>
        <p>
What I have described above is a good way to abstract how and when you invoke a workflow
away from your WCF-Hosting or business code. How do I add this behavior into my <strong>serviceHost</strong> ?
Easy. Just call the below before your <strong>serviceHost.Open</strong></p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">serviceHost.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Description</span>.Endpoints(0).Behaviors.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Add</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> Softwaremaker.NET.Wcf.Demos.WcfMessageInspectorWorkflowInvokerBehavior)</span>
        </p>
        <p>
Now, if you decide that the above code sentence intrudes into your hosting code and
you would like it to be configured in your config file for flexibility as well, I
will show in a later blog post how to add your own custom-defined <strong>behaviorExtension</strong> into
your configuration file. Think: <strong>BehaviorExtensionSection.</strong></p>
        <p>
... OR you can always go to <a href="http://www.microsoft.com/malaysia/techedsea2006/" target="_blank">TechED
Asia 2006</a> in Malaysia where you sure would derive more value than a single non-interactive
blog post. <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" /></p>
        <p>
Enjoy.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=0dd9ebed-4ad1-4b8b-8824-19bbad48985a" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Hooking a Workflow into your WCF Dispatcher</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,0dd9ebed-4ad1-4b8b-8824-19bbad48985a.aspx</guid>
      <link>http://www.softwaremaker.net/blog/HookingAWorkflowIntoYourWCFDispatcher.aspx</link>
      <pubDate>Mon, 08 May 2006 05:12:54 GMT</pubDate>
      <description>&lt;p&gt;
One of the common questions I came across&amp;nbsp;my &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx target=_blank&gt;Windows
Workflow Foundation (WF)&lt;/a&gt; and &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; consultancy &lt;a href="http://www.softwaremaker.net/blog/YesIWillCoverInfocardsAsWell.aspx" target=_blank&gt;tour&lt;/a&gt;&amp;nbsp;is
how do we logically use WF inside a WCF-hosted service.
&lt;/p&gt;
&lt;p&gt;
I had spent some time talking about how we can host a WF in a WCF:ServiceHost and
how we can create a channel to invoke a workflow inside a WCF Service.
&lt;/p&gt;
&lt;p&gt;
Of course, we can always bring up a Workflow runtime and create&amp;nbsp;a new workflow
instance within the ServiceHost. However, some of us may prefer a more non-intrusive
mode of a workflow invocation style.
&lt;/p&gt;
&lt;p&gt;
There are actually many extensible points at the Service Dispatcher which you can
hook into that is part of a service behavior. There is the &lt;strong&gt;IServiceBehavior&lt;/strong&gt;, &lt;strong&gt;IOperationBehavior&lt;/strong&gt; and
one of my favourite&amp;nbsp;extensible behavior points I like to hook into is at the &lt;strong&gt;IEndpointBehavior.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
For instance, you may want to inspect a message in its raw glory and depending on
its headers or the request&amp;nbsp;properties, you may choose to invoke an appropriate
action or workflow.&amp;nbsp;You&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;would need to implement the ApplyDispatchBehavior
routine which gives you acccess to an EndpointDispatcher, which in turn, gives you
a chance to implement a &lt;strong&gt;IDispatchMessageInspector. &lt;/strong&gt;The&lt;strong&gt; IDispatchMessageInspector&lt;/strong&gt; exposes
some very useful routines which allows you to hook into the request message just after
it has been received as well as before sending the reply message back.
&lt;/p&gt;
&lt;p&gt;
I would probably inspect the messages at this point and invoke the appropriate workflow
and send the appropriate values into the&amp;nbsp;&lt;strong&gt;ExternalDataEventArgs&lt;/strong&gt; of
the workflow based on the message values.
&lt;/p&gt;
&lt;p&gt;
Of course, this is not a hard and fast rule. How and when you do it is totally up
to you. You may want to do it at the &lt;strong&gt;IOperationBehaviour&lt;/strong&gt; and have
the message dispatched to another entirely different operation if you want to (or
if you dont agree with how WCF dispatches&amp;nbsp;its messages).
&lt;/p&gt;
&lt;p&gt;
Below are some snippets that will help you along. I will be going more in-depth into
these details in &lt;a href="http://www.microsoft.com/malaysia/techedsea2006/" target=_blank&gt;TechED
Asia 2006&lt;/a&gt; in Malaysia where I will show some really cool never-seen-before demos
that is a mixture of WF and WCF. If you havent planned to be be there at TechED Asia
2006, do so now ! &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/smile.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Namespace&lt;/span&gt; Softwaremaker.NET.Wcf.Demos&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt; WcfMessageInspectorWorkflowInvoker
: &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Implements&lt;/span&gt; IDispatchMessageInspector&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt;()&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;MyBase&lt;/span&gt;.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt;()&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Function&lt;/span&gt; AfterReceiveRequest(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByRef&lt;/span&gt; request &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; Message, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; channel &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; IClientChannel, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; instanceContext &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; InstanceContext) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Object&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Implements&lt;/span&gt; IDispatchMessageInspector.AfterReceiveRequest&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Try&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'Inspecting
Message Request ...&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'Invoking
appropriate Workflows based on values found in request message&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Catch&lt;/span&gt; e &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; Exception&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Throw&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; FaultException(e.Message)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Try&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Nothing&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Function&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; BeforeSendReply(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByRef&lt;/span&gt; reply &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; Message, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; correlationState &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Object&lt;/span&gt;) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Implements&lt;/span&gt; IDispatchMessageInspector.BeforeSendReply&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Try&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'Inspecting
Message Reply ...&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'Invoking
appropriate Workflows based on values found in reply message&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Catch&lt;/span&gt; e &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; Exception&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Throw&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; FaultException(e.Message)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Try&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt; WcfMessageInspectorWorkflowInvokerBehavior
: &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Implements&lt;/span&gt; IEndpointBehavior&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'...&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; ApplyDispatchBehavior(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; serviceEndpoint &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; ServiceEndpoint, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; endpointDispatcher &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; EndpointDispatcher) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Implements&lt;/span&gt; IEndpointBehavior.ApplyDispatchBehavior&lt;br&gt;
endpointDispatcher.DispatchRuntime.MessageInspectors.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Add&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; WcfMessageInspectorWorkflowInvoker)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'...&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&gt;
&lt;p&gt;
What I have described above is a good way to abstract how and when you invoke a workflow
away from your WCF-Hosting or business code. How do I add this behavior into my &lt;strong&gt;serviceHost&lt;/strong&gt; ?
Easy. Just call the below before your &lt;strong&gt;serviceHost.Open&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;serviceHost.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Description&lt;/span&gt;.Endpoints(0).Behaviors.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Add&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; Softwaremaker.NET.Wcf.Demos.WcfMessageInspectorWorkflowInvokerBehavior)&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Now, if you decide that the above code sentence intrudes into your hosting code and
you would like it to be configured in your config file for flexibility as well, I
will&amp;nbsp;show&amp;nbsp;in a later blog post how to add your own custom-defined &lt;strong&gt;behaviorExtension&lt;/strong&gt; into
your configuration file. Think: &lt;strong&gt;BehaviorExtensionSection.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
... OR you can always go to &lt;a href="http://www.microsoft.com/malaysia/techedsea2006/" target=_blank&gt;TechED
Asia 2006&lt;/a&gt; in Malaysia where you sure would derive more value than a single non-interactive
blog post. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
Enjoy.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=0dd9ebed-4ad1-4b8b-8824-19bbad48985a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Software Development;Windows Communication Foundation (WCF) aka Indigo;Windows Workflow Foundation (WF)</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=e461f7f1-44ca-4a5d-83d9-46d0f1654094</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,e461f7f1-44ca-4a5d-83d9-46d0f1654094.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I remembered talking to someone on the <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> team before and the reason
they chose [MesssageEncoding].MTOM instead of <strong>M</strong>essage<strong>T</strong>ransmission<strong>O</strong>ptimization<strong>M</strong>echanism
is so that it could *at least* fit on a slide.
</p>
        <p>
Well, that someone obviously didnt educate the developer who build the [MessageSecurityVersion]. <strong><em>WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 </em></strong>property. <img src="http://www.softwaremaker.net/pictures/swmemoticons/indifferent.gif" /> [Talk
about a mouthful]
</p>
        <p>
Not only is it hard to fit on a slide, it would be hard to mouth those words as well.
</p>
        <p>
Besides "bug jail", "<a href="http://news.com.com/2100-1001-981015.html" target="_blank">secure-programming
courses</a>",  "<a href="http://blogs.msdn.com/alexbarn/archive/2004/08/20/217602.aspx" target="_blank">geography
lessons</a>", I would highly recommend Microsoft engineers and developers go
for "<strong>Power-Point Presentation Etiquette 101</strong>" lessons as well <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" />.
</p>
        <p>
Speaking of which, I just got handled an exception with a message like this:
</p>
        <p>
          <strong>
            <em>The CLR has been unable to transition from COM context 0x1a0d28 to COM
context 0x1a0e98 for 60 seconds. The thread that owns the destination context/apartment
is most likely either doing a non pumping wait or processing a very long running operation
without pumping Windows messages. This situation generally has a negative performance
impact and may even lead to the application becoming non responsive or memory usage
accumulating continually over time. To avoid this problem, all single threaded apartment
(STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles)
and routinely pump messages during long running operations.</em>
          </strong>
        </p>
        <p>
Talk about being explicit. Exceptions should give a friendly message that enables
one to have an idea where to start debugging and troubleshooting. The one just made
me want to shut my machine down. <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" />.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=e461f7f1-44ca-4a5d-83d9-46d0f1654094" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Developers != Presenters</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,e461f7f1-44ca-4a5d-83d9-46d0f1654094.aspx</guid>
      <link>http://www.softwaremaker.net/blog/DevelopersPresenters.aspx</link>
      <pubDate>Wed, 08 Mar 2006 19:42:23 GMT</pubDate>
      <description>&lt;p&gt;
I remembered talking to someone on the &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; team before and the reason
they chose [MesssageEncoding].MTOM instead of &lt;strong&gt;M&lt;/strong&gt;essage&lt;strong&gt;T&lt;/strong&gt;ransmission&lt;strong&gt;O&lt;/strong&gt;ptimization&lt;strong&gt;M&lt;/strong&gt;echanism
is so that it could *at least* fit on a slide.
&lt;/p&gt;
&lt;p&gt;
Well, that someone obviously didnt educate the&amp;nbsp;developer who build the [MessageSecurityVersion]. &lt;strong&gt;&lt;em&gt;WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 &lt;/em&gt;&lt;/strong&gt;property. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/indifferent.gif"&gt; [Talk
about a mouthful]
&lt;/p&gt;
&lt;p&gt;
Not only is it hard to fit on a slide, it would be hard to mouth those words as well.
&lt;/p&gt;
&lt;p&gt;
Besides "bug jail", "&lt;a href="http://news.com.com/2100-1001-981015.html" target=_blank&gt;secure-programming
courses&lt;/a&gt;", &amp;nbsp;"&lt;a href="http://blogs.msdn.com/alexbarn/archive/2004/08/20/217602.aspx" target=_blank&gt;geography
lessons&lt;/a&gt;",&amp;nbsp;I would highly recommend Microsoft engineers and developers go
for "&lt;strong&gt;Power-Point Presentation Etiquette 101&lt;/strong&gt;" lessons as well &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;.
&lt;/p&gt;
&lt;p&gt;
Speaking of which, I just got handled an exception with a message like this:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;The CLR has been unable to transition from COM context 0x1a0d28 to COM
context 0x1a0e98 for 60 seconds. The thread that owns the destination context/apartment
is most likely either doing a non pumping wait or processing a very long running operation
without pumping Windows messages. This situation generally has a negative performance
impact and may even lead to the application becoming non responsive or memory usage
accumulating continually over time. To avoid this problem, all single threaded apartment
(STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles)
and routinely pump messages during long running operations.&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Talk about being explicit. Exceptions should give a friendly message that enables
one to have an idea where to start debugging and troubleshooting. The one just made
me want to shut my&amp;nbsp;machine down. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=e461f7f1-44ca-4a5d-83d9-46d0f1654094" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>OMG !;Random Musings;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=e3351661-bde9-48be-9759-e1a57c279bd2</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,e3351661-bde9-48be-9759-e1a57c279bd2.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft announced <strong><em>Go Live</em></strong> licenses this morning for <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> and <a href="http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx" target="_blank">Windows
Workflow Foundation (WF)</a> , which lets customers use the January Go Live
releases of WCF and WWF in their deployment environments. Do note that these are unsupported
Go Lives.)  
</p>
        <p>
More information about the Go Live program is at <a href="http://msdn.microsoft.com/winfx/getthebeta/golive/default.aspx" target="_blank">http://msdn.microsoft.com/winfx/getthebeta/golive/default.aspx</a>.
</p>
        <p>
There are also a couple of community sites for WCF and WWF here:<br /><a href="http://windowscommunication.net/" target="_blank">http://windowscommunication.net</a><br /><a href="http://windowsworkflow.net/" target="_blank">http://windowsworkflow.net</a></p>
        <p>
The community sites give users everything they need to start using WWF and WF today. 
If you have some great samples, do post them to the sites;  The
WCF sample gallery and WF activity gallery allow you to host the samples/activities
on your own site and create links to your own site from the galleries.
</p>
        <p>
As <a href="http://www.softwaremaker.net/blog/InitializingWindowsWorkflowFoundationAndWindowsPresentationFoundation.aspx" target="_blank">mentioned</a>,
I will be introducing more WWF Blogging to this site. Do stay tuned.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=e3351661-bde9-48be-9759-e1a57c279bd2" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>[Go_Live_Licenses]WCF and WWF[/Go_Live_Licenses]</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,e3351661-bde9-48be-9759-e1a57c279bd2.aspx</guid>
      <link>http://www.softwaremaker.net/blog/GoLiveLicensesWCFAndWWFGoLiveLicenses.aspx</link>
      <pubDate>Wed, 18 Jan 2006 21:58:09 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft&amp;nbsp;announced &lt;strong&gt;&lt;em&gt;Go Live&lt;/em&gt;&lt;/strong&gt; licenses this morning for &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt;&amp;nbsp;and &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx target=_blank&gt;Windows
Workflow Foundation (WF)&lt;/a&gt;&amp;nbsp;, which&amp;nbsp;lets customers use the January Go Live
releases of WCF and WWF in their deployment environments. Do note that these are unsupported
Go Lives.)&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
More information about the Go Live program is at &lt;a href="http://msdn.microsoft.com/winfx/getthebeta/golive/default.aspx" target=_blank&gt;http://msdn.microsoft.com/winfx/getthebeta/golive/default.aspx&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
There&amp;nbsp;are also a couple of community sites for WCF and WWF here:&lt;br&gt;
&lt;a href="http://windowscommunication.net/" target=_blank&gt;http://windowscommunication.net&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://windowsworkflow.net/" target=_blank&gt;http://windowsworkflow.net&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The community sites give users everything they need to start using WWF and WF today.&amp;nbsp;
If you have some&amp;nbsp;great samples, do&amp;nbsp;post them to the sites;&amp;nbsp;&amp;nbsp;The
WCF sample gallery and WF activity gallery allow you to host the samples/activities
on your own site and create links to your own site from the galleries.
&lt;/p&gt;
&lt;p&gt;
As &lt;a href="http://www.softwaremaker.net/blog/InitializingWindowsWorkflowFoundationAndWindowsPresentationFoundation.aspx" target=_blank&gt;mentioned&lt;/a&gt;,
I will be introducing more WWF Blogging to this site. Do stay tuned.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=e3351661-bde9-48be-9759-e1a57c279bd2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Announcements;Community;Windows Communication Foundation (WCF) aka Indigo;Windows Workflow Foundation (WF)</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=71b17822-f1b4-4157-901f-2fd97492c634</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,71b17822-f1b4-4157-901f-2fd97492c634.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was approached to write about <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> a while back for <a href="http://searchvb.techtarget.com/" target="_blank">SearchVB.com,
a member of TechTarget.com</a>.
</p>
        <p>
Between a few new transitional CTP drops and major Microsoft events, I managed to
hack out a simple piece <a href="http://searchvb.techtarget.com/originalContent/0,289142,sid8_gci1148900,00.html" target="_blank">here</a> targetted
at entry WCF-VB developers. There is another intermediate one (that deals with security) which
will appear slightly later on TechTarget.com. Stay tuned to this space for further
updates.
</p>
        <p>
Do take note that this piece is currently one of the very few out there that is written
against one of the latest WCF versions (The Sept-CTP WinFX drop).
</p>
        <p>
Enjoy and send those comments over.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=71b17822-f1b4-4157-901f-2fd97492c634" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Connecting Web services with the System.ServiceModel - On SearchVB.com</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,71b17822-f1b4-4157-901f-2fd97492c634.aspx</guid>
      <link>http://www.softwaremaker.net/blog/ConnectingWebServicesWithTheSystemServiceModelOnSearchVBcom.aspx</link>
      <pubDate>Thu, 01 Dec 2005 22:05:28 GMT</pubDate>
      <description>&lt;p&gt;
I was approached to write about &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; a while back for &lt;a href="http://searchvb.techtarget.com/" target=_blank&gt;SearchVB.com,
a member of TechTarget.com&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Between a few new transitional CTP drops and major Microsoft events, I managed to
hack out a simple piece &lt;a href="http://searchvb.techtarget.com/originalContent/0,289142,sid8_gci1148900,00.html" target=_blank&gt;here&lt;/a&gt; targetted
at entry WCF-VB developers. There is another intermediate one (that deals with security)&amp;nbsp;which
will appear slightly later on TechTarget.com. Stay tuned to this space for further
updates.
&lt;/p&gt;
&lt;p&gt;
Do take note that this piece is currently one of the very few out there that is written
against one of the latest WCF versions&amp;nbsp;(The Sept-CTP WinFX drop).
&lt;/p&gt;
&lt;p&gt;
Enjoy and send those comments over.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=71b17822-f1b4-4157-901f-2fd97492c634" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Articles;Windows Communication Foundation (WCF) aka Indigo;XML Services</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=1a8a0442-c829-4742-9431-2705d46b71d6</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,1a8a0442-c829-4742-9431-2705d46b71d6.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was told that there appears to be a couple of non-working samples in the <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> Sept-CTP drop. I found out
(the hard way) that one of them was the BasicSecurityProfile sample.
</p>
        <p>
There is a workaround to it. There are basically 2 bugs in that sample. It may
help solve the other bugs in the samples. This will only affect the security samples
that uses the <a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" target="_blank">WS-Security
Specifications</a> in the [basicHttpBinding] bindings.
</p>
        <p>
          <strong>
            <font color="#ff0000">BUG 1.</font>
          </strong> The affected sample will only
work with X.509 Digital Certificates that has the <strong><em>Subject Key Identifier
(SKI)</em></strong> installed. Unfortunately, the cert samples, which are used, are
being issued by makecert.exe which doesnt generate X.509 certs with the SKI.
</p>
        <ol>
          <li>
You can create test certificates from <a href="http://www.verisign.com" target="_blank">Verisign</a>.
Those test certs will come with SKI 
</li>
          <li>
You can set up a Certificate Authority (CA) on Windows 2003 Server. This is not
installed by default and you need to add that component into your server setup. This will
issue you a cert with SKI.</li>
        </ol>
        <p>
On a separate note, X.509 Digital Certificates that come with SKI offer the best approach
in interoperability, so it is best recommended that you work with certs that comes
installed with it.
</p>
        <p>
          <font color="#ff0000">
            <strong>BUG 2.</strong>
          </font> Once you fix the workaround to
BUG 1, and you run the BasicSecurityProfile sample and the client barfs this exception at
you: 
<hr />
System.ServiceModel.Security.MessageSecurityException was unhandled<br />
  Message="No signature message parts were specified for messages with action
'*'."<br />
  Source="mscorlib"<br />
  StackTrace: [BLAH] [BLAH] [BLAH] 
<hr />
You would have come across the second bug. This is an easy fix. 
</p>
        <p>
        </p>
        <ol>
          <li>
On the client proxy, change the replyAction = "*"</li>
        </ol>
        <p>
Once you have these 2 workarounds done up, the BasicSecurityProfile sample should
work.
</p>
        <p>
Both these bugs will be fixed in the subsequent WCF drop. I hope this at least helps
someone.<br /></p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=1a8a0442-c829-4742-9431-2705d46b71d6" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Bug in the basicHttpBinding / WS-Security of the WCF Sept-CTP drop</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,1a8a0442-c829-4742-9431-2705d46b71d6.aspx</guid>
      <link>http://www.softwaremaker.net/blog/BugInTheBasicHttpBindingWSSecurityOfTheWCFSeptCTPDrop.aspx</link>
      <pubDate>Sat, 29 Oct 2005 01:13:35 GMT</pubDate>
      <description>&lt;p&gt;
I was told that there appears to be a couple of non-working samples in the &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; Sept-CTP drop. I found out
(the hard way) that one of them was the BasicSecurityProfile sample.
&lt;/p&gt;
&lt;p&gt;
There is a workaround to it. There are basically 2 bugs&amp;nbsp;in that sample. It may
help solve the other bugs in the samples. This will only affect the security samples
that uses the &lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" target="_blank"&gt;WS-Security
Specifications&lt;/a&gt; in the [basicHttpBinding] bindings.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#ff0000&gt;BUG 1.&lt;/font&gt;&lt;/strong&gt; The affected sample will only work
with X.509 Digital Certificates that has the &lt;strong&gt;&lt;em&gt;Subject Key Identifier (SKI)&lt;/em&gt;&lt;/strong&gt; installed.
Unfortunately, the cert samples, which are used, are being issued by makecert.exe
which doesnt generate X.509 certs with the SKI.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
You can create test certificates from &lt;a href="http://www.verisign.com" target=_blank&gt;Verisign&lt;/a&gt;.
Those test certs will come with SKI 
&lt;li&gt;
You can&amp;nbsp;set up a Certificate Authority (CA) on Windows 2003 Server. This is not
installed by default and you need to add that component into your server setup. This&amp;nbsp;will
issue you a cert with SKI.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
On a separate note, X.509 Digital Certificates that come with SKI offer the best approach
in interoperability, so it is best recommended that you work with certs that comes
installed with it.
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#ff0000&gt;&lt;strong&gt;BUG 2.&lt;/strong&gt;&lt;/font&gt; Once you fix the workaround to
BUG 1, and you run the BasicSecurityProfile sample and the client barfs this exception&amp;nbsp;at
you: 
&lt;hr&gt;
System.ServiceModel.Security.MessageSecurityException was unhandled&lt;br&gt;
&amp;nbsp; Message="No signature message parts were specified for messages with action
'*'."&lt;br&gt;
&amp;nbsp; Source="mscorlib"&lt;br&gt;
&amp;nbsp; StackTrace: [BLAH] [BLAH] [BLAH] 
&lt;hr&gt;
You would have come across the second bug. This is an easy fix. 
&lt;p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
On the client proxy, change the replyAction = "*"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Once you have these 2 workarounds done up, the BasicSecurityProfile sample should
work.
&lt;/p&gt;
&lt;p&gt;
Both these bugs will be fixed in the subsequent WCF drop. I hope this at least helps
someone.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=1a8a0442-c829-4742-9431-2705d46b71d6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo;XML Services</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=efb7a1e0-b67f-4ff6-acef-618816a086e1</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,efb7a1e0-b67f-4ff6-acef-618816a086e1.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In <a href="http://msdn2.microsoft.com/en-us/webservices/aa740663.aspx" target="_blank" title="Web Services Enchancements">Web
Services Enhancements (WSE)</a> 2.0, one could exercise some control over what one
xml element/fragments wants to encrypt within a <strong>soap:Body</strong>. Therefore,
if I wanted to encrypt the account string in my credit card type, I could do something
like this:
</p>
        <p>
[At your Service Side] 
<hr />
Public Class SecuredCreditCard<br />
  &lt;XmlElement(ElementName:="CreditCardType")&gt; _<br />
  Public Type As String<br />
  &lt;XmlElement(ElementName:="CreditCardAccount")&gt; _<br />
  Public Account As SecuredString<br />
End Class 
</p>
        <p>
        </p>
        <p>
Public Class SecuredString<br />
  'Set the Oasis Id that our security reference will point to<br />
  &lt;XmlAttributeAttribute("Id", _<br />
Namespace:=".../2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd")&gt; _<br />
  Public ID As String<br />
  &lt;XmlText()&gt; _<br />
  Public Data As String<br />
End Class
</p>
        <p>
[At your Calling side] 
<hr />
Dim a As localhost.IndexWse = New localhost.IndexWse<br />
Dim b As localhost.SecuredCreditCard = New localhost.SecuredCreditCard<br />
Dim z As localhost.SecuredString = New localhost.SecuredString 
</p>
        <p>
        </p>
        <p>
Dim c As SoapContext = a.RequestSoapContext
</p>
        <p>
b.CreditCardType = "VISA"<br />
z.Id = "uri:demoId.softwaremaker.net" 'or some guid<br />
z.Value = "123-456-789"<br />
b.CreditCardAccount = z
</p>
        <p>
c.Security.Elements.Add(New EncryptedData(tok, "#uri:demoId.softwaremaker.net"))
</p>
        <p>
Note: To reduce headache-inducing typo bugs, you may want to use some WSE Constants
such as 
<br />
WSUtility.Prefix<br />
WSUtility.AttributeNames.Id<br />
WSUtility.NamespaceURI
</p>
        <p>
The end result of this is a soap:Body on the wire looks like this: 
<hr />
&lt;SecureCreditCard&gt;<br />
 &lt;CreditCardType&gt;VISA&lt;/CreditCardType&gt;<br />
 &lt;CreditCardAccount d4p1:Id="uri:demoId.softwaremaker.net" xmlns:d4p1=".../2004/01/oasis- 200401-wss-wssecurity-utility-1.0.xsd"&gt;<br />
  &lt;xenc:EncryptedData Id="EncryptedContent-3d793117-f020-4236-a0a0-0ed545d9bf1a"
Type=".../2001/04/  xmlenc#Content" xmlns:xenc=".../2001/04/xmlenc#"&gt;<br />
  &lt;xenc:EncryptionMethod Algorithm=".../2001/04/xmlenc#aes128-cbc" /&gt;<br />
  &lt;xenc:CipherData&gt;<br />
  &lt;xenc:CipherValue&gt;FRFCiq...+0W5oS4&lt;/xenc:CipherValue&gt;<br />
  &lt;/xenc:CipherData&gt;<br />
  &lt;/xenc:EncryptedData&gt;<br />
 &lt;/CreditCardAccount&gt;<br />
&lt;/SecureCreditCard&gt; 
</p>
        <p>
        </p>
        <p>
While I dont know how much of performance benefits this has over one that has the
entire SecureCreditCard encrypted (since it is an symmetric-key encryption at its
core), I think in terms of latency and throughput, it does offer some benefits especially
with a sizable payload (&gt;20-30 kb, for instance ?)
</p>
        <p>
          <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> does not currently have that
feature build in at the moment (Sept05-CTP or known as the PDC-bits). In other words,
in WCF today, you encrypt the entire contents of the <strong>soap:Body</strong>, lock-stock-barrel.
I would still love that WSE feature in there: To be able to exercise finer grain control
over what I want to or not to encrypt within a <strong>soap:Body</strong>.
</p>
        <p>
Would really like to find out if I am the only odd one out there. Any users using
that existing WSE feature out there that would love to see the same in WCF or do you
have other better ideas ? Leave a comment or email me via the contact link on the
side. Thank you.
</p>
        <p>
          <strong>
            <font color="#ff0000">BTW: Whether you encrypt certain elements of the
contents or encrypt the entire contents of the soap:Body, both are <a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" target="_blank">WS-Security
Specifications</a> compliant</font>
          </strong>.<br />
 
</p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=efb7a1e0-b67f-4ff6-acef-618816a086e1" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Encrypting message fragments in a soap:body : Evidence and Feedback needed !</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,efb7a1e0-b67f-4ff6-acef-618816a086e1.aspx</guid>
      <link>http://www.softwaremaker.net/blog/EncryptingMessageFragmentsInASoapbodyEvidenceAndFeedbackNeeded.aspx</link>
      <pubDate>Mon, 24 Oct 2005 13:00:00 GMT</pubDate>
      <description>&lt;p&gt;
In &lt;a href="http://msdn2.microsoft.com/en-us/webservices/aa740663.aspx" target="_blank" title="Web Services Enchancements"&gt;Web
Services Enhancements (WSE)&lt;/a&gt; 2.0, one could exercise some control over what one
xml element/fragments wants to encrypt within a &lt;strong&gt;soap:Body&lt;/strong&gt;. Therefore,
if I wanted to encrypt the account string in my credit card type, I could do something
like this:
&lt;/p&gt;
&lt;p&gt;
[At your Service Side] 
&lt;hr&gt;
Public Class SecuredCreditCard&lt;br&gt;
&amp;nbsp; &amp;lt;XmlElement(ElementName:="CreditCardType")&amp;gt; _&lt;br&gt;
&amp;nbsp; Public Type As String&lt;br&gt;
&amp;nbsp; &amp;lt;XmlElement(ElementName:="CreditCardAccount")&amp;gt; _&lt;br&gt;
&amp;nbsp; Public Account As SecuredString&lt;br&gt;
End Class 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Public Class SecuredString&lt;br&gt;
&amp;nbsp; 'Set the Oasis Id that our security reference will point to&lt;br&gt;
&amp;nbsp; &amp;lt;XmlAttributeAttribute("Id", _&lt;br&gt;
Namespace:=".../2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd")&amp;gt; _&lt;br&gt;
&amp;nbsp; Public ID As String&lt;br&gt;
&amp;nbsp; &amp;lt;XmlText()&amp;gt; _&lt;br&gt;
&amp;nbsp; Public Data As String&lt;br&gt;
End Class
&lt;/p&gt;
&lt;p&gt;
[At your Calling side] 
&lt;hr&gt;
Dim a As localhost.IndexWse = New localhost.IndexWse&lt;br&gt;
Dim b As localhost.SecuredCreditCard = New localhost.SecuredCreditCard&lt;br&gt;
Dim z As localhost.SecuredString = New localhost.SecuredString 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Dim c As SoapContext = a.RequestSoapContext
&lt;/p&gt;
&lt;p&gt;
b.CreditCardType = "VISA"&lt;br&gt;
z.Id = "uri:demoId.softwaremaker.net" 'or some guid&lt;br&gt;
z.Value = "123-456-789"&lt;br&gt;
b.CreditCardAccount = z
&lt;/p&gt;
&lt;p&gt;
c.Security.Elements.Add(New EncryptedData(tok, "#uri:demoId.softwaremaker.net"))
&lt;/p&gt;
&lt;p&gt;
Note: To reduce headache-inducing typo bugs, you may want to use some WSE Constants
such as 
&lt;br&gt;
WSUtility.Prefix&lt;br&gt;
WSUtility.AttributeNames.Id&lt;br&gt;
WSUtility.NamespaceURI
&lt;/p&gt;
&lt;p&gt;
The end result of this is a soap:Body on the wire looks like this: 
&lt;hr&gt;
&amp;lt;SecureCreditCard&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;lt;CreditCardType&amp;gt;VISA&amp;lt;/CreditCardType&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;lt;CreditCardAccount d4p1:Id="uri:demoId.softwaremaker.net" xmlns:d4p1=".../2004/01/oasis-&amp;nbsp;200401-wss-wssecurity-utility-1.0.xsd"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;xenc:EncryptedData Id="EncryptedContent-3d793117-f020-4236-a0a0-0ed545d9bf1a"
Type=".../2001/04/&amp;nbsp;&amp;nbsp;xmlenc#Content" xmlns:xenc=".../2001/04/xmlenc#"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;xenc:EncryptionMethod Algorithm=".../2001/04/xmlenc#aes128-cbc" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;xenc:CipherData&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;xenc:CipherValue&amp;gt;FRFCiq...+0W5oS4&amp;lt;/xenc:CipherValue&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/xenc:CipherData&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/xenc:EncryptedData&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;lt;/CreditCardAccount&amp;gt;&lt;br&gt;
&amp;lt;/SecureCreditCard&amp;gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
While I dont know how much of performance benefits this has over one that has the
entire SecureCreditCard encrypted (since it is an symmetric-key encryption at its
core), I think in terms of latency and throughput, it does offer some benefits especially
with a sizable payload (&amp;gt;20-30 kb, for instance ?)
&lt;/p&gt;
&lt;p&gt;
&lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; does not currently have that
feature build in at the moment (Sept05-CTP or known as the PDC-bits). In other words,
in WCF today, you encrypt the entire contents of the &lt;strong&gt;soap:Body&lt;/strong&gt;, lock-stock-barrel.
I would still love that WSE feature in there: To be able to exercise finer grain control
over what I want to or not to encrypt within a &lt;strong&gt;soap:Body&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Would really like to find out if I am the only odd one out there. Any users using
that existing WSE feature out there that would love to see the same in WCF or do you
have other better ideas ? Leave a comment or email me via the contact link on the
side. Thank you.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#ff0000&gt;BTW:&amp;nbsp;Whether you encrypt certain elements of the
contents or&amp;nbsp;encrypt the entire contents of the soap:Body, both are&amp;nbsp;&lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" target="_blank"&gt;WS-Security
Specifications&lt;/a&gt; compliant&lt;/font&gt;&lt;/strong&gt;.&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=efb7a1e0-b67f-4ff6-acef-618816a086e1" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Web Services Enhancements (WSE);Windows Communication Foundation (WCF) aka Indigo;WS-Splat Specs;XML Services</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=bcb909a1-48ec-42c6-a9c6-23093a3243aa</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,bcb909a1-48ec-42c6-a9c6-23093a3243aa.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Even though it is a mini-TechED scale-wise, I have a feeling it is going to be <strong>BIG</strong> nonetheless.
</p>
        <p>
I will be presenting in this event on, what-else but <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a>. <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" /></p>
        <p>
I hope to see you there as it will be a good time there.
</p>
        <p>
          <img onclick="window.open('http://www.teched.lk')" height="161" alt="TechEDSriLanka.gif" src="http://www.softwaremaker.net/blog/content/binary/TechEDSriLanka.gif" width="257" border="0" />
        </p>
        <p>
[Update:] Some comments on the event:-<br /><a href="http://www.geekswithblogs.net/tariq/archive/2005/10/12/56777.aspx" target="_blank">http://www.geekswithblogs.net/tariq/archive/2005/10/12/56777.aspx</a><br /><a href="http://mahasen.blogspot.com/2005/10/first-day-of-teched-2005-sri-lanka.html" target="_blank">http://mahasen.blogspot.com/2005/10/first-day-of-teched-2005-sri-lanka.html</a><br /><a href="http://mahasen.blogspot.com/2005/10/second-day-of-teched-2005-sri-lanka.html" target="_blank">http://mahasen.blogspot.com/2005/10/second-day-of-teched-2005-sri-lanka.html</a><br /><a href="http://jinath.weblogs.us/archives/032674.html" target="_blank">http://jinath.weblogs.us/archives/032674.html</a><a href="http://www.geekswithblogs.net/tariq/archive/2005/10/12/56777.aspx"></a><br /><a href="http://lkdeveloper.blogspot.com/2005/10/tech-ed-srilanka.html" target="_blank">http://lkdeveloper.blogspot.com/2005/10/tech-ed-srilanka.html</a></p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=bcb909a1-48ec-42c6-a9c6-23093a3243aa" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>It is going to be BIG: Microsoft TechED Sri Lanka 2005</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,bcb909a1-48ec-42c6-a9c6-23093a3243aa.aspx</guid>
      <link>http://www.softwaremaker.net/blog/ItIsGoingToBeBIGMicrosoftTechEDSriLanka2005.aspx</link>
      <pubDate>Thu, 06 Oct 2005 20:23:33 GMT</pubDate>
      <description>&lt;p&gt;
Even though it is a mini-TechED scale-wise, I have a feeling it is going to be &lt;strong&gt;BIG&lt;/strong&gt; nonetheless.
&lt;/p&gt;
&lt;p&gt;
I will be presenting in this event on, what-else but &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt;. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
I hope to see you there as it&amp;nbsp;will be a good time there.
&lt;/p&gt;
&lt;p&gt;
&lt;img onclick="window.open('http://www.teched.lk')" height=161 alt=TechEDSriLanka.gif src="http://www.softwaremaker.net/blog/content/binary/TechEDSriLanka.gif" width=257 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
[Update:] Some comments on the event:-&lt;br&gt;
&lt;a href="http://www.geekswithblogs.net/tariq/archive/2005/10/12/56777.aspx" target=_blank&gt;http://www.geekswithblogs.net/tariq/archive/2005/10/12/56777.aspx&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://mahasen.blogspot.com/2005/10/first-day-of-teched-2005-sri-lanka.html" target=_blank&gt;http://mahasen.blogspot.com/2005/10/first-day-of-teched-2005-sri-lanka.html&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://mahasen.blogspot.com/2005/10/second-day-of-teched-2005-sri-lanka.html" target=_blank&gt;http://mahasen.blogspot.com/2005/10/second-day-of-teched-2005-sri-lanka.html&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://jinath.weblogs.us/archives/032674.html" target=_blank&gt;http://jinath.weblogs.us/archives/032674.html&lt;/a&gt;&lt;a href="http://www.geekswithblogs.net/tariq/archive/2005/10/12/56777.aspx"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;a href="http://lkdeveloper.blogspot.com/2005/10/tech-ed-srilanka.html" target=_blank&gt;http://lkdeveloper.blogspot.com/2005/10/tech-ed-srilanka.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=bcb909a1-48ec-42c6-a9c6-23093a3243aa" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Community;Presentations;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=bea5c27e-10a7-41e6-9dbd-70025b2a8f51</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,bea5c27e-10a7-41e6-9dbd-70025b2a8f51.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mike Taulty is throwing up some very good <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a> notes via his blog <a href="http://mtaulty.com/blog" target="_blank">here</a>.
</p>
        <p>
In one of his <a href="http://mtaulty.com/blog/(s5eqyu55klzmzyildjc3qe45)/archive/2005/04/04/1761.aspx" target="_blank">post</a>,
he asked about what is the ListenerFactory that is analogous to the client-side ChannelFactory.
This is a good question and I believe the answer is the <strong><u><a href="http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/N_System_ServiceModel.asp" target="_blank">System.ServiceModel.ServiceHost</a></u></strong>.
</p>
        <p>
There are, however, a few ways to implement a server-side pipe that can process and
understand his client-side implementation of his generic ChannelFactory <a href="http://mtaulty.com/blog/(s5eqyu55klzmzyildjc3qe45)/archive/2005/04/04/1761.aspx" target="_blank">here</a>.
</p>
        <p>
One of the ways to listen and process the incoming message is actually something
he has already cooked up in an earlier <a href="http://mtaulty.com/blog/(qz1l3waxgwquwmu4yvdkjxvw)/archive/2005/03/30/1721.aspx" target="_blank">post</a> of
his. However, to answer his question:- ServiceHost is the answer to the ListenerFactory.
</p>
        <p>
I took the liberty of writing up some code to wire up some ListenerFactory stacks
via the <strong><u>Service.ServiceModel.ServiceHost</u></strong>.
</p>
        <p>
          <hr />
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Module
SomeModule</span>
            </span>
          </span>
          <br />
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              </span>
            </span>
          </span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span> MyOwnServiceHost<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Dim</span> cBindings <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> CustomBinding<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Dim</span> httpTransport <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> HttpTransportBindingElement<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Dim</span> textEncoding <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> TextMessageEncodingBindingElement<br />
cBindings.Elements.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Add</span>(httpTransport)<br />
cBindings.Elements.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Add</span>(textEncoding)<br /><br />
Using sh1 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> ServiceHost(Of
MyOwnServiceHost)(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> Uri(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"http://localhost:8080/"</span>))<br />
sh1.AddEndpoint(<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">GetType</span>(MyOwnServiceHost),
cBindings, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"MyOwnServiceHost"</span>)<br />
sh1.Open()<br />
Console.WriteLine(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Service
running ..."</span>)<br />
Console.WriteLine(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Press
Enter to Exit."</span>)<br />
Console.ReadLine()<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span> Using<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Module</span><br /><br />
&lt;ServiceContract()&gt; _<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span> MyOwnServiceHost<br />
&lt;OperationContract(Action:=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"urn:someAction"</span>,
IsOneWay:=<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">True</span>)&gt;
_<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span> DumpWhateverToConsole(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> m <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> Message)<br />
SomeModule.DumpMessageOutToConsole(m)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class 
<hr /></span></span>
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=bea5c27e-10a7-41e6-9dbd-70025b2a8f51" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>ListenerFactory as ServiceHost</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,bea5c27e-10a7-41e6-9dbd-70025b2a8f51.aspx</guid>
      <link>http://www.softwaremaker.net/blog/ListenerFactoryAsServiceHost.aspx</link>
      <pubDate>Wed, 05 Oct 2005 05:06:29 GMT</pubDate>
      <description>&lt;p&gt;
Mike Taulty is throwing up some very good &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt; notes via his blog &lt;a href="http://mtaulty.com/blog" target=_blank&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
In one of his &lt;a href="http://mtaulty.com/blog/(s5eqyu55klzmzyildjc3qe45)/archive/2005/04/04/1761.aspx" target=_blank&gt;post&lt;/a&gt;,
he asked about what is the ListenerFactory that is analogous to the client-side ChannelFactory.
This is a good question and I believe the answer is the &lt;strong&gt;&lt;u&gt;&lt;a href="http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/N_System_ServiceModel.asp" target=_blank&gt;System.ServiceModel.ServiceHost&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
There are, however, a few ways to implement a server-side pipe that can process and
understand his client-side implementation of his generic ChannelFactory &lt;a href="http://mtaulty.com/blog/(s5eqyu55klzmzyildjc3qe45)/archive/2005/04/04/1761.aspx" target=_blank&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
One of the ways to listen and process the incoming message&amp;nbsp;is actually something
he has already cooked up in an earlier &lt;a href="http://mtaulty.com/blog/(qz1l3waxgwquwmu4yvdkjxvw)/archive/2005/03/30/1721.aspx" target=_blank&gt;post&lt;/a&gt; of
his. However, to answer his question:- ServiceHost is the answer to the ListenerFactory.
&lt;/p&gt;
&lt;p&gt;
I took the liberty of writing up some code to wire up some ListenerFactory stacks
via the &lt;strong&gt;&lt;u&gt;Service.ServiceModel.ServiceHost&lt;/u&gt;&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Module
SomeModule&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; MyOwnServiceHost&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Dim&lt;/span&gt; cBindings &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; CustomBinding&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Dim&lt;/span&gt; httpTransport &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; HttpTransportBindingElement&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Dim&lt;/span&gt; textEncoding &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; TextMessageEncodingBindingElement&lt;br&gt;
cBindings.Elements.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Add&lt;/span&gt;(httpTransport)&lt;br&gt;
cBindings.Elements.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Add&lt;/span&gt;(textEncoding)&lt;br&gt;
&lt;br&gt;
Using sh1 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; ServiceHost(Of
MyOwnServiceHost)(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; Uri(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"http://localhost:8080/"&lt;/span&gt;))&lt;br&gt;
sh1.AddEndpoint(&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;GetType&lt;/span&gt;(MyOwnServiceHost),
cBindings, &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"MyOwnServiceHost"&lt;/span&gt;)&lt;br&gt;
sh1.Open()&lt;br&gt;
Console.WriteLine(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Service
running ..."&lt;/span&gt;)&lt;br&gt;
Console.WriteLine(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Press
Enter to Exit."&lt;/span&gt;)&lt;br&gt;
Console.ReadLine()&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; Using&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Module&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;lt;ServiceContract()&amp;gt; _&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt; MyOwnServiceHost&lt;br&gt;
&amp;lt;OperationContract(Action:=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"urn:someAction"&lt;/span&gt;,
IsOneWay:=&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;True&lt;/span&gt;)&amp;gt;
_&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; DumpWhateverToConsole(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; m &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; Message)&lt;br&gt;
SomeModule.DumpMessageOutToConsole(m)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class 
&lt;hr&gt;
&lt;/span&gt;&lt;/span&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=bea5c27e-10a7-41e6-9dbd-70025b2a8f51" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=53a3fae1-0980-4625-b889-98bb18ef64b3</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,53a3fae1-0980-4625-b889-98bb18ef64b3.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Back to more <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a>, or previously known as Indigo, postings...
</p>
        <p>
I dont think a lot of people know about one of the aspects of WCF, which pertains
to how WCF serializes incoming messages before it sends it to the dispatcher and onto
your .NET typed code.
</p>
        <p>
In .NET 1.*, ASMX disregards the ordering of the data elements in the received messages.
This means that for a XML Schema such as this:
</p>
        <p>
[s:complexType name="CreditCard"]<br />
[s:sequence]<br />
[s:element name="AccountName" type="s:string" /] 
<br />
[s:element name="CreditCardType" type="s:string" /] 
<br />
[s:element name="CreditCardNo" type="s:string" /] 
<br />
[s:element name="CreditCardExpiryDate" type="s:string" /] 
<br />
[/s:sequence]<br />
[/s:complexType]
</p>
        <p>
If you send a <a href="http://www.w3.org/TR/soap/" target="_blank">(W3C) SOAP</a> Message
such as this (Take note that the ordering of [AccountName] is not in-line with the
above schema):
</p>
        <p>
  [soap:Envelope]<br />
    [soap:Header /]<br />
    [soap:Body]<br />
      [SubmitCreditCard]<br />
        [crdcard]<br />
          [CreditCardType]AMEX[/CreditCardType]<br />
          [CreditCardNo]1234567890[/CreditCardNo]<br />
          [CreditCardExpiryDate]08082088[/CreditCardExpiryDate]<br />
          [AccountName]William Tay[/AccountName]<br />
        [/crdcard]<br />
      [/SubmitCreditCard]<br />
    [/soap:Body]<br />
  [/soap:Envelope]
</p>
        <p>
ASMX will allow the message to go through.
</p>
        <p>
In WCF, there is strict enforcing of the ordering of the data elements. Lets take
a quick look:
</p>
        <p>
          <strong>
            <u>WCF Code:</u>
          </strong>
          <br />
[DataContract()] _<br />
Public Class CreditCard<br />
  [DataMember(Name:="CreditCardExpiryDate")] Private _CreditCardExpiryDate As
String<br />
  [DataMember(Name:="CreditCardType")] Private _CreditCardType As String<br />
  [DataMember(Name:="CreditCardNo")] Private _CreditCardNo As String<br />
  [DataMember(Name:="AccountName")] Private _AccountName As String
</p>
        <p>
  Public Property CreditCardType() As String<br />
    Get<br />
      Return _CreditCardType<br />
    End Get<br />
    Set(ByVal value As String)<br />
      _CreditCardType = value<br />
    End Set<br />
  End Property
</p>
        <p>
  Public Property CreditCardNo() As String<br />
    Get<br />
      Return _CreditCardNo<br />
    End Get<br />
    Set(ByVal value As String)<br />
      _CreditCardNo = value<br />
    End Set<br />
  End Property
</p>
        <p>
  Public Property CreditCardExpiryDate() As String<br />
    Get<br />
      Return _CreditCardExpiryDate<br />
    End Get<br />
    Set(ByVal value As String)<br />
      _CreditCardExpiryDate = value<br />
    End Set<br />
  End Property
</p>
        <p>
  Public Property AccountName() As String<br />
    Get<br />
      Return _AccountName<br />
    End Get<br />
    Set(ByVal value As String)<br />
      _AccountName = value<br />
    End Set<br />
  End Property<br />
End Class
</p>
        <p>
          <strong>
            <u>This will generate the schema</u>
          </strong>:<br />
[xs:complexType name="CreditCard"]<br />
[xs:sequence]<br />
[xs:element name="AccountName" nillable="true" type="ser:string" /] 
<br />
[xs:element name="CreditCardExpiryDate" nillable="true" type="ser:string" /] 
<br />
[xs:element name="CreditCardNo" nillable="true" type="ser:string" /] 
<br />
[xs:element name="CreditCardType" nillable="true" type="ser:string" /] 
<br />
[!-- I omitted some WCF-specific elements here for simplicity.--]<br />
[!--I will blog more about this on a later date. See Below **--]<br />
[/xs:complexType]
</p>
        <p>
There is a reason I put the <strong>Public Property AccountName</strong> last
in my .NET 2.0/Indigo code above. I wanted to show that how you place the
property/field in code has no effect on the schema. If you keep a strong observant
eye on the resultant schema, you will notice that it is <strong><u>Alphabetical-Ordering</u></strong> dependent
and if I send the below message to it:
</p>
        <p>
[s:Envelope]<br />
[s:Header /] 
<br />
[s:Body]<br />
[SubmitCreditCard xmlns="<a href="http://demos.softwaremaker.net/SchemaDataOrdering">http://demos.softwaremaker.net/SchemaDataOrdering</a>"]<br />
[crdcard]<br />
[CreditCardExpiryDate]08082088[/CreditCardExpiryDate] 
<br />
[CreditCardNo]1234567890[/CreditCardNo] 
<br />
[CreditCardType]AMEX[/CreditCardType] 
<br />
[AccountName]William Tay[/AccountName] 
<br />
[/crdcard]<br />
[/SubmitCreditCard]<br />
[/s:Body]<br />
[/s:Envelope]
</p>
        <p>
It will result in a <a href="http://www.checkupdown.com/status/E500.html" target="_blank">HTTP
Error Code: 500 (Internal Server Error)</a>. What this means is that you have
to keep the ordering of the dispatched message to the published schema or else
WCF will reject it.
</p>
        <p>
The consensus from the field (I felt) is that while most of the projects doesnt
even feel the lack of schema-ordering enforcements in .NET 1.*, there may be <a href="http://msdn.microsoft.com/msdnmag/issues/03/07/xmlschemavalidation/default.aspx" target="_blank">certain
advanced validation scenarios that may need order checking at the schema level</a>.
While I welcomed this extra checking, I hope it doesnt come with a performance
penalty.
</p>
        <p>
The good news is that the <strong>Service.Runtime.Serialization.XMLFormatter</strong>,
which is used in WCF, is a lot better performer than its predecessor: the <strong>XMLSerializer. </strong>It does,
however, give the developer <em><strong>less</strong></em> control of the XML
Schema though. **WCF will add in its own special elements into the schema**. This will
aid in better message versioning and control that comes with the evolutionary
nature of distributed loosely-coupled messaging systems such as WCF. I will explain
more in a later blog post.
</p>
        <p>
From what I understand, the WCF team is considering of adding an Order property
to the DataMemberAttribute to allow for added customization of this order.
Again, I feel that this is a good move as <strong><u>Alphabetical-Ordering</u></strong> dependency
will mean that developers <strong><em>may</em></strong> have to consider their naming
conventions in code should they require a validation check at the schema level.
</p>
        <p>
What I would like is an attribute for me to turn-off schema data elements
ordering validation and checking should I choose to. In this case, the developers
on the field will be comfortable of the options they have at hand if validation
/ performance tradeoffs becomes an issue.
</p>
        <p>
P/S: I used my own <a href="http://www.softwaremaker.net/blog/EnhancedVersionOfMyManualSOAPPostIsAvailable.aspx" target="_blank">Manual
SOAP Post tool</a> to create some of the scenarios here. You may want to download
it <a href="http://www.softwaremaker.net/downloadsvcs/dsManualSOAPPost.asp" target="_blank">here</a>.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=53a3fae1-0980-4625-b889-98bb18ef64b3" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Enforcing Ordering of Data Elements when receiving messages in WCF (Indigo)</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,53a3fae1-0980-4625-b889-98bb18ef64b3.aspx</guid>
      <link>http://www.softwaremaker.net/blog/EnforcingOrderingOfDataElementsWhenReceivingMessagesInWCFIndigo.aspx</link>
      <pubDate>Mon, 26 Sep 2005 05:44:16 GMT</pubDate>
      <description>&lt;p&gt;
Back to more &lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt;, or previously known as Indigo,&amp;nbsp;postings...
&lt;/p&gt;
&lt;p&gt;
I dont think a lot of people know about one of the aspects of&amp;nbsp;WCF, which pertains
to how WCF serializes incoming messages before it sends it to the dispatcher and onto
your .NET typed code.
&lt;/p&gt;
&lt;p&gt;
In .NET 1.*, ASMX disregards the ordering of the data elements in the received messages.
This means that for a&amp;nbsp;XML Schema&amp;nbsp;such as this:
&lt;/p&gt;
&lt;p&gt;
[s:complexType name="CreditCard"]&lt;br&gt;
[s:sequence]&lt;br&gt;
[s:element name="AccountName" type="s:string" /] 
&lt;br&gt;
[s:element name="CreditCardType" type="s:string" /] 
&lt;br&gt;
[s:element name="CreditCardNo" type="s:string" /] 
&lt;br&gt;
[s:element name="CreditCardExpiryDate" type="s:string" /] 
&lt;br&gt;
[/s:sequence]&lt;br&gt;
[/s:complexType]
&lt;/p&gt;
&lt;p&gt;
If you send a &lt;a href="http://www.w3.org/TR/soap/" target="_blank"&gt;(W3C) SOAP&lt;/a&gt; Message
such as this (Take note that the ordering of [AccountName] is not in-line with the
above schema):
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; [soap:Envelope]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [soap:Header /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [soap:Body]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [SubmitCreditCard]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [crdcard]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [CreditCardType]AMEX[/CreditCardType]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [CreditCardNo]1234567890[/CreditCardNo]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [CreditCardExpiryDate]08082088[/CreditCardExpiryDate]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [AccountName]William Tay[/AccountName]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/crdcard]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/SubmitCreditCard]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [/soap:Body]&lt;br&gt;
&amp;nbsp; [/soap:Envelope]
&lt;/p&gt;
&lt;p&gt;
ASMX will allow the message to go through.
&lt;/p&gt;
&lt;p&gt;
In WCF, there is strict enforcing of the ordering of the data elements. Lets take
a quick look:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;u&gt;WCF Code:&lt;/u&gt;&lt;/strong&gt;
&lt;br&gt;
[DataContract()] _&lt;br&gt;
Public Class CreditCard&lt;br&gt;
&amp;nbsp; [DataMember(Name:="CreditCardExpiryDate")] Private _CreditCardExpiryDate As
String&lt;br&gt;
&amp;nbsp; [DataMember(Name:="CreditCardType")] Private _CreditCardType As String&lt;br&gt;
&amp;nbsp; [DataMember(Name:="CreditCardNo")] Private _CreditCardNo As String&lt;br&gt;
&amp;nbsp; [DataMember(Name:="AccountName")] Private _AccountName As String
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; Public Property CreditCardType() As String&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _CreditCardType&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _CreditCardType = value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;
&amp;nbsp; End Property
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; Public Property CreditCardNo() As String&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _CreditCardNo&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _CreditCardNo = value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;
&amp;nbsp; End Property
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; Public Property CreditCardExpiryDate() As String&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _CreditCardExpiryDate&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _CreditCardExpiryDate = value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;
&amp;nbsp; End Property
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; Public Property AccountName() As String&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _AccountName&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _AccountName = value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;br&gt;
&amp;nbsp; End Property&lt;br&gt;
End Class
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;u&gt;This will generate the schema&lt;/u&gt;&lt;/strong&gt;:&lt;br&gt;
[xs:complexType name="CreditCard"]&lt;br&gt;
[xs:sequence]&lt;br&gt;
[xs:element name="AccountName" nillable="true" type="ser:string" /] 
&lt;br&gt;
[xs:element name="CreditCardExpiryDate" nillable="true" type="ser:string" /] 
&lt;br&gt;
[xs:element name="CreditCardNo" nillable="true" type="ser:string" /] 
&lt;br&gt;
[xs:element name="CreditCardType" nillable="true" type="ser:string" /] 
&lt;br&gt;
[!-- I omitted some WCF-specific elements here for simplicity.--]&lt;br&gt;
[!--I will blog more about this on a later date. See Below **--]&lt;br&gt;
[/xs:complexType]
&lt;/p&gt;
&lt;p&gt;
There is a reason I put the&amp;nbsp;&lt;strong&gt;Public&amp;nbsp;Property AccountName&lt;/strong&gt; last
in my&amp;nbsp;.NET 2.0/Indigo&amp;nbsp;code above. I wanted to show that how you place the
property/field in code has no effect on the schema. If you&amp;nbsp;keep a strong observant
eye on&amp;nbsp;the resultant schema, you will notice that it&amp;nbsp;is&amp;nbsp;&lt;strong&gt;&lt;u&gt;Alphabetical-Ordering&lt;/u&gt;&lt;/strong&gt; dependent
and&amp;nbsp;if I send&amp;nbsp;the below message to it:
&lt;/p&gt;
&lt;p&gt;
[s:Envelope]&lt;br&gt;
[s:Header /] 
&lt;br&gt;
[s:Body]&lt;br&gt;
[SubmitCreditCard xmlns="&lt;a href="http://demos.softwaremaker.net/SchemaDataOrdering"&gt;http://demos.softwaremaker.net/SchemaDataOrdering&lt;/a&gt;"]&lt;br&gt;
[crdcard]&lt;br&gt;
[CreditCardExpiryDate]08082088[/CreditCardExpiryDate] 
&lt;br&gt;
[CreditCardNo]1234567890[/CreditCardNo] 
&lt;br&gt;
[CreditCardType]AMEX[/CreditCardType] 
&lt;br&gt;
[AccountName]William Tay[/AccountName] 
&lt;br&gt;
[/crdcard]&lt;br&gt;
[/SubmitCreditCard]&lt;br&gt;
[/s:Body]&lt;br&gt;
[/s:Envelope]
&lt;/p&gt;
&lt;p&gt;
It will result in a&amp;nbsp;&lt;a href="http://www.checkupdown.com/status/E500.html" target=_blank&gt;HTTP
Error Code: 500 (Internal Server Error)&lt;/a&gt;.&amp;nbsp;What this means is that you have
to keep the ordering of the&amp;nbsp;dispatched message to the published schema or else
WCF will reject it.
&lt;/p&gt;
&lt;p&gt;
The consensus from&amp;nbsp;the field (I felt) is that while most of the projects doesnt
even feel the lack of&amp;nbsp;schema-ordering enforcements in .NET 1.*, there may be &lt;a href="http://msdn.microsoft.com/msdnmag/issues/03/07/xmlschemavalidation/default.aspx" target=_blank&gt;certain
advanced validation scenarios that may need order checking at the schema level&lt;/a&gt;.
While I welcomed this extra&amp;nbsp;checking, I hope it doesnt come&amp;nbsp;with a performance
penalty.
&lt;/p&gt;
&lt;p&gt;
The good news is that the &lt;strong&gt;Service.Runtime.Serialization.XMLFormatter&lt;/strong&gt;,
which is used in WCF, is a lot better&amp;nbsp;performer than its predecessor: the &lt;strong&gt;XMLSerializer.&amp;nbsp;&lt;/strong&gt;It&amp;nbsp;does,
however, give the developer &lt;em&gt;&lt;strong&gt;less&lt;/strong&gt;&lt;/em&gt; control&amp;nbsp;of the XML
Schema though. **WCF will add in its own special elements into the schema**.&amp;nbsp;This&amp;nbsp;will
aid in better message versioning and control&amp;nbsp;that comes with the evolutionary
nature of&amp;nbsp;distributed loosely-coupled messaging systems such as WCF. I will explain
more&amp;nbsp;in a later&amp;nbsp;blog post.
&lt;/p&gt;
&lt;p&gt;
From what I understand, the&amp;nbsp;WCF team is considering of adding an Order property
to the DataMemberAttribute to allow for&amp;nbsp;added&amp;nbsp;customization of this order.
Again, I feel that this is a good move as&amp;nbsp;&lt;strong&gt;&lt;u&gt;Alphabetical-Ordering&lt;/u&gt;&lt;/strong&gt; dependency
will mean that&amp;nbsp;developers &lt;strong&gt;&lt;em&gt;may&lt;/em&gt;&lt;/strong&gt; have to consider their&amp;nbsp;naming
conventions in code should they require a validation check at the schema level.
&lt;/p&gt;
&lt;p&gt;
What I would like is an attribute&amp;nbsp;for me to turn-off&amp;nbsp;schema data elements
ordering validation&amp;nbsp;and checking should I&amp;nbsp;choose to. In this case, the developers
on the field will be&amp;nbsp;comfortable of the options&amp;nbsp;they have at hand if validation
/ performance tradeoffs becomes an issue.
&lt;/p&gt;
&lt;p&gt;
P/S: I used my own &lt;a href="http://www.softwaremaker.net/blog/EnhancedVersionOfMyManualSOAPPostIsAvailable.aspx" target=_blank&gt;Manual
SOAP Post tool&lt;/a&gt; to create some of the scenarios here. You&amp;nbsp;may want to download
it &lt;a href="http://www.softwaremaker.net/downloadsvcs/dsManualSOAPPost.asp" target=_blank&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=53a3fae1-0980-4625-b889-98bb18ef64b3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=bbcf8d65-93d1-4c40-b8b0-e64c849f10f2</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,bbcf8d65-93d1-4c40-b8b0-e64c849f10f2.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft intends to <a href="http://news.com.com/2061-10798_3-5846268.html" target="_blank">offer</a> an
"adapter" under its shared source license for linking its BizTalk integration broker
with <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">Windows
Communication Foundation (WCF, previously - Indigo)</a>, formerly known as <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a>. 
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=bbcf8d65-93d1-4c40-b8b0-e64c849f10f2" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Shared Source: BTS2006-Indigo Adapter</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,bbcf8d65-93d1-4c40-b8b0-e64c849f10f2.aspx</guid>
      <link>http://www.softwaremaker.net/blog/SharedSourceBTS2006IndigoAdapter.aspx</link>
      <pubDate>Mon, 05 Sep 2005 21:41:48 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft intends to &lt;a href="http://news.com.com/2061-10798_3-5846268.html" target=_blank&gt;offer&lt;/a&gt; an
"adapter" under its shared source license for linking its BizTalk integration broker
with&amp;nbsp;&lt;a href=http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx target=_blank&gt;Windows
Communication Foundation (WCF, previously - Indigo)&lt;/a&gt;, formerly known as &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=bbcf8d65-93d1-4c40-b8b0-e64c849f10f2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=33be225a-07f8-4ed8-a76d-94212625ecef</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,33be225a-07f8-4ed8-a76d-94212625ecef.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As you can see from the comments I left <a href="http://hyperthink.net/blog/CommentView,guid,c50c4fcb-a7ef-431a-9854-1144d418a13d.aspx" target="_blank">there</a> and
I am re-producing it here:
</p>
        <p>
          <font color="#a9a9a9">
            <strong>
              <em>One of the things I noticed is <font color="#a9a9a9">that</font> the
.svc extension is strange if you look at it from a endpoint angle. Having 
<br /><br />
http://abc.com/def.svc/mex 
<br />
http://abc.com/def.svc/ep1 
<br />
http://abc.com/def.svc/ep2 
<br /><br />
is rather unnatural. I had a couple of attendees who actually thought it was a typo
in the HOL (the HOLs are full of typos, btw) and changed it to 
<br /><br />
http://abc.com/ep1/def.svc 
<br />
http://abc.com/ep2/def.svc 
<br /><br />
Of course that didnt work as well. They had a hard time grappling with the unnatural
look and feel of it. 
<br /><br />
I would think that receiving client applications would do a double-take on this as
well once they look at the actual endpoint address 
<br /><br />
Getting rid of the physical file extensions would be a great and welcomed idea! Afterall,
it is good convergence with the servlets of J2, Remoting and httpHandlers of .NET,
Content Management Servers and others as well. 
<br /><br />
If I am not wrong, isnt that how REST Web Service works as well ? Something like http://abc.com/ep1
or http://abc.com/getSomething. It is a verb thingy. There is really no physical file
on the other end. 
<br /><br />
To me, its simpler as well as now if I have to change any type information, it will
be in the .config file only and nothing more. God forbid customers to deploy multiple
physical files as well ... and to some of us who are used to doing inline scripting
in these asmx or svc files (for debugging and testing purposes, not for production
use), .NET 2.0 already gives us dynamic compilation in App_Code</em>
              <br />
              <br />
              <font color="#003300">To me, the solution is clear: Dump the svc file extensions</font>
            </strong>
          </font>
        </p>
        <p>
If you have other ideas, opinions or just want to echo my same thoughts, do feel free
to drop by <a href="http://www.hyperthink.net/blog" target="_blank">Steve</a>'s <a href="http://hyperthink.net/blog/PermaLink,guid,c50c4fcb-a7ef-431a-9854-1144d418a13d.aspx" target="_blank">post</a> and
let him know !
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=33be225a-07f8-4ed8-a76d-94212625ecef" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Steve is asking if they should dump the .svc file extensions in Indigo</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,33be225a-07f8-4ed8-a76d-94212625ecef.aspx</guid>
      <link>http://www.softwaremaker.net/blog/SteveIsAskingIfTheyShouldDumpTheSvcFileExtensionsInIndigo.aspx</link>
      <pubDate>Fri, 15 Jul 2005 09:54:04 GMT</pubDate>
      <description>&lt;p&gt;
As you can see from the comments I left &lt;a href="http://hyperthink.net/blog/CommentView,guid,c50c4fcb-a7ef-431a-9854-1144d418a13d.aspx" target=_blank&gt;there&lt;/a&gt;&amp;nbsp;and
I am re-producing it here:
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#a9a9a9&gt;&lt;strong&gt;&lt;em&gt;One of the things I noticed is &lt;font color=#a9a9a9&gt;that&lt;/font&gt; the
.svc extension is strange if you look at it from a endpoint angle. Having 
&lt;br&gt;
&lt;br&gt;
http://abc.com/def.svc/mex 
&lt;br&gt;
http://abc.com/def.svc/ep1 
&lt;br&gt;
http://abc.com/def.svc/ep2 
&lt;br&gt;
&lt;br&gt;
is rather unnatural. I had a couple of attendees who actually thought it was a typo
in the HOL (the HOLs are full of typos, btw) and changed it to 
&lt;br&gt;
&lt;br&gt;
http://abc.com/ep1/def.svc 
&lt;br&gt;
http://abc.com/ep2/def.svc 
&lt;br&gt;
&lt;br&gt;
Of course that didnt work as well. They had a hard time grappling with the unnatural
look and feel of it. 
&lt;br&gt;
&lt;br&gt;
I would think that receiving client applications would do a double-take on this as
well once they look at the actual endpoint address 
&lt;br&gt;
&lt;br&gt;
Getting rid of the physical file extensions would be a great and welcomed idea! Afterall,
it is good convergence with the servlets of J2, Remoting and httpHandlers of .NET,
Content Management Servers and others as well. 
&lt;br&gt;
&lt;br&gt;
If I am not wrong, isnt that how REST Web Service works as well ? Something like http://abc.com/ep1
or http://abc.com/getSomething. It is a verb thingy. There is really no physical file
on the other end. 
&lt;br&gt;
&lt;br&gt;
To me, its simpler as well as now if I have to change any type information, it will
be in the .config file only and nothing more. God forbid customers to deploy multiple
physical files as well ... and to some of us who are used to doing inline scripting
in these asmx or svc files (for debugging and testing purposes, not for production
use), .NET 2.0 already gives us dynamic compilation in App_Code&lt;/em&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;font color=#003300&gt;To me, the solution is clear: Dump the svc file extensions&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
If you have other ideas, opinions or just want to echo my same thoughts, do feel free
to drop by &lt;a href="http://www.hyperthink.net/blog" target=_blank&gt;Steve&lt;/a&gt;'s &lt;a href="http://hyperthink.net/blog/PermaLink,guid,c50c4fcb-a7ef-431a-9854-1144d418a13d.aspx" target=_blank&gt;post&lt;/a&gt; and
let him know !
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=33be225a-07f8-4ed8-a76d-94212625ecef" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Community;Software Development;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=829eab8d-8a53-4159-b0e8-4d1e842e1993</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,829eab8d-8a53-4159-b0e8-4d1e842e1993.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
To those whom have attended <a href="http://www.softwaremaker.net/blog/PermaLink,guid,5b8655de-02b5-4980-888c-90e94da8e246.aspx" target="_blank">Indigo
Ascend</a> and have asked me via emails: What acutally happens in the plumbings of
the IsOneWay part of a <a href="http://hyperthink.net/blog/PermaLink,guid,460c1f1e-dffc-4a26-a811-57a6e9fd74bf.aspx" target="_blank">Indigo
Duplex Contract</a> ?
</p>
        <p>
          <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target="_blank">HTTP/1.1
202 Accepted</a> is the answer. This is the explicit return.
</p>
        <p>
          <strong>
            <font color="#a9a9a9">
              <em>HTTP/1.1 100 Continue</em>
            </font>
          </strong>
        </p>
        <p>
          <strong>
            <font color="#a9a9a9">
              <em>HTTP/1.1 202 Accepted<br />
Date: Fri, 15 Jul 2005 08:56:07 GMT<br />
Server: Microsoft-IIS/6.0<br />
MicrosoftOfficeWebServer: 5.0_Pub<br />
X-Powered-By: ASP.NET<br />
X-AspNet-Version: 2.0.50215<br />
Cache-Control: private<br />
Content-Length: 0</em>
            </font>
          </strong>
        </p>
        <p>
This, of course, only applies to the HTTP Bindings.
</p>
        <p>
          <em>
            <font color="#808080">"The request has been accepted for processing, but the processing
has not been completed. The request might or might not eventually be acted upon, as
it might be disallowed when processing actually takes place. There is no facility
for re-sending a status code from an asynchronous operation such as this. </font>
          </em>
        </p>
        <p>
          <em>
            <font color="#808080">The 202 response is intentionally non-committal. Its purpose
is to allow a server to accept a request for some other process (perhaps a batch-oriented
process that is only run once per day) without requiring that the user agent's connection
to the server persist until the process is completed. The entity returned with this
response SHOULD include an indication of the request's current status and either a
pointer to a status monitor or some estimate of when the user can expect the request
to be fulfilled."</font>
          </em>
        </p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=829eab8d-8a53-4159-b0e8-4d1e842e1993" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>OperationContract(IsOneWay=True) == HTTP/1.1 202 Accepted</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,829eab8d-8a53-4159-b0e8-4d1e842e1993.aspx</guid>
      <link>http://www.softwaremaker.net/blog/OperationContractIsOneWayTrueHTTP11202Accepted.aspx</link>
      <pubDate>Fri, 15 Jul 2005 09:14:47 GMT</pubDate>
      <description>&lt;p&gt;
To those whom have&amp;nbsp;attended &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,5b8655de-02b5-4980-888c-90e94da8e246.aspx" target=_blank&gt;Indigo
Ascend&lt;/a&gt; and have asked me via emails: What acutally happens in the plumbings of
the IsOneWay part of a &lt;a href="http://hyperthink.net/blog/PermaLink,guid,460c1f1e-dffc-4a26-a811-57a6e9fd74bf.aspx" target=_blank&gt;Indigo
Duplex Contract&lt;/a&gt;&amp;nbsp;?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target=_blank&gt;HTTP/1.1
202 Accepted&lt;/a&gt; is the answer. This is the explicit return.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#a9a9a9&gt;&lt;em&gt;HTTP/1.1 100 Continue&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#a9a9a9&gt;&lt;em&gt;HTTP/1.1 202 Accepted&lt;br&gt;
Date: Fri, 15 Jul 2005 08:56:07 GMT&lt;br&gt;
Server: Microsoft-IIS/6.0&lt;br&gt;
MicrosoftOfficeWebServer: 5.0_Pub&lt;br&gt;
X-Powered-By: ASP.NET&lt;br&gt;
X-AspNet-Version: 2.0.50215&lt;br&gt;
Cache-Control: private&lt;br&gt;
Content-Length: 0&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This, of course, only applies to the HTTP Bindings.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;font color=#808080&gt;"The request has been accepted for processing, but the processing
has not been completed. The request might or might not eventually be acted upon, as
it might be disallowed when processing actually takes place. There is no facility
for re-sending a status code from an asynchronous operation such as this. &lt;/font&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;font color=#808080&gt;The 202 response is intentionally non-committal. Its purpose
is to allow a server to accept a request for some other process (perhaps a batch-oriented
process that is only run once per day) without requiring that the user agent's connection
to the server persist until the process is completed. The entity returned with this
response SHOULD include an indication of the request's current status and either a
pointer to a status monitor or some estimate of when the user can expect the request
to be fulfilled."&lt;/font&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=829eab8d-8a53-4159-b0e8-4d1e842e1993" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Software Development;Technology;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=957bb9e7-f9bc-4f9d-bed0-fb8bdd06d191</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,957bb9e7-f9bc-4f9d-bed0-fb8bdd06d191.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
According to <a href="http://pluralsight.com/blogs/dbox" target="_blank">Don</a>'s
blog <a href="http://pluralsight.com/blogs/dbox/archive/2005/07/14/13352.aspx" target="_blank">here</a>: <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a> has <a href="http://blogs.msdn.com/xmlteam/archive/2005/02/15/372982.aspx">support</a> for <a href="http://www.xfront.com/REST-Web-Services.html" target="_blank">REST</a> since
Day 1. In the same breadth, he disclosed that it will explicitly support HTTP PUT/POST/DELETE/GET
to please the REST purists out <a href="http://www.prescod.net/rest/rest_vs_soap_overview/" target="_blank">there</a>.
</p>
        <p>
Like <a href="http://www.hyperthink.net/blog" target="_blank">Steve</a> mentioned <a href="http://hyperthink.net/blog/PermaLink,guid,e5cbc9c2-6f8b-49f7-aa18-241588fb6b72.aspx" target="_blank">here</a>,
I, too, am not a fan of technology stacks that complete with their own ideologies.
To me, technology is there just to get a job done efficiently and effectively.
My post <a href="http://www.softwaremaker.net/blog/PermaLink,guid,3de723b2-8e23-4fa3-8e2f-359c0a6c9b44.aspx" target="_blank">here</a> attracted
quite a fair bit of hits and same-echo-sentiment emails. It even made to ZiffDavis
blog list <a href="http://blog.ziffdavis.com/devlife/archive/2005/07/08/15522.aspx" target="_blank">here</a>.
</p>
        <p>
As Steve has echoed as well, I am also even more convinced now that Indigo is going
to be the platform to beat when it comes to distributed communications. No doubt about
it.
</p>
        <p>
I am really glad that the Indigo team, whom I think comprises some of the brightest
minds in the software field, is all united to work towards a common goal of creating
a religion and ideology-agnostic product. If this is not innovation, I dont know what
is.
</p>
        <p>
Show me the money, Beta1
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=957bb9e7-f9bc-4f9d-bed0-fb8bdd06d191" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Indigo will support REST EXPLICITLY in Beta1</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,957bb9e7-f9bc-4f9d-bed0-fb8bdd06d191.aspx</guid>
      <link>http://www.softwaremaker.net/blog/IndigoWillSupportRESTEXPLICITLYInBeta1.aspx</link>
      <pubDate>Fri, 15 Jul 2005 04:40:50 GMT</pubDate>
      <description>&lt;p&gt;
According to&amp;nbsp;&lt;a href="http://pluralsight.com/blogs/dbox" target=_blank&gt;Don&lt;/a&gt;'s
blog&amp;nbsp;&lt;a href="http://pluralsight.com/blogs/dbox/archive/2005/07/14/13352.aspx" target=_blank&gt;here&lt;/a&gt;: &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt; has &lt;a href="http://blogs.msdn.com/xmlteam/archive/2005/02/15/372982.aspx"&gt;support&lt;/a&gt; for &lt;a href="http://www.xfront.com/REST-Web-Services.html" target=_blank&gt;REST&lt;/a&gt; since
Day 1. In the same breadth, he disclosed that it will explicitly support HTTP PUT/POST/DELETE/GET
to please the REST purists out &lt;a href="http://www.prescod.net/rest/rest_vs_soap_overview/" target=_blank&gt;there&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Like &lt;a href="http://www.hyperthink.net/blog" target=_blank&gt;Steve&lt;/a&gt; mentioned &lt;a href="http://hyperthink.net/blog/PermaLink,guid,e5cbc9c2-6f8b-49f7-aa18-241588fb6b72.aspx" target=_blank&gt;here&lt;/a&gt;,
I, too, am not a fan of technology stacks that complete with their own ideologies.
To me, technology is there&amp;nbsp;just to get a job done efficiently and effectively.
My post &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,3de723b2-8e23-4fa3-8e2f-359c0a6c9b44.aspx" target=_blank&gt;here&lt;/a&gt; attracted
quite a fair bit of hits and same-echo-sentiment emails. It even made to ZiffDavis
blog list &lt;a href="http://blog.ziffdavis.com/devlife/archive/2005/07/08/15522.aspx" target=_blank&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
As Steve has echoed as well, I am also even more convinced now that Indigo is going
to be the platform to beat when it comes to distributed communications. No doubt about
it.
&lt;/p&gt;
&lt;p&gt;
I am really glad that the Indigo team, whom I think comprises some of the brightest
minds in the software field, is all united to work towards a common goal of creating
a religion and ideology-agnostic product. If this is not innovation, I dont know what
is.
&lt;/p&gt;
&lt;p&gt;
Show me the money, Beta1
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=957bb9e7-f9bc-4f9d-bed0-fb8bdd06d191" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Service-Orientation;Software Architectures;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=fed7b920-f554-46a8-9e19-a55d7f6af43b</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,fed7b920-f554-46a8-9e19-a55d7f6af43b.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I had the recent pleasure of meeting up with active blogger <a href="http://notgartner.com/" target="_blank">Mitch
Denny</a> who is one of the Microsoft <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a> Ascend
attendees which I <a href="http://www.softwaremaker.net/blog/PermaLink,guid,5b8655de-02b5-4980-888c-90e94da8e246.aspx" target="_blank">conducted</a> last
week in Sydney, Australia.
</p>
        <p>
He spent some time blogging about what was learnt during the 3-day session. A very
good read <a href="http://notgartner.com/posts/1788.aspx" target="_blank">here</a>, <a href="http://notgartner.com/posts/1795.aspx" target="_blank">here</a> and <a href="http://notgartner.com/posts/1803.aspx" target="_blank">here</a> for
all who is interested in knowing the <a href="http://www.softwaremaker.net/blog/PermaLink,guid,fccb3175-1d1b-4663-8dd2-55a343beec09.aspx" target="_blank">color
of Indigo</a>.
</p>
        <p>
What a cool dude. You rock, Mitch !
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=fed7b920-f554-46a8-9e19-a55d7f6af43b" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Readify.MitchDenny is rocking and rolling as an Indigo wonk</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,fed7b920-f554-46a8-9e19-a55d7f6af43b.aspx</guid>
      <link>http://www.softwaremaker.net/blog/ReadifyMitchDennyIsRockingAndRollingAsAnIndigoWonk.aspx</link>
      <pubDate>Wed, 29 Jun 2005 18:09:31 GMT</pubDate>
      <description>&lt;p&gt;
I had the recent pleasure of meeting up with active blogger &lt;a href="http://notgartner.com/" target=_blank&gt;Mitch
Denny&lt;/a&gt; who is one of the Microsoft &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt; Ascend
attendees which I &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,5b8655de-02b5-4980-888c-90e94da8e246.aspx" target=_blank&gt;conducted&lt;/a&gt; last
week in Sydney, Australia.
&lt;/p&gt;
&lt;p&gt;
He spent some time blogging about what was learnt during the 3-day session. A very
good read &lt;a href="http://notgartner.com/posts/1788.aspx" target=_blank&gt;here&lt;/a&gt;, &lt;a href="http://notgartner.com/posts/1795.aspx" target=_blank&gt;here&lt;/a&gt; and &lt;a href="http://notgartner.com/posts/1803.aspx" target=_blank&gt;here&lt;/a&gt; for
all who is interested in knowing the &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,fccb3175-1d1b-4663-8dd2-55a343beec09.aspx" target=_blank&gt;color
of Indigo&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
What a cool dude. You rock, Mitch !
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=fed7b920-f554-46a8-9e19-a55d7f6af43b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Community;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=e77a6d49-c854-48a2-92ad-eff34bc68f5b</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,e77a6d49-c854-48a2-92ad-eff34bc68f5b.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p align="left">
          <a href="http://msdn.microsoft.com/library/en-us/dnglobspec/html/ws-metadataexchange.pdf" target="_blank">WS-MetadataExchange</a> is
used and enabled by default in <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a> and
it comes with <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/ws-policy.asp" target="_blank">WS-Policy</a> as
well.
</p>
        <p align="left">
This is one specification that I find really useful because the current
convention of using http-get to get the metadata from asmx?WSDL is still a very .NET
sort of convention. For my projects, I usually like to put the metadata in a physical
file and deploy it as *.wsdl. Other people and toolkits will also have their own naming
conventions.
</p>
        <p align="left">
While using http-get is a very useful convention of retrieving metadata, we cannot
assume that all services will support HTTP. In Indigo, it’s common to expose
an endpoint that only listens over IPC or SOAP-over-TCP.
</p>
        <p align="left">
At its current Beta 1 drop, only http / https will be supported. I do forsee
that tcp will be supported in the next major drop.
</p>
        <p align="left">
In Indigo, the WS-MetadataExchange endpoints are added to the (http) service by default
at the <strong><em>container-baseAddress/containee-endpointAddress</em></strong> as
a <strong><em>mex</em></strong> suffix. You can also choose to define your own custom
mex endpoints. Another wonderful thing it supports is that it allows the specifying
of a custom metadata file (which I know I will be definitely be using). In other words,
instead of getting Indigo to automatically generate the metadata, it will send
the requestor to the uri location of the metadata file I specify.
</p>
        <p align="left">
If you have done some <a href="http://www.oasis-open.org/committees/uddi-spec/tcspecs.shtml" target="_blank">UDDI</a> work
before, you would be accustomed to the convention of sending standardized <a href="http://www.w3.org/TR/soap/" target="_blank">(W3C)
SOAP</a> Request messages for querying purposes. WS-MetadataExchange uses the
same sort of principles, albeit with different querying implementations.
</p>
        <p align="left">
Here is how it works. There is no better way to illustrate this than to get really
friendly with the wire-layer plumbings. I have a tool <a href="http://www.softwaremaker.net/blog/PermaLink,guid,315afe18-1b3a-41ca-93b4-d0c2262331fb.aspx" target="_blank">here</a> that
will give you a good view of the exchange.
</p>
        <p>
          <i>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #ffffcc">
              <img height="16" alt="SPONSOR.jpg" src="http://www.softwaremaker.net/blog/content/binary/SPONSOR.jpg" width="59" border="0" />
              <br />
Getting an <a href="http://www.testking.com/MCDBA-certification-training.htm">mcdba
certification</a> is not a problem if you have done <a href="http://www.testking.com/certification-training-Cisco.htm">cisco
training</a> as well as other <a href="http://www.testking.com/Security-Plus-certification-training.htm">security
training</a> programs like <a href="http://www.testking.com/MCP-certification-training.htm">mcp</a> but
there is no replacement of <a href="http://www.testking.com/certification-training-Microsoft.htm">microsoft
training</a>.</span>
          </i>
        </p>
        <p align="left">
You need to send a standard SOAP request to the listening mex endpoint that goes like
this (Replace the square brackets with angle ones)
</p>
        <p align="left">
  [s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing"]<br />
    [s:Header]<br />
      [a:Action s:mustUnderstand="1"]<strong>http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata/Request</strong>[/a:Action]<br />
      [a:MessageID]uuid:f22ee227-3eeb-460d-9352-1a34e97bf911;id=0[/a:MessageID]<br />
      [a:To s:mustUnderstand="1"]http://localhost/servicemodelsamples/service.svc/mex[/a:To]<br />
      [a:ReplyTo]<br />
        [a:Address]http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous[/a:Address]<br />
      [/a:ReplyTo]<br />
    [/s:Header]<br />
    [s:Body]<br />
      [GetMetadata xmlns="http://schemas.xmlsoap.org/ws/2004/09/mex"
/]<br />
    [/s:Body]<br />
    [!-- OR an Empty SOAP Body will do just as fine --]<br />
    [!-- s:Body /--]<br />
  [/s:Envelope]
</p>
        <p align="left">
In the <a href="http://www.softwaremaker.net/blog/PermaLink,guid,315afe18-1b3a-41ca-93b4-d0c2262331fb.aspx" target="_blank">tool</a> I
had build, you need to put the a:Action value (<strong>in bold above</strong>) into
the SOAPAction textbox as this has to be propagated up to the HTTP-Headers as a SOAPAction
header. This is one of the sticklers of using http to query for any SOAP Web Service.
Once you clicked post, you will see a good-looking response with all the metadata
of <a href="http://www.w3.org/TR/wsdl" target="_blank">WSDL</a> and WS-Policy in the
SOAP body. I took out a lot of details in the constraints of space. You should be
able to get the point.
</p>
        <p align="left">
  [s:Envelope xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope"]<br />
    [s:Header]<br />
      [a:Action s:mustUnderstand="1"]http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata/Response[/a:Action]<br />
      [a:RelatesTo]uuid:f22ee227-3eeb-460d-9352-1a34e97bf911;id=0[/a:RelatesTo]<br />
      [a:To s:mustUnderstand="1"]http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous[/a:To]<br />
      [ActivityId xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics"]uuid:a55fa135-e1b9-4557-a7c3-39cbf042f85d[/ActivityId]<br />
    [/s:Header]<br />
    [s:Body]<br />
      [wsx:Metadata xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"]<br />
        [wsx:MetadataSection Dialect="http://schemas.xmlsoap.org/wsdl/"
Identifier="http://tempuri.org/"]<br />
          [wsdl:definitions]<br />
            [!--WSDL and
XSD GUNK--]<br />
            [!--XSD GUNK--]<br />
            [!--WS-Policy
GUNK--]<br />
          [/wsdl:definitions]<br />
        [/wsx:MetadataSection]<br />
      [/wsx:Metadata]<br />
    [/s:Body]<br />
  [/s:Envelope]
</p>
        <p align="left">
You will be able to load endpoints, bindings and types dynamically at runtime
with such information.
</p>
        <p align="left">
Do take note that Indigo is extremely strict about the mediaTypes headers and you
need to set the contentType of the Http-Headers to <strong>application/soap+xml</strong>.
This can be done in the configuration file.
</p>
        <p align="left">
Do <a href="http://www.softwaremaker.net/blog/PermaLink,guid,315afe18-1b3a-41ca-93b4-d0c2262331fb.aspx" target="_blank">download</a> it
and try it.
</p>
        <p align="left">
If you think this is a cool new feature in the Microsoft technology space, it is not.
</p>
        <p align="left">
          <a href="http://msdn2.microsoft.com/en-us/webservices/aa740663.aspx" target="_blank" title="Web Services Enchancements">Web
Services Enhancements (WSE)</a> 2.0 also had it. All you need is to send in a
"http://schemas.microsoft.com/wse/2003/06/RequestDescription" in the Action of a SOAP
Message request to a listening WSE 2.0 service and you will be presented with the
WSDL as well. This is what WseWsdl2.exe does you switch in a TCP address.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=e77a6d49-c854-48a2-92ad-eff34bc68f5b" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>WS-MetadataExchange and Indigo</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,e77a6d49-c854-48a2-92ad-eff34bc68f5b.aspx</guid>
      <link>http://www.softwaremaker.net/blog/WSMetadataExchangeAndIndigo.aspx</link>
      <pubDate>Sat, 18 Jun 2005 05:08:50 GMT</pubDate>
      <description>&lt;p align=left&gt;
&lt;a href=http://msdn.microsoft.com/library/en-us/dnglobspec/html/ws-metadataexchange.pdf target=_blank&gt;WS-MetadataExchange&lt;/a&gt; is
used and enabled by default in &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt; and
it comes with&amp;nbsp;&lt;a href=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/ws-policy.asp target=_blank&gt;WS-Policy&lt;/a&gt; as
well.
&lt;/p&gt;
&lt;p align=left&gt;
This is one specification that I find really useful&amp;nbsp;because the&amp;nbsp;current
convention of using http-get to get the metadata from asmx?WSDL is still a very .NET
sort of convention. For my projects, I usually like to put the metadata in a physical
file and deploy it as *.wsdl. Other people and toolkits will also have their own naming
conventions.
&lt;/p&gt;
&lt;p align=left&gt;
While using http-get is a very useful convention of retrieving metadata, we cannot
assume that&amp;nbsp;all services will support HTTP. In Indigo, it’s common to expose
an endpoint that only listens over IPC or SOAP-over-TCP.
&lt;/p&gt;
&lt;p align=left&gt;
At&amp;nbsp;its current Beta 1 drop, only http / https will be supported. I do forsee
that tcp will be supported in the next major drop.
&lt;/p&gt;
&lt;p align=left&gt;
In Indigo, the WS-MetadataExchange endpoints are added to the (http) service by default
at the &lt;strong&gt;&lt;em&gt;container-baseAddress/containee-endpointAddress&lt;/em&gt;&lt;/strong&gt; as
a &lt;strong&gt;&lt;em&gt;mex&lt;/em&gt;&lt;/strong&gt; suffix. You can also choose to define your own custom
mex endpoints. Another wonderful thing it supports is that it allows the specifying
of a custom metadata file (which I know I will be definitely be using). In other words,
instead of getting Indigo to automatically generate the metadata,&amp;nbsp;it will&amp;nbsp;send
the requestor to the&amp;nbsp;uri location of the metadata file&amp;nbsp;I specify.
&lt;/p&gt;
&lt;p align=left&gt;
If you have done some &lt;a href="http://www.oasis-open.org/committees/uddi-spec/tcspecs.shtml" target="_blank"&gt;UDDI&lt;/a&gt; work
before, you would be accustomed to the convention of sending standardized &lt;a href="http://www.w3.org/TR/soap/" target="_blank"&gt;(W3C)
SOAP&lt;/a&gt; Request messages for querying purposes. WS-MetadataExchange&amp;nbsp;uses the
same sort of principles, albeit with different querying implementations.
&lt;/p&gt;
&lt;p align=left&gt;
Here is how it works. There is no better way to illustrate this than to get really
friendly with the wire-layer plumbings. I have a tool &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,315afe18-1b3a-41ca-93b4-d0c2262331fb.aspx" target=_blank&gt;here&lt;/a&gt; that
will give you a good view of the exchange.
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #ffffcc"&gt;&lt;img height=16 alt=SPONSOR.jpg src="http://www.softwaremaker.net/blog/content/binary/SPONSOR.jpg" width=59 border=0&gt;
&lt;br&gt;
Getting an &lt;a href="http://www.testking.com/MCDBA-certification-training.htm"&gt;mcdba
certification&lt;/a&gt; is not a problem if you have done &lt;a href="http://www.testking.com/certification-training-Cisco.htm"&gt;cisco
training&lt;/a&gt; as well as other &lt;a href="http://www.testking.com/Security-Plus-certification-training.htm"&gt;security
training&lt;/a&gt; programs like &lt;a href="http://www.testking.com/MCP-certification-training.htm"&gt;mcp&lt;/a&gt; but
there is no replacement of &lt;a href="http://www.testking.com/certification-training-Microsoft.htm"&gt;microsoft
training&lt;/a&gt;.&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p align=left&gt;
You need to send a standard SOAP request to the listening mex endpoint that goes like
this (Replace the square brackets with angle ones)
&lt;/p&gt;
&lt;p align=left&gt;
&amp;nbsp; [s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [s:Header]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:Action s:mustUnderstand="1"]&lt;strong&gt;http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata/Request&lt;/strong&gt;[/a:Action]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:MessageID]uuid:f22ee227-3eeb-460d-9352-1a34e97bf911;id=0[/a:MessageID]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:To s:mustUnderstand="1"]http://localhost/servicemodelsamples/service.svc/mex[/a:To]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:ReplyTo]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:Address]http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous[/a:Address]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/a:ReplyTo]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [/s:Header]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [s:Body]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GetMetadata xmlns="http://schemas.xmlsoap.org/ws/2004/09/mex"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [/s:Body]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [!-- OR an Empty SOAP Body will do just as fine --]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [!-- s:Body /--]&lt;br&gt;
&amp;nbsp; [/s:Envelope]
&lt;/p&gt;
&lt;p align=left&gt;
In the &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,315afe18-1b3a-41ca-93b4-d0c2262331fb.aspx" target=_blank&gt;tool&lt;/a&gt; I
had build, you need to put the a:Action value&amp;nbsp;(&lt;strong&gt;in bold above&lt;/strong&gt;)&amp;nbsp;into
the SOAPAction textbox as this has to be propagated up to the HTTP-Headers as a SOAPAction
header. This is one of the sticklers of using http to query for any SOAP Web Service.
Once you clicked post, you will see a good-looking response with all the metadata
of &lt;a href="http://www.w3.org/TR/wsdl" target="_blank"&gt;WSDL&lt;/a&gt; and WS-Policy in the
SOAP body. I took out a lot of details in the constraints of space. You should be
able to get the point.
&lt;/p&gt;
&lt;p align=left&gt;
&amp;nbsp; [s:Envelope xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [s:Header]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:Action s:mustUnderstand="1"]http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata/Response[/a:Action]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:RelatesTo]uuid:f22ee227-3eeb-460d-9352-1a34e97bf911;id=0[/a:RelatesTo]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [a:To s:mustUnderstand="1"]http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous[/a:To]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ActivityId xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics"]uuid:a55fa135-e1b9-4557-a7c3-39cbf042f85d[/ActivityId]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [/s:Header]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [s:Body]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [wsx:Metadata xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [wsx:MetadataSection Dialect="http://schemas.xmlsoap.org/wsdl/"
Identifier="http://tempuri.org/"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [wsdl:definitions]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[!--WSDL and
XSD GUNK--]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[!--XSD GUNK--]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[!--WS-Policy
GUNK--]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/wsdl:definitions]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/wsx:MetadataSection]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/wsx:Metadata]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [/s:Body]&lt;br&gt;
&amp;nbsp; [/s:Envelope]
&lt;/p&gt;
&lt;p align=left&gt;
You&amp;nbsp;will be able to&amp;nbsp;load endpoints, bindings and types dynamically at runtime
with such information.
&lt;/p&gt;
&lt;p align=left&gt;
Do take note that Indigo is extremely strict about the mediaTypes headers and you
need to&amp;nbsp;set the contentType of the Http-Headers to &lt;strong&gt;application/soap+xml&lt;/strong&gt;.
This can be done in the configuration file.
&lt;/p&gt;
&lt;p align=left&gt;
Do &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,315afe18-1b3a-41ca-93b4-d0c2262331fb.aspx" target=_blank&gt;download&lt;/a&gt; it
and try it.
&lt;/p&gt;
&lt;p align=left&gt;
If you think this is a cool new feature in the Microsoft technology space, it is not.
&lt;/p&gt;
&lt;p align=left&gt;
&lt;a href="http://msdn2.microsoft.com/en-us/webservices/aa740663.aspx" target="_blank" title="Web Services Enchancements"&gt;Web
Services Enhancements (WSE)&lt;/a&gt; 2.0 also had it. All you need is to send in&amp;nbsp;a
"http://schemas.microsoft.com/wse/2003/06/RequestDescription" in the Action of a SOAP
Message request to a listening WSE 2.0 service and you will be presented with the
WSDL as well. This is what WseWsdl2.exe does you&amp;nbsp;switch&amp;nbsp;in a TCP address.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=e77a6d49-c854-48a2-92ad-eff34bc68f5b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Software Architectures;Software Development;Useful Tips;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=5b8655de-02b5-4980-888c-90e94da8e246</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,5b8655de-02b5-4980-888c-90e94da8e246.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I will be delivering <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a> Ascend
in Asia Pacific in the coming months on behalf of the Indigo and Ascend team in <a href="http://www.microsoft.com" target="_blank">MSFT
Corp</a>, Redmond, US.
</p>
        <p>
It will start in Sydney, Australia later this month, then move upwards (northwards)
to my own local backyard, Singapore. There are a few more countries Microsoft and
I are interested to look at bringing this event as well.
</p>
        <p>
This will be a good time for me to meet up with real customers from the enterprises
who are using Microsoft distributed technologies or are planning to look into using
it in the future. Drop me an email <a href="http://www.softwaremaker.net/Contact.asp#EmailSvcs" target="_blank">here</a> if
you would like to engage me for a discussion.
</p>
        <p>
If you are reading this blog post and you work for an ISV or an enterprise that
does a fair bit of distributed computing technology and you are interested in attending
this Indigo Ascend in Singapore (I think we are a little bit late in nominations for
Australia), do drop me a mail <a href="http://www.softwaremaker.net/Contact.asp#EmailSvcs" target="_blank">here</a> and
I will see what I can do to hook you up for this 3 day event.
</p>
        <p>
If you are from anywhere else besides Australia or Singapore (in APAC) and would love
to attend an event like this, do drop me an email as well and I will see what I can
do to bring Indigo Ascend to your country.
</p>
        <p>
I have been invited to deliver a few Ascends before such as Visual Studio
2005 and such. However, I have always turned it down because I dont consider myself
to be a "<strong><em>professional</em></strong>" trainer since I have always been
on the field working on real projects with real problems in distributed technologies
for some time (and not some simulated fanciful classroom labs scenarios)
...
</p>
        <p>
... BUT...
</p>
        <p>
Indigo is an Ascend which I am proud and excited to deliver because it is a future
facet of Windows Server 2003 that I have spent quite some time on and I
believe it is something that real customers need in the field to solve real-world
problems <em><strong>today</strong></em>.
</p>
        <p>
There is really nothing quite like it out there at the moment or in the immediate
future outside of Microsoft. It is really one of Microsoft's innovation at its best.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=5b8655de-02b5-4980-888c-90e94da8e246" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Indigo Ascend in Asia Pacific</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,5b8655de-02b5-4980-888c-90e94da8e246.aspx</guid>
      <link>http://www.softwaremaker.net/blog/IndigoAscendInAsiaPacific.aspx</link>
      <pubDate>Sat, 11 Jun 2005 11:35:54 GMT</pubDate>
      <description>&lt;p&gt;
I will be delivering &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt; Ascend
in Asia Pacific in the coming months on behalf of the Indigo and Ascend team in &lt;a href=http://www.microsoft.com target=_blank&gt;MSFT
Corp&lt;/a&gt;, Redmond, US.
&lt;/p&gt;
&lt;p&gt;
It will start in Sydney, Australia later this month, then move upwards (northwards)
to my own local backyard, Singapore. There are a few more countries Microsoft and
I&amp;nbsp;are&amp;nbsp;interested to look&amp;nbsp;at bringing this event as well.
&lt;/p&gt;
&lt;p&gt;
This will be a good time for me to meet up with real customers from the enterprises
who are using Microsoft distributed technologies or are planning to look into using
it in the future. Drop me an email &lt;a href="http://www.softwaremaker.net/Contact.asp#EmailSvcs" target=_blank&gt;here&lt;/a&gt;&amp;nbsp;if
you would like to engage me for a discussion.
&lt;/p&gt;
&lt;p&gt;
If you are reading this blog post and you work for an ISV or an enterprise&amp;nbsp;that
does a fair bit of distributed computing technology and you are interested in attending
this Indigo Ascend in Singapore (I think we are a little bit late in nominations for
Australia), do drop me a mail &lt;a href="http://www.softwaremaker.net/Contact.asp#EmailSvcs" target=_blank&gt;here&lt;/a&gt;&amp;nbsp;and
I will see what I can do to hook you up for this 3 day event.
&lt;/p&gt;
&lt;p&gt;
If you are from anywhere else besides Australia or Singapore (in APAC) and would love
to attend an event like this, do drop me an email as well and I will see what I can
do to bring Indigo Ascend to your country.
&lt;/p&gt;
&lt;p&gt;
I have been invited to deliver&amp;nbsp;a few&amp;nbsp;Ascends before such as Visual Studio
2005 and such. However, I have always turned it down because I dont consider myself
to be a "&lt;strong&gt;&lt;em&gt;professional&lt;/em&gt;&lt;/strong&gt;" trainer since I have always been
on the field working on real projects with real problems in distributed technologies
for some time (and&amp;nbsp;not&amp;nbsp;some simulated fanciful classroom labs scenarios)
...
&lt;/p&gt;
&lt;p&gt;
... BUT...
&lt;/p&gt;
&lt;p&gt;
Indigo is an Ascend which I am proud and excited to deliver because it is a future
facet of&amp;nbsp;Windows Server 2003 that I have&amp;nbsp;spent quite some time on and I
believe it is something that real customers need in the field to solve real-world
problems &lt;em&gt;&lt;strong&gt;today&lt;/strong&gt;&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
There is really nothing quite like it out there at the moment or in the immediate
future outside of Microsoft. It is really one of Microsoft's innovation at its best.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=5b8655de-02b5-4980-888c-90e94da8e246" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>.NET;Biz Matters;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=cd64f332-a2c9-45bf-9858-d7d0f74a8225</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,cd64f332-a2c9-45bf-9858-d7d0f74a8225.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.theregister.co.uk/2005/05/26/ndigo_mono_no_no/" target="_blank">This</a> will
be interesting ...
</p>
        <p>
I think I will reserve my comments on this for now.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=cd64f332-a2c9-45bf-9858-d7d0f74a8225" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Indigo NOT so open as the .NET Framework</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,cd64f332-a2c9-45bf-9858-d7d0f74a8225.aspx</guid>
      <link>http://www.softwaremaker.net/blog/IndigoNOTSoOpenAsTheNETFramework.aspx</link>
      <pubDate>Fri, 27 May 2005 23:23:39 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.theregister.co.uk/2005/05/26/ndigo_mono_no_no/" target=_blank&gt;This&lt;/a&gt; will
be interesting ...
&lt;/p&gt;
&lt;p&gt;
I think I will reserve my comments on this for now.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=cd64f332-a2c9-45bf-9858-d7d0f74a8225" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Software Development;Technology;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=5a9fb278-2414-46c4-aa71-4f51b66acbf7</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,5a9fb278-2414-46c4-aa71-4f51b66acbf7.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I know it is supposed to be <a href="http://www.microsoft.com/downloads/details.aspx?familyid=b789bc8d-4f25-4823-b6aa-c5edf432d0c1&amp;displaylang=en" target="_blank">here</a>.
However, I think it is taking some time to propagate to the server farms. So, just
stay tuned.
</p>
        <p>
If it still doesnt work after some time, may want to try this: <a href="http://www.microsoft.com/downloads/info.aspx?na=90&amp;p=&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=b789bc8d-4f25-4823-b6aa-c5edf432d0c1&amp;genscs=0&amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2ff%2fa%2f3%2ffa3b19ba-6129-41e8-93d8-498cc6b52b14%2fwinfxsetup.exe" target="_blank">http://www.microsoft.com/downloads/info.aspx?na=90&amp;p=&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=b789bc8d-4f25-4823-b6aa-c5edf432d0c1&amp;genscs=0&amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2ff%2fa%2f3%2ffa3b19ba-6129-41e8-93d8-498cc6b52b14%2fwinfxsetup.exe</a></p>
        <p>
Something that is rather useful that is gathered from the usergroups:
</p>
        <p>
          <font face="Georgia" color="#808080">
            <em>... found a logfile (dd_indigo_retMSI60A6.txt)
with the following entry:</em>
          </font>
        </p>
        <p>
          <font face="Georgia" color="#808080">
            <em>MSI (s) (B0:1C) [12:29:27:752]: MainEngineThread
is returning 1638<br />
Another version of this product is already installed.  Installation of this 
<br />
version cannot continue.  To configure or remove the existing version of 
<br />
this product, use Add/Remove Programs on the Control Panel.<br />
{C350D87C-7B67-43E2-B717-E9ADABE2F631}</em>
          </font>
        </p>
        <p>
          <font face="Georgia" color="#808080">
            <em>So I ran this command:</em>
          </font>
        </p>
        <p>
          <font face="Georgia" color="#808080">
            <em>msiexec /x {C350D87C-7B67-43E2-B717-E9ADABE2F631}</em>
          </font>
        </p>
        <p>
          <font face="Georgia" color="#808080">
            <em>and now the Indigo setup worked! It will
probably work for you as well!</em>
          </font>
        </p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=5a9fb278-2414-46c4-aa71-4f51b66acbf7" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Avalon and Indigo Beta1 RC</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,5a9fb278-2414-46c4-aa71-4f51b66acbf7.aspx</guid>
      <link>http://www.softwaremaker.net/blog/AvalonAndIndigoBeta1RC.aspx</link>
      <pubDate>Sat, 21 May 2005 13:42:23 GMT</pubDate>
      <description>&lt;p&gt;
I know it is supposed to be &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=b789bc8d-4f25-4823-b6aa-c5edf432d0c1&amp;amp;displaylang=en" target=_blank&gt;here&lt;/a&gt;.
However, I think it is taking some time to propagate to the server farms. So, just
stay tuned.
&lt;/p&gt;
&lt;p&gt;
If it still doesnt work after some time, may want to try this: &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=90&amp;amp;p=&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=b789bc8d-4f25-4823-b6aa-c5edf432d0c1&amp;amp;genscs=0&amp;amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2ff%2fa%2f3%2ffa3b19ba-6129-41e8-93d8-498cc6b52b14%2fwinfxsetup.exe" target=_blank&gt;http://www.microsoft.com/downloads/info.aspx?na=90&amp;amp;p=&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=b789bc8d-4f25-4823-b6aa-c5edf432d0c1&amp;amp;genscs=0&amp;amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2ff%2fa%2f3%2ffa3b19ba-6129-41e8-93d8-498cc6b52b14%2fwinfxsetup.exe&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Something that is rather useful that is gathered from the usergroups:
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia color=#808080&gt;&lt;em&gt;... found a logfile (dd_indigo_retMSI60A6.txt)
with the following entry:&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia color=#808080&gt;&lt;em&gt;MSI (s) (B0:1C) [12:29:27:752]: MainEngineThread
is returning 1638&lt;br&gt;
Another version of this product is already installed.&amp;nbsp; Installation of this 
&lt;br&gt;
version cannot continue.&amp;nbsp; To configure or remove the existing version of 
&lt;br&gt;
this product, use Add/Remove Programs on the Control Panel.&lt;br&gt;
{C350D87C-7B67-43E2-B717-E9ADABE2F631}&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia color=#808080&gt;&lt;em&gt;So I ran this command:&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia color=#808080&gt;&lt;em&gt;msiexec /x {C350D87C-7B67-43E2-B717-E9ADABE2F631}&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia color=#808080&gt;&lt;em&gt;and now the Indigo setup worked! It will probably
work for you as well!&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=5a9fb278-2414-46c4-aa71-4f51b66acbf7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=79619a6f-1391-4cf4-972e-8e68beb36220</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,79619a6f-1391-4cf4-972e-8e68beb36220.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With reference to my earlier post <a href="http://www.softwaremaker.net/blog/PermaLink,guid,7cdccdaf-2795-417d-92fd-e44d0b546970.aspx" target="_blank">here</a>,
more details on the conference (SDA.NET 2005) are now publicly available <a href="http://www.sda-asia.com/dotnet/" target="_blank">here</a>.
This is a paid event and it is rarity in Singapore as technological conferences are
usually presented free. BUT I am sure attendees can find a lot of value here as top
notch speakers from all over the world will be flying over here to share their industry
experience and knowledge.
</p>
        <p>
Who are these speakers, you ask ? There is the famous <a href="http://www.thinktecture.com/staff/ingo/weblog/" target="_blank">Ingo
Rammer</a> and <a href="http://staff.newtelligence.net/clemensv/" target="_blank">Clemens
Vasters</a> and of course, moi <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" />.
</p>
        <p>
I will be making 2 presentations in the VIP Tracks, namely
</p>
        <li>
          <strong>Demystifying WSDL (26 May 2005 1045 hours)</strong>
          <p>
While developers rely on the many powerful features of today's IDEs, inner technical
plumbings are often ignored and worst yet - misrepresented and misunderstood. This
ignorance of inner workings can lead developers to choose the wrong technologies and
solutions for solving specific problems. Nevertheless, when it comes to troubleshooting
the nooks, crannies and crevices at crunch time with no extra help, nothing beats
a dirty pair of hands, a hammer and screwdriver. William Tay attempts to get everyone's
hands dirty with a detailed look at WSDL, one of the most core and mature XML service
technologies of today. 
</p>
          <p>
Topics to be covered include: what is WSDL, WSDL's critical role in service-orientated
architecture (SOA), and WSDL's core elements and definitions. He will also survey
WSDL best practices (eg. interoperability, extensibility, versioning, etc.) and the
application of WSDL concepts in Indigo. The new features and enhanced functionality
incorporated into the upcoming release of WSDL 2.0 are explained and compared with
the current WSDL version.
</p>
          <p>
            <em>NOTE: This is a (Level 400) deep technical session that is not for the faint-hearted.
However, it will be a angle-bracket fest.</em>
          </p>
        </li>
        <li>
          <strong>SOAP Message-based Security: Today and Tomorrow (26 May 2005 1415 hours)</strong>
          <p>
One of the three key pillars of critical importance in the adoption of SOAP messaging-based
services in an enterprise is security. In fact, the security aspect of standards-based
messaging system has been singled out by worldwide CXOs as the most inhibiting factor
in the mainstream-wide adoption within an enterprise. The ratification of WS-Security
1.0 by OASIS on 6 April 2004 has gone into great lengths to change that perception.
William will show how and what you can do to secure your SOAP messaging-based services
today. You will also learn how the same standards-based WS-Security Specifications
can be used to secure the next generation of distributed web services with Indigo.
</p>
          <p>
All 3 of us are presenting on Indigo as well. This will be a good time to catch a
preview of Indigo and have a feel of what it is all about. I really hope to see a
good turnout there and it will be a good time to catch up with Ingo, Clemens and the
rest of the folks.
</p>
          <p>
See you there.
</p>
        </li>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=79619a6f-1391-4cf4-972e-8e68beb36220" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Software Development Architecture's DotNet Conference 2005</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,79619a6f-1391-4cf4-972e-8e68beb36220.aspx</guid>
      <link>http://www.softwaremaker.net/blog/SoftwareDevelopmentArchitecturesDotNetConference2005.aspx</link>
      <pubDate>Fri, 29 Apr 2005 23:20:56 GMT</pubDate>
      <description>&lt;p&gt;
With reference to my earlier post &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,7cdccdaf-2795-417d-92fd-e44d0b546970.aspx" target=_blank&gt;here&lt;/a&gt;,
more details on the conference (SDA.NET 2005) are now publicly available &lt;a href="http://www.sda-asia.com/dotnet/" target=_blank&gt;here&lt;/a&gt;.
This is a paid event and it is rarity in Singapore as technological conferences are
usually presented free. BUT I am sure attendees can find a lot of value here as top
notch speakers from all over the world will be flying over here to share their industry
experience and knowledge.
&lt;/p&gt;
&lt;p&gt;
Who are these speakers, you ask ? There is the famous &lt;a href="http://www.thinktecture.com/staff/ingo/weblog/" target=_blank&gt;Ingo
Rammer&lt;/a&gt; and &lt;a href="http://staff.newtelligence.net/clemensv/" target=_blank&gt;Clemens
Vasters&lt;/a&gt; and of course, moi &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;.
&lt;/p&gt;
&lt;p&gt;
I will be making 2 presentations in the VIP Tracks, namely
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Demystifying WSDL (26 May 2005 1045 hours)&lt;/strong&gt; 
&lt;p&gt;
While developers rely on the many powerful features of today's IDEs, inner technical
plumbings are often ignored and worst yet - misrepresented and misunderstood. This
ignorance of inner workings can lead developers to choose the wrong technologies and
solutions for solving specific problems. Nevertheless, when it comes to troubleshooting
the nooks, crannies and crevices at crunch time with no extra help, nothing beats
a dirty pair of hands, a hammer and screwdriver. William Tay attempts to get everyone's
hands dirty with a detailed look at WSDL, one of the most core and mature XML service
technologies of today. 
&lt;/p&gt;
&lt;p&gt;
Topics to be covered include: what is WSDL, WSDL's critical role in service-orientated
architecture (SOA), and WSDL's core elements and definitions. He will also survey
WSDL best practices (eg. interoperability, extensibility, versioning, etc.) and the
application of WSDL concepts in Indigo. The new features and enhanced functionality
incorporated into the upcoming release of WSDL 2.0 are explained and compared with
the current WSDL version.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;NOTE: This is a (Level 400) deep technical session that is not for the faint-hearted.
However, it will be a angle-bracket fest.&lt;/em&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;SOAP Message-based Security: Today and Tomorrow (26 May 2005 1415 hours)&lt;/strong&gt; 
&lt;p&gt;
One of the three key pillars of critical importance in the adoption of SOAP messaging-based
services in an enterprise is security. In fact, the security aspect of standards-based
messaging system has been singled out by worldwide CXOs as the most inhibiting factor
in the mainstream-wide adoption within an enterprise. The ratification of WS-Security
1.0 by OASIS on 6 April 2004 has gone into great lengths to change that perception.
William will show how and what you can do to secure your SOAP messaging-based services
today. You will also learn how the same standards-based WS-Security Specifications
can be used to secure the next generation of distributed web services with Indigo.
&lt;/p&gt;
&lt;p&gt;
All 3 of us are presenting on Indigo as well. This will be a good time to catch a
preview of Indigo and have a feel of what it is all about. I really hope to see a
good turnout there and it will be a good time to catch up with Ingo, Clemens and the
rest of the folks.
&lt;/p&gt;
&lt;p&gt;
See you there.
&lt;/p&gt;
&lt;/li&gt;&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=79619a6f-1391-4cf4-972e-8e68beb36220" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>.NET;Presentations;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=fccb3175-1d1b-4663-8dd2-55a343beec09</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,fccb3175-1d1b-4663-8dd2-55a343beec09.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Lets take a look at the <a href="http://www.crystal-cure.com/indigo.html" target="_blank">meaning
and symbolism of the color Indigo</a>. I will attempt to slot in my own views on how
the color maps into the technology. <img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" /><hr /></p>
        <p>
          <font face="Georgia" size="3">
            <em>Indigo symbolizes: intuition, deep contemplation,
meditation</em>
          </font>
        </p>
        <p>
          <font face="Georgia" size="3">
            <em>Indigo is the color of the deep midnight sky. It
can have a negative effect when used during a depressed state, because it will deepen
the mood. Indigo symbolizes a mystical borderland of wisdom, self-mastery and spiritual
realization. While blue is the color of communication with others, indigo turns the
blue inward, to increase personal thought, profound insights, and instant understandings.
While blue can be fast, Indigo is almost instantaneous. Inventors use indigo skills
for inspirations that seem to 'come out of the blue'.</em>
          </font>
        </p>
        <p>
          <strong>[WilliamT]</strong> As aptly put, Blue is the color of communication. But
Blue is not enough. One also needs to know the innards of network programming and
all the System.Net namespaces and Windows Sockets implementation details. Simply put,
there is definitely a lot of complexity involved other than putting a message on the
wire and sending it across. You need to know network programming and know the wide-array
of protocols (TCP/IP, HTTP, IPC, UDP, ...) and all the serialization and encoding
format specifications. Indigo turns it inwards by offering to perform these very low-level
network programming tasks, such as opening up a communication channel, reading and
de-ciphering metadata, <a href="http://hyperthink.net/blog/PermaLink,guid,26833a41-6aa8-4aa3-bfa1-e64e78856945.aspx" target="_blank">serializing,
formatting and encoding</a> the messages from the object representation instances,
writing them into streams and sending these message packets through agreed-upon bindings
to the other endpoint directly or through intermediaries through text or binary encoding.
Besides using <a href="http://www.internetnews.com/ec-news/article.php/3357621" target="_blank">Indigo
as a "platformization"</a>, instantaneous understanding or interoperabilty can be
achieved with other services and platforms (as soon as they catch up) as well. Because
not all business analysts and developers are plumbers or aspire to be like one, Indigo
offers that realm of spiritual realization by allowing them to concentrate and innovate
on the business-side of things which will inspire them to stand out and 'come out
of the blue'. I dont know if there are better ways to add more value and bring more
to the business table.
</p>
        <p>
          <font face="Georgia" size="3">
            <em>Indigo turns it inwards and eases the use of communication<br /></em>
          </font>
          <strong>[WilliamT]</strong> Enough said...
</p>
        <p>
          <font face="Georgia" size="3">
            <em>Put some indigo in your life when you want: </em>
          </font>
        </p>
        <ul>
          <li>
            <font size="3">
              <font face="Georgia">
                <em>to focus on personal issues</em>
              </font>
              <br />
            </font>---------------------------<br /><strong>[WilliamT]</strong> Allows the developer to focus on the business domain functionalities
and problems and not grok away at the technological plumbings of things which is counter-productive
in the business environments. In other words, you can go home earlier and have more
time for your own personal pursuits. Do more with Less ?</li>
        </ul>
        <ul>
          <li>
            <font face="Georgia">
              <em>
                <font size="3">to develop intuition</font>
                <br />
              </em>
            </font>--------------------<br /><strong>[WilliamT]</strong> Allows the developer to 'look' smart when he seemingly
solves business integration and technological interoperability problems.</li>
        </ul>
        <ul>
          <li>
            <em>
              <font face="Georgia" size="3">to step outside of everyday life for a new and interesting
way of viewing a problem</font>
              <br />
            </em>-------------------------------------------------------------------------------------<br /><strong>[WilliamT]</strong> Allows the developer and businesses to approach services
from a different perspective. Services should be business-centric and in terms of
software development, should be viewed as an explicit layer that sits on top of your
software objects. You shouldn't have to solve business and integration problems from
a technological angle anymore.</li>
        </ul>
        <ul dir="ltr" style="MARGIN-RIGHT: 0px">
          <li>
            <font face="Georgia" size="3">
              <em>solitude and inner communication</em>
            </font>
            <br />
-----------------------------------<br /><strong>[WilliamT]</strong> Emphasizes some of the the core pillars on Service-Orientation.
Services are autonomous units of deployment (some would argue versioning as well)
where it does NOT assume a controlling presence over all parts of any running systems.
Services are based on explicit message passing (some people still view it as implicit
method invocation). Compared to previous object-based distribution based technologies
(see above), the service-oriented model views cross-service method invocation as a
private implementation technique and not as a primitive construct. Therefore, the
fact that a given invocation may just be a method call is an implementation detail
that is not visible outside the explicit service boundary and is abstracted from all
calling code and systems.</li>
        </ul>
        <ul dir="ltr" style="MARGIN-RIGHT: 0px">
          <li>
            <font size="3">
              <font face="Georgia">
                <em>Indigo gemstones open the door to the subconscious,
symbolizing the bridge between the finite and infinite</em>
              </font>
              <br />
            </font>-------------------------------------------------------------------------------------------------------------<br /><strong>[WilliamT]</strong> Service-oriented development departs from object-orientation
by assuming that atomic deployment of an application is the exception, not the rule.
While individual services are almost always deployed atomically, the aggregate deployment
state of the overall system or application rarely stands still (infinite). In other
words, it is common for an individual service to be deployed long before any consuming
applications are even developed; then consuming applications can be developed on a
per-demand basis. In the service-oriented world, the creators of the service know
nothing of the applications that consume the service whereas developers of an object-oriented
application create both sides of the relationship. In other words, I would map the
finite-and-infinite deployments to that of a silos-and-services approach.<br /></li>
        </ul>
        <p dir="ltr">
Now, I wonder if <a href="http://www.microsoft.com" target="_blank">MSFT Corp</a> Marketing
would offer me a job based on the written above...<img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" /></p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=fccb3175-1d1b-4663-8dd2-55a343beec09" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>INDIGO: Color and Technology Symbolism Mappings</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,fccb3175-1d1b-4663-8dd2-55a343beec09.aspx</guid>
      <link>http://www.softwaremaker.net/blog/INDIGOColorAndTechnologySymbolismMappings.aspx</link>
      <pubDate>Mon, 11 Apr 2005 02:02:17 GMT</pubDate>
      <description>&lt;p&gt;
Lets take a look at the &lt;a href="http://www.crystal-cure.com/indigo.html" target=_blank&gt;meaning
and symbolism of the color Indigo&lt;/a&gt;. I will attempt to slot in my own views on how
the color maps into the technology. &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt; 
&lt;hr&gt;
&lt;p&gt;
&lt;font face=Georgia size=3&gt;&lt;em&gt;Indigo symbolizes: intuition, deep contemplation, meditation&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia size=3&gt;&lt;em&gt;Indigo is the color of the deep midnight sky. It can
have a negative effect when used during a depressed state, because it will deepen
the mood. Indigo symbolizes a mystical borderland of wisdom, self-mastery and spiritual
realization. While blue is the color of communication with others, indigo turns the
blue inward, to increase personal thought, profound insights, and instant understandings.
While blue can be fast, Indigo is almost instantaneous. Inventors use indigo skills
for inspirations that seem to 'come out of the blue'.&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;[WilliamT]&lt;/strong&gt; As aptly put, Blue is the color of communication. But
Blue is not enough. One also needs to know the innards of network programming and
all the System.Net namespaces and Windows Sockets implementation details. Simply put,
there is definitely a lot of complexity involved other than putting a message on the
wire and sending it across. You need to know network programming and know the wide-array
of protocols (TCP/IP, HTTP, IPC, UDP, ...) and all the serialization and encoding
format specifications. Indigo turns it inwards by offering to perform these very low-level
network programming tasks, such as opening up a communication channel, reading and
de-ciphering metadata, &lt;a href="http://hyperthink.net/blog/PermaLink,guid,26833a41-6aa8-4aa3-bfa1-e64e78856945.aspx" target=_blank&gt;serializing,
formatting and encoding&lt;/a&gt; the messages from the object representation instances,
writing them into streams and sending these message packets through agreed-upon bindings
to the other endpoint directly or through intermediaries through text or binary encoding.
Besides using &lt;a href="http://www.internetnews.com/ec-news/article.php/3357621" target=_blank&gt;Indigo
as a "platformization"&lt;/a&gt;, instantaneous understanding or interoperabilty can be
achieved with other services and platforms (as soon as they catch up) as well. Because
not all business analysts and developers are plumbers or aspire to be like one, Indigo
offers that realm of spiritual realization by allowing them to concentrate and innovate
on the business-side of things which will inspire them to stand out and 'come out
of the blue'. I dont know if there are better ways to add more value and bring more
to the business table.
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia size=3&gt;&lt;em&gt;Indigo turns it inwards and eases the use of communication&lt;br&gt;
&lt;/em&gt;&lt;/font&gt;&lt;strong&gt;[WilliamT]&lt;/strong&gt; Enough said...
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Georgia size=3&gt;&lt;em&gt;Put some indigo in your life when you want: &lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;font size=3&gt;&lt;font face=Georgia&gt;&lt;em&gt;to focus on personal issues&lt;/em&gt;&lt;/font&gt;
&lt;br&gt;
&lt;/font&gt;---------------------------&lt;br&gt;
&lt;strong&gt;[WilliamT]&lt;/strong&gt; Allows the developer to focus on the business domain functionalities
and problems and not grok away at the technological plumbings of things which is counter-productive
in the business environments. In other words, you can go home earlier and have more
time for your own personal pursuits. Do more with Less ?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;font face=Georgia&gt;&lt;em&gt;&lt;font size=3&gt;to develop intuition&lt;/font&gt;
&lt;br&gt;
&lt;/em&gt;&lt;/font&gt;--------------------&lt;br&gt;
&lt;strong&gt;[WilliamT]&lt;/strong&gt; Allows the developer to 'look' smart when he seemingly
solves business integration and technological interoperability problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;font face=Georgia size=3&gt;to step outside of everyday life for a new and interesting
way of viewing a problem&lt;/font&gt;
&lt;br&gt;
&lt;/em&gt;-------------------------------------------------------------------------------------&lt;br&gt;
&lt;strong&gt;[WilliamT]&lt;/strong&gt; Allows the developer and businesses to approach services
from a different perspective. Services should be business-centric and in terms of
software development, should be viewed as an explicit layer that sits on top of your
software objects. You shouldn't have to solve business and integration problems&amp;nbsp;from
a technological angle anymore.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;li&gt;
&lt;font face=Georgia size=3&gt;&lt;em&gt;solitude and inner communication&lt;/em&gt;&lt;/font&gt;
&lt;br&gt;
-----------------------------------&lt;br&gt;
&lt;strong&gt;[WilliamT]&lt;/strong&gt; Emphasizes some of the the core pillars on Service-Orientation.
Services are autonomous units of deployment (some would argue versioning as well)
where it does NOT assume a controlling presence over all parts of any running systems.
Services are based on explicit message passing (some people still view it as implicit
method invocation). Compared to previous object-based distribution based technologies
(see above), the service-oriented model views cross-service method invocation as a
private implementation technique and not as a primitive construct. Therefore, the
fact that a given invocation may just be a method call is an implementation detail
that is not visible outside the explicit service boundary and is abstracted from all
calling code and systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;li&gt;
&lt;font size=3&gt;&lt;font face=Georgia&gt;&lt;em&gt;Indigo gemstones open the door to the subconscious,
symbolizing the bridge between the finite and infinite&lt;/em&gt;&lt;/font&gt;
&lt;br&gt;
&lt;/font&gt;-------------------------------------------------------------------------------------------------------------&lt;br&gt;
&lt;strong&gt;[WilliamT]&lt;/strong&gt; Service-oriented development departs from object-orientation
by assuming that atomic deployment of an application is the exception, not the rule.
While individual services are almost always deployed atomically, the aggregate deployment
state of the overall system or application rarely stands still (infinite). In other
words, it is common for an individual service to be deployed long before any consuming
applications are even developed; then consuming applications can be developed on a
per-demand basis. In the service-oriented world, the creators of the service know
nothing of the applications that consume the service whereas developers of an object-oriented
application create both sides of the relationship. In other words, I would map the
finite-and-infinite deployments to that of a silos-and-services approach.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=ltr&gt;
Now, I wonder if &lt;a href=http://www.microsoft.com target=_blank&gt;MSFT Corp&lt;/a&gt; Marketing
would offer me a job based on the written above...&lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=fccb3175-1d1b-4663-8dd2-55a343beec09" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=8a9bd4b4-a7a1-4157-b39c-a8f902db8d35</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,8a9bd4b4-a7a1-4157-b39c-a8f902db8d35.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There was <a href="http://www.microsoft.com/technet/archive/transsrv/mtxpg03.mspx" target="_blank">Viper</a> (I
am sure there is a play somewhere here with <a href="http://encyclopedia.laborlawtalk.com/king_cobra" target="_blank">COBRA</a> or
izzit <a href="http://www.corba.org/" target="_blank">CORBA</a><img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif" /> ?), <a href="http://www.microsoft.com/windows2000/technologies/communications/msmq/default.asp" target="_blank">Falcon</a>, <a href="http://www.microsoft.com/windows2000/technologies/clustering/default.asp" target="_blank">Wolfpack</a>, <a href="http://whatis.techtarget.com/definition/0,289893,sid9_gci211825,00.html" target="_blank">COM+</a> (I
dont think it has a codename), <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/hawkremoting.asp" target="_blank">.NET
Remoting</a> and now <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a>,
which happens to be Green at first.
</p>
        <p>
Of course, the Development and Database tools were codenamed after places (Everett,
Orcas, Yukon, Whidbey, ...) Incidentally, the belief was that the further the codenamed
"<em>place</em>" was from Redmond, the later the shipping dates will be. I dont really
know the accuracy of that though.
</p>
        <p>
Of course, my interest has always been in the domains of distributed computing and
I have been on Viper since Day 1 and moving along with each new evolution of distributed
computing technology. I am deeply entrenched in Indigo today, which some people have
argued it is more of a revolution of distributed systems in terms of its perception.
I dont disagree. However, I always chose to believe that Information Technology should
be deployed for the sake of Business Innovation and not just for the sake of technology.
This hasnt happen before BUT I strongly believe it is set to change with the coming
of age of technological (<strong><em>horizontal</em></strong>) and business (<strong><em>vertical</em></strong>)
standards and Indigo is set to deliver that set of technological standards while enabling vertical
standards to be built on top of it. Put it all together and you get <strong><em>real</em></strong> Service-Orientation
which preaches to the idea that <strong>Business drives IT</strong> and not the other
way around.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=8a9bd4b4-a7a1-4157-b39c-a8f902db8d35" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>INDIGO: The Code Name History of Distributed Computing in Microsoft</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,8a9bd4b4-a7a1-4157-b39c-a8f902db8d35.aspx</guid>
      <link>http://www.softwaremaker.net/blog/INDIGOTheCodeNameHistoryOfDistributedComputingInMicrosoft.aspx</link>
      <pubDate>Mon, 11 Apr 2005 01:15:19 GMT</pubDate>
      <description>&lt;p&gt;
There was &lt;a href="http://www.microsoft.com/technet/archive/transsrv/mtxpg03.mspx" target=_blank&gt;Viper&lt;/a&gt;&amp;nbsp;(I
am sure there is a play somewhere here with &lt;a href="http://encyclopedia.laborlawtalk.com/king_cobra" target=_blank&gt;COBRA&lt;/a&gt; or
izzit &lt;a href="http://www.corba.org/" target=_blank&gt;CORBA&lt;/a&gt; &lt;img src="http://www.softwaremaker.net/pictures/swmemoticons/wink.gif"&gt; ?), &lt;a href="http://www.microsoft.com/windows2000/technologies/communications/msmq/default.asp" target=_blank&gt;Falcon&lt;/a&gt;, &lt;a href="http://www.microsoft.com/windows2000/technologies/clustering/default.asp" target=_blank&gt;Wolfpack&lt;/a&gt;, &lt;a href="http://whatis.techtarget.com/definition/0,289893,sid9_gci211825,00.html" target=_blank&gt;COM+&lt;/a&gt; (I
dont think it has a codename),&amp;nbsp;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/hawkremoting.asp" target=_blank&gt;.NET
Remoting&lt;/a&gt;&amp;nbsp;and now &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt;,
which happens to be Green at first.
&lt;/p&gt;
&lt;p&gt;
Of course, the Development and Database tools were codenamed after places (Everett,
Orcas, Yukon, Whidbey, ...) Incidentally, the belief was that the further the codenamed
"&lt;em&gt;place&lt;/em&gt;" was from Redmond, the later the shipping dates will be. I dont really
know the accuracy of that though.
&lt;/p&gt;
&lt;p&gt;
Of course, my interest has always been in the domains of distributed computing and
I have been on Viper since Day 1 and moving along with each new evolution of distributed
computing technology. I am deeply entrenched in Indigo today, which some people have
argued it is more of a revolution of distributed systems in terms of its perception.
I dont disagree. However, I always chose to believe that Information Technology should
be deployed for the sake of Business Innovation and not just for the sake of technology.
This hasnt happen before BUT I strongly believe it is set to change with the coming
of age of technological (&lt;strong&gt;&lt;em&gt;horizontal&lt;/em&gt;&lt;/strong&gt;) and business (&lt;strong&gt;&lt;em&gt;vertical&lt;/em&gt;&lt;/strong&gt;)
standards and Indigo is set to deliver that set of technological standards while enabling&amp;nbsp;vertical
standards to be built on top of it. Put it all together and you get &lt;strong&gt;&lt;em&gt;real&lt;/em&gt;&lt;/strong&gt; Service-Orientation
which preaches to the idea that &lt;strong&gt;Business drives IT&lt;/strong&gt; and not the other
way around.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=8a9bd4b4-a7a1-4157-b39c-a8f902db8d35" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=3cf8eb6f-8acd-4176-a6cd-47303b198d68</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,3cf8eb6f-8acd-4176-a6cd-47303b198d68.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As usual, I find the documentation of the <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a> CTP
bits rather lacking. This is to-be-expected for any CTP Releases.
</p>
        <p>
Besides the declaration of attributes, Indigo makes heavy use of configuration to enable
an Aspected-Oriented style of programming (<a href="http://www.webopedia.com/TERM/A/aspect_oriented_programming.html" target="_blank">AOP</a>).
This is really good as it really separates the technical goo from the functional business
gunk. This is all good BUT the documentation for the configuration section (plus the
schematic view) is rather lacking from the CTP documentation.
</p>
        <p>
However, thanks to the good people and program managers of the Indigo team, the off-line
and community support is great for the CTP release. <a href="http://hyperthink.net/blog/" target="_blank">Mr.
Maine</a> (who is Steve to most ... ) has posted a list of the Indigo standard bindings
and all their associated configuration options <a href="http://hyperthink.net/blog/PermaLink,guid,7903af43-7021-46ce-8ae3-39709c5d0d6f.aspx" target="_blank">here</a>.
Great information. Thanks, Steve.
</p>
        <p>
          <a href="http://www.eecs.harvard.edu/~vernal/" target="_blank">Mike Vernal</a>, another
great PM, has also responded to my distress calls on the public Indigo newsgroup by
posting an even more detailed set of documentation (plus explanation !!! --- you rock,
Mike !) from the OM documentation for NetProfileTcpBinding and WsProfileBinding.
WsProfileDualHttpBinding is very similar to WsProfileBinding, and BasicProfileBinding
is, in some senses, a small subset of WsProfileBinding.
</p>
        <p>
I will post all the snippets here, in a note of reference to myself and
hopefully to the others as well.
</p>
        <p>
          <hr />
        </p>
        <p>
        </p>
        <p>
          <strong>System.ServiceModel.NetProfileTcpBinding</strong>
        </p>
        <p>
The NetProfileTcpBinding is a secure, reliable, optimized binding suitable 
<br />
for cross-machine communication.  By default it will generate a runtime 
<br />
communication stack which will use WS-ReliableMessaging for reliability, 
<br />
Windows Security for message security and authentication, TCP for message 
<br />
delivery, and a Binary message encoding.  The security behavior is 
<br />
configurable via the optional securityMode parameter.  The use of 
<br />
WS-ReliableMessaging is configurable via the optional enableReliableSession 
<br />
parameter.
</p>
        <p>
// code<br /><em>public class NetProfileTcpBinding : Binding<br />
{<br />
    public NetProfileTcpBinding() { }<br />
    public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode)
{ }<br />
    public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode, 
<br />
bool enableReliableSession) { }</em></p>
        <p>
          <em>    public ContextFlowOption FlowLocale { get; set; }<br />
    public ContextFlowOption FlowLogicalThreadId { get; set; }<br />
    public ContextFlowOption FlowTransactions { get; set; }<br />
    public HostnameComparisonMode HostnameComparisonMode { get; set;
}<br />
    public int MaxBufferSize { get; set; }<br />
    public int MaxConnections { get; set; }<br />
    public long MaxMessageSize { get; set; }<br />
    public SocketProtectionLevel IPv6SocketProtectionLevel { get; set;
}<br />
    public bool KeepAliveEnabled { get; set; }<br />
    public bool OrderedSession { get; set; }<br />
    public bool ReliableSessionEnabled { get; set; }<br />
    public NetProfileTcpSecurityMode SecurityMode { get; set; }<br />
    public TransferAssurances SessionAssurances { get; set; }<br />
    public TimeSpan SessionConnectTimeout { get; set; }<br />
    public TimeSpan SessionInactivityTimeout { get; set; }<br />
    public EnvelopeVersion SoapVersion { get; }<br />
    public bool TcpPortSharingEnabled { get; set; }<br />
    public ProtectionLevel TcpProtectionLevel { get; set; }<br />
    public TimeSpan TransferTimeout { get; set; }<br />
    public TransferMode TransferMode { get; set; }<br />
    public WSSecurityOverTcp WSSecurity { get; } 
<br />
}</em>
        </p>
        <p>
          <strong>public NetProfileTcpBinding()</strong>
        </p>
        <p>
Instantiates a new instance of the NetProfileTcpBinding.  By default, 
<br />
Windows Security will be used to secure communication (i.e., SecurityMode 
<br />
will be TcpWithWindowsSe-curity) and reliable sessions will be disabled 
<br />
(EnableReliableSession will be false).
</p>
        <p>
          <strong>public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode)</strong>
        </p>
        <p>
Instantiates a new instance of the NetProfileTcpBinding with the specified 
<br />
securityMode value.  By default, reliable sessions will be disabled 
<br />
(EnableReliableSession will be false).
</p>
        <p>
          <strong>public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode, bool 
<br />
enableReliableSession)</strong>
        </p>
        <p>
Instantiates a new instance of the NetProfileTcpBinding with the specified 
<br />
securityMode and enableReliableSession values.
</p>
        <p>
          <strong>public ContextFlowOption FlowLocale</strong>
        </p>
        <p>
The FlowLocale property allows you to get or set whether the client's 
<br />
locale should be flowed to the server, and whether the server should 
<br />
accept, ignore or reject it.  The de-fault value is 
<br />
ContextFlowOption.NotAllowed, indicating that clients will not flow 
<br />
lo-cale, and services will reject messages with a flowed locale.
</p>
        <p>
          <strong>public ContextFlowOption FlowLogicalThreadId</strong>
        </p>
        <p>
The FlowLogicalThreadId property allows you to get or set whether the 
<br />
client's logical Thread Id should be flowed to the server, and whether the 
<br />
server should accept, ignore or reject it.  The default value is 
<br />
ContextFlowOption.NotAllowed, indicating that clients will not flow locale, 
<br />
and services will reject messages with a flowed logical Thread ID.  This 
<br />
value is useful in the context of ConcurrencyMode.Reentrant, as reentrancy 
<br />
uses the logical Thread ID to determine which calls may "re-enter" the 
<br />
synchronized context and which calls must wait.
</p>
        <p>
          <strong>public ContextFlowOption FlowTransactions</strong>
        </p>
        <p>
The FlowTransactions property allows you to get or set whether this binding 
<br />
should sup-port flowing WS-Transactions.  The default value is 
<br />
ContextFlowOption.NotAllowed, indicating that clients will not flow 
<br />
transactions, and services will reject messages with a flowed transaction 
<br />
message header.
</p>
        <p>
          <strong>public HostnameComparisonMode HostnameComparisonMode</strong>
        </p>
        <p>
The HostnameComparisonMode property allows you to get or set whether a 
<br />
binding instance should be reachable via any valid machine name, or only 
<br />
the endpoint's configured hostname.  The default value is StrongWildcard.
</p>
        <p>
          <strong>public SocketProtectionLevel IPv6SocketProtectionLevel</strong>
        </p>
        <p>
The IPv6SocketProtectionLevel propery allows you to configure the value of 
<br />
the IPV6_PROTECTION_LEVEL socket option that is used to construct the 
<br />
underlying socket.  This is useful for configuring firewall traversal 
<br />
technologies such as Teredo.  The default value is 
<br />
SocketProtectionLevel.Default.
</p>
        <p>
          <strong>public bool KeepAliveEnabled</strong>
        </p>
        <p>
The KeepAliveEnabled property allows you to get or set whether or not 
<br />
TCP-level KeepAlive should be used.  This is useful if your TCP connection 
<br />
is traversing an IP in-termediary that will timeout idle connections (e.g., 
<br />
certain firewalls, NATs, proxies, etc.).   The default value is false.
</p>
        <p>
          <strong>public int MaxBufferSize</strong>
        </p>
        <p>
The MaxBufferSize property allows you to get or set the maximum number of 
<br />
bytes that will be used to buffer incoming messages in memory.  If you 
<br />
receive more data than you can buffer, that data will remain on the 
<br />
underlying socket until your buffer again has room.  This value cannot be 
<br />
less than MaxMessageSize.  The default value is 65,536 (64k).
</p>
        <p>
          <strong>public int MaxConnections</strong>
        </p>
        <p>
The MaxConnection property allows you to get or set the maximum number of 
<br />
TCP connections. The default value is 10.
</p>
        <p>
          <strong>public long MaxMessageSize</strong>
        </p>
        <p>
The MaxMessageSize property allows you to get or set the maximum size for 
<br />
messages processed by a binding instance.  The default value is 64k 
<br />
(65,536).
</p>
        <p>
          <strong>public bool OrderedSession</strong>
        </p>
        <p>
The OrderedSession property allows you to get or set whether this binding 
<br />
should guarantee in-order delivery of messages.  This value is only 
<br />
relevant if sessions are enabled (via the ReliableSessionEnabled property). 
<br />
 The default value is true.
</p>
        <p>
          <strong>public bool ReliableSessionEnabled</strong>
        </p>
        <p>
The ReliableSessionEnabled property allows you get or set whether 
<br />
WS-ReliableMessaging should be used to create sessionful channels.  The 
<br />
default value is false, indicating that this binding will not support 
<br />
sessionful channels.
</p>
        <p>
          <strong>public NetProfileTcpSecurityMode SecurityMode</strong>
        </p>
        <p>
The SecurityMode property allows you to get or set the type of security to 
<br />
be used with this binding.  The default value is 
<br />
NetProfileTcpSecurityMode.TcpWithWindowsSecurity.  
</p>
        <p>
          <strong>public TransferAssurances SessionAssurances</strong>
        </p>
        <p>
The SessionAssurances property allows you to get or set the message 
<br />
delivery guarantees (None, AtLeastOnce, AtMostOnce, ExactlyOnce) for this 
<br />
binding.  This value is only relevant if sessions are enabled (via the 
<br />
ReliableSessionEnabled bool).  The default value is 
<br />
TransferAssurances.ExactlyOnce. 
</p>
        <p>
          <strong>public TimeSpan SessionConnectTimeout</strong>
        </p>
        <p>
The SessionConnectTimeout property allows you to get or set the maximum 
<br />
amount of time that a session connect operation may take.  The default 
<br />
value is 30 seconds.
</p>
        <p>
          <strong>public TimeSpan SessionInactivityTimeout</strong>
        </p>
        <p>
The SessionInactivityTimeout property allows you to get or set the maximum 
<br />
amount of time a session may be idle before it is terminated.  The default 
<br />
value is 5 minutes.
</p>
        <p>
          <strong>public EnvelopeVersion SoapVersion</strong>
        </p>
        <p>
The SoapVersion property allows you to get othe SOAP version to be used for 
<br />
messages processed by this binding.  The NetProfileTcpBinding only supports 
<br />
SOAP 1.2.
</p>
        <p>
          <strong>public bool TcpPortSharingEnabled</strong>
        </p>
        <p>
The TcpPortSharingEnabled property allows you to get or set with the Tcp 
<br />
Ports should be shared using the Indigo Listener.  The default value is 
<br />
false, implying that each binding will exclusively use the TCP port.  Note 
<br />
that this value is only relevant to services (and not to clients).
</p>
        <p>
          <strong>public ProtectionLevel TcpProtectionLevel</strong>
        </p>
        <p>
The TcpProtectionLevel property allows you to get or set the message 
<br />
protection level to be used with TCP-based security.  This property is only 
<br />
used if the SecurityModeProp-erty is set to either TcpWithSsl or 
<br />
TcpWithWindowsSecurity.  The default value is 
<br />
Pro-tectionLevel.EncryptAndSign.
</p>
        <p>
          <strong>public TransferMode TransferMode</strong>
        </p>
        <p>
The TransferMode property allows you to configure the type of message 
<br />
transfer (Buff-ered or Streaming) that is used.  The default value is 
<br />
Buffered.  If Streaming is selected, ReliableSessionEnabled must be false 
<br />
and SecurityMode must either be None, TcpWithSSl, or TcpWithWindowSecurity.
</p>
        <p>
          <strong>public TimeSpan TransferTimeout</strong>
        </p>
        <p>
The TransferTimeout property allows you to get or set the maximum amount of 
<br />
time a message transfer may take.  The default value is 10 minutes.
</p>
        <p>
          <strong>public WSSecurityOverTcp WSSecurity</strong>
        </p>
        <p>
The WSSecurity property allows you to get a WSSecurityOverTcp object, which 
<br />
allows configuration of the security behavior of the binding.  This 
<br />
property is only used if the SecurityMode property is set to 
<br />
NetProfileSecurityMode.WSSecurityOverTcp. 
</p>
        <p>
------------------------------------------------------------------
</p>
        <p>
          <strong>System.ServiceModel.NetProfileTcpSecurityMode</strong>
        </p>
        <p>
The NetProfileTcpSecurityMode enum allows you to configure the type of 
<br />
security that should be used with the NetProfileTcpBinding.
</p>
        <p>
          <em>public enum NetProfileTcpSecurityMode<br />
{<br />
    None,<br />
    TcpWithWindowsSecurity,<br />
    TcpWithSsl,<br />
    WSSecurityOverTcp<br />
}</em>
        </p>
        <p>
          <strong>None</strong>
        </p>
        <p>
The None value indicates that security should be disabled.
</p>
        <p>
          <strong>TcpWithWindowSecurity</strong>
        </p>
        <p>
The TcpWithWindowsSecurity value indicates that Windows Security should be 
<br />
used.  This provides message integrity, confidentiality, and mutual 
<br />
authentication.
</p>
        <p>
          <strong>TcpWithSsl</strong>
        </p>
        <p>
The TcpWithSsl value indicates that TCP with SSL-based security should be 
<br />
used.  This provides message integrity, confidentiality, and server 
<br />
authentication.  This does not provide client authentication.
</p>
        <p>
          <strong>WSSecurityOverTcp</strong>
        </p>
        <p>
The WSSecurityOverTcp value indicates that WS-Security should be used over 
<br />
TCP.  WS-Security will be used for message integrity, confidentiality, and 
<br />
authentication.  The WSSecurity mechanism can be refined via the 
<br />
WSSecurityOverTcp type.
</p>
        <p>
------------------------------------------------------------------
</p>
        <p>
          <strong>System.ServiceModel.WSProfileBinding</strong>
        </p>
        <p>
The WSProfileBinding is a secure, reliable, interoperable binding suitable 
<br />
for non-duplex ServiceContracts.  By default it will generate a runtime 
<br />
stack which uses WS-ReliableMessaging for reliability, WS-Security for 
<br />
message security and authentication, HTTP for message delivery, and a 
<br />
Text/XML message encoding.  The security behavior is configurable via the 
<br />
optional securityMode parameter.  The use of WS-ReliableMessaging is 
<br />
configurable via the optional enableReliableSession parameter.
</p>
        <p>
          <em>public class WSProfileBinding : Binding<br />
{<br />
    public WSProfileBinding() { }<br />
    public WSProfileBinding(WSProfileSecurityMode securityMode) { }<br />
    public WSProfileBinding(WSProfileSecurityMode securityMode, bool 
<br />
enableReliableSession) { }</em>
        </p>
        <p>
          <em>    public ContextFlowOption FlowTransactions { get; set; }<br />
    public HostnameComparisonMode HostnameComparisonMode { get; set;
}<br />
    public HttpAuthentication HttpAuthentication { get; }<br />
    public long MaxMessageSize { get; set; }<br />
    public WSMessageEncoding MessageEncoding { get; set; }<br />
    public bool OrderedSession { get; set; }<br />
    public Uri ProxyAddress { get; set; }<br />
    public bool ReliableSessionEnabled { get; set; }<br />
    public WSProfileSecurityMode SecurityMode { get; set; }<br />
    public TransferAssurances SessionAssurances { get; set; }<br />
    public TimeSpan SessionConnectTimeout { get; set; }<br />
    public TimeSpan SessionInactivityTimeout { get; set; }<br />
    public EnvelopeVersion SoapVersion { get; set; }<br />
    public System.Text.Encoding TextEncoding { get; set; }<br />
    public TimeSpan TransferTimeout { get; set; }<br />
    public bool UseSystemWebProxy { get; set; }<br />
    public WSSecurityOverHttp WSSecurity { get; }<br />
}</em>
        </p>
        <p>
          <strong>public WSProfileBinding()</strong>
        </p>
        <p>
Instantiates a new instance of the WSProfileBinding.  By default, 
<br />
WS-Security will be used (SecurityMode will be WSSecurityOverHttp) and 
<br />
reliable sessions will be disabled (EnableReliableSession will be false).
</p>
        <p>
          <strong>public WSProfileBinding(WSProfileSecurityMode securityMode)</strong>
        </p>
        <p>
Instantiates a new instance of the WSProfileBinding with the specified 
<br />
securityMode.  By default, reliable sessions will be disabled 
<br />
(EnableReliableSession will be false).
</p>
        <p>
          <strong>public WSProfileBinding(WSProfileSecurityMode securityMode, bool 
<br />
enableReliableSession)</strong>
        </p>
        <p>
Instantiates a new instance of the WSProfileBinding with the specified 
<br />
securityMode and enableReliableSession values.
</p>
        <p>
          <strong>public ContextFlowOption FlowTransactions</strong>
        </p>
        <p>
The FlowTransactions property allows you to get or set whether this binding 
<br />
should sup-port flowing WS-Transactions.  The default value is 
<br />
ContextFlowOption.NotAllowed, indicating that clients will not flow 
<br />
transactions, and services will reject messages with a flowed transaction 
<br />
message header.
</p>
        <p>
          <strong>public HostnameComparisonMode HostnameComparisonMode</strong>
        </p>
        <p>
The HostnameComparisonMode property allows you to get or set whether a 
<br />
binding in-stance should be reachable via any valid machine name, or only 
<br />
the endpoint's config-ured hostname.  The default value is StrongWildcard.
</p>
        <p>
          <strong>public HttpAuthentication HttpAuthentication</strong>
        </p>
        <p>
The HttpAuthentication property allows you to get or set an object that 
<br />
allows configura-tion of HTTP Authenticaiton options.  This property is 
<br />
used only if you use WSProfile-SecurityMode.HttpAuthenticationOverHttps, 
<br />
otherwise its value is ignored.
</p>
        <p>
          <strong>public long MaxMessageSize</strong>
        </p>
        <p>
The MaxMessageSize property allows you to get or set the maximum size for 
<br />
messages processed by a binding instance.  The default value is 65,536 
<br />
bytes (64k).
</p>
        <p>
          <strong>public WSMessageEncoding MessageEncoding</strong>
        </p>
        <p>
The MessageEncoding property allows you to get or set the message encoding 
<br />
to be used for messages processed by this binding.  The default value is 
<br />
WSMessageEncoding.Text.
</p>
        <p>
          <strong>public bool OrderedSession</strong>
        </p>
        <p>
The OrderedSession property allows you to get or set whether this binding 
<br />
should guar-antee in-order delivery of messages.  This value is only 
<br />
relevant if sessions are enabled (via the ReliableSessionEnabled property). 
<br />
 The default value is true.
</p>
        <p>
          <strong>public Uri ProxyAddress</strong>
        </p>
        <p>
The ProxyAddress property allows you to get or set the address of your HTTP 
<br />
Proxy.  The default value is null.  It is an error for this to be non-null 
<br />
and UseSystemWebProxy to be true. 
</p>
        <p>
          <strong>public bool ReliableSessionEnabled</strong>
        </p>
        <p>
The ReliableSessionEnabled property allows you get or set whether 
<br />
WS-ReliableMessaging should be used to create sessionful channels.  The 
<br />
default value is false, indicating that this binding will not support 
<br />
sessionful channels.
</p>
        <p>
          <strong>public WSProfileSecurityMode SecurityMode</strong>
        </p>
        <p>
The SecurityMode property allows you to get or set the type of security to 
<br />
be used with this binding.  The default value is 
<br />
WSProfileSecurityMode.WSSecurityOverHttp.  
</p>
        <p>
          <strong>public TransferAssurances SessionAssurances</strong>
        </p>
        <p>
The SessionAssurances property allows you to get or set the message 
<br />
delivery guarantees (None, AtLeastOnce, AtMostOnce, ExactlyOnce) for this 
<br />
binding.  This value is only relevant if sessions are enabled (via the 
<br />
ReliableSessionEnabled bool).  The default value is 
<br />
TransferAssurances.ExactlyOnce. 
</p>
        <p>
          <strong>public TimeSpan SessionConnectTimeout</strong>
        </p>
        <p>
The SessionConnectTimeout property allows you to get or set the maximum 
<br />
amount of time that a session connect operation may take.  The default 
<br />
value is 30 seconds.
</p>
        <p>
          <strong>public TimeSpan SessionInactivityTimeout</strong>
        </p>
        <p>
The SessionInactivityTimeout property allows you to get or set the maximum 
<br />
amount of time a session may be idle before it is terminated.  The default 
<br />
value is 5 minutes.
</p>
        <p>
          <strong>public EnvelopeVersion SoapVersion</strong>
        </p>
        <p>
The SoapVersion property allows you to get or set the SOAP version (either 
<br />
SOAP 1.1 or SOAP 1.2) to be used for messages processed by this binding.  
<br />
The default value is SOAP 1.2.
</p>
        <p>
          <strong>public System.Text.Encoding TextEncoding</strong>
        </p>
        <p>
The TextEncoding property allows you to get or set the Character Set 
<br />
Encoding to be used for messages emitted from this binding.  The default 
<br />
value is an instance of the Sys-tem.Text.UTF8Encoding class.
</p>
        <p>
          <strong>public TimeSpan TransferTimeout</strong>
        </p>
        <p>
The TransferTimeout property allows you to get or set the maximum amount of 
<br />
time a message transfer may take.  The default value is 10 minutes.
</p>
        <p>
          <strong>public bool UseSystemWebProxy</strong>
        </p>
        <p>
The UseSystemWebProxy property allows you to get or set whether the 
<br />
system's auto-configured HTTP proxy should be used, if available.  The 
<br />
default value is true.  It is an error for this to be true and ProxyAddress 
<br />
to be non-null.
</p>
        <p>
          <strong>public WSSecurityOverHttp WSSecurity</strong>
        </p>
        <p>
The WSSecurity property allows you to get a WSSecurityOverHttp object, 
<br />
which allows configuration of the security behavior of the binding.  This 
<br />
property is only used if the SecurityMode property is set to 
<br />
WSProfileSecurityMode.WSSecurityOverHttp. 
</p>
        <p>
------------------------------------------------------------------
</p>
        <p>
          <strong>System.ServiceModel.WSProfileSecurityMode</strong>
        </p>
        <p>
The WSProfileSecurityMode enum allows you to configure the type of security 
<br />
that should be used with the WSProfileBinding.
</p>
        <p>
          <em>public enum WSProfileSecurityMode<br />
{<br />
    None,<br />
    Https,<br />
    HttpsWithClientCertificate,<br />
    HttpAuthenticationOverHttps,<br />
    WSSecurityOverHttp<br />
}</em>
        </p>
        <p>
          <strong>None</strong>
        </p>
        <p>
The None value indicates that security should be disabled.
</p>
        <p>
          <strong>Https</strong>
        </p>
        <p>
The Https value indicates that HTTPS security should be used.  This 
<br />
provides message integrity, confidentiality, and server authentication.  
<br />
This does not provide client authen-tication.
</p>
        <p>
          <strong>HttpsWithClientCertificate</strong>
        </p>
        <p>
The HttpsWithClientCertificate value indicates that HTTPS security should 
<br />
be used with a client X.509 certificate.  This provides message integrity, 
<br />
confidentiality, and mutual authentication.
</p>
        <p>
          <strong>HttpAuthenticationOverHttps</strong>
        </p>
        <p>
The HttpAuthenticationOverHttps value indicates that HTTPS security should 
<br />
be used with HTTP authentication.  This provides message integrity, 
<br />
confidentiality, and server authentication.  The HTTP authentication 
<br />
mechanism can be refined via the HttpAuthen-tication type.
</p>
        <p>
          <strong>WSSecurityOverHttp</strong>
        </p>
        <p>
The WSSecurityOverHttp value indicates that WS-Security should be used over 
<br />
HTTP.  WS-Security will be used for message integrity, confidentiality, and 
<br />
authentication.  The WSSecurity mechanism can be refined via the 
<br />
WSSecurityOverHttp type.
</p>
        <p>
          <hr />
        </p>
        <p>
        </p>
        <p>
[bindings]<br />
 [customBinding]
</p>
        <p>
  [!-- The BasicProfileBinding, which is an HTTP-based<br />
       binding compatible with the WS-I Basic Profile
--]
</p>
        <p>
   [binding configurationName="BasicProfileBinding"]<br />
     [httpTransport hostnameComparisonMode="StrongWildcard" 
<br />
                   
manualAddressing="False"<br />
                   
maxMessageSize="65536" 
<br />
                   
authenticationScheme="Anonymous" 
<br />
                   
bypassProxyOnLocal="False"<br />
                   
mapAddressingHeadersToHttpHeaders="True" 
<br />
                   
realm="" 
<br />
                   
transferTimeout="00:10:00"<br />
                   
useSystemWebProxy="True" /]<br />
     [textMessageEncoding maxReadPoolSize="64" 
<br />
                         
maxWritePoolSize="16"<br />
                         
messageVersion="Soap11Addressing1" 
<br />
                         
encoding="utf-8" /]<br />
   [/binding]
</p>
        <p>
[!-- The WsProfileBinding, which can interop with 
<br />
     anyone who speaks the WS-* protocols. It uses<br />
     WS-Security at the SOAP layer to provide 
<br />
     end-to-end security across intermediaries --]
</p>
        <p>
          <br />
   [binding configurationName="WsProfileBinding"]<br />
    [security algorithmSuite="Default" 
<br />
              authenticationMode="SspiNegotiated"<br />
              contextMode="Session" 
<br />
              defaultProtectionLevel="EncryptAndSign"<br />
              enableKeyDerivation="True" 
<br />
              includeTimestamp="True" 
<br />
              messageProtectionOrder="SignBeforeEncrypt"<br />
              securityVersion="WSSecurityXXX2005"
/]<br />
    [httpTransport hostnameComparisonMode="StrongWildcard" 
<br />
                  
manualAddressing="False"<br />
                  
maxMessageSize="65536" 
<br />
                  
authenticationScheme="Anonymous" 
<br />
                  
bypassProxyOnLocal="False"<br />
                  
mapAddressingHeadersToHttpHeaders="False" 
<br />
                  
realm="" 
<br />
                  
transferTimeout="00:10:00"<br />
                  
useSystemWebProxy="True" /]<br />
   [textMessageEncoding maxReadPoolSize="64" 
<br />
                       
maxWritePoolSize="16"<br />
                       
messageVersion="Default" 
<br />
                       
encoding="utf-8" /]<br />
   [/binding]<br />
 
</p>
        <p>
[!-- The WsProfileDualHttpBinding, which layers a Reliable Messaging<br />
     session on top of two HTTP channels, which lets you do duplex<br />
     communication over HTTP. It's also secure by default. --] 
</p>
        <p>
   [binding configurationName="WsProfileDualHttpBinding"]<br />
    [reliableSession acknowledgementInterval="00:00:00.2000000" 
<br />
                   
advancedFlowControl="True"<br />
                   
bufferedMessagesQuota="32" 
<br />
                   
inactivityTimeout="00:10:00" 
<br />
                   
maxPendingChannels="128"<br />
                   
maxRetryCount="8" 
<br />
                   
ordered="True" /]<br />
    [security algorithmSuite="Default" 
<br />
             authenticationMode="SspiNegotiated"<br />
             contextMode="Session" 
<br />
             defaultProtectionLevel="EncryptAndSign"<br />
             enableKeyDerivation="True" 
<br />
             includeTimestamp="True" 
<br />
             messageProtectionOrder="SignBeforeEncrypt"<br />
             securityVersion="WSSecurityXXX2005"
/]<br />
    [compositeDuplex /]<br />
    [httpTransport hostnameComparisonMode="StrongWildcard" 
<br />
                 
manualAddressing="False"<br />
                 
maxMessageSize="65536" 
<br />
                 
authenticationScheme="Anonymous" 
<br />
                 
bypassProxyOnLocal="False"<br />
                 
mapAddressingHeadersToHttpHeaders="False" 
<br />
                 
realm="" 
<br />
                 
transferTimeout="00:10:00"<br />
                 
useSystemWebProxy="True" /]<br />
    [textMessageEncoding maxReadPoolSize="64" 
<br />
                       
maxWritePoolSize="16"<br />
                       
messageVersion="Default" 
<br />
                       
encoding="utf-8" /]<br />
   [/binding]<br />
 
</p>
        <p>
[!-- The NetProfileTcpBinding, which is an Indigo/Indigo binding. --]
</p>
        <p>
   [binding configurationName="NetProfileTcpBinding"]<br />
     [tcpTransport hostnameComparisonMode="StrongWildcard" 
<br />
                
manualAddressing="False"<br />
                
maxMessageSize="65536" 
<br />
                
closeTimeout="00:00:01" 
<br />
                
connectionBufferSize="65536"<br />
                
connectionPoolGroupName="default" 
<br />
                
maxBufferSize="65536" 
<br />
                
maxInboundConnections="10"<br />
                
maxOutputDelay="00:00:00.2000000" 
<br />
                
maxPendingAccepts="1" 
<br />
                
protectionLevel="EncryptAndSign"<br />
                
transferMode="Buffered" 
<br />
                
transferTimeout="00:10:00" 
<br />
                
useIndigoListener="False"<br />
                
IPv6ProtectionLevel="Default" 
<br />
                
isKeepAliveEnabled="False" 
<br />
                
listenBacklog="10"<br />
                
securityMode="None" /]<br />
     [binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
/]<br />
   [/binding]
</p>
        <p>
   [!-- The NetProfileDualTcpBinding, which is another Indigo/Indigo binding.
--]
</p>
        <p>
   [binding configurationName="NetProfileDualTcpBinding"]<br />
     [reliableSession acknowledgementInterval="00:00:00.2000000" 
<br />
                   
advancedFlowControl="True"<br />
                   
bufferedMessagesQuota="32" 
<br />
                   
inactivityTimeout="00:10:00" 
<br />
                   
maxPendingChannels="128"<br />
                   
maxRetryCount="8" ordered="True" /]<br />
     [security algorithmSuite="Default" 
<br />
             authenticationMode="SspiNegotiated"<br />
             contextMode="Session" 
<br />
             defaultProtectionLevel="EncryptAndSign"<br />
             enableKeyDerivation="True" 
<br />
             includeTimestamp="True" 
<br />
             messageProtectionOrder="SignBeforeEncrypt"<br />
             securityVersion="WSSecurityXXX2005"
/]<br />
     [compositeDuplex /]<br />
     [tcpTransport hostnameComparisonMode="StrongWildcard" 
<br />
                
manualAddressing="False"<br />
                
maxMessageSize="65536" 
<br />
                
closeTimeout="00:00:01" 
<br />
                
connectionBufferSize="65536"<br />
                
connectionPoolGroupName="default" 
<br />
                
maxBufferSize="65536" 
<br />
                
maxInboundConnections="10"<br />
                
maxOutputDelay="00:00:00.2000000" 
<br />
                
maxPendingAccepts="1" 
<br />
                
protectionLevel="EncryptAndSign"<br />
                
transferMode="Buffered" 
<br />
                
transferTimeout="00:10:00" 
<br />
                
useIndigoListener="False"<br />
                
IPv6ProtectionLevel="Default" 
<br />
                
isKeepAliveEnabled="False" 
<br />
                
listenBacklog="10"<br />
                
securityMode="None" /]<br />
    [binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
/]<br />
   [/binding]
</p>
        <p>
   [!-- The NetProfileNamedPipesBinding, which is an Indigo/Indigo binding<br />
        for on-machine communication. --]
</p>
        <p>
   [binding configurationName="NetProfileNamedPipesBinding"]<br />
     [namedPipeTransport hostnameComparisonMode="StrongWildcard" 
<br />
                     
manualAddressing="False"<br />
                     
maxMessageSize="65536" 
<br />
                     
closeTimeout="00:00:01" 
<br />
                     
connectionBufferSize="65536"<br />
                     
connectionPoolGroupName="default" 
<br />
                     
maxBufferSize="65536" 
<br />
                     
maxInboundConnections="10"<br />
                     
maxOutputDelay="00:00:00.2000000" 
<br />
                     
maxPendingAccepts="1" 
<br />
                     
protectionLevel="EncryptAndSign"<br />
                     
transferMode="Buffered" 
<br />
                     
transferTimeout="00:10:00" 
<br />
                     
useIndigoListener="False"<br />
                     
connectTimeout="00:00:02" 
<br />
                     
securityMode="Windows" /]<br />
     [binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
/]<br />
  [/binding]<br />
[/customBinding]
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=3cf8eb6f-8acd-4176-a6cd-47303b198d68" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>INDIGO and Documentation: Properties of the various Bindings that did not make it for the CTP drop</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,3cf8eb6f-8acd-4176-a6cd-47303b198d68.aspx</guid>
      <link>http://www.softwaremaker.net/blog/INDIGOAndDocumentationPropertiesOfTheVariousBindingsThatDidNotMakeItForTheCTPDrop.aspx</link>
      <pubDate>Fri, 01 Apr 2005 22:25:10 GMT</pubDate>
      <description>&lt;p&gt;
As usual, I find the documentation of the &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt; CTP
bits rather lacking. This is to-be-expected for any CTP Releases.
&lt;/p&gt;
&lt;p&gt;
Besides the declaration of attributes, Indigo makes heavy use of configuration to&amp;nbsp;enable
an Aspected-Oriented style of programming (&lt;a href="http://www.webopedia.com/TERM/A/aspect_oriented_programming.html" target=_blank&gt;AOP&lt;/a&gt;).
This is really good as it really separates the technical goo from the functional business
gunk. This is all good BUT the documentation for the configuration section (plus the
schematic view) is rather lacking from the CTP documentation.
&lt;/p&gt;
&lt;p&gt;
However, thanks to the good people and program managers of the Indigo team, the off-line
and community support is great for the CTP release.&amp;nbsp;&lt;a href="http://hyperthink.net/blog/" target=_blank&gt;Mr.
Maine&lt;/a&gt; (who is Steve to most ... ) has posted a list of the Indigo standard bindings
and all their associated configuration options &lt;a href="http://hyperthink.net/blog/PermaLink,guid,7903af43-7021-46ce-8ae3-39709c5d0d6f.aspx" target=_blank&gt;here&lt;/a&gt;.
Great information. Thanks, Steve.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.eecs.harvard.edu/~vernal/" target=_blank&gt;Mike Vernal&lt;/a&gt;, another
great PM, has also responded to my distress calls on the public Indigo newsgroup by
posting an even more detailed set of documentation (plus explanation !!! --- you rock,
Mike !)&amp;nbsp;from the&amp;nbsp;OM documentation for NetProfileTcpBinding and WsProfileBinding.
WsProfileDualHttpBinding is very similar to WsProfileBinding, and BasicProfileBinding
is, in some senses, a small subset of WsProfileBinding.
&lt;/p&gt;
&lt;p&gt;
I will post&amp;nbsp;all the snippets&amp;nbsp;here, in a note of reference to myself and
hopefully to the others as well.
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;System.ServiceModel.NetProfileTcpBinding&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The NetProfileTcpBinding is a secure, reliable, optimized binding suitable 
&lt;br&gt;
for cross-machine communication.&amp;nbsp; By default it will generate a runtime 
&lt;br&gt;
communication stack which will use WS-ReliableMessaging for reliability, 
&lt;br&gt;
Windows Security for message security and authentication, TCP for message 
&lt;br&gt;
delivery, and a Binary message encoding.&amp;nbsp; The security behavior is 
&lt;br&gt;
configurable via the optional securityMode parameter.&amp;nbsp; The use of 
&lt;br&gt;
WS-ReliableMessaging is configurable via the optional enableReliableSession 
&lt;br&gt;
parameter.
&lt;/p&gt;
&lt;p&gt;
// code&lt;br&gt;
&lt;em&gt;public class NetProfileTcpBinding : Binding&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public NetProfileTcpBinding() { }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode)
{ }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode, 
&lt;br&gt;
bool enableReliableSession) { }&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ContextFlowOption FlowLocale { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ContextFlowOption FlowLogicalThreadId { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ContextFlowOption FlowTransactions { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public HostnameComparisonMode HostnameComparisonMode { get; set;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public int MaxBufferSize { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public int MaxConnections { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public long MaxMessageSize { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public SocketProtectionLevel IPv6SocketProtectionLevel { get; set;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool KeepAliveEnabled { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool OrderedSession { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool ReliableSessionEnabled { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public NetProfileTcpSecurityMode SecurityMode { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TransferAssurances SessionAssurances { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TimeSpan SessionConnectTimeout { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TimeSpan SessionInactivityTimeout { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public EnvelopeVersion SoapVersion { get; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool TcpPortSharingEnabled { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ProtectionLevel TcpProtectionLevel { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TimeSpan TransferTimeout { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TransferMode TransferMode { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public WSSecurityOverTcp WSSecurity { get; } 
&lt;br&gt;
}&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public NetProfileTcpBinding()&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Instantiates a new instance of the NetProfileTcpBinding.&amp;nbsp; By default, 
&lt;br&gt;
Windows Security will be used to secure communication (i.e., SecurityMode 
&lt;br&gt;
will be TcpWithWindowsSe-curity) and reliable sessions will be disabled 
&lt;br&gt;
(EnableReliableSession will be false).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Instantiates a new instance of the NetProfileTcpBinding with the specified 
&lt;br&gt;
securityMode value.&amp;nbsp; By default, reliable sessions will be disabled 
&lt;br&gt;
(EnableReliableSession will be false).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public NetProfileTcpBinding(NetProfileTcpSecurityMode securityMode, bool 
&lt;br&gt;
enableReliableSession)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Instantiates a new instance of the NetProfileTcpBinding with the specified 
&lt;br&gt;
securityMode and enableReliableSession values.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public ContextFlowOption FlowLocale&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The FlowLocale property allows you to get or set whether the client's 
&lt;br&gt;
locale should be flowed to the server, and whether the server should 
&lt;br&gt;
accept, ignore or reject it.&amp;nbsp; The de-fault value is 
&lt;br&gt;
ContextFlowOption.NotAllowed, indicating that clients will not flow 
&lt;br&gt;
lo-cale, and services will reject messages with a flowed locale.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public ContextFlowOption FlowLogicalThreadId&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The FlowLogicalThreadId property allows you to get or set whether the 
&lt;br&gt;
client's logical Thread Id should be flowed to the server, and whether the 
&lt;br&gt;
server should accept, ignore or reject it.&amp;nbsp; The default value is 
&lt;br&gt;
ContextFlowOption.NotAllowed, indicating that clients will not flow locale, 
&lt;br&gt;
and services will reject messages with a flowed logical Thread ID.&amp;nbsp; This 
&lt;br&gt;
value is useful in the context of ConcurrencyMode.Reentrant, as reentrancy 
&lt;br&gt;
uses the logical Thread ID to determine which calls may "re-enter" the 
&lt;br&gt;
synchronized context and which calls must wait.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public ContextFlowOption FlowTransactions&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The FlowTransactions property allows you to get or set whether this binding 
&lt;br&gt;
should sup-port flowing WS-Transactions.&amp;nbsp; The default value is 
&lt;br&gt;
ContextFlowOption.NotAllowed, indicating that clients will not flow 
&lt;br&gt;
transactions, and services will reject messages with a flowed transaction 
&lt;br&gt;
message header.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public HostnameComparisonMode HostnameComparisonMode&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The HostnameComparisonMode property allows you to get or set whether a 
&lt;br&gt;
binding instance should be reachable via any valid machine name, or only 
&lt;br&gt;
the endpoint's configured hostname.&amp;nbsp; The default value is StrongWildcard.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public SocketProtectionLevel IPv6SocketProtectionLevel&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The IPv6SocketProtectionLevel propery allows you to configure the value of 
&lt;br&gt;
the IPV6_PROTECTION_LEVEL socket option that is used to construct the 
&lt;br&gt;
underlying socket.&amp;nbsp; This is useful for configuring firewall traversal 
&lt;br&gt;
technologies such as Teredo.&amp;nbsp; The default value is 
&lt;br&gt;
SocketProtectionLevel.Default.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public bool KeepAliveEnabled&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The KeepAliveEnabled property allows you to get or set whether or not 
&lt;br&gt;
TCP-level KeepAlive should be used.&amp;nbsp; This is useful if your TCP connection 
&lt;br&gt;
is traversing an IP in-termediary that will timeout idle connections (e.g., 
&lt;br&gt;
certain firewalls, NATs, proxies, etc.).&amp;nbsp;&amp;nbsp; The default value is false.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public int MaxBufferSize&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The MaxBufferSize property allows you to get or set the maximum number of 
&lt;br&gt;
bytes that will be used to buffer incoming messages in memory.&amp;nbsp; If you 
&lt;br&gt;
receive more data than you can buffer, that data will remain on the 
&lt;br&gt;
underlying socket until your buffer again has room.&amp;nbsp; This value cannot be 
&lt;br&gt;
less than MaxMessageSize.&amp;nbsp; The default value is 65,536 (64k).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public int MaxConnections&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The MaxConnection property allows you to get or set the maximum number of 
&lt;br&gt;
TCP connections. The default value is 10.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public long MaxMessageSize&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The MaxMessageSize property allows you to get or set the maximum size for 
&lt;br&gt;
messages processed by a binding instance.&amp;nbsp; The default value is 64k 
&lt;br&gt;
(65,536).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public bool OrderedSession&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The OrderedSession property allows you to get or set whether this binding 
&lt;br&gt;
should guarantee in-order delivery of messages.&amp;nbsp; This value is only 
&lt;br&gt;
relevant if sessions are enabled (via the ReliableSessionEnabled property). 
&lt;br&gt;
&amp;nbsp;The default value is true.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public bool ReliableSessionEnabled&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The ReliableSessionEnabled property allows you get or set whether 
&lt;br&gt;
WS-ReliableMessaging should be used to create sessionful channels.&amp;nbsp; The 
&lt;br&gt;
default value is false, indicating that this binding will not support 
&lt;br&gt;
sessionful channels.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public NetProfileTcpSecurityMode SecurityMode&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SecurityMode property allows you to get or set the type of security to 
&lt;br&gt;
be used with this binding.&amp;nbsp; The default value is 
&lt;br&gt;
NetProfileTcpSecurityMode.TcpWithWindowsSecurity.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TransferAssurances SessionAssurances&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SessionAssurances property allows you to get or set the message 
&lt;br&gt;
delivery guarantees (None, AtLeastOnce, AtMostOnce, ExactlyOnce) for this 
&lt;br&gt;
binding.&amp;nbsp; This value is only relevant if sessions are enabled (via the 
&lt;br&gt;
ReliableSessionEnabled bool).&amp;nbsp; The default value is 
&lt;br&gt;
TransferAssurances.ExactlyOnce. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TimeSpan SessionConnectTimeout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SessionConnectTimeout property allows you to get or set the maximum 
&lt;br&gt;
amount of time that a session connect operation may take.&amp;nbsp; The default 
&lt;br&gt;
value is 30 seconds.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TimeSpan SessionInactivityTimeout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SessionInactivityTimeout property allows you to get or set the maximum 
&lt;br&gt;
amount of time a session may be idle before it is terminated.&amp;nbsp; The default 
&lt;br&gt;
value is 5 minutes.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public EnvelopeVersion SoapVersion&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SoapVersion property allows you to get othe SOAP version to be used for 
&lt;br&gt;
messages processed by this binding.&amp;nbsp; The NetProfileTcpBinding only supports 
&lt;br&gt;
SOAP 1.2.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public bool TcpPortSharingEnabled&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TcpPortSharingEnabled property allows you to get or set with the Tcp 
&lt;br&gt;
Ports should be shared using the Indigo Listener.&amp;nbsp; The default value is 
&lt;br&gt;
false, implying that each binding will exclusively use the TCP port.&amp;nbsp; Note 
&lt;br&gt;
that this value is only relevant to services (and not to clients).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public ProtectionLevel TcpProtectionLevel&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TcpProtectionLevel property allows you to get or set the message 
&lt;br&gt;
protection level to be used with TCP-based security.&amp;nbsp; This property is only 
&lt;br&gt;
used if the SecurityModeProp-erty is set to either TcpWithSsl or 
&lt;br&gt;
TcpWithWindowsSecurity.&amp;nbsp; The default value is 
&lt;br&gt;
Pro-tectionLevel.EncryptAndSign.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TransferMode TransferMode&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TransferMode property allows you to configure the type of message 
&lt;br&gt;
transfer (Buff-ered or Streaming) that is used.&amp;nbsp; The default value is 
&lt;br&gt;
Buffered.&amp;nbsp; If Streaming is selected, ReliableSessionEnabled must be false 
&lt;br&gt;
and SecurityMode must either be None, TcpWithSSl, or TcpWithWindowSecurity.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TimeSpan TransferTimeout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TransferTimeout property allows you to get or set the maximum amount of 
&lt;br&gt;
time a message transfer may take.&amp;nbsp; The default value is 10 minutes.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public WSSecurityOverTcp WSSecurity&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The WSSecurity property allows you to get a WSSecurityOverTcp object, which 
&lt;br&gt;
allows configuration of the security behavior of the binding.&amp;nbsp; This 
&lt;br&gt;
property is only used if the SecurityMode property is set to 
&lt;br&gt;
NetProfileSecurityMode.WSSecurityOverTcp. 
&lt;/p&gt;
&lt;p&gt;
------------------------------------------------------------------
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;System.ServiceModel.NetProfileTcpSecurityMode&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The NetProfileTcpSecurityMode enum allows you to configure the type of 
&lt;br&gt;
security that should be used with the NetProfileTcpBinding.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;public enum NetProfileTcpSecurityMode&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; None,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TcpWithWindowsSecurity,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TcpWithSsl,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; WSSecurityOverTcp&lt;br&gt;
}&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;None&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The None value indicates that security should be disabled.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;TcpWithWindowSecurity&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TcpWithWindowsSecurity value indicates that Windows Security should be 
&lt;br&gt;
used.&amp;nbsp; This provides message integrity, confidentiality, and mutual 
&lt;br&gt;
authentication.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;TcpWithSsl&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TcpWithSsl value indicates that TCP with SSL-based security should be 
&lt;br&gt;
used.&amp;nbsp; This provides message integrity, confidentiality, and server 
&lt;br&gt;
authentication.&amp;nbsp; This does not provide client authentication.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;WSSecurityOverTcp&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The WSSecurityOverTcp value indicates that WS-Security should be used over 
&lt;br&gt;
TCP.&amp;nbsp; WS-Security will be used for message integrity, confidentiality, and 
&lt;br&gt;
authentication.&amp;nbsp; The WSSecurity mechanism can be refined via the 
&lt;br&gt;
WSSecurityOverTcp type.
&lt;/p&gt;
&lt;p&gt;
------------------------------------------------------------------
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;System.ServiceModel.WSProfileBinding&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The WSProfileBinding is a secure, reliable, interoperable binding suitable 
&lt;br&gt;
for non-duplex ServiceContracts.&amp;nbsp; By default it will generate a runtime 
&lt;br&gt;
stack which uses WS-ReliableMessaging for reliability, WS-Security for 
&lt;br&gt;
message security and authentication, HTTP for message delivery, and a 
&lt;br&gt;
Text/XML message encoding.&amp;nbsp; The security behavior is configurable via the 
&lt;br&gt;
optional securityMode parameter.&amp;nbsp; The use of WS-ReliableMessaging is 
&lt;br&gt;
configurable via the optional enableReliableSession parameter.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;public class WSProfileBinding : Binding&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public WSProfileBinding() { }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public WSProfileBinding(WSProfileSecurityMode securityMode) { }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public WSProfileBinding(WSProfileSecurityMode securityMode, bool 
&lt;br&gt;
enableReliableSession) { }&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ContextFlowOption FlowTransactions { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public HostnameComparisonMode HostnameComparisonMode { get; set;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public HttpAuthentication HttpAuthentication { get; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public long MaxMessageSize { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public WSMessageEncoding MessageEncoding { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool OrderedSession { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Uri ProxyAddress { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool ReliableSessionEnabled { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public WSProfileSecurityMode SecurityMode { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TransferAssurances SessionAssurances { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TimeSpan SessionConnectTimeout { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TimeSpan SessionInactivityTimeout { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public EnvelopeVersion SoapVersion { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public System.Text.Encoding TextEncoding { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TimeSpan TransferTimeout { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool UseSystemWebProxy { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public WSSecurityOverHttp WSSecurity { get; }&lt;br&gt;
}&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public WSProfileBinding()&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Instantiates a new instance of the WSProfileBinding.&amp;nbsp; By default, 
&lt;br&gt;
WS-Security will be used (SecurityMode will be WSSecurityOverHttp) and 
&lt;br&gt;
reliable sessions will be disabled (EnableReliableSession will be false).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public WSProfileBinding(WSProfileSecurityMode securityMode)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Instantiates a new instance of the WSProfileBinding with the specified 
&lt;br&gt;
securityMode.&amp;nbsp; By default, reliable sessions will be disabled 
&lt;br&gt;
(EnableReliableSession will be false).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public WSProfileBinding(WSProfileSecurityMode securityMode, bool 
&lt;br&gt;
enableReliableSession)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Instantiates a new instance of the WSProfileBinding with the specified 
&lt;br&gt;
securityMode and enableReliableSession values.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public ContextFlowOption FlowTransactions&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The FlowTransactions property allows you to get or set whether this binding 
&lt;br&gt;
should sup-port flowing WS-Transactions.&amp;nbsp; The default value is 
&lt;br&gt;
ContextFlowOption.NotAllowed, indicating that clients will not flow 
&lt;br&gt;
transactions, and services will reject messages with a flowed transaction 
&lt;br&gt;
message header.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public HostnameComparisonMode HostnameComparisonMode&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The HostnameComparisonMode property allows you to get or set whether a 
&lt;br&gt;
binding in-stance should be reachable via any valid machine name, or only 
&lt;br&gt;
the endpoint's config-ured hostname.&amp;nbsp; The default value is StrongWildcard.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public HttpAuthentication HttpAuthentication&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The HttpAuthentication property allows you to get or set an object that 
&lt;br&gt;
allows configura-tion of HTTP Authenticaiton options.&amp;nbsp; This property is 
&lt;br&gt;
used only if you use WSProfile-SecurityMode.HttpAuthenticationOverHttps, 
&lt;br&gt;
otherwise its value is ignored.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public long MaxMessageSize&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The MaxMessageSize property allows you to get or set the maximum size for 
&lt;br&gt;
messages processed by a binding instance.&amp;nbsp; The default value is 65,536 
&lt;br&gt;
bytes (64k).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public WSMessageEncoding MessageEncoding&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The MessageEncoding property allows you to get or set the message encoding 
&lt;br&gt;
to be used for messages processed by this binding.&amp;nbsp; The default value is 
&lt;br&gt;
WSMessageEncoding.Text.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public bool OrderedSession&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The OrderedSession property allows you to get or set whether this binding 
&lt;br&gt;
should guar-antee in-order delivery of messages.&amp;nbsp; This value is only 
&lt;br&gt;
relevant if sessions are enabled (via the ReliableSessionEnabled property). 
&lt;br&gt;
&amp;nbsp;The default value is true.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public Uri ProxyAddress&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The ProxyAddress property allows you to get or set the address of your HTTP 
&lt;br&gt;
Proxy.&amp;nbsp; The default value is null.&amp;nbsp; It is an error for this to be non-null 
&lt;br&gt;
and UseSystemWebProxy to be true. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public bool ReliableSessionEnabled&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The ReliableSessionEnabled property allows you get or set whether 
&lt;br&gt;
WS-ReliableMessaging should be used to create sessionful channels.&amp;nbsp; The 
&lt;br&gt;
default value is false, indicating that this binding will not support 
&lt;br&gt;
sessionful channels.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public WSProfileSecurityMode SecurityMode&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SecurityMode property allows you to get or set the type of security to 
&lt;br&gt;
be used with this binding.&amp;nbsp; The default value is 
&lt;br&gt;
WSProfileSecurityMode.WSSecurityOverHttp.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TransferAssurances SessionAssurances&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SessionAssurances property allows you to get or set the message 
&lt;br&gt;
delivery guarantees (None, AtLeastOnce, AtMostOnce, ExactlyOnce) for this 
&lt;br&gt;
binding.&amp;nbsp; This value is only relevant if sessions are enabled (via the 
&lt;br&gt;
ReliableSessionEnabled bool).&amp;nbsp; The default value is 
&lt;br&gt;
TransferAssurances.ExactlyOnce. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TimeSpan SessionConnectTimeout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SessionConnectTimeout property allows you to get or set the maximum 
&lt;br&gt;
amount of time that a session connect operation may take.&amp;nbsp; The default 
&lt;br&gt;
value is 30 seconds.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TimeSpan SessionInactivityTimeout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SessionInactivityTimeout property allows you to get or set the maximum 
&lt;br&gt;
amount of time a session may be idle before it is terminated.&amp;nbsp; The default 
&lt;br&gt;
value is 5 minutes.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public EnvelopeVersion SoapVersion&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The SoapVersion property allows you to get or set the SOAP version (either 
&lt;br&gt;
SOAP 1.1 or SOAP 1.2) to be used for messages processed by this binding.&amp;nbsp; 
&lt;br&gt;
The default value is SOAP 1.2.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public System.Text.Encoding TextEncoding&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TextEncoding property allows you to get or set the Character Set 
&lt;br&gt;
Encoding to be used for messages emitted from this binding.&amp;nbsp; The default 
&lt;br&gt;
value is an instance of the Sys-tem.Text.UTF8Encoding class.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public TimeSpan TransferTimeout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The TransferTimeout property allows you to get or set the maximum amount of 
&lt;br&gt;
time a message transfer may take.&amp;nbsp; The default value is 10 minutes.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public bool UseSystemWebProxy&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The UseSystemWebProxy property allows you to get or set whether the 
&lt;br&gt;
system's auto-configured HTTP proxy should be used, if available.&amp;nbsp; The 
&lt;br&gt;
default value is true.&amp;nbsp; It is an error for this to be true and ProxyAddress 
&lt;br&gt;
to be non-null.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;public WSSecurityOverHttp WSSecurity&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The WSSecurity property allows you to get a WSSecurityOverHttp object, 
&lt;br&gt;
which allows configuration of the security behavior of the binding.&amp;nbsp; This 
&lt;br&gt;
property is only used if the SecurityMode property is set to 
&lt;br&gt;
WSProfileSecurityMode.WSSecurityOverHttp. 
&lt;/p&gt;
&lt;p&gt;
------------------------------------------------------------------
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;System.ServiceModel.WSProfileSecurityMode&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The WSProfileSecurityMode enum allows you to configure the type of security 
&lt;br&gt;
that should be used with the WSProfileBinding.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;public enum WSProfileSecurityMode&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; None,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Https,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpsWithClientCertificate,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpAuthenticationOverHttps,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; WSSecurityOverHttp&lt;br&gt;
}&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;None&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The None value indicates that security should be disabled.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Https&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The Https value indicates that HTTPS security should be used.&amp;nbsp; This 
&lt;br&gt;
provides message integrity, confidentiality, and server authentication.&amp;nbsp; 
&lt;br&gt;
This does not provide client authen-tication.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;HttpsWithClientCertificate&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The HttpsWithClientCertificate value indicates that HTTPS security should 
&lt;br&gt;
be used with a client X.509 certificate.&amp;nbsp; This provides message integrity, 
&lt;br&gt;
confidentiality, and mutual authentication.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;HttpAuthenticationOverHttps&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The HttpAuthenticationOverHttps value indicates that HTTPS security should 
&lt;br&gt;
be used with HTTP authentication.&amp;nbsp; This provides message integrity, 
&lt;br&gt;
confidentiality, and server authentication.&amp;nbsp; The HTTP authentication 
&lt;br&gt;
mechanism can be refined via the HttpAuthen-tication type.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;WSSecurityOverHttp&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The WSSecurityOverHttp value indicates that WS-Security should be used over 
&lt;br&gt;
HTTP.&amp;nbsp; WS-Security will be used for message integrity, confidentiality, and 
&lt;br&gt;
authentication.&amp;nbsp; The WSSecurity mechanism can be refined via the 
&lt;br&gt;
WSSecurityOverHttp type.
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
[bindings]&lt;br&gt;
&amp;nbsp;[customBinding]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; [!-- The BasicProfileBinding, which is an HTTP-based&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; binding compatible with the WS-I Basic Profile
--]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; [binding configurationName="BasicProfileBinding"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [httpTransport hostnameComparisonMode="StrongWildcard" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
manualAddressing="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxMessageSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
authenticationScheme="Anonymous" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bypassProxyOnLocal="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
mapAddressingHeadersToHttpHeaders="True" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
realm="" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferTimeout="00:10:00"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
useSystemWebProxy="True" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [textMessageEncoding maxReadPoolSize="64" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxWritePoolSize="16"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
messageVersion="Soap11Addressing1" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
encoding="utf-8" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [/binding]
&lt;/p&gt;
&lt;p&gt;
[!-- The WsProfileBinding, which can interop with 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anyone who speaks the WS-* protocols. It uses&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WS-Security at the SOAP layer to provide 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end-to-end security across intermediaries --]
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; [binding configurationName="WsProfileBinding"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [security algorithmSuite="Default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; authenticationMode="SspiNegotiated"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contextMode="Session" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defaultProtectionLevel="EncryptAndSign"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enableKeyDerivation="True" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; includeTimestamp="True" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; messageProtectionOrder="SignBeforeEncrypt"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; securityVersion="WSSecurityXXX2005"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [httpTransport hostnameComparisonMode="StrongWildcard" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
manualAddressing="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxMessageSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
authenticationScheme="Anonymous" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bypassProxyOnLocal="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
mapAddressingHeadersToHttpHeaders="False" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
realm="" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferTimeout="00:10:00"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
useSystemWebProxy="True" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [textMessageEncoding maxReadPoolSize="64" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxWritePoolSize="16"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
messageVersion="Default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
encoding="utf-8" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [/binding]&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
[!-- The WsProfileDualHttpBinding, which layers a Reliable Messaging&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; session on top of two HTTP channels, which lets you do duplex&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; communication over HTTP. It's also secure by default. --] 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; [binding configurationName="WsProfileDualHttpBinding"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [reliableSession acknowledgementInterval="00:00:00.2000000" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
advancedFlowControl="True"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bufferedMessagesQuota="32" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
inactivityTimeout="00:10:00" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxPendingChannels="128"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxRetryCount="8" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
ordered="True" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [security algorithmSuite="Default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; authenticationMode="SspiNegotiated"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contextMode="Session" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defaultProtectionLevel="EncryptAndSign"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enableKeyDerivation="True" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; includeTimestamp="True" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; messageProtectionOrder="SignBeforeEncrypt"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; securityVersion="WSSecurityXXX2005"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [compositeDuplex /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [httpTransport hostnameComparisonMode="StrongWildcard" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
manualAddressing="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxMessageSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
authenticationScheme="Anonymous" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bypassProxyOnLocal="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
mapAddressingHeadersToHttpHeaders="False" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
realm="" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferTimeout="00:10:00"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
useSystemWebProxy="True" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [textMessageEncoding maxReadPoolSize="64" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxWritePoolSize="16"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
messageVersion="Default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
encoding="utf-8" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [/binding]&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
[!-- The NetProfileTcpBinding, which is an Indigo/Indigo binding. --]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; [binding configurationName="NetProfileTcpBinding"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [tcpTransport hostnameComparisonMode="StrongWildcard" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
manualAddressing="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxMessageSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
closeTimeout="00:00:01" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
connectionBufferSize="65536"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
connectionPoolGroupName="default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxBufferSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxInboundConnections="10"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxOutputDelay="00:00:00.2000000" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxPendingAccepts="1" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
protectionLevel="EncryptAndSign"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferMode="Buffered" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferTimeout="00:10:00" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
useIndigoListener="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
IPv6ProtectionLevel="Default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
isKeepAliveEnabled="False" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
listenBacklog="10"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
securityMode="None" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [/binding]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; [!-- The NetProfileDualTcpBinding, which is another Indigo/Indigo binding.
--]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; [binding configurationName="NetProfileDualTcpBinding"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [reliableSession acknowledgementInterval="00:00:00.2000000" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
advancedFlowControl="True"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bufferedMessagesQuota="32" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
inactivityTimeout="00:10:00" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxPendingChannels="128"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxRetryCount="8" ordered="True" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [security algorithmSuite="Default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; authenticationMode="SspiNegotiated"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contextMode="Session" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defaultProtectionLevel="EncryptAndSign"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enableKeyDerivation="True" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; includeTimestamp="True" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; messageProtectionOrder="SignBeforeEncrypt"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; securityVersion="WSSecurityXXX2005"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [compositeDuplex /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [tcpTransport hostnameComparisonMode="StrongWildcard" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
manualAddressing="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxMessageSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
closeTimeout="00:00:01" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
connectionBufferSize="65536"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
connectionPoolGroupName="default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxBufferSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxInboundConnections="10"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxOutputDelay="00:00:00.2000000" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxPendingAccepts="1" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
protectionLevel="EncryptAndSign"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferMode="Buffered" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferTimeout="00:10:00" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
useIndigoListener="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
IPv6ProtectionLevel="Default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
isKeepAliveEnabled="False" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
listenBacklog="10"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
securityMode="None" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [/binding]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; [!-- The NetProfileNamedPipesBinding, which is an Indigo/Indigo binding&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for on-machine communication. --]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp; [binding configurationName="NetProfileNamedPipesBinding"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [namedPipeTransport hostnameComparisonMode="StrongWildcard" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
manualAddressing="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxMessageSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
closeTimeout="00:00:01" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
connectionBufferSize="65536"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
connectionPoolGroupName="default" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxBufferSize="65536" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxInboundConnections="10"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxOutputDelay="00:00:00.2000000" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxPendingAccepts="1" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
protectionLevel="EncryptAndSign"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferMode="Buffered" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
transferTimeout="00:10:00" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
useIndigoListener="False"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
connectTimeout="00:00:02" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
securityMode="Windows" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
/]&lt;br&gt;
&amp;nbsp; [/binding]&lt;br&gt;
[/customBinding]
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=3cf8eb6f-8acd-4176-a6cd-47303b198d68" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=46ad3c4f-d6fc-4ca7-8c0c-dd380637dca8</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,46ad3c4f-d6fc-4ca7-8c0c-dd380637dca8.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Finally, it is available to the public
! Go get it <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=85ab132b-f1aa-4422-b053-272d79863013" target="_blank">here</a>.
The PressPass is <a href="http://www.microsoft.com/presspass/features/2005/mar05/03-16WebServicesPreview.asp" target="_blank">here</a>.<img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=46ad3c4f-d6fc-4ca7-8c0c-dd380637dca8" /><br /><hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Indigo is PUBLIC !</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,46ad3c4f-d6fc-4ca7-8c0c-dd380637dca8.aspx</guid>
      <link>http://www.softwaremaker.net/blog/IndigoIsPUBLIC.aspx</link>
      <pubDate>Fri, 25 Mar 2005 13:05:36 GMT</pubDate>
      <description>Finally, it is available to the public ! Go get it &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=85ab132b-f1aa-4422-b053-272d79863013" target=_blank&gt;here&lt;/a&gt;.
The PressPass is &lt;a href="http://www.microsoft.com/presspass/features/2005/mar05/03-16WebServicesPreview.asp" target=_blank&gt;here&lt;/a&gt;.&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=46ad3c4f-d6fc-4ca7-8c0c-dd380637dca8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Announcements;Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=cba21fea-9745-49ce-b7eb-fc86bd3b7b9a</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,cba21fea-9745-49ce-b7eb-fc86bd3b7b9a.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While still playing around with the <a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank">Indigo</a> March-CTP
bits and having lots of fun exploring Addresses, Bindings and Contracts (ABC),
I was configuring and playing around with the Instancing behavior of an Indigo Service
(which I will talk more about later), I created 4 different services of the same interface
type and contract, each implementing a different instance behaviour. I am hosting
this svc in IIS and therefore, my endpoint address is provided by the host IIS. Therefore,
in my config file, I have this:
</p>
        <p>
    &lt;services&gt;<br />
      &lt;service 
<br />
          serviceType="IndigoBehaviourInstance.PrivateDischargePatientService"<br />
          behaviorConfiguration="SomeDischargePatientBehavior"&gt;<br />
        &lt;endpoint address=""<br />
                 
bindingSectionName="wsProfileDualHttpBinding"<br />
                 
bindingConfiguration="BindingOne" 
<br />
                 
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&gt;<br />
      &lt;/service&gt;<br />
      &lt;service 
<br />
          serviceType="IndigoBehaviourInstance.SingletonDischargePatientService"<br />
          behaviorConfiguration="SomeDischargePatientBehavior"&gt;<br />
        &lt;endpoint address=""<br />
                 
bindingSectionName="wsProfileDualHttpBinding"<br />
                 
bindingConfiguration="BindingOne" 
<br />
                 
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&gt;<br />
      &lt;/service&gt;<br />
      &lt;service 
<br />
          serviceType="IndigoBehaviourInstance.SharedDischargePatientService"<br />
          behaviorConfiguration="SomeDischargePatientBehavior"&gt;<br />
        &lt;endpoint address=""<br />
                 
bindingSectionName="wsProfileDualHttpBinding"<br />
                 
bindingConfiguration="BindingOne" 
<br />
                 
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&gt;<br />
      &lt;/service&gt;<br />
      &lt;service 
<br />
          serviceType="IndigoBehaviourInstance.PerCallDischargePatientService"<br />
          behaviorConfiguration="SomeDischargePatientBehavior"&gt;<br />
        &lt;endpoint address=""<br />
                 
bindingSectionName="wsProfileDualHttpBinding"<br />
                 
bindingConfiguration="BindingOne" 
<br />
                 
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&gt;<br />
      &lt;/service&gt;      
<br />
    &lt;/services&gt;
</p>
        <p>
As we can see from here, all bindings and contract types are the same related to these
4 different endpoint services...and since the endpoint address is provided by the
host, the only thing different is the serviceType, bearing in mind that each service
is implemented in by its own class. This does make the above configuration less intuitive
as it should be. Flexibility should be given to all different serviceTypes to be configured
much more intuitively. In this case, if the serviceType attribute is an element, it
allows for that flexibility.
</p>
        <p>
    &lt;services&gt;<br />
      &lt;service behaviorConfiguration="SomeDischargePatientBehavior"&gt;<br />
        &lt;serviceType type="IndigoBehaviourInstance.PrivateDischargePatientService"
/&gt;<br />
        &lt;serviceType type="IndigoBehaviourInstance.SingletonDischargePatientService"
/&gt;<br />
        &lt;serviceType type="IndigoBehaviourInstance.SharedDischargePatientService"
/&gt;<br />
        &lt;serviceType type="IndigoBehaviourInstance.PerCallDischargePatientService"
/&gt;   
<br />
        &lt;endpoint address=""<br />
                 
bindingSectionName="wsProfileDualHttpBinding"<br />
                 
bindingConfiguration="BindingOne" 
<br />
                 
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&gt;<br />
      &lt;/service&gt;<br />
    &lt;/services&gt;
</p>
        <p>
...or something to that effect...Now if the (multiple) endpoint elements can be done
this way, why not the serviceType ?
</p>
        <p>
Am I missing something here ?
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=cba21fea-9745-49ce-b7eb-fc86bd3b7b9a" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>INDIGO Questions: serviceType node as an XML element instead of an attribute ?</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,cba21fea-9745-49ce-b7eb-fc86bd3b7b9a.aspx</guid>
      <link>http://www.softwaremaker.net/blog/INDIGOQuestionsServiceTypeNodeAsAnXMLElementInsteadOfAnAttribute.aspx</link>
      <pubDate>Wed, 23 Mar 2005 21:00:12 GMT</pubDate>
      <description>&lt;p&gt;
While still&amp;nbsp;playing around with the &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx" target="_blank"&gt;Indigo&lt;/a&gt; March-CTP
bits and having lots of fun exploring Addresses, Bindings and Contracts&amp;nbsp;(ABC),
I was configuring and playing around with the Instancing behavior of an Indigo Service
(which I will talk more about later), I created 4 different services of the same interface
type and contract, each implementing a different instance behaviour. I am hosting
this svc in IIS and therefore, my endpoint address is provided by the host IIS. Therefore,
in my config file, I have this:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;services&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceType="IndigoBehaviourInstance.PrivateDischargePatientService"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behaviorConfiguration="SomeDischargePatientBehavior"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=""&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingSectionName="wsProfileDualHttpBinding"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingConfiguration="BindingOne" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceType="IndigoBehaviourInstance.SingletonDischargePatientService"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behaviorConfiguration="SomeDischargePatientBehavior"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=""&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingSectionName="wsProfileDualHttpBinding"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingConfiguration="BindingOne" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceType="IndigoBehaviourInstance.SharedDischargePatientService"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behaviorConfiguration="SomeDischargePatientBehavior"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=""&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingSectionName="wsProfileDualHttpBinding"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingConfiguration="BindingOne" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceType="IndigoBehaviourInstance.PerCallDischargePatientService"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behaviorConfiguration="SomeDischargePatientBehavior"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=""&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingSectionName="wsProfileDualHttpBinding"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingConfiguration="BindingOne" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/services&amp;gt;
&lt;/p&gt;
&lt;p&gt;
As we can see from here, all bindings and contract types are the same related to these
4 different endpoint services...and since the endpoint address is provided by the
host, the only thing different is the serviceType, bearing in mind that each service
is implemented in by its own class. This does make the above configuration less intuitive
as it should be. Flexibility should be given to all different serviceTypes to be configured
much more intuitively. In this case, if the serviceType attribute is an element, it
allows for that flexibility.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;services&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service behaviorConfiguration="SomeDischargePatientBehavior"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceType type="IndigoBehaviourInstance.PrivateDischargePatientService"
/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceType type="IndigoBehaviourInstance.SingletonDischargePatientService"
/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceType type="IndigoBehaviourInstance.SharedDischargePatientService"
/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceType type="IndigoBehaviourInstance.PerCallDischargePatientService"
/&amp;gt;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=""&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingSectionName="wsProfileDualHttpBinding"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bindingConfiguration="BindingOne" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
contractType="IndigoBehaviourInstance.IDischargeProcess,IndigoBehaviourInstance" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/services&amp;gt;
&lt;/p&gt;
&lt;p&gt;
...or something to that effect...Now if the (multiple) endpoint elements can be done
this way, why not the serviceType ?
&lt;/p&gt;
&lt;p&gt;
Am I missing something here ?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=cba21fea-9745-49ce-b7eb-fc86bd3b7b9a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=a8523bc7-4b48-4817-b2fe-717ae2d5e89f</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,a8523bc7-4b48-4817-b2fe-717ae2d5e89f.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As <a href="http://www.softwaremaker.net/blog/PermaLink,guid,efeecf7b-a2bc-45bc-8e71-3f16e586ce15.aspx" target="_blank">blogged</a> earlier,
I have been crossing more and more into the Indigo realm and ripping the
bits apart to see what it is made of. Some of my immediate work assigments
will primarily revolve around Indigo-WSE-SOAP and as someone who works in an
SI environment, interoperability is something I am very concerned about and I am therefore
very particular on what goes out on the wire.
</p>
        <p>
I had a chance to try out the message tracing, logging and activity management enchancements
in WinFX and I must say I am impressed...and we are still at CTP-bits !
</p>
        <p>
Now, I have been using external (SOAP and Tcp) tools to trace the messages on the
wire. BUT those are external tools and those of you who have done real project work
will know that in a real production environment in a client's site, these tools cannot
be so easily installed at our own luxury. Sure, we can write our own SOAP Extensions
and catch them in the pipeline but it takes a fair bit of grokking at the plumbings.
So having a configuration-based message tracing and activity management as first class
.NET features and tools is something that I have always wanted.
</p>
        <p>
The below is taken from the WinFX SDK &gt; Indigo Tools Documentation
</p>
        <p xmlns="">
          <font color="#808080">The icons to the left of the Activity names tell you what kind
of activity each is. The following table describes these icons.</font>
        </p>
        <h3 class="subHeading" xmlns="">
        </h3>
        <p>
          <table xmlns="">
            <tbody>
              <tr>
                <th>
                  <font color="#808080" size="2">Icon</font>
                </th>
                <th>
                  <font color="#808080" size="2">Activity </font>
                </th>
              </tr>
              <tr>
                <td>
                  <div>
                    <font color="#808080">
                      <img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_-774224648_60c243c3-8b34-4c82-a72b-f9cd8a0b8f90.gif" />
                    </font>
                  </div>
                </td>
                <td>
                  <p>
                    <font color="#808080" size="2">This Activity is a call out to a proxy.</font>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <div>
                    <font size="2">
                      <font color="#808080">
                        <img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_706950734_91b09838-bc25-4e8d-8127-07a75cd2ad2e.gif" />
                      </font>
                    </font>
                  </div>
                </td>
                <td>
                  <p>
                    <font color="#808080" size="2">This Activity is a Helper message, meaning that it
is not associated with sending or receiving a message.</font>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <div>
                    <font size="2">
                      <font color="#808080">
                        <img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_1816019189_e1584032-d5c1-4b56-9a9c-f23f509c79e2.gif" />
                      </font>
                    </font>
                  </div>
                </td>
                <td>
                  <p>
                    <font color="#808080" size="2">This Activity is a message from http.sys.</font>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <div>
                    <font size="2">
                      <font color="#808080">
                        <img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_1335162676_f62b6559-588f-4394-856b-8bdc830d0db5.gif" />
                      </font>
                    </font>
                  </div>
                </td>
                <td>
                  <p>
                    <font color="#808080" size="2">This Activity is an Operation (method invocation).</font>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <div>
                    <font size="2">
                      <font color="#808080">
                        <img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_1281718218_3c750f41-47aa-4f5f-a727-f37f163e6dbe.gif" />
                      </font>
                    </font>
                  </div>
                </td>
                <td>
                  <p>
                    <font color="#808080" size="2">This Activity is an Operation Return (processing a
response from an operation).</font>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <div>
                    <font size="2">
                      <font color="#808080">
                        <img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_-1789269125_c9fbaf31-56f0-4e1c-9cf0-b898885619e5.gif" />
                      </font>
                    </font>
                  </div>
                </td>
                <td>
                  <p>
                    <font color="#808080" size="2">The Activity type is unknown.</font>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p xmlns="">
          <font color="#808080">To view the traces in an activity, select that activity—or select
multiple activities using the CTRL or Shift keys.</font>
        </p>
        <p xmlns="">
With the right configuration at the Indigo Service Endpoint, we could specify where
we want to output our message traces. In the below case, we are telling it to spit
it out into the c:\logs\messages\ folder
</p>
        <p xmlns="">
          <font color="#808080">      [source name="IndigoMessageLogTraceSource"
switchValue="Verbose"]<br />
        [listeners]<br />
          [add name="multifile" 
<br />
              
type="System.ServiceModel.Diagnostics.MessageWriterTraceListener, system.servicemodel,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
<br />
              
initializeData="c:\logs\messages\" 
<br />
              
maxDiskSpace="1000" /]<br />
        [/listeners]<br />
      [/source]</font>
        </p>
        <p xmlns="">
If a trace source named "IndigoMessageLogTraceSource" is not configured, the message
logging feature will create a MessageWriterTraceListener by default and output the
message logs to %windir%\system32\logfiles\messages as shown by the configuration
below:
</p>
        <p xmlns="">
          <font color="#808080">   [!-- MessageLogging configuration --]<br />
   [system.serviceModel]<br />
      [diagnostics]<br />
         [!-- log all messages received or
sent at the transport level --]<br />
         [messageLogging logEntireMessage="true"<br />
                        
maxMessagesToLog="300"<br />
                        
logMessagesAtServiceLevel="false"<br />
                        
logMalformedMessages="true"<br />
                        
logMessagesAtTransportLevel="true" /]<br />
      [/diagnostics]<br />
   [/system.serviceModel]</font>
        </p>
        <p xmlns="">
The saved output message is prefix-ed with the processID (1648(IndigoConsole1.exe)_632469155560884432_1.xml)
which is great for file-parsing purposes. Since I am using the <strong><em>BasicProfileBinding</em></strong> of
Indigo's ServiceModel.Binding, what goes on the wire is of SOAP 1.1 message format
</p>
        <p xmlns="">
          <font color="#808080">  [s:Envelope xmlns:s="</font>
          <a href="http://schemas.xmlsoap.org/soap/envelope/">
            <font color="#808080">http://schemas.xmlsoap.org/soap/envelope/</font>
          </a>
          <font color="#808080">"]<br />
    [s:Header /]<br />
    [s:Body]<br />
      [ReturnSimpleGreetings xmlns="</font>
          <a href="http://xmlns.softwaremaker.net/">
            <font color="#808080">http://xmlns.softwaremaker.net/</font>
          </a>
          <font color="#808080">"]<br />
        [yourname]Softwaremaker[/yourname]<br />
      [/ReturnSimpleGreetings]<br />
    [/s:Body]<br />
  [/s:Envelope]</font>
        </p>
        <p xmlns="">
If time permits, I will be blogging more on the other formats with the other bindings
as we move along. Besides tracing on what's on the wire, Indigo allows you to configure
an end-to-end trace source using a XmlWriterTraceListener. The output is an xml-type
file with an e2e extension that is consumed and readily parsed by the WinFX's TraceViewer
Tool. The configuration looks something like this:
</p>
        <p xmlns="">
          <font color="#808080">         [source name="E2e"
switchValue="Verbose"]<br />
            [listeners]<br />
              
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.ServiceModel.e2e"
/]<br />
            [/listeners]<br />
         [/source]</font>
        </p>
        <p xmlns="">
You can further configure the service to track related System.Net trace sources
using a XmlWriterTraceListener as well with this configuration
</p>
        <p xmlns="">
          <font color="#808080">         [source name="System.Net"
switchValue="Verbose"]<br />
            [listeners]<br />
              
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.e2e"
/]<br />
            [/listeners]<br />
         [/source]<br />
         [source name="System.Net.HttpListener"
switchValue="Verbose"]<br />
            [listeners]<br />
              
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.HttpListener.e2e"
/]<br />
            [/listeners]<br />
         [/source]<br />
         [source name="System.Net.Sockets"
switchValue="Verbose"]<br />
            [listeners]<br />
              
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.Sockets.e2e"
/]<br />
            [/listeners]<br />
         [/source]<br />
         [source name="System.Net.Cache" switchValue="Verbose"]<br />
            [listeners]<br />
              
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.Cache.e2e"
/]<br />
            [/listeners]<br />
         [/source]</font>
        </p>
        <p xmlns="">
This may be a lot to digest at one go. I will strive to write about what each means
in my future posts and try to breakdown and dissect each of those items in the e2e
file that is captured and displayed in the TraceViewer Tool.
</p>
        <p xmlns="">
The fact that these message tracing, logging and activity management are first-class
features is great and places emphasis on the need to know what goes onto the wire
so it interoperates well with <em>the others.</em></p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=a8523bc7-4b48-4817-b2fe-717ae2d5e89f" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>INDIGO on the Wire: Message Tracing, Logging and Activity Management becomes First Class .NETizens in WinFX</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,a8523bc7-4b48-4817-b2fe-717ae2d5e89f.aspx</guid>
      <link>http://www.softwaremaker.net/blog/INDIGOOnTheWireMessageTracingLoggingAndActivityManagementBecomesFirstClassNETizensInWinFX.aspx</link>
      <pubDate>Sun, 20 Mar 2005 03:31:30 GMT</pubDate>
      <description>&lt;p&gt;
As &lt;a href="http://www.softwaremaker.net/blog/PermaLink,guid,efeecf7b-a2bc-45bc-8e71-3f16e586ce15.aspx" target=_blank&gt;blogged&lt;/a&gt; earlier,
I have been&amp;nbsp;crossing more and more into the Indigo realm&amp;nbsp;and ripping the
bits apart to see what it is made of.&amp;nbsp;Some&amp;nbsp;of&amp;nbsp;my immediate work assigments
will&amp;nbsp;primarily revolve around Indigo-WSE-SOAP and as someone who works in an
SI environment, interoperability is something I am very concerned about and I am therefore
very particular on what goes out on the wire.
&lt;/p&gt;
&lt;p&gt;
I had a chance to try out the message tracing, logging and activity management enchancements
in WinFX and I must say I am impressed...and we are still at CTP-bits !
&lt;/p&gt;
&lt;p&gt;
Now, I have been using external (SOAP and Tcp) tools to trace the messages on the
wire. BUT those are external tools and those of you who have done real project work
will know that in a real production environment in a client's site, these tools&amp;nbsp;cannot
be so easily installed at our own luxury. Sure, we can write our own SOAP Extensions
and catch them in the pipeline but it takes a fair bit of grokking at the plumbings.
So having a configuration-based message tracing and activity management as first class
.NET features and tools is something that I have always wanted.
&lt;/p&gt;
&lt;p&gt;
The below is taken from the WinFX SDK &amp;gt; Indigo Tools Documentation
&lt;/p&gt;
&lt;p xmlns=""&gt;
&lt;font color=#808080&gt;The icons to the left of the Activity names tell you what kind
of activity each is. The following table describes these icons.&lt;/font&gt;
&lt;/p&gt;
&lt;h3 class=subHeading xmlns=""&gt;
&lt;/h3&gt;
&lt;p&gt;
&lt;table xmlns=""&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;font color=#808080 size=2&gt;Icon&lt;/font&gt; 
&lt;/th&gt;
&lt;th&gt;
&lt;font color=#808080 size=2&gt;Activity &lt;/font&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;font color=#808080&gt;&lt;img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_-774224648_60c243c3-8b34-4c82-a72b-f9cd8a0b8f90.gif"&gt;&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
&lt;font color=#808080 size=2&gt;This Activity is a call out to a proxy.&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;font color=#808080&gt;&lt;img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_706950734_91b09838-bc25-4e8d-8127-07a75cd2ad2e.gif"&gt;&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
&lt;font color=#808080 size=2&gt;This Activity is a Helper message, meaning that it is not
associated with sending or receiving a message.&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;font color=#808080&gt;&lt;img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_1816019189_e1584032-d5c1-4b56-9a9c-f23f509c79e2.gif"&gt;&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
&lt;font color=#808080 size=2&gt;This Activity is a message from http.sys.&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;font color=#808080&gt;&lt;img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_1335162676_f62b6559-588f-4394-856b-8bdc830d0db5.gif"&gt;&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
&lt;font color=#808080 size=2&gt;This Activity is an Operation (method invocation).&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;font color=#808080&gt;&lt;img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_1281718218_3c750f41-47aa-4f5f-a727-f37f163e6dbe.gif"&gt;&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
&lt;font color=#808080 size=2&gt;This Activity is an Operation Return (processing a response
from an operation).&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;font color=#808080&gt;&lt;img alt="" src="http://winfx.msdn.microsoft.com/library/en-us/indigo_tools/local/Local_-1789269125_c9fbaf31-56f0-4e1c-9cf0-b898885619e5.gif"&gt;&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;
&lt;font color=#808080 size=2&gt;The Activity type is unknown.&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p xmlns=""&gt;
&lt;font color=#808080&gt;To view the traces in an activity, select that activity—or select
multiple activities using the CTRL or Shift keys.&lt;/font&gt; 
&lt;/p&gt;
&lt;p xmlns=""&gt;
With the right configuration at the Indigo Service Endpoint, we could specify where
we want to output our message traces. In the below case, we are telling it to spit
it out into the c:\logs\messages\ folder
&lt;/p&gt;
&lt;p xmlns=""&gt;
&lt;font color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [source name="IndigoMessageLogTraceSource"
switchValue="Verbose"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [add name="multifile" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
type="System.ServiceModel.Diagnostics.MessageWriterTraceListener, system.servicemodel,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
initializeData="c:\logs\messages\" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxDiskSpace="1000" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/source]&lt;/font&gt;
&lt;/p&gt;
&lt;p xmlns=""&gt;
If a trace source named "IndigoMessageLogTraceSource" is not configured, the message
logging feature will create a MessageWriterTraceListener by default and output the
message logs to %windir%\system32\logfiles\messages as shown by the configuration
below:
&lt;/p&gt;
&lt;p xmlns=""&gt;
&lt;font color=#808080&gt;&amp;nbsp;&amp;nbsp; [!-- MessageLogging configuration --]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [system.serviceModel]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [diagnostics]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [!-- log all messages received or
sent at the transport level --]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [messageLogging logEntireMessage="true"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
maxMessagesToLog="300"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
logMessagesAtServiceLevel="false"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
logMalformedMessages="true"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
logMessagesAtTransportLevel="true" /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/diagnostics]&lt;br&gt;
&amp;nbsp;&amp;nbsp; [/system.serviceModel]&lt;/font&gt;
&lt;/p&gt;
&lt;p xmlns=""&gt;
The saved output message is prefix-ed with the processID (1648(IndigoConsole1.exe)_632469155560884432_1.xml)
which is great for file-parsing purposes. Since I am using the &lt;strong&gt;&lt;em&gt;BasicProfileBinding&lt;/em&gt;&lt;/strong&gt; of
Indigo's ServiceModel.Binding, what goes on the wire is of SOAP 1.1 message format
&lt;/p&gt;
&lt;p xmlns=""&gt;
&lt;font color=#808080&gt;&amp;nbsp; [s:Envelope xmlns:s="&lt;/font&gt;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;font color=#808080&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/font&gt;&lt;/a&gt;&lt;font color=#808080&gt;"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [s:Header /]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [s:Body]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ReturnSimpleGreetings xmlns="&lt;/font&gt;&lt;a href="http://xmlns.softwaremaker.net/"&gt;&lt;font color=#808080&gt;http://xmlns.softwaremaker.net/&lt;/font&gt;&lt;/a&gt;&lt;font color=#808080&gt;"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [yourname]Softwaremaker[/yourname]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/ReturnSimpleGreetings]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [/s:Body]&lt;br&gt;
&amp;nbsp; [/s:Envelope]&lt;/font&gt;
&lt;/p&gt;
&lt;p xmlns=""&gt;
If time permits, I will be blogging more on the other formats with the other bindings
as we move along. Besides tracing on what's on the wire, Indigo allows you to configure
an end-to-end trace source using a XmlWriterTraceListener. The output is an xml-type
file with an e2e extension that is consumed and readily parsed by the WinFX's TraceViewer
Tool. The configuration looks something like this:
&lt;/p&gt;
&lt;p xmlns=""&gt;
&lt;font color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [source name="E2e"
switchValue="Verbose"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.ServiceModel.e2e"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/source]&lt;/font&gt;
&lt;/p&gt;
&lt;p xmlns=""&gt;
You can further configure the service to track&amp;nbsp;related System.Net trace sources
using a XmlWriterTraceListener as well with this configuration
&lt;/p&gt;
&lt;p xmlns=""&gt;
&lt;font color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [source name="System.Net"
switchValue="Verbose"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.e2e"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/source]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [source name="System.Net.HttpListener"
switchValue="Verbose"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.HttpListener.e2e"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/source]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [source name="System.Net.Sockets"
switchValue="Verbose"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.Sockets.e2e"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/source]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [source name="System.Net.Cache" switchValue="Verbose"]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\System.Net.Cache.e2e"
/]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/listeners]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [/source]&lt;/font&gt;
&lt;/p&gt;
&lt;p xmlns=""&gt;
This may be a lot to digest at one go. I will strive to write about what each means
in my future posts and try to breakdown and dissect each of those items in the e2e
file that is captured and displayed in the TraceViewer Tool.
&lt;/p&gt;
&lt;p xmlns=""&gt;
The fact that these message tracing, logging and activity management&amp;nbsp;are first-class
features is great and places emphasis on the need to know what goes onto the wire
so it interoperates well with &lt;em&gt;the others.&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=a8523bc7-4b48-4817-b2fe-717ae2d5e89f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=c3f64018-88e7-44cc-ae1d-390dffd96500</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,c3f64018-88e7-44cc-ae1d-390dffd96500.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
...or is it purple I am seeing...?
</p>
        <p>
New exciting work assignments come with the dawn of this impending day in the very
near horizon. I will update as we go along.
</p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=c3f64018-88e7-44cc-ae1d-390dffd96500" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>The sky is turning a hazy shade of blue soon...</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,c3f64018-88e7-44cc-ae1d-390dffd96500.aspx</guid>
      <link>http://www.softwaremaker.net/blog/TheSkyIsTurningAHazyShadeOfBlueSoon.aspx</link>
      <pubDate>Tue, 15 Mar 2005 22:31:50 GMT</pubDate>
      <description>&lt;p&gt;
...or is it purple I am seeing...?
&lt;/p&gt;
&lt;p&gt;
New exciting work assignments come with the dawn of this impending day in the very
near horizon. I will update as we go along.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=c3f64018-88e7-44cc-ae1d-390dffd96500" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
    <item>
      <trackback:ping>http://www.softwaremaker.net/blog/Trackback.aspx?guid=7493d81c-6e4c-43dd-9918-922d36f10fb0</trackback:ping>
      <pingback:server>http://www.softwaremaker.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.softwaremaker.net/blog/PermaLink,guid,7493d81c-6e4c-43dd-9918-922d36f10fb0.aspx</pingback:target>
      <dc:creator>William Tay</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://dotnetjunkies.com/WebLog/softwaremaker/category/1539.aspx" target="_blank">My
previous blogs on Indigo</a>
        </p>
        <img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=7493d81c-6e4c-43dd-9918-922d36f10fb0" />
        <br />
        <hr />
© William Tay 2012 | Swinging Technologist 
<br /><a href="http://www.softwaremaker.net/blog">http://www.softwaremaker.net/blog</a></body>
      <title>Previously, on Softwaremaker - Indigo</title>
      <guid isPermaLink="false">http://www.softwaremaker.net/blog/PermaLink,guid,7493d81c-6e4c-43dd-9918-922d36f10fb0.aspx</guid>
      <link>http://www.softwaremaker.net/blog/PreviouslyOnSoftwaremakerIndigo.aspx</link>
      <pubDate>Fri, 29 Oct 2004 15:33:55 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://dotnetjunkies.com/WebLog/softwaremaker/category/1539.aspx" target=_blank&gt;My
previous blogs on Indigo&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softwaremaker.net/blog/aggbug.ashx?id=7493d81c-6e4c-43dd-9918-922d36f10fb0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
© William Tay 2012 | Swinging Technologist 
&lt;br /&gt;
&lt;a href="http://www.softwaremaker.net/blog"&gt;http://www.softwaremaker.net/blog&lt;/a&gt;</description>
      <category>Windows Communication Foundation (WCF) aka Indigo</category>
    </item>
  </channel>
</rss>