<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:georss="http://www.georss.org/georss" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Mick's Breeze Blogs - Biztalk/Sharepoint/... - .NET Developer</title>
    <link>http://blogs.breeze.net/mickb/</link>
    <description>Things hard and not so hard....</description>
    <language>en-us</language>
    <copyright>Breeze</copyright>
    <lastBuildDate>Mon, 29 Apr 2013 00:27:38 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>mickb@breezetraining.com.au</managingEditor>
    <webMaster>mickb@breezetraining.com.au</webMaster>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=e364d6e1-50b2-4a20-9c34-4bc35f20bd26</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,e364d6e1-50b2-4a20-9c34-4bc35f20bd26.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,e364d6e1-50b2-4a20-9c34-4bc35f20bd26.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=e364d6e1-50b2-4a20-9c34-4bc35f20bd26</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While looking into purchasing MSDN licenses for a client here’s what I found:
</p>
        <p>
          <strong>For the US:</strong>
        </p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_4.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_thumb_1.png" width="951" height="600" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Now when you change the drop down from US to Australia we get these prices (given
that $AUD 1 = (approx) $USD 1
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_6.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_thumb_2.png" width="1034" height="600" />
          </a>
        </p>
        <p>
So for e.g. take a MSDN – VS.NET Test.
</p>
        <p>
          <font size="6">
            <strong>Aussie Dollar = $3,460   US= $2,170</strong> which
equates to <strong>$AUD 1 = $USD 0.627</strong></font>
        </p>
        <p>
          <font size="3">this is what happens when living in a 3rd world country…. <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/wlEmoticon-smile_2.png" /> -
absolutely outrageous.</font>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=e364d6e1-50b2-4a20-9c34-4bc35f20bd26" />
      </body>
      <title>MSDN: US prices vs Australian prices–what gives?</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,e364d6e1-50b2-4a20-9c34-4bc35f20bd26.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2013/04/29/MSDNUSPricesVsAustralianPriceswhatGives.aspx</link>
      <pubDate>Mon, 29 Apr 2013 00:27:38 GMT</pubDate>
      <description>&lt;p&gt;
While looking into purchasing MSDN licenses for a client here’s what I found:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;For the US:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_thumb_1.png" width="951" height="600"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Now when you change the drop down from US to Australia we get these prices (given
that $AUD 1 = (approx) $USD 1
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/image_thumb_2.png" width="1034" height="600"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
So for e.g. take a MSDN – VS.NET Test.
&lt;/p&gt;
&lt;p&gt;
&lt;font size="6"&gt;&lt;strong&gt;Aussie Dollar = $3,460&amp;nbsp;&amp;nbsp; US= $2,170&lt;/strong&gt; which
equates to &lt;strong&gt;$AUD 1 = $USD 0.627&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="3"&gt;this is what happens when living in a 3rd world country…. &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/MSDN-US-prices-vs-Australian-priceswhat-_9198/wlEmoticon-smile_2.png"&gt; -
absolutely outrageous.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=e364d6e1-50b2-4a20-9c34-4bc35f20bd26" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,e364d6e1-50b2-4a20-9c34-4bc35f20bd26.aspx</comments>
      <category>.NET Developer</category>
      <category>Dev</category>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=d4bde347-853b-41b0-9e1c-11ce2ecbf500</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,d4bde347-853b-41b0-9e1c-11ce2ecbf500.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,d4bde347-853b-41b0-9e1c-11ce2ecbf500.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=d4bde347-853b-41b0-9e1c-11ce2ecbf500</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After wrestling with this tonight for sometime I’ve finally cracked it. SP2013 RTMed
and alot of the sample code fails due to the fact that you need to now add ‘..;odata=verbose’
onto pretty much every call to SharePoint.
</p>
        <p>
Basically you get a series of errors such as:
</p>
        <p>
          <strong>MIME</strong>
          <strong>type</strong>
          <strong>could</strong>
          <strong>not</strong>
          <strong>be
found</strong>
          <strong>that matches</strong>
          <strong>the content</strong>
          <strong>type</strong>
          <strong>of
the response</strong>. <strong>None</strong><strong>of the supported</strong><strong>type</strong>(<strong>s</strong>)
'<strong>application/atom+xml;type=entry</strong>, <strong>application/atom+xml</strong>, <strong>application/json;odata=verbose</strong></p>
        <p>
 
</p>
        <p>
Previously alot of the sample code has
</p>
        <p>
$.getJSON(….) as part of the call to the server – as mentioned we now need to add
some custom header values of ‘<strong>odata=verbose</strong>’, so to save you hours
of slogging on this, the getJSON call doesn’t allow custom header values. You need
to use the <strong>$.ajax(…)</strong> for these calls.
</p>
        <p>
          <strong>READING FROM A LIST</strong>
        </p>
        <p>
          <strong>function getCustomers() {<br /></strong> 
</p>
        <p>
  // begin work to call across network<br />
  var requestUri = _spPageContextInfo.webAbsoluteUrl +<br />
               
"/_api/Web/Lists/getByTitle('CustomersREST')/items/" +<br />
               
"?$select=Id,FirstName,Title,WorkPhone" +<br />
               
"&amp;$orderby=Title,FirstName";<br />
    
<br />
  var requestHeaders = {<br />
      "accept": "application/json;odata=verbose"<br />
  }<br />
    // execute AJAX request 
<br />
  $.ajax({<br />
      url: requestUri,<br />
      type: 'GET',<br />
      dataType: 'json',<br />
      headers: requestHeaders,<br />
      success: onDataReturned,<br />
      error: onError<br />
  });<br />
}
</p>
        <p>
 
</p>
        <p>
          <strong>UPDATING A LIST ITEM</strong>
        </p>
        <p>
//Sample code to update a Customer List Item in a Customer List called ‘CustomersREST’
</p>
        <p>
          <strong>function updateCustomer(</strong>dialogResult, returnValue) {
</p>
        <p>
  if (dialogResult == SP.UI.DialogResult.OK) {<br />
    var Id = returnValue.Id;<br />
    var FirstName = returnValue.FirstName;<br />
    var LastName = returnValue.LastName;<br />
    var WorkPhone = returnValue.WorkPhone;<br />
    var etag = returnValue.etag;
</p>
        <p>
    var requestUri = _spPageContextInfo.webAbsoluteUrl +<br />
              "/_api/Web/Lists/getByTitle('CustomersREST')/items("
+ Id + ")";
</p>
        <p>
    var customerData = {<br />
      __metadata: { "type": "SP.Data.CustomersRESTListItem"
},<br />
      Title: LastName,<br />
      FirstName: FirstName,<br />
      WorkPhone: WorkPhone<br />
    };
</p>
        <p>
    requestBody = JSON.stringify(customerData);
</p>
        <p>
    var requestHeaders = {<br />
        "accept": "application/json;odata=verbose",<br />
        "X-RequestDigest": $("#__REQUESTDIGEST").val(),<br />
        "X-HTTP-Method": "MERGE",<br />
        "content-length": requestBody.length,<br />
        "content-type" : "application/json;odata=verbose",<br />
        "If-Match": etag<br />
    }
</p>
        <p>
    $.ajax({<br />
      url: requestUri,<br />
      type: "POST",<br />
      contentType: "application/json;odata=verbose",<br />
      headers: requestHeaders,<br />
      data: requestBody,<br />
      success: onSuccess,<br />
      error: onError<br />
    });
</p>
        <p>
  }
</p>
        <p>
}
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d4bde347-853b-41b0-9e1c-11ce2ecbf500" />
      </body>
      <title>SP2013: Updating a List using REST in OData format from JavaScript</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,d4bde347-853b-41b0-9e1c-11ce2ecbf500.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2013/02/11/SP2013UpdatingAListUsingRESTInODataFormatFromJavaScript.aspx</link>
      <pubDate>Mon, 11 Feb 2013 11:47:06 GMT</pubDate>
      <description>&lt;p&gt;
After wrestling with this tonight for sometime I’ve finally cracked it. SP2013 RTMed
and alot of the sample code fails due to the fact that you need to now add ‘..;odata=verbose’
onto pretty much every call to SharePoint.
&lt;/p&gt;
&lt;p&gt;
Basically you get a series of errors such as:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;MIME&lt;/strong&gt; &lt;strong&gt;type&lt;/strong&gt; &lt;strong&gt;could&lt;/strong&gt; &lt;strong&gt;not&lt;/strong&gt; &lt;strong&gt;be
found&lt;/strong&gt; &lt;strong&gt;that matches&lt;/strong&gt; &lt;strong&gt;the content&lt;/strong&gt; &lt;strong&gt;type&lt;/strong&gt; &lt;strong&gt;of
the response&lt;/strong&gt;. &lt;strong&gt;None&lt;/strong&gt; &lt;strong&gt;of the supported&lt;/strong&gt; &lt;strong&gt;type&lt;/strong&gt;(&lt;strong&gt;s&lt;/strong&gt;)
'&lt;strong&gt;application/atom+xml;type=entry&lt;/strong&gt;, &lt;strong&gt;application/atom+xml&lt;/strong&gt;, &lt;strong&gt;application/json;odata=verbose&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Previously alot of the sample code has
&lt;/p&gt;
&lt;p&gt;
$.getJSON(….) as part of the call to the server – as mentioned we now need to add
some custom header values of ‘&lt;strong&gt;odata=verbose&lt;/strong&gt;’, so to save you hours
of slogging on this, the getJSON call doesn’t allow custom header values. You need
to use the &lt;strong&gt;$.ajax(…)&lt;/strong&gt; for these calls.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;READING FROM A LIST&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;function getCustomers() {&lt;br&gt;
&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; // begin work to call across network&lt;br&gt;
&amp;nbsp; var requestUri = _spPageContextInfo.webAbsoluteUrl +&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;
"/_api/Web/Lists/getByTitle('CustomersREST')/items/" +&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;
"?$select=Id,FirstName,Title,WorkPhone" +&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;amp;$orderby=Title,FirstName";&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp; var requestHeaders = {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "accept": "application/json;odata=verbose"&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // execute AJAX request 
&lt;br&gt;
&amp;nbsp; $.ajax({&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: requestUri,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: 'GET',&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataType: 'json',&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; headers: requestHeaders,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success: onDataReturned,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error: onError&lt;br&gt;
&amp;nbsp; });&lt;br&gt;
}
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;UPDATING A LIST ITEM&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
//Sample code to update a Customer List Item in a Customer List called ‘CustomersREST’
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;function updateCustomer(&lt;/strong&gt;dialogResult, returnValue) {
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; if (dialogResult == SP.UI.DialogResult.OK) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var Id = returnValue.Id;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var FirstName = returnValue.FirstName;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var LastName = returnValue.LastName;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var WorkPhone = returnValue.WorkPhone;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var etag = returnValue.etag;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var requestUri = _spPageContextInfo.webAbsoluteUrl +&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; "/_api/Web/Lists/getByTitle('CustomersREST')/items("
+ Id + ")";
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var customerData = {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __metadata: { "type": "SP.Data.CustomersRESTListItem"
},&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title: LastName,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FirstName: FirstName,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WorkPhone: WorkPhone&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; requestBody = JSON.stringify(customerData);
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var requestHeaders = {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "accept": "application/json;odata=verbose",&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "X-RequestDigest": $("#__REQUESTDIGEST").val(),&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "X-HTTP-Method": "MERGE",&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "content-length": requestBody.length,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "content-type" : "application/json;odata=verbose",&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "If-Match": etag&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $.ajax({&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: requestUri,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: "POST",&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentType: "application/json;odata=verbose",&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; headers: requestHeaders,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data: requestBody,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success: onSuccess,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error: onError&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; }
&lt;/p&gt;
&lt;p&gt;
}
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d4bde347-853b-41b0-9e1c-11ce2ecbf500" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,d4bde347-853b-41b0-9e1c-11ce2ecbf500.aspx</comments>
      <category>.NET Developer</category>
      <category>SharePoint</category>
      <category>SharePoint/2013</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=6796a02c-0f1c-4d86-a7ef-8ed197666fda</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,6796a02c-0f1c-4d86-a7ef-8ed197666fda.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,6796a02c-0f1c-4d86-a7ef-8ed197666fda.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=6796a02c-0f1c-4d86-a7ef-8ed197666fda</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While setting up a new SharePoint solution one of the requirements was to embed a
Yammer Feed.
</p>
        <p>
So I followed the help document only to have an unusual situation:
</p>
        <p>
1) the feed wouldnt render in browse mode.
</p>
        <p>
2) the feed WOULD render in Edit Mode.
</p>
        <p>
The key to the situation was to declare a little more on the sample script Yammer
gave – adding ‘text/javascript’
</p>
        <p>
Here’s the working script – (one for the bat –utility belt)
</p>
        <p>
*tested from Win8, Firefox *
</p>
        <p>
&lt;script data-app-id='hyB2pTvrL36Y50py8EWj6A' type='text/javascript' src='<a href="https://assets.yammer.com/platform/yam.js'">https://assets.yammer.com/platform/yam.js'</a>&gt;&lt;/script&gt;<br />
&lt;script type='text/javascript'&gt;<br />
yam.connect.embedFeed(<br />
{ container: '#embedded-feed'<br />
, network: 'yournetworkhere' 
<br />
});<br />
&lt;/script&gt;<br />
&lt;div id='embedded-feed'&gt;&lt;/div&gt;
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6796a02c-0f1c-4d86-a7ef-8ed197666fda" />
      </body>
      <title>SP2013: Adding an Embedded Yammer Feed to SharePoint</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,6796a02c-0f1c-4d86-a7ef-8ed197666fda.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2013/02/07/SP2013AddingAnEmbeddedYammerFeedToSharePoint.aspx</link>
      <pubDate>Thu, 07 Feb 2013 12:41:39 GMT</pubDate>
      <description>&lt;p&gt;
While setting up a new SharePoint solution one of the requirements was to embed a
Yammer Feed.
&lt;/p&gt;
&lt;p&gt;
So I followed the help document only to have an unusual situation:
&lt;/p&gt;
&lt;p&gt;
1) the feed wouldnt render in browse mode.
&lt;/p&gt;
&lt;p&gt;
2) the feed WOULD render in Edit Mode.
&lt;/p&gt;
&lt;p&gt;
The key to the situation was to declare a little more on the sample script Yammer
gave – adding ‘text/javascript’
&lt;/p&gt;
&lt;p&gt;
Here’s the working script – (one for the bat –utility belt)
&lt;/p&gt;
&lt;p&gt;
*tested from Win8, Firefox *
&lt;/p&gt;
&lt;p&gt;
&amp;lt;script data-app-id='hyB2pTvrL36Y50py8EWj6A' type='text/javascript' src='&lt;a href="https://assets.yammer.com/platform/yam.js'"&gt;https://assets.yammer.com/platform/yam.js'&lt;/a&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;
&amp;lt;script type='text/javascript'&amp;gt;&lt;br&gt;
yam.connect.embedFeed(&lt;br&gt;
{ container: '#embedded-feed'&lt;br&gt;
, network: 'yournetworkhere' 
&lt;br&gt;
});&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;br&gt;
&amp;lt;div id='embedded-feed'&amp;gt;&amp;lt;/div&amp;gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6796a02c-0f1c-4d86-a7ef-8ed197666fda" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,6796a02c-0f1c-4d86-a7ef-8ed197666fda.aspx</comments>
      <category>.NET Developer</category>
      <category>SharePoint/2013</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=a91cb000-e8ab-4555-b075-1d8e0b1ae2d6</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,a91cb000-e8ab-4555-b075-1d8e0b1ae2d6.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,a91cb000-e8ab-4555-b075-1d8e0b1ae2d6.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=a91cb000-e8ab-4555-b075-1d8e0b1ae2d6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I recently ran into an interesting one while building some InfoPath forms for SP2010/2013
forms services.
</p>
        <p>
I wanted to return <strong>some Rich Text (XHTML) </strong>fields back from a WCF
WebService call.
</p>
        <p>
I was at the point as a developer, where I couldn’t even say ‘<strong>Works on my
machine…</strong>’.
</p>
        <p>
The problem was – no matter what I tried, I would always have *plain text* and no
‘richness’ of the Rich Text. Didn’t work for me.
</p>
        <p>
So I have:
</p>
        <p>
1) a basic WCF Web service – running on my dev environment.
</p>
        <p>
2) an InfoPath Form that makes the call and displays the results.
</p>
        <p>
          <strong>The WCF Service:</strong>
        </p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_4.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_1.png" width="358" height="310" />
          </a>
        </p>
        <p>
This is the field that I eventually want to return as RichText to InfoPath.
</p>
        <p>
Here’s the Service Method code (which basically goes into a file and returns back
a list of clauses) – just focus on the <strong>CONTENT = …GetXHTMLRichText(…)</strong></p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_6.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_2.png" width="561" height="401" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <strong>InfoPath and Returning a RichTextField<br /></strong>2 things need to happen for this to work.
</p>
        <p>
1. When InfoPath adds the WCF Service to the form, it needs to ‘detect’ the field
correctly when it build the underlying schema.<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_8.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_3.png" width="161" height="158" /></a><br /><br /><strong>You need (nb – ‘Content’ is my field name):<br /></strong>&lt;xs:element minOccurs="0" name="<strong>Content</strong>" nillable="true"&gt;<br />
               
&lt;xs:complexType mixed='true'&gt;<br />
                   
&lt;xs:sequence&gt;<br />
                       
&lt;xs:any minOccurs="0" processContents="lax" maxOccurs="unbounded" namespace="<a href="http://www.w3.org/1999/xhtml&quot;">http://www.w3.org/1999/xhtml"</a>&gt;&lt;/xs:any&gt;<br />
                   
&lt;/xs:sequence&gt;<br />
               
&lt;/xs:complexType&gt;
</p>
        <p>
&lt;/xs:element&gt;<br /><br />
Note the namespace on the ANY element above – this is the winner to tell InfoPath
that this is a richtext field.<br /></p>
        <p>
2. When returning data via this field (in my case the ‘<strong>Content’</strong> field),
it needs to be in a certain shape, as in:<br /><code>&lt;Content xmlns=<a href="http://yournamespace">http://yournamespace</a>&gt;<br />
    &lt;span xmlns="http://www.w3.org/1999/xhtml"&gt;Rich text here&lt;/div&gt;<br />
&lt;/Content&gt;</code></p>
        <p>
          <br />
Your rich text content needs to be ‘wrapped’ for InfoPath to play nicely with it.
</p>
        <p>
This was the purpose of my <strong>GetXMLRichText</strong> method as
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_10.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_4.png" width="546" height="263" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <strong>The gotcha</strong>:
</p>
        <p>
When I pointed InfoPath at my webservice and added a service reference I was getting
back a <strong>SimpleType</strong> for the field and not a <strong>ComplexType/Rich
Text field.</strong></p>
        <p>
The WCF Service WSDL was ‘almost there’ but not close enough:<br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_12.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_5.png" width="669" height="257" /></a><br /><br />
The <strong>Content </strong>field described in a <strong>ComplexType</strong> which
is almost there, but not quite.
</p>
        <p>
It’s missing the &lt;xs:complexType <strong>mixed=’true’</strong>&gt;…&lt;xs:any <strong>namespace=’http://www.w3.org/1999/xhtml’ </strong>…/&gt;.
The rest were good.
</p>
        <p>
          <strong>The fix:</strong>
        </p>
        <p>
Cutting a long story short, the simplest way forward here was to simply edit the form
components that InfoPath had built and correct the schema. Then reuse the form.
</p>
        <p>
The form looks like this:
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_18.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_8.png" width="848" height="479" />
          </a>
        </p>
        <p>
 
</p>
        <p>
From the <strong>File-&gt;Publish-&gt;Export Source Files </strong>you can get to
the source and edit the correct schema (XSD) file.
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_20.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_9.png" width="483" height="140" />
          </a>
          <br />
Close the form down in InfoPath (or you may even need to close InfoPath) to edit the
Schema.
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_22.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_10.png" width="666" height="463" />
          </a>
        </p>
        <p>
You may need to hunt through a few of them to find the right one. My file was <strong>GetKCCTerms12.xsd </strong></p>
        <p>
Modify, save and close that file.
</p>
        <p>
Right click on <strong>manifest.xsf –&gt; Design </strong>to launch InfoPath and then
select <strong>Save As</strong> to work with it as *.XSN form (*.xsn files are just
CABs with all these files inside)
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_24.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_11.png" width="647" height="74" />
          </a>
        </p>
        <p>
The final result as viewed from an InfoPath form – notice the bolding sent through.
</p>
        <p>
Enjoy,
</p>
        <p>
Mick.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a91cb000-e8ab-4555-b075-1d8e0b1ae2d6" />
      </body>
      <title>InfoPath: Returning RichText from a WCF Service to a Form</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,a91cb000-e8ab-4555-b075-1d8e0b1ae2d6.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/08/30/InfoPathReturningRichTextFromAWCFServiceToAForm.aspx</link>
      <pubDate>Thu, 30 Aug 2012 11:25:47 GMT</pubDate>
      <description>&lt;p&gt;
I recently ran into an interesting one while building some InfoPath forms for SP2010/2013
forms services.
&lt;/p&gt;
&lt;p&gt;
I wanted to return &lt;strong&gt;some Rich Text (XHTML) &lt;/strong&gt;fields back from a WCF
WebService call.
&lt;/p&gt;
&lt;p&gt;
I was at the point as a developer, where I couldn’t even say ‘&lt;strong&gt;Works on my
machine…&lt;/strong&gt;’.
&lt;/p&gt;
&lt;p&gt;
The problem was – no matter what I tried, I would always have *plain text* and no
‘richness’ of the Rich Text. Didn’t work for me.
&lt;/p&gt;
&lt;p&gt;
So I have:
&lt;/p&gt;
&lt;p&gt;
1) a basic WCF Web service – running on my dev environment.
&lt;/p&gt;
&lt;p&gt;
2) an InfoPath Form that makes the call and displays the results.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The WCF Service:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_1.png" width="358" height="310"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This is the field that I eventually want to return as RichText to InfoPath.
&lt;/p&gt;
&lt;p&gt;
Here’s the Service Method code (which basically goes into a file and returns back
a list of clauses) – just focus on the &lt;strong&gt;CONTENT = …GetXHTMLRichText(…)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_2.png" width="561" height="401"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;InfoPath and Returning a RichTextField&lt;br&gt;
&lt;/strong&gt;2 things need to happen for this to work.
&lt;/p&gt;
&lt;p&gt;
1. When InfoPath adds the WCF Service to the form, it needs to ‘detect’ the field
correctly when it build the underlying schema.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_8.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_3.png" width="161" height="158"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;You need (nb – ‘Content’ is my field name):&lt;br&gt;
&lt;/strong&gt;&amp;lt;xs:element minOccurs="0" name="&lt;strong&gt;Content&lt;/strong&gt;" nillable="true"&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;xs:complexType mixed='true'&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;xs:sequence&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;xs:any minOccurs="0" processContents="lax" maxOccurs="unbounded" namespace="&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml"&lt;/a&gt;&amp;gt;&amp;lt;/xs:any&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/xs:sequence&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;/xs:complexType&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/xs:element&amp;gt;&lt;br&gt;
&lt;br&gt;
Note the namespace on the ANY element above – this is the winner to tell InfoPath
that this is a richtext field.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
2. When returning data via this field (in my case the ‘&lt;strong&gt;Content’&lt;/strong&gt; field),
it needs to be in a certain shape, as in:&lt;br&gt;
&lt;code&gt;&amp;lt;Content xmlns=&lt;a href="http://yournamespace"&gt;http://yournamespace&lt;/a&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span xmlns="http://www.w3.org/1999/xhtml"&amp;gt;Rich text here&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;/Content&amp;gt;&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Your rich text content needs to be ‘wrapped’ for InfoPath to play nicely with it.
&lt;/p&gt;
&lt;p&gt;
This was the purpose of my &lt;strong&gt;GetXMLRichText&lt;/strong&gt; method as
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_10.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_4.png" width="546" height="263"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The gotcha&lt;/strong&gt;:
&lt;/p&gt;
&lt;p&gt;
When I pointed InfoPath at my webservice and added a service reference I was getting
back a &lt;strong&gt;SimpleType&lt;/strong&gt; for the field and not a &lt;strong&gt;ComplexType/Rich
Text field.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The WCF Service WSDL was ‘almost there’ but not close enough:&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_12.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_5.png" width="669" height="257"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
The &lt;strong&gt;Content &lt;/strong&gt;field described in a &lt;strong&gt;ComplexType&lt;/strong&gt; which
is almost there, but not quite.
&lt;/p&gt;
&lt;p&gt;
It’s missing the &amp;lt;xs:complexType &lt;strong&gt;mixed=’true’&lt;/strong&gt;&amp;gt;…&amp;lt;xs:any &lt;strong&gt;namespace=’http://www.w3.org/1999/xhtml’ &lt;/strong&gt;…/&amp;gt;.
The rest were good.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The fix:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Cutting a long story short, the simplest way forward here was to simply edit the form
components that InfoPath had built and correct the schema. Then reuse the form.
&lt;/p&gt;
&lt;p&gt;
The form looks like this:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_18.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_8.png" width="848" height="479"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
From the &lt;strong&gt;File-&amp;gt;Publish-&amp;gt;Export Source Files &lt;/strong&gt;you can get to
the source and edit the correct schema (XSD) file.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_20.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_9.png" width="483" height="140"&gt;&lt;/a&gt;
&lt;br&gt;
Close the form down in InfoPath (or you may even need to close InfoPath) to edit the
Schema.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_22.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_10.png" width="666" height="463"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
You may need to hunt through a few of them to find the right one. My file was &lt;strong&gt;GetKCCTerms12.xsd &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Modify, save and close that file.
&lt;/p&gt;
&lt;p&gt;
Right click on &lt;strong&gt;manifest.xsf –&amp;gt; Design &lt;/strong&gt;to launch InfoPath and then
select &lt;strong&gt;Save As&lt;/strong&gt; to work with it as *.XSN form (*.xsn files are just
CABs with all these files inside)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_24.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/InfoPath-Returning-RichText-from-a-WCF-S_11FDD/image_thumb_11.png" width="647" height="74"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The final result as viewed from an InfoPath form – notice the bolding sent through.
&lt;/p&gt;
&lt;p&gt;
Enjoy,
&lt;/p&gt;
&lt;p&gt;
Mick.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a91cb000-e8ab-4555-b075-1d8e0b1ae2d6" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,a91cb000-e8ab-4555-b075-1d8e0b1ae2d6.aspx</comments>
      <category>.NET Developer</category>
      <category>Dev</category>
      <category>SharePoint</category>
      <category>SharePoint/2010</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=bd73079f-c5df-44df-8c57-e462764d7e00</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,bd73079f-c5df-44df-8c57-e462764d7e00.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <georss:point>0 0</georss:point>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,bd73079f-c5df-44df-8c57-e462764d7e00.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=bd73079f-c5df-44df-8c57-e462764d7e00</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks, you've probably heard a fair bit about the make over of Azure into 'Azure
2.0' (the SDK is still 1.7)
</p>
        <p>
There's some great new tools within VS.NET to manage your environment better, even
a Service Bus 'explorer' which was much needed.
</p>
        <p>
I've collected a few links to start with for you guys to read up on when you've got
a moment:
</p>
        <p>
Azure 2.0 Details on:
</p>
        <ul>
          <li>
Windows Azure Powershell Extension - <a title="http://cloud.github.com/downloads/WindowsAzure/azure-sdk-tools/windowsazure-powershell.0.6.0.msi" href="http://cloud.github.com/downloads/WindowsAzure/azure-sdk-tools/windowsazure-powershell.0.6.0.msi">http://cloud.github.com/downloads/WindowsAzure/azure-sdk-tools/windowsazure-powershell.0.6.0.msi</a></li>
          <li>
Command Line Tools Independent of WebPI - <a title="https://www.windowsazure.com/en-us/manage/downloads/" href="https://www.windowsazure.com/en-us/manage/downloads/">https://www.windowsazure.com/en-us/manage/downloads/</a></li>
          <li>
Virtual Machines - FAQs etc - <a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj156003">http://msdn.microsoft.com/en-us/library/windowsazure/jj156003</a></li>
          <li>
Windows Azure Virtual Network - <a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj156007">http://msdn.microsoft.com/en-us/library/windowsazure/jj156007</a><ul><li>
Get slides from my previous presentation here - <a href="http://blogs.breeze.net/mickb/2012/06/08/AzureConnectingCloudAndOnPremisesApplicationsUsingWindowsAzureVirtualNetworkBreeze.aspx">Azure
Virtual Network 2.0</a></li></ul></li>
          <li>
Windows Azure Media Services - <a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh973629">http://msdn.microsoft.com/en-us/library/windowsazure/hh973629</a></li>
          <li>
Create and Deploying WebSite walk through - <a href="https://www.windowsazure.com/en-us/manage/services/web-sites/how-to-create-websites/">https://www.windowsazure.com/en-us/manage/services/web-sites/how-to-create-websites/</a><ul><li>
(like we need this one - seriously takes 3 minutes! - well done MS!)</li></ul></li>
          <li>
Azure Chalk Talk Videos - <a href="http://www.meetwindowsazure.com/DigitalChalkTalks">http://www.meetwindowsazure.com/DigitalChalkTalks</a><ul><li>
Azure Virtual Machines - <a href="http://media.ch9.ms/ch9/364a/0163cb8a-b13e-45f7-9c3d-f0616939364a/WindowsAzureVMs_high.mp4">Part
I</a> &amp; <a href="http://media.ch9.ms/ch9/fb2c/f46d9da9-2cb6-4e5e-9a23-e2feb53ffb2c/AzureLinuxVirtualMachinesVid_high.mp4">Part
II</a></li><li><a href="http://media.ch9.ms/ch9/b8b3/515502d7-5d92-4b71-9bfa-da04c6f7b8b3/WindowsAzureWebSites_high.mp4">Web
Sites with ASP.NET</a> (NB: <span style="font-size: 11pt"><font color="#1f497d" face="Calibri"><span lang="en-US">SSL
is not supported, but it will arrive when Win Server 2012)</span></font></span></li><li><a href="http://media.ch9.ms/ch9/1ed0/c1bbeab5-1e5f-4139-994c-74a2da361ed0/WindowsAzureNodeJS_high.mp4">Web
Sites with node.js</a></li><li><a href="http://media.ch9.ms/ch9/15b8/498655d8-9b23-437e-ab2d-ffb748f215b8/WindowsAzureOSSWebmatrix_high.mp4">Web
Sites with OSS Apps &amp; Web Matrix</a></li><li><a href="http://media.ch9.ms/ch9/53ff/772b6c83-cbd0-4701-8a8a-99b959e153ff/WindowsAzureCmd_high.mp4">Azure
Cross Platform Command Line Tools</a></li><li><a href="http://media.ch9.ms/ch9/64f6/c9312b46-1d87-4c1b-b160-36a4e5c664f6/WindowsAzureCSUpdate_high.mp4">Cloud
Services (aka perviously web+worker roles)</a></li><li><a href="http://media.ch9.ms/ch9/d925/433610e7-2721-4663-8976-952517aed925/Hadoop_high.mp4">Apache
Hadoop Based Services On Windows Azure</a></li><li><a href="http://media.ch9.ms/ch9/41d8/0304e0e2-f706-46c8-a8db-7e5bcbf941d8/WAHostedTFS_high.mp4">TFS
Service Preview Intro</a></li><li><a href="http://media.ch9.ms/ch9/aa24/f119d33d-0e09-4bc5-9f9b-fc485b59aa24/WindowsAzureTFSCI_high.mp4">Azure
Websites - Continuous Integration with TFS</a>. 
</li><li><a href="http://media.ch9.ms/ch9/45c8/58d7040e-8f0e-4063-8fb8-d3698b2d45c8/WindowsAzureSQLDB_high.mp4">Azure
SQL Databases Intro</a></li><li><a href="http://media.ch9.ms/ch9/235e/121bd0a0-407e-4ae2-a1a6-f049be7a235e/WindowsAzureStorageIntro_high.mp4">Azure
Storage Introduction</a></li></ul></li>
        </ul>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=bd73079f-c5df-44df-8c57-e462764d7e00" />
      </body>
      <title>Azure: Azure 1.7 SDK tid bits</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,bd73079f-c5df-44df-8c57-e462764d7e00.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/06/13/AzureAzure17SDKTidBits.aspx</link>
      <pubDate>Wed, 13 Jun 2012 01:54:11 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks, you've probably heard a fair bit about the make over of Azure into 'Azure
2.0' (the SDK is still 1.7)
&lt;/p&gt;
&lt;p&gt;
There's some great new tools within VS.NET to manage your environment better, even
a Service Bus 'explorer' which was much needed.
&lt;/p&gt;
&lt;p&gt;
I've collected a few links to start with for you guys to read up on when you've got
a moment:
&lt;/p&gt;
&lt;p&gt;
Azure 2.0 Details on:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Windows Azure Powershell Extension - &lt;a title="http://cloud.github.com/downloads/WindowsAzure/azure-sdk-tools/windowsazure-powershell.0.6.0.msi" href="http://cloud.github.com/downloads/WindowsAzure/azure-sdk-tools/windowsazure-powershell.0.6.0.msi"&gt;http://cloud.github.com/downloads/WindowsAzure/azure-sdk-tools/windowsazure-powershell.0.6.0.msi&lt;/a&gt; 
&lt;li&gt;
Command Line Tools Independent of WebPI - &lt;a title="https://www.windowsazure.com/en-us/manage/downloads/" href="https://www.windowsazure.com/en-us/manage/downloads/"&gt;https://www.windowsazure.com/en-us/manage/downloads/&lt;/a&gt; 
&lt;li&gt;
Virtual Machines - FAQs etc - &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj156003"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/jj156003&lt;/a&gt; 
&lt;li&gt;
Windows Azure Virtual Network - &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj156007"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/jj156007&lt;/a&gt; 
&lt;ul&gt;
&lt;li&gt;
Get slides from my previous presentation here - &lt;a href="http://blogs.breeze.net/mickb/2012/06/08/AzureConnectingCloudAndOnPremisesApplicationsUsingWindowsAzureVirtualNetworkBreeze.aspx"&gt;Azure
Virtual Network 2.0&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Windows Azure Media Services - &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh973629"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/hh973629&lt;/a&gt; 
&lt;li&gt;
Create and Deploying WebSite walk through - &lt;a href="https://www.windowsazure.com/en-us/manage/services/web-sites/how-to-create-websites/"&gt;https://www.windowsazure.com/en-us/manage/services/web-sites/how-to-create-websites/&lt;/a&gt; 
&lt;ul&gt;
&lt;li&gt;
(like we need this one - seriously takes 3 minutes! - well done MS!)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Azure Chalk Talk Videos - &lt;a href="http://www.meetwindowsazure.com/DigitalChalkTalks"&gt;http://www.meetwindowsazure.com/DigitalChalkTalks&lt;/a&gt; 
&lt;ul&gt;
&lt;li&gt;
Azure Virtual Machines - &lt;a href="http://media.ch9.ms/ch9/364a/0163cb8a-b13e-45f7-9c3d-f0616939364a/WindowsAzureVMs_high.mp4"&gt;Part
I&lt;/a&gt; &amp;amp; &lt;a href="http://media.ch9.ms/ch9/fb2c/f46d9da9-2cb6-4e5e-9a23-e2feb53ffb2c/AzureLinuxVirtualMachinesVid_high.mp4"&gt;Part
II&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/b8b3/515502d7-5d92-4b71-9bfa-da04c6f7b8b3/WindowsAzureWebSites_high.mp4"&gt;Web
Sites with ASP.NET&lt;/a&gt; (NB: &lt;span style="font-size: 11pt"&gt;&lt;font color="#1f497d" face="Calibri"&gt;&lt;span lang="en-US"&gt;SSL
is not supported, but it will arrive when Win Server 2012)&lt;/span&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/1ed0/c1bbeab5-1e5f-4139-994c-74a2da361ed0/WindowsAzureNodeJS_high.mp4"&gt;Web
Sites with node.js&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/15b8/498655d8-9b23-437e-ab2d-ffb748f215b8/WindowsAzureOSSWebmatrix_high.mp4"&gt;Web
Sites with OSS Apps &amp;amp; Web Matrix&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/53ff/772b6c83-cbd0-4701-8a8a-99b959e153ff/WindowsAzureCmd_high.mp4"&gt;Azure
Cross Platform Command Line Tools&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/64f6/c9312b46-1d87-4c1b-b160-36a4e5c664f6/WindowsAzureCSUpdate_high.mp4"&gt;Cloud
Services (aka perviously web+worker roles)&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/d925/433610e7-2721-4663-8976-952517aed925/Hadoop_high.mp4"&gt;Apache
Hadoop Based Services On Windows Azure&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/41d8/0304e0e2-f706-46c8-a8db-7e5bcbf941d8/WAHostedTFS_high.mp4"&gt;TFS
Service Preview Intro&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/aa24/f119d33d-0e09-4bc5-9f9b-fc485b59aa24/WindowsAzureTFSCI_high.mp4"&gt;Azure
Websites - Continuous Integration with TFS&lt;/a&gt;. 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/45c8/58d7040e-8f0e-4063-8fb8-d3698b2d45c8/WindowsAzureSQLDB_high.mp4"&gt;Azure
SQL Databases Intro&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://media.ch9.ms/ch9/235e/121bd0a0-407e-4ae2-a1a6-f049be7a235e/WindowsAzureStorageIntro_high.mp4"&gt;Azure
Storage Introduction&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=bd73079f-c5df-44df-8c57-e462764d7e00" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,bd73079f-c5df-44df-8c57-e462764d7e00.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
      <category>Azure/Integration</category>
      <category>Azure/ServiceBus</category>
      <category>Events</category>
      <category>Events/Recordings</category>
      <category>Tips</category>
      <category>Training</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=f3831866-a3ec-4038-8238-5cfa4c06962e</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,f3831866-a3ec-4038-8238-5cfa4c06962e.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,f3831866-a3ec-4038-8238-5cfa4c06962e.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=f3831866-a3ec-4038-8238-5cfa4c06962e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi guys, I gave an online presentation earlier this afternoon as part of Microsoft
Readiness on Azure Virtual Networks.
</p>
        <p>
I had the whole presentation prepared until the <a href="http://meetwindowsazure.com">http://meetwindowsazure.com</a> announcement,
where I had to go to the drawing board and just share all this goodness that was pouring
out in <strong>Azure V2.0.</strong></p>
        <p>
Thanks to the healthy turnout for those online and to those who registered, then check
the emails for a link shortly.
</p>
        <p>
As promised here’s the slide deck guys that I used through my demos
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Connecting-Cloud-and-On-Premises-A_126E3/Connecting%20Cloud%20and%20On-Premises%20Applications%20Using%20Windows%20Azure%20Virtual%20Network%20-%20Breeze_Mick%20Badran_2.png">
            <img title="Connecting Cloud and On-Premises Applications Using Windows Azure Virtual Network - Breeze_Mick Badran" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Connecting Cloud and On-Premises Applications Using Windows Azure Virtual Network - Breeze_Mick Badran" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Connecting-Cloud-and-On-Premises-A_126E3/Connecting%20Cloud%20and%20On-Premises%20Applications%20Using%20Windows%20Azure%20Virtual%20Network%20-%20Breeze_Mick%20Badran_thumb.png" width="359" height="270" />
          </a>
        </p>
        <p>
Presentation: 
</p>
        <div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:fea6bf58-f972-4617-8126-6bb26da7ccf7" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">
          <p>
            <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Connecting-Cloud-and-On-Premises-A_126E3/Connecting%20Cloud%20and%20On-Premises%20Applications%20Using%20Windows%20Azure%20Virtual%20Network%20-%20Breeze_Mick%20Badran.pdf" target="_blank">Presentations</a>
          </p>
        </div>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=f3831866-a3ec-4038-8238-5cfa4c06962e" />
      </body>
      <title>Azure: Connecting Cloud and On-Premises Applications Using Windows Azure Virtual Network - Breeze</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,f3831866-a3ec-4038-8238-5cfa4c06962e.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/06/08/AzureConnectingCloudAndOnPremisesApplicationsUsingWindowsAzureVirtualNetworkBreeze.aspx</link>
      <pubDate>Fri, 08 Jun 2012 11:24:57 GMT</pubDate>
      <description>&lt;p&gt;
Hi guys, I gave an online presentation earlier this afternoon as part of Microsoft
Readiness on Azure Virtual Networks.
&lt;/p&gt;
&lt;p&gt;
I had the whole presentation prepared until the &lt;a href="http://meetwindowsazure.com"&gt;http://meetwindowsazure.com&lt;/a&gt; announcement,
where I had to go to the drawing board and just share all this goodness that was pouring
out in &lt;strong&gt;Azure V2.0.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Thanks to the healthy turnout for those online and to those who registered, then check
the emails for a link shortly.
&lt;/p&gt;
&lt;p&gt;
As promised here’s the slide deck guys that I used through my demos
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Connecting-Cloud-and-On-Premises-A_126E3/Connecting%20Cloud%20and%20On-Premises%20Applications%20Using%20Windows%20Azure%20Virtual%20Network%20-%20Breeze_Mick%20Badran_2.png"&gt;&lt;img title="Connecting Cloud and On-Premises Applications Using Windows Azure Virtual Network - Breeze_Mick Badran" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Connecting Cloud and On-Premises Applications Using Windows Azure Virtual Network - Breeze_Mick Badran" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Connecting-Cloud-and-On-Premises-A_126E3/Connecting%20Cloud%20and%20On-Premises%20Applications%20Using%20Windows%20Azure%20Virtual%20Network%20-%20Breeze_Mick%20Badran_thumb.png" width="359" height="270"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Presentation: 
&lt;div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:fea6bf58-f972-4617-8126-6bb26da7ccf7" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Connecting-Cloud-and-On-Premises-A_126E3/Connecting%20Cloud%20and%20On-Premises%20Applications%20Using%20Windows%20Azure%20Virtual%20Network%20-%20Breeze_Mick%20Badran.pdf" target="_blank"&gt;Presentations&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=f3831866-a3ec-4038-8238-5cfa4c06962e" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,f3831866-a3ec-4038-8238-5cfa4c06962e.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
      <category>Azure/Integration</category>
      <category>Azure/ServiceBus</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
      <category>Events</category>
      <category>Events/Recordings</category>
      <category>Microsoft/Readiness</category>
      <category>Training</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=fc634923-0113-4eeb-8234-c3d8355f837a</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,fc634923-0113-4eeb-8234-c3d8355f837a.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,fc634923-0113-4eeb-8234-c3d8355f837a.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=fc634923-0113-4eeb-8234-c3d8355f837a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Now we’re talking….
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Virtual-Networks-from-Azure-V2.0_6A5A/image_2.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Virtual-Networks-from-Azure-V2.0_6A5A/image_thumb.png" width="644" height="277" />
          </a>
        </p>
        <p>
Off to do some damage…umm play.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=fc634923-0113-4eeb-8234-c3d8355f837a" />
      </body>
      <title>Azure: Virtual Networks from Azure V2.0</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,fc634923-0113-4eeb-8234-c3d8355f837a.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/06/07/AzureVirtualNetworksFromAzureV20.aspx</link>
      <pubDate>Thu, 07 Jun 2012 21:34:26 GMT</pubDate>
      <description>&lt;p&gt;
Now we’re talking….
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Virtual-Networks-from-Azure-V2.0_6A5A/image_2.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Virtual-Networks-from-Azure-V2.0_6A5A/image_thumb.png" width="644" height="277"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Off to do some damage…umm play.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=fc634923-0113-4eeb-8234-c3d8355f837a" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,fc634923-0113-4eeb-8234-c3d8355f837a.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
      <category>Azure/Integration</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=5aaf0645-b110-4d08-8684-ce5ffd9ba8d1</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,5aaf0645-b110-4d08-8684-ce5ffd9ba8d1.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,5aaf0645-b110-4d08-8684-ce5ffd9ba8d1.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=5aaf0645-b110-4d08-8684-ce5ffd9ba8d1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I thought I’d give it a go and see how far this would take me. (One of the Win8 x64
beta installs caused alot of grief)
</p>
        <p>
So my environment:
</p>
        <ul>
          <li>
Recent Win8 RC x64</li>
          <li>
Office 2010 x64</li>
          <li>
Outlook 2010 x64</li>
        </ul>
        <p>
Installed the CRM 2011 Client by going to the web address of our crm site e.g. <a href="https://crm.acme.com">https://crm.acme.com</a></p>
        <p>
There’s a button on page that says ‘download Dynamics CRM for Outlook’ – after a short
download and install all went well
</p>
        <p>
I grabbed CRM2011 CU8 - <a title="http://www.microsoft.com/en-us/download/details.aspx?id=29692" href="http://www.microsoft.com/en-us/download/details.aspx?id=29692">http://www.microsoft.com/en-us/download/details.aspx?id=29692</a> and
updated accordingly.
</p>
        <p>
Note at this point CRM plugin had not been configured.
</p>
        <p>
CRM Client Log files prove very helpful here:
</p>
        <p>
When I fired up Outlook and went to configure the CRM Plugin, Testing connection I
would get back 
</p>
        <p>
          <strong>“…we can’t authenticate your credentials…</strong>”
</p>
        <p>
Digging into the log files…..
</p>
        <p>
          <strong>C:\Users\mickb\AppData\Local\Microsoft\MSCRM\Logs\Crm50ClientConfig.log</strong>
        </p>
        <p>
22:05:18|  Error| Error connecting to URL: <a href="https://crm.acme.com/XRMServices/2011/Discovery.svc">https://crm.acme.com/XRMServices/2011/Discovery.svc</a> Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.IdentityModel,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The system cannot find the file specified.<br />
File name: 'Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'<br />
   at Microsoft.Xrm.Sdk.Client.ServiceConfiguration`1.CreateLocalChannelFactory()<br />
   at Microsoft.Xrm.Sdk.Client.ServiceConfiguration`1.CreateChannelFactory(ClientCredentials
clientCredentials)<br />
   at Microsoft.Xrm.Sdk.Client.DiscoveryServiceConfiguration.CreateChannelFactory(ClientCredentials
clientCredentials)<br />
   at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.get_ChannelFactory()<br />
   at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.CreateNewServiceChannel()<br />
   at Microsoft.Xrm.Sdk.Client.ServiceContextInitializer`1.Initialize(ServiceProxy`1
proxy)<br />
   at Microsoft.Xrm.Sdk.Client.DiscoveryServiceProxy.Execute(DiscoveryRequest
request)<br />
   at Microsoft.Crm.Application.Outlook.Config.DeploymentsInfo.DeploymentInfo.LoadOrganizations(AuthUIMode
uiMode, Form parentWindow, Credential credentials)<br />
   at Microsoft.Crm.Application.Outlook.Config.DeploymentsInfo.InternalLoadOrganizations(OrganizationDetailCollection
orgs, AuthUIMode uiMode, Form parentWindow)
</p>
        <p>
          <strong>Solution: Install the Windows Identity Framework 3.5 that comes with Win8
RC.</strong>
        </p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/CRM-2011-Getting-Dynamics-CRM-for-Outloo_137A9/SNAGHTML85316e.png">
            <img title="SNAGHTML85316e" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SNAGHTML85316e" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/CRM-2011-Getting-Dynamics-CRM-for-Outloo_137A9/SNAGHTML85316e_thumb.png" width="429" height="377" />
          </a>
        </p>
        <p>
          <br />
And in my case, you’re done.
</p>
        <p>
Happy CRM-ing.
</p>
        <p>
Now to fill in my timesheets <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Winking smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/CRM-2011-Getting-Dynamics-CRM-for-Outloo_137A9/wlEmoticon-winkingsmile_2.png" /></p>
        <p>
Mick.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=5aaf0645-b110-4d08-8684-ce5ffd9ba8d1" />
      </body>
      <title>CRM 2011: Getting Dynamics CRM for Outlook working on Win8 RC x64</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,5aaf0645-b110-4d08-8684-ce5ffd9ba8d1.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/06/07/CRM2011GettingDynamicsCRMForOutlookWorkingOnWin8RCX64.aspx</link>
      <pubDate>Thu, 07 Jun 2012 12:27:43 GMT</pubDate>
      <description>&lt;p&gt;
I thought I’d give it a go and see how far this would take me. (One of the Win8 x64
beta installs caused alot of grief)
&lt;/p&gt;
&lt;p&gt;
So my environment:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Recent Win8 RC x64&lt;/li&gt;
&lt;li&gt;
Office 2010 x64&lt;/li&gt;
&lt;li&gt;
Outlook 2010 x64&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Installed the CRM 2011 Client by going to the web address of our crm site e.g. &lt;a href="https://crm.acme.com"&gt;https://crm.acme.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
There’s a button on page that says ‘download Dynamics CRM for Outlook’ – after a short
download and install all went well
&lt;/p&gt;
&lt;p&gt;
I grabbed CRM2011 CU8 - &lt;a title="http://www.microsoft.com/en-us/download/details.aspx?id=29692" href="http://www.microsoft.com/en-us/download/details.aspx?id=29692"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=29692&lt;/a&gt; and
updated accordingly.
&lt;/p&gt;
&lt;p&gt;
Note at this point CRM plugin had not been configured.
&lt;/p&gt;
&lt;p&gt;
CRM Client Log files prove very helpful here:
&lt;/p&gt;
&lt;p&gt;
When I fired up Outlook and went to configure the CRM Plugin, Testing connection I
would get back 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;“…we can’t authenticate your credentials…&lt;/strong&gt;”
&lt;/p&gt;
&lt;p&gt;
Digging into the log files…..
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;C:\Users\mickb\AppData\Local\Microsoft\MSCRM\Logs\Crm50ClientConfig.log&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
22:05:18|&amp;nbsp; Error| Error connecting to URL: &lt;a href="https://crm.acme.com/XRMServices/2011/Discovery.svc"&gt;https://crm.acme.com/XRMServices/2011/Discovery.svc&lt;/a&gt; Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.IdentityModel,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The system cannot find the file specified.&lt;br&gt;
File name: 'Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Xrm.Sdk.Client.ServiceConfiguration`1.CreateLocalChannelFactory()&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Xrm.Sdk.Client.ServiceConfiguration`1.CreateChannelFactory(ClientCredentials
clientCredentials)&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Xrm.Sdk.Client.DiscoveryServiceConfiguration.CreateChannelFactory(ClientCredentials
clientCredentials)&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.get_ChannelFactory()&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.CreateNewServiceChannel()&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Xrm.Sdk.Client.ServiceContextInitializer`1.Initialize(ServiceProxy`1
proxy)&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Xrm.Sdk.Client.DiscoveryServiceProxy.Execute(DiscoveryRequest
request)&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Crm.Application.Outlook.Config.DeploymentsInfo.DeploymentInfo.LoadOrganizations(AuthUIMode
uiMode, Form parentWindow, Credential credentials)&lt;br&gt;
&amp;nbsp;&amp;nbsp; at Microsoft.Crm.Application.Outlook.Config.DeploymentsInfo.InternalLoadOrganizations(OrganizationDetailCollection
orgs, AuthUIMode uiMode, Form parentWindow)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Solution: Install the Windows Identity Framework 3.5 that comes with Win8
RC.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/CRM-2011-Getting-Dynamics-CRM-for-Outloo_137A9/SNAGHTML85316e.png"&gt;&lt;img title="SNAGHTML85316e" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SNAGHTML85316e" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/CRM-2011-Getting-Dynamics-CRM-for-Outloo_137A9/SNAGHTML85316e_thumb.png" width="429" height="377"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
And in my case, you’re done.
&lt;/p&gt;
&lt;p&gt;
Happy CRM-ing.
&lt;/p&gt;
&lt;p&gt;
Now to fill in my timesheets &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Winking smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/CRM-2011-Getting-Dynamics-CRM-for-Outloo_137A9/wlEmoticon-winkingsmile_2.png"&gt;
&lt;/p&gt;
&lt;p&gt;
Mick.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=5aaf0645-b110-4d08-8684-ce5ffd9ba8d1" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,5aaf0645-b110-4d08-8684-ce5ffd9ba8d1.aspx</comments>
      <category>.NET Developer</category>
      <category>CRM</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=65b00edc-6fb7-4df0-9d73-69b6cf2579d9</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,65b00edc-6fb7-4df0-9d73-69b6cf2579d9.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,65b00edc-6fb7-4df0-9d73-69b6cf2579d9.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=65b00edc-6fb7-4df0-9d73-69b6cf2579d9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I think at the moment, the short answer is <strong>no! </strong>Off to check the documentation…<br /><br /><strong>”To continue with this installation or upgrade…please remove!…”</strong></p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/e6b0381e0ae0_CDA4/image_4.png">
            <img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/e6b0381e0ae0_CDA4/image_thumb_1.png" width="490" height="471" />
          </a>
        </p>
        <p>
….
</p>
        <p>
          <font size="4">
            <strong>From the documentation – we uninstall TFS 2010 bits, but not
the DB obviously and you do….</strong>
          </font>
        </p>
        <p>
          <img alt="Step 3" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/ProcGuid_3.gif" /> Use
Control Panel to completely uninstall the previous version of Team Foundation Server.
If SharePoint Products is running on a computer other than Team Foundation Server,
you have to uninstall the TFS Extensions for SharePoint from the SharePoint server,
too. If SharePoint Products is on the TFS application tier, don’t worry: We’ll automatically
uninstall the TFS Extensions for SharePoint while we remove the old version of TFS. 
</p>
        <p>
          <img alt="Uninstall previous version" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/tfs-install-upgrade-uninstallTFS.png" />
        </p>
        <p>
          <img alt="Step 4" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/ProcGuid_4.gif" /> Run
the Team Foundation Server install from the product DVD and then use the Upgrade Configuration
wizard to upgrade your installation. But wait—if SharePoint Products is running on
a computer other than the computer running Team Foundation Server, you’ll first want
to install the new TFS Extensions for SharePoint on the SharePoint server. Similar
to the previous step, if SharePoint Products is on the TFS application tier, we’ll
automatically install the Extensions for SharePoint while we set up the new version
of TFS. 
</p>
        <p>
          <img alt="Select upgrade" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/tfs-install-upgrade-select.png" />
          <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=65b00edc-6fb7-4df0-9d73-69b6cf2579d9" />
        </p>
      </body>
      <title>TFS 2012: Upgrading from 2010</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,65b00edc-6fb7-4df0-9d73-69b6cf2579d9.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/06/04/TFS2012UpgradingFrom2010.aspx</link>
      <pubDate>Mon, 04 Jun 2012 04:57:24 GMT</pubDate>
      <description>&lt;p&gt;
I think at the moment, the short answer is &lt;strong&gt;no! &lt;/strong&gt;Off to check the documentation…&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;”To continue with this installation or upgrade…please remove!…”&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/e6b0381e0ae0_CDA4/image_4.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/e6b0381e0ae0_CDA4/image_thumb_1.png" width="490" height="471"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
….
&lt;/p&gt;
&lt;p&gt;
&lt;font size="4"&gt;&lt;strong&gt;From the documentation – we uninstall TFS 2010 bits, but not
the DB obviously and you do….&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="Step 3" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/ProcGuid_3.gif"&gt; Use
Control Panel to completely uninstall the previous version of Team Foundation Server.
If SharePoint Products is running on a computer other than Team Foundation Server,
you have to uninstall the TFS Extensions for SharePoint from the SharePoint server,
too. If SharePoint Products is on the TFS application tier, don’t worry: We’ll automatically
uninstall the TFS Extensions for SharePoint while we remove the old version of TFS. 
&lt;p&gt;
&lt;img alt="Uninstall previous version" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/tfs-install-upgrade-uninstallTFS.png"&gt; 
&lt;p&gt;
&lt;img alt="Step 4" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/ProcGuid_4.gif"&gt; Run
the Team Foundation Server install from the product DVD and then use the Upgrade Configuration
wizard to upgrade your installation. But wait—if SharePoint Products is running on
a computer other than the computer running Team Foundation Server, you’ll first want
to install the new TFS Extensions for SharePoint on the SharePoint server. Similar
to the previous step, if SharePoint Products is on the TFS application tier, we’ll
automatically install the Extensions for SharePoint while we set up the new version
of TFS. 
&lt;p&gt;
&lt;img alt="Select upgrade" src="mk:@MSITStore:D:%5CTFSInstall.chm::/art/tfs-install-upgrade-select.png"&gt;&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=65b00edc-6fb7-4df0-9d73-69b6cf2579d9" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,65b00edc-6fb7-4df0-9d73-69b6cf2579d9.aspx</comments>
      <category>.NET Developer</category>
      <category>General</category>
      <category>TFS</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=4a73e87e-c9e7-40a4-9061-4d1e547164c5</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,4a73e87e-c9e7-40a4-9061-4d1e547164c5.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <georss:point>0 0</georss:point>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,4a73e87e-c9e7-40a4-9061-4d1e547164c5.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=4a73e87e-c9e7-40a4-9061-4d1e547164c5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Finally we get some info on what IP ranges
are used for the Data Centers. Now when you have those conversations with the Network
security folks and when they ask "What IP addresses are you hitting?", when they want
to open up access for Azure Service Bus.<br /><br />
Here's the 'official' IP Ranges (you just hope it doesn't change on you...it works
for 3 days of the week, then the 4th it stops...that was an interesting one to solve)<br /><br /><a href="http://www.microsoft.com/en-us/download/details.aspx?id=29840">Windows Azure
DataCenter IP Ranges</a><br /><br />
This appeases my grief in a <a href="http://blogs.breeze.net/mickb/2012/02/02/AzureCurrentIPRangeOfDataCenters.aspx">previous
post</a><br /><p></p><img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=4a73e87e-c9e7-40a4-9061-4d1e547164c5" /></body>
      <title>Azure: Data Center IP Ranges Published</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,4a73e87e-c9e7-40a4-9061-4d1e547164c5.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/05/28/AzureDataCenterIPRangesPublished.aspx</link>
      <pubDate>Mon, 28 May 2012 22:25:50 GMT</pubDate>
      <description>Finally we get some info on what IP ranges are used for the Data Centers. Now when you have those conversations with the Network security folks and when they ask "What IP addresses are you hitting?", when they want to open up access for Azure Service Bus.&lt;br&gt;
&lt;br&gt;
Here's the 'official' IP Ranges (you just hope it doesn't change on you...it works
for 3 days of the week, then the 4th it stops...that was an interesting one to solve)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=29840"&gt;Windows Azure
DataCenter IP Ranges&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
This appeases my grief in a &lt;a href="http://blogs.breeze.net/mickb/2012/02/02/AzureCurrentIPRangeOfDataCenters.aspx"&gt;previous
post&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=4a73e87e-c9e7-40a4-9061-4d1e547164c5" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,4a73e87e-c9e7-40a4-9061-4d1e547164c5.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
      <category>Azure/ServiceBus</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=fa33a081-40cf-4f8f-8e05-831399774106</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,fa33a081-40cf-4f8f-8e05-831399774106.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,fa33a081-40cf-4f8f-8e05-831399774106.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=fa33a081-40cf-4f8f-8e05-831399774106</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks,
</p>
        <p>
We’re looking for someone who loves technology and is currently surrounded by .NET
technologies.<br />
Contact us if you want to be part of a great team that sinks their teeth into many
different projects, concepts and technologies.
</p>
        <p>
The most important thing I look for is your ‘can do’ attitude, the rest we can essentially
learn. Come and be part of a team that loves what they do, and do what they love.<br />
(Makes it easier to get up on these colder mornings <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Breeze-Jobs-.NET-Developer-who-want-mor_1052B/wlEmoticon-winkingsmile_2.png" />)
</p>
        <p>
Sydney based.
</p>
        <p>
If you’re interested and want to start the ball rolling - <a title="http://breeze.net/who-we-are/jobs.aspx" href="http://breeze.net/who-we-are/jobs.aspx">http://breeze.net/who-we-are/jobs.aspx</a><br />
(I might even get you to leave your CV at home for the interviews <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Breeze-Jobs-.NET-Developer-who-want-mor_1052B/wlEmoticon-winkingsmile_2.png" />)
</p>
        <p>
Talk to you soon,
</p>
        <p>
Mick.
</p>
        <p>
p.s. No agencies please.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=fa33a081-40cf-4f8f-8e05-831399774106" />
      </body>
      <title>Breeze Jobs: .NET Developer who want more out of life.</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,fa33a081-40cf-4f8f-8e05-831399774106.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/05/28/BreezeJobsNETDeveloperWhoWantMoreOutOfLife.aspx</link>
      <pubDate>Mon, 28 May 2012 08:38:48 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks,
&lt;/p&gt;
&lt;p&gt;
We’re looking for someone who loves technology and is currently surrounded by .NET
technologies.&lt;br&gt;
Contact us if you want to be part of a great team that sinks their teeth into many
different projects, concepts and technologies.
&lt;/p&gt;
&lt;p&gt;
The most important thing I look for is your ‘can do’ attitude, the rest we can essentially
learn. Come and be part of a team that loves what they do, and do what they love.&lt;br&gt;
(Makes it easier to get up on these colder mornings &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Breeze-Jobs-.NET-Developer-who-want-mor_1052B/wlEmoticon-winkingsmile_2.png"&gt;)
&lt;/p&gt;
&lt;p&gt;
Sydney based.
&lt;/p&gt;
&lt;p&gt;
If you’re interested and want to start the ball rolling - &lt;a title="http://breeze.net/who-we-are/jobs.aspx" href="http://breeze.net/who-we-are/jobs.aspx"&gt;http://breeze.net/who-we-are/jobs.aspx&lt;/a&gt;
&lt;br&gt;
(I might even get you to leave your CV at home for the interviews &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Breeze-Jobs-.NET-Developer-who-want-mor_1052B/wlEmoticon-winkingsmile_2.png"&gt;)
&lt;/p&gt;
&lt;p&gt;
Talk to you soon,
&lt;/p&gt;
&lt;p&gt;
Mick.
&lt;/p&gt;
&lt;p&gt;
p.s. No agencies please.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=fa33a081-40cf-4f8f-8e05-831399774106" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,fa33a081-40cf-4f8f-8e05-831399774106.aspx</comments>
      <category>.NET Developer</category>
      <category>Breeze</category>
      <category>Breeze/Jobs</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=b9e692ea-1f8e-4930-95ef-6fc8556b51c3</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,b9e692ea-1f8e-4930-95ef-6fc8556b51c3.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <georss:point>0 0</georss:point>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,b9e692ea-1f8e-4930-95ef-6fc8556b51c3.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=b9e692ea-1f8e-4930-95ef-6fc8556b51c3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Hi folks, recently I've been asked by several
students on how to create Parties, Agreements, Profiles etc. via code in BizTalk 2010.<br /><br />
I played with this along time ago while at Redmond as BizTalk 2010 was in the process
of being released.<br /><br />
So I've just rolled up my sleeves and provided a quick demo for you - the demo shows:<br /><ol><li>
How to enumerate and get at each of your TPM Partners.</li><li>
How to create Partners + Profiles within BizTalk 2010.</li></ol><b>Note: I've only tried this on BizTalk 2010</b> (&amp; needless to say I'm claiming
'works on my machine' :))<br /><br /><b>What we're talking about in BizTalk<br /></b>This section here....<br /><br /><img src="data:image/png;base64,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" alt="" /><br /><br /><br /><b>Show me the code....</b><br />
Well the magic is found in this DLL - 
<br /><b>C:\Program Files (x86)\Microsoft BizTalk Server 2010\Developer Tools\Microsoft.BizTalk.B2B.PartnerManagement.dll<br /></b><br />
- create a VS.NET 2010 app (for this demo I created a console app)<br />
- we make a reference to the above DLL (we also need to reference system.data.entity)<br />
- set a connectionstring to our BizTalk Management DB, mine is <b>BizTalkDB</b> (as
I rolled all the BizTalk DBs into one - for dev)<br />
- start enumerating.<br /><br /><b>C# Looks like this</b>-<br /><br /><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">static</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">void</span> Main(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>[]
args) { <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px">//enumerate
all the TPM Profiles in BizTalk</span> var builder <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> SqlConnectionStringBuilder(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"DATA
SOURCE=localhost;Initial Catalog=BizTalkDB;"</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">+</span><span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Integrated
Security=SSPI;MultipleActiveResultSets=True"</span>); var tmpCtx <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> TpmContext.Create(builder);
Console.WriteLine(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Connected
to BizTalk Global Parties"</span>); var partners <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> tmpCtx.Partners;
Console.WriteLine(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Number
of Parters:{0}"</span>, partners.Count()); Console.WriteLine(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"------------"</span>); <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">foreach</span> (var
ptr <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">in</span> partners)
{ var profiles <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> ptr.GetBusinessProfiles();
Console.WriteLine(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"{0}
Business Profiles:{1}"</span>, ptr.Name, profiles.Count); <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">foreach</span> (var
profile <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">in</span> profiles)
{ Console.WriteLine(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"\tProfile:{0}"</span>,
profile.Name); } } tmpCtx.Dispose(); <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (bCreateProfile)
{ createProfile(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Breeze
Partner #"</span>); } Console.WriteLine(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Finished"</span>);
Console.ReadLine(); }</span></pre><br /><b>Point to Note: </b>in the connection string I set 'MARS=true' just so we can enumerate
several collections at once through the one context. When updating or saving new,
partners and/or profiles I get errors and can't save through a MARs enabled connection.
(love to hear if you have different luck)<br /><br /><b>Creating a Partner + Profile<br /></b><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px">//
need to do this through a single threaded connection - no MARS</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">private</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">static</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">void</span> createProfile(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span> partnerName)
{ partnerName += DateTime.Now.ToString(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"yyyyMMdd-hhmmss"</span>) <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">+</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> Random().Next(0,
65535)); Console.WriteLine(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Writing
a new Profile for {0}"</span>, partnerName); var builder <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> SqlConnectionStringBuilder(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"DATA
SOURCE=localhost;Initial Catalog=BizTalkDB;Integrated Security=SSPI"</span>); var
tmpCtx <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> TpmContext.Create(builder);
var ptr <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> tmpCtx.CreatePartner(partnerName);
var pname <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span><span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Breeze
Profile-#"</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">+</span> DateTime.Now.ToString(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"yyyyMMdd-hhmmss"</span>) <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">+</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> Random().Next(0,
65535)); var bp <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> ptr.CreateBusinessProfile(pname);
bp.Description <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span><span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Created
from Code"</span>; var pcol <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> AS2ProtocolSettings(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"BreezeProtocolSettings"</span>);
bp.AddProtocolSettings(pcol); tmpCtx.SaveChanges(); tmpCtx.Dispose(); }</span></pre>And
that's pretty much all there is to it folks, have a play around with the APIs for
yourself - all undocumented of course.<br /><br />
Here's the Console App Solution I use (built for very demo purposes)<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/TPM%20API%20Demo.zip">TPM API
Demo.zip (32 KB)</a><br /><br />
Enjoy Mick!<br /><img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=b9e692ea-1f8e-4930-95ef-6fc8556b51c3" /></body>
      <title>BizTalk 2010: Creating TPM Partners through Code</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,b9e692ea-1f8e-4930-95ef-6fc8556b51c3.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/05/22/BizTalk2010CreatingTPMPartnersThroughCode.aspx</link>
      <pubDate>Tue, 22 May 2012 04:45:23 GMT</pubDate>
      <description>Hi folks, recently I've been asked by several students on how to create Parties, Agreements, Profiles etc. via code in BizTalk 2010.&lt;br&gt;
&lt;br&gt;
I played with this along time ago while at Redmond as BizTalk 2010 was in the process
of being released.&lt;br&gt;
&lt;br&gt;
So I've just rolled up my sleeves and provided a quick demo for you - the demo shows:&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
How to enumerate and get at each of your TPM Partners.&lt;/li&gt;
&lt;li&gt;
How to create Partners + Profiles within BizTalk 2010.&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;Note: I've only tried this on BizTalk 2010&lt;/b&gt; (&amp;amp; needless to say I'm claiming
'works on my machine' :))&lt;br&gt;
&lt;br&gt;
&lt;b&gt;What we're talking about in BizTalk&lt;br&gt;
&lt;/b&gt;This section here....&lt;br&gt;
&lt;br&gt;
&lt;img src="data:image/png;base64,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" alt=""&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Show me the code....&lt;/b&gt;
&lt;br&gt;
Well the magic is found in this DLL - 
&lt;br&gt;
&lt;b&gt;C:\Program Files (x86)\Microsoft BizTalk Server 2010\Developer Tools\Microsoft.BizTalk.B2B.PartnerManagement.dll&lt;br&gt;
&lt;/b&gt;
&lt;br&gt;
- create a VS.NET 2010 app (for this demo I created a console app)&lt;br&gt;
- we make a reference to the above DLL (we also need to reference system.data.entity)&lt;br&gt;
- set a connectionstring to our BizTalk Management DB, mine is &lt;b&gt;BizTalkDB&lt;/b&gt; (as
I rolled all the BizTalk DBs into one - for dev)&lt;br&gt;
- start enumerating.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;C# Looks like this&lt;/b&gt;-&lt;br&gt;
&lt;br&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;static&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;void&lt;/span&gt; Main(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;[]
args) { &lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;//enumerate
all the TPM Profiles in BizTalk&lt;/span&gt; var builder &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; SqlConnectionStringBuilder(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"DATA
SOURCE=localhost;Initial Catalog=BizTalkDB;"&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;+&lt;/span&gt; &lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Integrated
Security=SSPI;MultipleActiveResultSets=True"&lt;/span&gt;); var tmpCtx &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; TpmContext.Create(builder);
Console.WriteLine(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Connected
to BizTalk Global Parties"&lt;/span&gt;); var partners &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; tmpCtx.Partners;
Console.WriteLine(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Number
of Parters:{0}"&lt;/span&gt;, partners.Count()); Console.WriteLine(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"------------"&lt;/span&gt;); &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;foreach&lt;/span&gt; (var
ptr &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;in&lt;/span&gt; partners)
{ var profiles &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; ptr.GetBusinessProfiles();
Console.WriteLine(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"{0}
Business Profiles:{1}"&lt;/span&gt;, ptr.Name, profiles.Count); &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;foreach&lt;/span&gt; (var
profile &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;in&lt;/span&gt; profiles)
{ Console.WriteLine(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"\tProfile:{0}"&lt;/span&gt;,
profile.Name); } } tmpCtx.Dispose(); &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (bCreateProfile)
{ createProfile(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Breeze
Partner #"&lt;/span&gt;); } Console.WriteLine(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Finished"&lt;/span&gt;);
Console.ReadLine(); }&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;b&gt;Point to Note: &lt;/b&gt;in the connection string I set 'MARS=true' just so we can enumerate
several collections at once through the one context. When updating or saving new,
partners and/or profiles I get errors and can't save through a MARs enabled connection.
(love to hear if you have different luck)&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Creating a Partner + Profile&lt;br&gt;
&lt;/b&gt;&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;//
need to do this through a single threaded connection - no MARS&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;private&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;static&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;void&lt;/span&gt; createProfile(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt; partnerName)
{ partnerName += DateTime.Now.ToString(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"yyyyMMdd-hhmmss"&lt;/span&gt;) &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;+&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; Random().Next(0,
65535)); Console.WriteLine(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Writing
a new Profile for {0}"&lt;/span&gt;, partnerName); var builder &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; SqlConnectionStringBuilder(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"DATA
SOURCE=localhost;Initial Catalog=BizTalkDB;Integrated Security=SSPI"&lt;/span&gt;); var
tmpCtx &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; TpmContext.Create(builder);
var ptr &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; tmpCtx.CreatePartner(partnerName);
var pname &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Breeze
Profile-#"&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;+&lt;/span&gt; DateTime.Now.ToString(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"yyyyMMdd-hhmmss"&lt;/span&gt;) &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;+&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; Random().Next(0,
65535)); var bp &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; ptr.CreateBusinessProfile(pname);
bp.Description &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Created
from Code"&lt;/span&gt;; var pcol &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; AS2ProtocolSettings(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"BreezeProtocolSettings"&lt;/span&gt;);
bp.AddProtocolSettings(pcol); tmpCtx.SaveChanges(); tmpCtx.Dispose(); }&lt;/span&gt;&lt;/pre&gt;And
that's pretty much all there is to it folks, have a play around with the APIs for
yourself - all undocumented of course.&lt;br&gt;
&lt;br&gt;
Here's the Console App Solution I use (built for very demo purposes)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/TPM%20API%20Demo.zip"&gt;TPM API
Demo.zip (32 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Enjoy Mick!&lt;br&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=b9e692ea-1f8e-4930-95ef-6fc8556b51c3" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,b9e692ea-1f8e-4930-95ef-6fc8556b51c3.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/2010</category>
      <category>BizTalk/2010 R2</category>
      <category>BizTalk/Insights</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=6fcaa62e-199d-4631-bf3e-3bf8f140bb48</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=6fcaa62e-199d-4631-bf3e-3bf8f140bb48</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Local MS Developer pillar Andrew Coates spilled the beans on this next new language
to come out of MS Research. 
</p>
        <p>
          <strong>Db.NET</strong> or ‘D flat’ – F#, C# and the Cinderella of the 3 sisters ‘VB.NET’ 
<br />
(Last year I was introduced to F# over a 5 month project and absolutely loved the
simplicity and freshness of it – async was simple, tasks, functions and code that
would normally take 400 lines in C#, we were able to do in 100 in F#)<br /></p>
        <p>
It promises:
</p>
        <p>
- speed
</p>
        <p>
- optimisation (I wonder if it’ll be smart enough to run tasks on different CPU cores?)
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16.png">
            <img title="SNAGHTML7dd9a16" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SNAGHTML7dd9a16" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16_thumb.png" width="644" height="393" />
          </a>
        </p>
        <p>
There is a focus on Orchestration – data Orchestration found here <a title="http://thenextlanguage.net/a-focus-on-orchestration/" href="http://thenextlanguage.net/a-focus-on-orchestration/">http://thenextlanguage.net/a-focus-on-orchestration/</a></p>
        <p>
Where it talks about “An example of the close collaboration between the product team
and the company’s research arm is the use of <strong>Schenkerian Analysis</strong> in
the compiler to maximize orchestration between sections of the code.”
</p>
        <p>
Oooh I thought – let’s check out what this is <strong>Schenkerian Analysis</strong> and
a quick check of Wikipedia reveals <a title="http://en.wikipedia.org/wiki/Schenkerian_analysis" href="http://en.wikipedia.org/wiki/Schenkerian_analysis">http://en.wikipedia.org/wiki/Schenkerian_analysis</a></p>
        <p>
“<b>Schenkerian analysis</b> is a method of <a href="http://en.wikipedia.org/wiki/Musical_analysis">musical
analysis</a> of tonal music based on the <a href="http://en.wikipedia.org/wiki/Theory">theories</a> of <a href="http://en.wikipedia.org/wiki/Heinrich_Schenker">Heinrich
Schenker</a>. The goal of a Schenkerian analysis is to interpret the underlying structure
of a tonal work. The theory's basic tenets can be viewed as a way of defining <a href="http://en.wikipedia.org/wiki/Tonality">tonality</a> in
music. A Schenkerian analysis of a passage of music shows hierarchical relationships
among its pitches, and draws conclusions about the structure of the passage from this
hierarchy. The analysis is demonstrated through reductions of the music, using a specialized
symbolic form of musical notation that Schenker devised to demonstrate various <a href="http://en.wikipedia.org/wiki/Schenkerian_analysis#Techniques_of_prolongation">prolongational
techniques</a>. The concept of tonal prolongation, in which certain pitches determine
the goal of other, subordinate pitches, is a cornerstone of the pitch hierarchy that
Schenkerian analysis involves itself with.”
</p>
        <p>
So tones, pitches and music is where this algorithm has its roots…I can see how you
could take this analysis when applied to the frequency of music and apply it to the
frequency of code items; data being hit etc.
</p>
        <p>
I’ll crack open this <strong>VS.2011 extension and see what transpires…</strong></p>
        <p>
          <strong>Grab the TOOLS here - <a title="http://thenextlanguage.net/tools/" href="http://thenextlanguage.net/tools/">http://thenextlanguage.net/tools/</a></strong>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6fcaa62e-199d-4631-bf3e-3bf8f140bb48" />
      </body>
      <title>.NET: Microsoft’s new .NET language ‘D-flat’ .net</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/04/01/NETMicrosoftsNewNETLanguageDflatNet.aspx</link>
      <pubDate>Sun, 01 Apr 2012 10:10:48 GMT</pubDate>
      <description>&lt;p&gt;
Local MS Developer pillar Andrew Coates spilled the beans on this next new language
to come out of MS Research. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Db.NET&lt;/strong&gt; or ‘D flat’ – F#, C# and the Cinderella of the 3 sisters ‘VB.NET’ 
&lt;br&gt;
(Last year I was introduced to F# over a 5 month project and absolutely loved the
simplicity and freshness of it – async was simple, tasks, functions and code that
would normally take 400 lines in C#, we were able to do in 100 in F#)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
It promises:
&lt;/p&gt;
&lt;p&gt;
- speed
&lt;/p&gt;
&lt;p&gt;
- optimisation (I wonder if it’ll be smart enough to run tasks on different CPU cores?)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16.png"&gt;&lt;img title="SNAGHTML7dd9a16" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SNAGHTML7dd9a16" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16_thumb.png" width="644" height="393"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
There is a focus on Orchestration – data Orchestration found here &lt;a title="http://thenextlanguage.net/a-focus-on-orchestration/" href="http://thenextlanguage.net/a-focus-on-orchestration/"&gt;http://thenextlanguage.net/a-focus-on-orchestration/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Where it talks about “An example of the close collaboration between the product team
and the company’s research arm is the use of &lt;strong&gt;Schenkerian Analysis&lt;/strong&gt; in
the compiler to maximize orchestration between sections of the code.”
&lt;/p&gt;
&lt;p&gt;
Oooh I thought – let’s check out what this is &lt;strong&gt;Schenkerian Analysis&lt;/strong&gt; and
a quick check of Wikipedia reveals &lt;a title="http://en.wikipedia.org/wiki/Schenkerian_analysis" href="http://en.wikipedia.org/wiki/Schenkerian_analysis"&gt;http://en.wikipedia.org/wiki/Schenkerian_analysis&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
“&lt;b&gt;Schenkerian analysis&lt;/b&gt; is a method of &lt;a href="http://en.wikipedia.org/wiki/Musical_analysis"&gt;musical
analysis&lt;/a&gt; of tonal music based on the &lt;a href="http://en.wikipedia.org/wiki/Theory"&gt;theories&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/Heinrich_Schenker"&gt;Heinrich
Schenker&lt;/a&gt;. The goal of a Schenkerian analysis is to interpret the underlying structure
of a tonal work. The theory's basic tenets can be viewed as a way of defining &lt;a href="http://en.wikipedia.org/wiki/Tonality"&gt;tonality&lt;/a&gt; in
music. A Schenkerian analysis of a passage of music shows hierarchical relationships
among its pitches, and draws conclusions about the structure of the passage from this
hierarchy. The analysis is demonstrated through reductions of the music, using a specialized
symbolic form of musical notation that Schenker devised to demonstrate various &lt;a href="http://en.wikipedia.org/wiki/Schenkerian_analysis#Techniques_of_prolongation"&gt;prolongational
techniques&lt;/a&gt;. The concept of tonal prolongation, in which certain pitches determine
the goal of other, subordinate pitches, is a cornerstone of the pitch hierarchy that
Schenkerian analysis involves itself with.”
&lt;/p&gt;
&lt;p&gt;
So tones, pitches and music is where this algorithm has its roots…I can see how you
could take this analysis when applied to the frequency of music and apply it to the
frequency of code items; data being hit etc.
&lt;/p&gt;
&lt;p&gt;
I’ll crack open this &lt;strong&gt;VS.2011 extension and see what transpires…&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Grab the TOOLS here - &lt;a title="http://thenextlanguage.net/tools/" href="http://thenextlanguage.net/tools/"&gt;http://thenextlanguage.net/tools/&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6fcaa62e-199d-4631-bf3e-3bf8f140bb48" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</comments>
      <category>.NET Developer</category>
      <category>Async</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=ba708e69-c4d6-4981-8534-dec90142ce92</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,ba708e69-c4d6-4981-8534-dec90142ce92.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,ba708e69-c4d6-4981-8534-dec90142ce92.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=ba708e69-c4d6-4981-8534-dec90142ce92</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Easy but effective
</p>
        <p>
&lt;script type='text/javascript'&gt; 
<br />
var msg = "your big title goes here…";<br />
msg = " ..... " + msg;pos = 0;<br />
function scrollTitle() {<br />
document.title = msg.substring(pos, msg.length) + msg.substring(0, pos); pos++;<br />
if (pos &gt; msg.length) pos = 0<br />
window.setTimeout("scrollTitle()",300);<br />
}<br />
scrollTitle();<br />
&lt;/script&gt;
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=ba708e69-c4d6-4981-8534-dec90142ce92" />
      </body>
      <title>HTML: How to Scroll the HTML Title of a Page</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,ba708e69-c4d6-4981-8534-dec90142ce92.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/03/10/HTMLHowToScrollTheHTMLTitleOfAPage.aspx</link>
      <pubDate>Sat, 10 Mar 2012 04:12:07 GMT</pubDate>
      <description>&lt;p&gt;
Easy but effective
&lt;/p&gt;
&lt;p&gt;
&amp;lt;script type='text/javascript'&amp;gt; 
&lt;br&gt;
var msg = "your big title goes here…";&lt;br&gt;
msg = " ..... " + msg;pos = 0;&lt;br&gt;
function scrollTitle() {&lt;br&gt;
document.title = msg.substring(pos, msg.length) + msg.substring(0, pos); pos++;&lt;br&gt;
if (pos &amp;gt; msg.length) pos = 0&lt;br&gt;
window.setTimeout("scrollTitle()",300);&lt;br&gt;
}&lt;br&gt;
scrollTitle();&lt;br&gt;
&amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=ba708e69-c4d6-4981-8534-dec90142ce92" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,ba708e69-c4d6-4981-8534-dec90142ce92.aspx</comments>
      <category>.NET Developer</category>
      <category>Dev</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=7d63e5d6-8f80-4ec4-98cc-af690ff77155</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,7d63e5d6-8f80-4ec4-98cc-af690ff77155.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,7d63e5d6-8f80-4ec4-98cc-af690ff77155.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=7d63e5d6-8f80-4ec4-98cc-af690ff77155</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With the ever changing Azure space, chances are you’ve had services working a treat
and then one day just fail.
</p>
        <p>
“Can’t connect…" etc.
</p>
        <p>
This has happened to me twice this week – with over 14 IP Address ranges defined in
the client’s firewall rules.
</p>
        <p>
It appears that my service bus services were spun up or assigned another IP outside
the ‘allowed range’.
</p>
        <p>
It gets frustrating at times as generally the process goes as follows:
</p>
        <p>
1) fill out a form to request firewall changes. Include as much detail as possible.
</p>
        <p>
2) hand to the client and they delegate to their security/ops team to implement.
</p>
        <p>
3) confirmation comes back.
</p>
        <p>
4) start up ServiceBus service
</p>
        <p>
5) could work?? may fail – due to *another* IP address allocated in Windows Azure
not on the ‘allowed list of ranges’.
</p>
        <p>
6) fill out another form asking for another IP Address…<br />
…<br />
By the 3rd iteration of this process it all is beginning to look very unprofessional.
(in comparison, these guys are used to tasks such as ‘Access to SQL Server XXX – here’s
the ports, there’s the machine and done’. Azure on the other hand – ‘What IP Addresses
do you need? What ports?’… we need better information in this area)
</p>
        <p>
Anyway – here’s the most update to date list 10/02/2011.
</p>
        <p>
          <a title="http://blogs.msdn.com/b/windowsazureappfabricannounce/archive/2010/01/28/additional-data-centers-for-windows-azure-platform-appfabric.aspx" href="http://blogs.msdn.com/b/windowsazureappfabricannounce/archive/2010/01/28/additional-data-centers-for-windows-azure-platform-appfabric.aspx">http://blogs.msdn.com/b/windowsazureappfabricannounce/archive/2010/01/28/additional-data-centers-for-windows-azure-platform-appfabric.aspx</a>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=7d63e5d6-8f80-4ec4-98cc-af690ff77155" />
      </body>
      <title>Azure: Current IP Range of Data Centers</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,7d63e5d6-8f80-4ec4-98cc-af690ff77155.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/02/02/AzureCurrentIPRangeOfDataCenters.aspx</link>
      <pubDate>Thu, 02 Feb 2012 02:15:07 GMT</pubDate>
      <description>&lt;p&gt;
With the ever changing Azure space, chances are you’ve had services working a treat
and then one day just fail.
&lt;/p&gt;
&lt;p&gt;
“Can’t connect…" etc.
&lt;/p&gt;
&lt;p&gt;
This has happened to me twice this week – with over 14 IP Address ranges defined in
the client’s firewall rules.
&lt;/p&gt;
&lt;p&gt;
It appears that my service bus services were spun up or assigned another IP outside
the ‘allowed range’.
&lt;/p&gt;
&lt;p&gt;
It gets frustrating at times as generally the process goes as follows:
&lt;/p&gt;
&lt;p&gt;
1) fill out a form to request firewall changes. Include as much detail as possible.
&lt;/p&gt;
&lt;p&gt;
2) hand to the client and they delegate to their security/ops team to implement.
&lt;/p&gt;
&lt;p&gt;
3) confirmation comes back.
&lt;/p&gt;
&lt;p&gt;
4) start up ServiceBus service
&lt;/p&gt;
&lt;p&gt;
5) could work?? may fail – due to *another* IP address allocated in Windows Azure
not on the ‘allowed list of ranges’.
&lt;/p&gt;
&lt;p&gt;
6) fill out another form asking for another IP Address…&lt;br&gt;
…&lt;br&gt;
By the 3rd iteration of this process it all is beginning to look very unprofessional.
(in comparison, these guys are used to tasks such as ‘Access to SQL Server XXX – here’s
the ports, there’s the machine and done’. Azure on the other hand – ‘What IP Addresses
do you need? What ports?’… we need better information in this area)
&lt;/p&gt;
&lt;p&gt;
Anyway – here’s the most update to date list 10/02/2011.
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://blogs.msdn.com/b/windowsazureappfabricannounce/archive/2010/01/28/additional-data-centers-for-windows-azure-platform-appfabric.aspx" href="http://blogs.msdn.com/b/windowsazureappfabricannounce/archive/2010/01/28/additional-data-centers-for-windows-azure-platform-appfabric.aspx"&gt;http://blogs.msdn.com/b/windowsazureappfabricannounce/archive/2010/01/28/additional-data-centers-for-windows-azure-platform-appfabric.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=7d63e5d6-8f80-4ec4-98cc-af690ff77155" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,7d63e5d6-8f80-4ec4-98cc-af690ff77155.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
      <category>Azure/Integration</category>
      <category>Azure/ServiceBus</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=2ac84c34-76c2-4d0b-b20a-3d66a01ac265</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,2ac84c34-76c2-4d0b-b20a-3d66a01ac265.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,2ac84c34-76c2-4d0b-b20a-3d66a01ac265.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=2ac84c34-76c2-4d0b-b20a-3d66a01ac265</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently there’s been an update to the ‘on-premise’ AppFabric for Windows Server.
</p>
        <p>
Grab the update here - <a title="http://www.microsoft.com/download/en/details.aspx?id=27115" href="http://www.microsoft.com/download/en/details.aspx?id=27115">http://www.microsoft.com/download/en/details.aspx?id=27115</a> (runs
on win7, 2008, 2008R2)
</p>
        <p>
          <strong>What’s new</strong>
        </p>
        <p>
I’m in the process of updating my components, but the majority of updates seems to
be around caching and performance.
</p>
        <p>
          <a title="http://msdn.microsoft.com/en-us/library/hh351389.aspx" href="http://msdn.microsoft.com/en-us/library/hh351389.aspx">http://msdn.microsoft.com/en-us/library/hh351389.aspx</a>
        </p>
        <p>
 
</p>
        <h3 class="subHeading" style="word-wrap: break-word">
        </h3>
        <table style="word-wrap: break-word; border-top: #bbb 1px solid; border-right: #bbb 1px solid; border-collapse: collapse; border-bottom: #bbb 1px solid; border-left: #bbb 1px solid" width="100%">
          <tbody>
            <tr style="vertical-align: top">
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <strong>
                    <font face="Segoe UI">
                      <font style="font-size: 9.7pt">Read-Through/Write-Behind</font>
                    </font>
                  </strong>
                </p>
              </td>
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">This allows a backend provider
to be used on the cache servers to assist with retrieving and storing data to a backend,
such as a database. Read-through enables the cache to "read-through" to a backend
in the context of a Get request. Write-behind enables updates to cached data to be
saved asynchronously to the backend. For more information, see </font>
                  </font>
                  <font style="font-size: 9.7pt">
                    <a href="http://msdn.microsoft.com/en-us/library/hh361704.aspx">
                      <font color="#1364c4" face="Segoe UI">Creating
a Read-Through / Write-Behind Provider (AppFabric 1.1 Caching)</font>
                    </a>
                  </font>
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">.</font>
                  </font>
                </p>
              </td>
            </tr>
            <tr style="vertical-align: top">
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <strong>
                    <font face="Segoe UI">
                      <font style="font-size: 9.7pt">Graceful Shutdown</font>
                    </font>
                  </strong>
                </p>
              </td>
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">This is useful for moving data
from a single cache hosts to rest of the servers in the cache cluster before shutting
down the cache host for maintenance. This helps to prevent unexpected loss of cached
data in a running cache cluster. This can be accomplished with the <strong>Graceful</strong> parameter
of the <strong>Stop-CacheHost</strong> Windows PowerShell command.</font>
                  </font>
                </p>
              </td>
            </tr>
            <tr style="vertical-align: top">
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <strong>
                    <font face="Segoe UI">
                      <font style="font-size: 9.7pt">Domain Accounts</font>
                    </font>
                  </strong>
                </p>
              </td>
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">In addition to running the AppFabric
Caching Service with the NETWORK SERVICE account, you can now run the service as a
domain account. For more information, see </font>
                  </font>
                  <font style="font-size: 9.7pt">
                    <a href="http://msdn.microsoft.com/en-us/library/hh386447.aspx">
                      <font color="#1364c4" face="Segoe UI">Change
the Caching Service Account (AppFabric 1.1 Caching)</font>
                    </a>
                  </font>
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">.</font>
                  </font>
                </p>
              </td>
            </tr>
            <tr style="vertical-align: top">
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <strong>
                    <font face="Segoe UI">
                      <font style="font-size: 9.7pt">New ASP.NET Session State
and Output Caching Provider</font>
                    </font>
                  </strong>
                </p>
              </td>
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">New ASP.NET session state and
output caching providers are available. The new session state provider has support
for the lazy-loading of individual session state items using AppFabric Caching as
a backing store. This makes sites that have a mix of small and large session state
data more efficient, because pages that don't need large session state items won't
incur the cost of sending this data over the network. For more information, see </font>
                  </font>
                  <font style="font-size: 9.7pt">
                    <a href="http://msdn.microsoft.com/en-us/library/hh361705.aspx">
                      <font color="#1364c4" face="Segoe UI">Using
the ASP.NET 4 Caching Providers for AppFabric 1.1</font>
                    </a>
                  </font>
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">.</font>
                  </font>
                </p>
              </td>
            </tr>
            <tr style="vertical-align: top">
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <strong>
                    <font face="Segoe UI">
                      <font style="font-size: 9.7pt">Compression</font>
                    </font>
                  </strong>
                </p>
              </td>
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">You can now enable compression
for cache clients. For more information, see </font>
                  </font>
                  <font style="font-size: 9.7pt">
                    <a href="http://msdn.microsoft.com/en-us/library/hh351483.aspx">
                      <font color="#1364c4" face="Segoe UI">Application
Configuration Settings (AppFabric 1.1 Caching)</font>
                    </a>
                  </font>
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">.</font>
                  </font>
                </p>
              </td>
            </tr>
            <tr style="vertical-align: top">
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <strong>
                    <font face="Segoe UI">
                      <font style="font-size: 9.7pt">Multiple Cache Client
Application Configuration Sections</font>
                    </font>
                  </strong>
                </p>
              </td>
              <td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff">
                <p style="margin-bottom: 0px; position: relative">
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">A new </font>
                  </font>
                  <font style="font-size: 9.7pt">
                    <code>dataCacheClients</code>
                    <font face="Segoe UI"> section
is available that allows you to specify multiple named </font>
                    <code>dataCacheClient</code>
                    <font face="Segoe UI"> sections
in an application configuration file. You can then programmatically specify which
group of cache client settings to use at runtime. For more information, see </font>
                    <a href="http://msdn.microsoft.com/en-us/library/hh351483.aspx">
                      <font color="#1364c4" face="Segoe UI">Application
Configuration Settings (AppFabric 1.1 Caching)</font>
                    </a>
                  </font>
                  <font face="Segoe UI">
                    <font style="font-size: 9.7pt">. </font>
                  </font>
                </p>
              </td>
            </tr>
          </tbody>
        </table>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=2ac84c34-76c2-4d0b-b20a-3d66a01ac265" />
      </body>
      <title>Microsoft AppFabric 1.1 for Windows Server–released!</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,2ac84c34-76c2-4d0b-b20a-3d66a01ac265.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/01/25/MicrosoftAppFabric11ForWindowsServerreleased.aspx</link>
      <pubDate>Wed, 25 Jan 2012 23:14:06 GMT</pubDate>
      <description>&lt;p&gt;
Recently there’s been an update to the ‘on-premise’ AppFabric for Windows Server.
&lt;/p&gt;
&lt;p&gt;
Grab the update here - &lt;a title="http://www.microsoft.com/download/en/details.aspx?id=27115" href="http://www.microsoft.com/download/en/details.aspx?id=27115"&gt;http://www.microsoft.com/download/en/details.aspx?id=27115&lt;/a&gt; (runs
on win7, 2008, 2008R2)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What’s new&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I’m in the process of updating my components, but the majority of updates seems to
be around caching and performance.
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://msdn.microsoft.com/en-us/library/hh351389.aspx" href="http://msdn.microsoft.com/en-us/library/hh351389.aspx"&gt;http://msdn.microsoft.com/en-us/library/hh351389.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3 class="subHeading" style="word-wrap: break-word"&gt;
&lt;/h3&gt;
&lt;table style="word-wrap: break-word; border-top: #bbb 1px solid; border-right: #bbb 1px solid; border-collapse: collapse; border-bottom: #bbb 1px solid; border-left: #bbb 1px solid" width="100%"&gt;
&lt;tbody&gt;
&lt;tr style="vertical-align: top"&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;strong&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;Read-Through/Write-Behind&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;This allows a backend provider
to be used on the cache servers to assist with retrieving and storing data to a backend,
such as a database. Read-through enables the cache to "read-through" to a backend
in the context of a Get request. Write-behind enables updates to cached data to be
saved asynchronously to the backend. For more information, see &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.7pt"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh361704.aspx"&gt;&lt;font color="#1364c4" face="Segoe UI"&gt;Creating
a Read-Through / Write-Behind Provider (AppFabric 1.1 Caching)&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="vertical-align: top"&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;strong&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;Graceful Shutdown&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;This is useful for moving data
from a single cache hosts to rest of the servers in the cache cluster before shutting
down the cache host for maintenance. This helps to prevent unexpected loss of cached
data in a running cache cluster. This can be accomplished with the &lt;strong&gt;Graceful&lt;/strong&gt; parameter
of the &lt;strong&gt;Stop-CacheHost&lt;/strong&gt; Windows PowerShell command.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="vertical-align: top"&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;strong&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;Domain Accounts&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;In addition to running the AppFabric
Caching Service with the NETWORK SERVICE account, you can now run the service as a
domain account. For more information, see &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.7pt"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh386447.aspx"&gt;&lt;font color="#1364c4" face="Segoe UI"&gt;Change
the Caching Service Account (AppFabric 1.1 Caching)&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="vertical-align: top"&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;strong&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;New ASP.NET Session State
and Output Caching Provider&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;New ASP.NET session state and
output caching providers are available. The new session state provider has support
for the lazy-loading of individual session state items using AppFabric Caching as
a backing store. This makes sites that have a mix of small and large session state
data more efficient, because pages that don't need large session state items won't
incur the cost of sending this data over the network. For more information, see &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.7pt"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh361705.aspx"&gt;&lt;font color="#1364c4" face="Segoe UI"&gt;Using
the ASP.NET 4 Caching Providers for AppFabric 1.1&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="vertical-align: top"&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;strong&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;Compression&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;You can now enable compression
for cache clients. For more information, see &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.7pt"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh351483.aspx"&gt;&lt;font color="#1364c4" face="Segoe UI"&gt;Application
Configuration Settings (AppFabric 1.1 Caching)&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="vertical-align: top"&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;strong&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;Multiple Cache Client
Application Configuration Sections&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; padding-bottom: 9px; padding-top: 9px; padding-left: 4px; border-left: 1px solid; line-height: 14pt; padding-right: 4px; background-color: #fff"&gt;
&lt;p style="margin-bottom: 0px; position: relative"&gt;
&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;A new &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.7pt"&gt;&lt;code&gt;dataCacheClients&lt;/code&gt;&lt;font face="Segoe UI"&gt; section
is available that allows you to specify multiple named &lt;/font&gt;&lt;code&gt;dataCacheClient&lt;/code&gt;&lt;font face="Segoe UI"&gt; sections
in an application configuration file. You can then programmatically specify which
group of cache client settings to use at runtime. For more information, see &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh351483.aspx"&gt;&lt;font color="#1364c4" face="Segoe UI"&gt;Application
Configuration Settings (AppFabric 1.1 Caching)&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size: 9.7pt"&gt;. &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=2ac84c34-76c2-4d0b-b20a-3d66a01ac265" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,2ac84c34-76c2-4d0b-b20a-3d66a01ac265.aspx</comments>
      <category>.NET Developer</category>
      <category>AppFabricServer</category>
      <category>Azure</category>
      <category>Azure/Integration</category>
      <category>BizTalk/2010</category>
      <category>BizTalk/2010 R2</category>
      <category>Dev</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=57f9b076-24b0-404a-a5b0-d10580298bda</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,57f9b076-24b0-404a-a5b0-d10580298bda.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,57f9b076-24b0-404a-a5b0-d10580298bda.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=57f9b076-24b0-404a-a5b0-d10580298bda</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks, welcome to Monday…so I thought.
</p>
        <p>
Here I was registering a message inspector which should take 5 mins tops.
</p>
        <p>
Find the right config, make sure the .NET full assembly name is cool and away we go.
</p>
        <p>
I wanted to use this guy from my custom WCF Adapter within BizTalk – so I needed my
new message inspector to be seen by BizTalk.
</p>
        <p>
So I used:
</p>
        <p>
&lt;add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"/&gt;
</p>
        <p>
and added this guy to the &lt;<strong>behaviorExtensions&gt; </strong>element in the <strong>Machine.Config
for .NET 4.0 x64/.NET 4.0 </strong>(&amp; .NET 2.0 for good measure)
</p>
        <p>
As if a scene from SpongeBob,… <strong>3 hours later….</strong></p>
        <p>
I had triple check GACs, caches, full assembly names etc…<a href="http://blogs.breeze.net/scotts" target="_blank">Scotty
popped</a> his head around and said “Oh yeah I had this one ages ago you need to use
this…”
</p>
        <p>
&lt;add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,
Breeze.WCF.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c2c8c7e827e9dd6a"/&gt;
</p>
        <p>
          <strong>Can you spot the difference?</strong>
        </p>
        <p>
SPACES!!!!
</p>
        <p>
Interestingly enough – this work is part of a .NET plugin I wrote for IIS 7.5 and
to register the plugin you use <strong>“Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"</strong></p>
        <p>
          <strong>NO SPACES!</strong>
        </p>
        <p>
My head hurts for a Monday…
</p>
        <p>
Hopefully you reclaim the hours I’ve lost here.
</p>
        <p>
Mick.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=57f9b076-24b0-404a-a5b0-d10580298bda" />
      </body>
      <title>BizTalk: Registering a WCF Message Inspector–hours I’ll never get back!!!</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,57f9b076-24b0-404a-a5b0-d10580298bda.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/01/23/BizTalkRegisteringAWCFMessageInspectorhoursIllNeverGetBack.aspx</link>
      <pubDate>Mon, 23 Jan 2012 05:52:20 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks, welcome to Monday…so I thought.
&lt;/p&gt;
&lt;p&gt;
Here I was registering a message inspector which should take 5 mins tops.
&lt;/p&gt;
&lt;p&gt;
Find the right config, make sure the .NET full assembly name is cool and away we go.
&lt;/p&gt;
&lt;p&gt;
I wanted to use this guy from my custom WCF Adapter within BizTalk – so I needed my
new message inspector to be seen by BizTalk.
&lt;/p&gt;
&lt;p&gt;
So I used:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"/&amp;gt;
&lt;/p&gt;
&lt;p&gt;
and added this guy to the &amp;lt;&lt;strong&gt;behaviorExtensions&amp;gt; &lt;/strong&gt;element in the &lt;strong&gt;Machine.Config
for .NET 4.0 x64/.NET 4.0 &lt;/strong&gt;(&amp;amp; .NET 2.0 for good measure)
&lt;/p&gt;
&lt;p&gt;
As if a scene from SpongeBob,… &lt;strong&gt;3 hours later….&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I had triple check GACs, caches, full assembly names etc…&lt;a href="http://blogs.breeze.net/scotts" target="_blank"&gt;Scotty
popped&lt;/a&gt; his head around and said “Oh yeah I had this one ages ago you need to use
this…”
&lt;/p&gt;
&lt;p&gt;
&amp;lt;add name="wcfMsgPropPromoter" type="Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,
Breeze.WCF.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c2c8c7e827e9dd6a"/&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Can you spot the difference?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
SPACES!!!!
&lt;/p&gt;
&lt;p&gt;
Interestingly enough – this work is part of a .NET plugin I wrote for IIS 7.5 and
to register the plugin you use &lt;strong&gt;“Breeze.WCF.Extensions.BreezeMessagePromoteBehaviour,Breeze.WCF.Extensions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=c2c8c7e827e9dd6a"&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;NO SPACES!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
My head hurts for a Monday…
&lt;/p&gt;
&lt;p&gt;
Hopefully you reclaim the hours I’ve lost here.
&lt;/p&gt;
&lt;p&gt;
Mick.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=57f9b076-24b0-404a-a5b0-d10580298bda" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,57f9b076-24b0-404a-a5b0-d10580298bda.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk/2010</category>
      <category>BizTalk/2010 R2</category>
      <category>Dev</category>
      <category>Dev/.NET Framework 4.5</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=41d4fa95-911d-4f07-9ba0-644285833106</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=41d4fa95-911d-4f07-9ba0-644285833106</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks, as you may/may not have been aware these are the core corner stone technologies
of the MS Integration Stack.
</p>
        <p>
The teams have been busily plugging away and coming up with the new versions – 4.5
corresponding to .NET 4.5 framework.
</p>
        <p>
Here’s some links that describe what’s new from MS Santa &amp; his elves:
</p>
        <ol>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/dd456789(v=vs.110).aspx" target="_blank">What's
New in Windows Communication Foundation 4.5</a>
          </li>
        </ol>
        <ol>
          <li>
New Items I found of note are:</li>
        </ol>
        <ul>
          <li>
New Service Transport Default values – keep an eye on these.</li>
          <li>
Improvements from VS.NET 2011 – validation , better intellisence support.</li>
          <li>
Streaming improved – true async (yay!)</li>
          <li>
WebSocket support – through NetHttp(s)Binding</li>
          <li>
Single WSDL file generation with <strong>‘?singleWSDL’</strong> (which is pretty handy)</li>
          <li>
Self hosted + II hosted allow you to get to <strong>ServiceHost</strong> from code
for dynamic configuration.</li>
          <li>
Binary Encoder supports compression!! – this is generally <strong>gzip</strong> compression.</li>
          <li>
My personal favourite – <strong>UDP support<br /></strong></li>
        </ul>
        <li>
          <a href="http://msdn.microsoft.com/en-us/library/hh305677(v=vs.110).aspx" target="_blank">What's
New in Windows Workflow Foundation in .NET 4.5</a>
        </li>
        <ol>
          <li>
New Items of note are:</li>
        </ol>
        <ul>
          <li>
New Activites – NoPersistScope (possible previously but we needed to write code)</li>
          <li>
WF Designer improvements – several here, but the ‘Outline view’ looks to be easier
to work with.</li>
          <li>
            <strong>C# Expressions</strong> – where’s the F# ones <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-sadsmile_2.png" /> ??</li>
          <li>
Designer Annotations – add your own comments to keep control of the jungle that is
built.</li>
          <li>
WF Versioning – use WorkflowIdentity &amp; DefinitionIdentity to define the version. <strong>WorkflowServiceHost</strong> supports
multiple versions of the same WF. All pretty cool.</li>
          <li>
WF Designers can still be <strong>rehosted</strong> – I’ve used that many a place.</li>
          <li>
Contract First Development – ticks the boxes.<br /></li>
        </ul>
        <li>
          <strong>WF Rules – still didn’t make the cut. </strong>There is a sample for WF4 using
a custom Activity calling back to WF 3.5 <strong>Policy4</strong> it’s called. It
uses ‘interop’ back to WF3.5 and is found here - <a title="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx">http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx</a></li>
        <ol>
          <li>
Will have to check out perf in this new land on these rules.<br /></li>
        </ol>
        <li>
          <strong>Async CTP – </strong>while this didn’t make the ‘whats new’ list, it certainly
does deserve a mention here.<br />
Over the last year I’ve built some pretty serious F# projects, and F# has the async
support through and through the language. After over coming the challenge of learning
it, the Async functionality is absolutely brilliant!!! F# does a great job in being
able to turn a non-async chunk of code/method/class into an async one with by using
the keyword <strong>async </strong>and a <strong>!</strong>. It’s straight forward
from that aspect.<br /><br />
It’s great to see the C# &amp; VB.NETs being able to use the same fundamentals (albeit
not as slick IMO <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-winkingsmile_2.png" />).
– see a previous POST - <a title="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx" href="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx">http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx</a><br /><br />
As developers we sit here and say – <strong>what do I need this for?</strong> My code
runs fine as it….and yes for the most part of what we do on our machine it does. This
technology really comes into it’s own when you want consistent throughput from a solution
with 1 person or 10000 concurrent people using it. That’s the difference.<br /><br /><strong>To use it:</strong></li>
        <ol>
          <li>
            <strong>Get VSNET 2011 </strong>(as it requires a new compiler)</li>
          <li>
Use <strong>ASYNC CTP (refresh3) </strong>with <strong>VSNET2010 SP1<br /></strong></li>
        </ol>
        <li>
Check it out from here - <a title="http://msdn.microsoft.com/en-us/vstudio/gg316360" href="http://msdn.microsoft.com/en-us/vstudio/gg316360">http://msdn.microsoft.com/en-us/vstudio/gg316360</a></li>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=41d4fa95-911d-4f07-9ba0-644285833106" />
      </body>
      <title>WCF 4.5 WF 4.5 VSNET 2011: Some details</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2011/12/12/WCF45WF45VSNET2011SomeDetails.aspx</link>
      <pubDate>Mon, 12 Dec 2011 01:00:52 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks, as you may/may not have been aware these are the core corner stone technologies
of the MS Integration Stack.
&lt;/p&gt;
&lt;p&gt;
The teams have been busily plugging away and coming up with the new versions – 4.5
corresponding to .NET 4.5 framework.
&lt;/p&gt;
&lt;p&gt;
Here’s some links that describe what’s new from MS Santa &amp;amp; his elves:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/dd456789(v=vs.110).aspx" target="_blank"&gt;What's
New in Windows Communication Foundation 4.5&lt;/a&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
New Items I found of note are:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
New Service Transport Default values – keep an eye on these.&lt;/li&gt;
&lt;li&gt;
Improvements from VS.NET 2011 – validation , better intellisence support.&lt;/li&gt;
&lt;li&gt;
Streaming improved – true async (yay!)&lt;/li&gt;
&lt;li&gt;
WebSocket support – through NetHttp(s)Binding&lt;/li&gt;
&lt;li&gt;
Single WSDL file generation with &lt;strong&gt;‘?singleWSDL’&lt;/strong&gt; (which is pretty handy)&lt;/li&gt;
&lt;li&gt;
Self hosted + II hosted allow you to get to &lt;strong&gt;ServiceHost&lt;/strong&gt; from code
for dynamic configuration.&lt;/li&gt;
&lt;li&gt;
Binary Encoder supports compression!! – this is generally &lt;strong&gt;gzip&lt;/strong&gt; compression.&lt;/li&gt;
&lt;li&gt;
My personal favourite – &lt;strong&gt;UDP support&lt;br&gt;
&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/hh305677(v=vs.110).aspx" target="_blank"&gt;What's
New in Windows Workflow Foundation in .NET 4.5&lt;/a&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
New Items of note are:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
New Activites – NoPersistScope (possible previously but we needed to write code)&lt;/li&gt;
&lt;li&gt;
WF Designer improvements – several here, but the ‘Outline view’ looks to be easier
to work with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C# Expressions&lt;/strong&gt; – where’s the F# ones &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-sadsmile_2.png"&gt; ??&lt;/li&gt;
&lt;li&gt;
Designer Annotations – add your own comments to keep control of the jungle that is
built.&lt;/li&gt;
&lt;li&gt;
WF Versioning – use WorkflowIdentity &amp;amp; DefinitionIdentity to define the version. &lt;strong&gt;WorkflowServiceHost&lt;/strong&gt; supports
multiple versions of the same WF. All pretty cool.&lt;/li&gt;
&lt;li&gt;
WF Designers can still be &lt;strong&gt;rehosted&lt;/strong&gt; – I’ve used that many a place.&lt;/li&gt;
&lt;li&gt;
Contract First Development – ticks the boxes.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;strong&gt;WF Rules – still didn’t make the cut. &lt;/strong&gt;There is a sample for WF4 using
a custom Activity calling back to WF 3.5 &lt;strong&gt;Policy4&lt;/strong&gt; it’s called. It
uses ‘interop’ back to WF3.5 and is found here - &lt;a title="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx&lt;/a&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
Will have to check out perf in this new land on these rules.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;li&gt;
&lt;strong&gt;Async CTP – &lt;/strong&gt;while this didn’t make the ‘whats new’ list, it certainly
does deserve a mention here.&lt;br&gt;
Over the last year I’ve built some pretty serious F# projects, and F# has the async
support through and through the language. After over coming the challenge of learning
it, the Async functionality is absolutely brilliant!!! F# does a great job in being
able to turn a non-async chunk of code/method/class into an async one with by using
the keyword &lt;strong&gt;async &lt;/strong&gt;and a &lt;strong&gt;!&lt;/strong&gt;. It’s straight forward
from that aspect.&lt;br&gt;
&lt;br&gt;
It’s great to see the C# &amp;amp; VB.NETs being able to use the same fundamentals (albeit
not as slick IMO &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-winkingsmile_2.png"&gt;).
– see a previous POST - &lt;a title="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx" href="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx"&gt;http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
As developers we sit here and say – &lt;strong&gt;what do I need this for?&lt;/strong&gt; My code
runs fine as it….and yes for the most part of what we do on our machine it does. This
technology really comes into it’s own when you want consistent throughput from a solution
with 1 person or 10000 concurrent people using it. That’s the difference.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;To use it:&lt;/strong&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Get VSNET 2011 &lt;/strong&gt;(as it requires a new compiler)&lt;/li&gt;
&lt;li&gt;
Use &lt;strong&gt;ASYNC CTP (refresh3) &lt;/strong&gt;with &lt;strong&gt;VSNET2010 SP1&lt;br&gt;
&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Check it out from here - &lt;a title="http://msdn.microsoft.com/en-us/vstudio/gg316360" href="http://msdn.microsoft.com/en-us/vstudio/gg316360"&gt;http://msdn.microsoft.com/en-us/vstudio/gg316360&lt;/a&gt;
&lt;/li&gt;&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=41d4fa95-911d-4f07-9ba0-644285833106" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</comments>
      <category>.NET Developer</category>
      <category>Async</category>
      <category>BizTalk</category>
      <category>Dev</category>
      <category>Dev/.NET Framework 4.5</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=b3093b1a-3104-441c-85e1-24c2580c5559</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,b3093b1a-3104-441c-85e1-24c2580c5559.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,b3093b1a-3104-441c-85e1-24c2580c5559.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=b3093b1a-3104-441c-85e1-24c2580c5559</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks, from a previous set of posts, we’ve been running a series of Azure Training
Sessions.
</p>
        <p>
Here’s the online links to the recordings that many of you have asked me about. Enjoy.
</p>
        <p>
The links below should take you to the landing page, from the click on the <strong>View
Online</strong> button.
</p>
        <p>
          <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032489402&amp;Culture=en-AU" target="_blank">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/0e88fad1b732_A8CE/image_6.png" width="1062" height="136" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032489404&amp;Culture=en-AU" target="_blank">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/0e88fad1b732_A8CE/image_3.png" width="1062" height="136" />
          </a>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=b3093b1a-3104-441c-85e1-24c2580c5559" />
      </body>
      <title>Breeze Azure Sessions: Recordings Now Available</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,b3093b1a-3104-441c-85e1-24c2580c5559.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2011/10/05/BreezeAzureSessionsRecordingsNowAvailable.aspx</link>
      <pubDate>Wed, 05 Oct 2011 01:09:03 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks, from a previous set of posts, we’ve been running a series of Azure Training
Sessions.
&lt;/p&gt;
&lt;p&gt;
Here’s the online links to the recordings that many of you have asked me about. Enjoy.
&lt;/p&gt;
&lt;p&gt;
The links below should take you to the landing page, from the click on the &lt;strong&gt;View
Online&lt;/strong&gt; button.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032489402&amp;amp;Culture=en-AU" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/0e88fad1b732_A8CE/image_6.png" width="1062" height="136"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032489404&amp;amp;Culture=en-AU" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/0e88fad1b732_A8CE/image_3.png" width="1062" height="136"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=b3093b1a-3104-441c-85e1-24c2580c5559" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,b3093b1a-3104-441c-85e1-24c2580c5559.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
      <category>BizTalk</category>
      <category>Events</category>
      <category>Events/Recordings</category>
      <category>Microsoft/Readiness</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=eed3722c-aef6-42e1-9ea5-6049a367a8d5</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=eed3722c-aef6-42e1-9ea5-6049a367a8d5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks, I thought I’d share something that captivated me on this rainy Easter day
and that was
</p>
        <p>
          <strong>Visual Studio Asynchronous Programming - </strong>
          <a title="http://msdn.microsoft.com/en-au/vstudio/async" href="http://msdn.microsoft.com/en-au/vstudio/async">
            <strong>http://msdn.microsoft.com/en-au/vstudio/async</strong>
          </a>
          <br />
(you’ll need VS2010 + SP1 before you grab the CTP)<br />
There’s a new improved compiler + an extended library for us.
</p>
        <p>
Hands up who’s done async programming in either VB.NET or C#??? It’s a pain! Thread
management, Main UI threads can only update certain objects, passing values between
main + background threads, determining whether a thread has completed its tasks… and
so on… 
</p>
        <p>
Basically all these ‘issues’ keep us from delving further into the world of asynchronous
programming cause it very rapidly becomes complex just managing the two worlds – sync
+ async.
</p>
        <p>
          <strong>Today I was pleasantly surprised!!!</strong>
        </p>
        <p>
About a year ago I saw a great presentation on F# and I was amazed at how if they
wanted to run a bit of code async it was simple an extra character as in:
</p>
        <p>
set results = …..   &lt;-sync
</p>
        <p>
set results! = ….  &lt;- run this async
</p>
        <p>
(don’t quote me on the above, but it’s something like that – let’s call it pseudo
code)
</p>
        <p>
          <strong>Why are we interested in this?</strong> – that’s always the first question
to ask when investigating. Too many times we here ‘this is really cool’ and ‘check
this cool software out’ etc… but the real reason of WHY do we want to go down this
road is never answered. 
</p>
        <p>
On a ‘developers machine’ looking at 5 items, running a single test client – you’d
have to say “<strong>works on my machine” </strong>and you’d have no need to async
anything. True. Let’s move beyond our beloved developer box and think about UAT/PROD
environments and what your code is doing.<br /><br />
What happens if 4 concurrent requests come along – how is your code going to perform?
(As developers we’d be thinking …’it’s in the hands of IIS, not my issue’ :) )<br />
(I recently was presented with a solution that ran across 20 odd servers, the answer
to everything was get more hardware to make the app more performant, scalable etc
– couldnt be the code.)
</p>
        <p>
So as the requests start to build (don’t know an exact number but let’s say 100/sec),
what is happening to your code? how often do we sit down with profiling tools on our
code in this space? must be the disks..slow…and as always we have definitive proof <strong>works
on my machine</strong> says the developer!
</p>
        <p>
It’s not until we see our code running under load that we get an appreciation for
where things could be improved and are causing grief for not only IIS but other systems
as well.
</p>
        <p>
          <strong>Scalability, performance and scalability</strong> – single threaded app/service
vs multi-threaded. Multi-threaded tend to win all the time.
</p>
        <p>
Let me give you a couple of suggestions where this stuff is great:
</p>
        <ol>
          <li>
As part of a WF/WCF/Class where you want to ‘push’ some processing into the background
– critical things can be done upfront, and you can push some of the ‘other stuff’
into the background.<br /></li>
          <li>
Take advantage of some of the great multi-core/multi-cpu Servers out there – single
threaded tend to run on the same core on the same CPU (known as thread affinity)</li>
        </ol>
        <p>
Anyway enough jabbering from me and let’s see some of the hidden gems…
</p>
        <p>
          <strong>Async Programming Framework</strong>
        </p>
        <p>
Let me show you a couple of examples (from my set):
</p>
        <p>
1. <strong>Fetching a webpage</strong></p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb.png" width="808" height="247" />
          </a>
        </p>
        <p>
Here I go off to twitter and search for all the BizTalk items.
</p>
        <p>
Couple of things to notice 
<br />
- <strong>…Async</strong> is added to the end of routines for convention, indicating
that these are Async callable routines.<br />
- not a <strong>single IAsyncResult</strong> to be seen, no <strong>StateObject </strong>and
no <strong>Callback routines!</strong><br />
– line 104 the <strong>async</strong> keyword indicating that this routine itself
can be called async if desired (more for the compiler)<br />
- line 108 the <strong>await </strong>keyword is used in the Async framework to ‘wait
for the async task to complete’  then move onto the next line.<br />
- line 108 <strong>WebRequest.Create(…).GetResponseAsync</strong> – it’s the <strong>GetResponseAsync</strong> that
is the async method, no …Begin or ..OnEnd calls! Just write it as you read it.<br />
- line 109 We get a reference to the response stream (I should check for the existence
of data etc – demo code, demo code :))<br />
- line 112 <strong>…await stm.ReadAsync(…</strong>) – reads the response stream into
a buffer on a background thread and we wait there until this completes (await keyword).
By all means there’s many other ways to program this, as in we don’t need to wait,
we could run this guy in the background quite happy and then check on him periodically.<br /><br />
That’s it! Not too tough at all, multi-threaded goodness right there. You can have
blocking and non-blocking calls etc.
</p>
        <p>
          <strong>2. What about a Chunk of CPU based code</strong>
        </p>
        <p>
NO Async Example – as per normal, doing some cpu things.<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_1.png" width="604" height="262" /></a></p>
        <p>
Written in Async….<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_2.png" width="608" height="349" /></a></p>
        <p>
        </p>
        <p>
        </p>
        <p>
Points to notice:<br />
- line 63 <strong>async Task&lt;int[]&gt;</strong> … to the Async framework the async
methods are wrapped within a <strong>Task</strong> class. We must ‘wrap’ anything
we return from our routines within a <strong>Task&lt;..&gt;</strong> – here I’m returning
an <strong>int[]<br /></strong>-line 66 <strong>… = TaskEx.Run(…something to run in a background thread…). </strong>As
we’re dealing with a block of code, there’s a <strong>Task Extension</strong> class
that allows us to run that bit of code Async.<br />
-line 79 <strong>await matrix</strong> – this line ensures that our async routine
has indeed completed (or errored) before we move onto the next line.
</p>
        <p>
Too easy if you’ve lived in the other world.
</p>
        <p>
As always remember this is CTP so I wouldn’t go rolling out into Prod just yet. The
perf numbers I get are pretty much identical to rolling all of this by hand with ThreadPool.QueueWorkItem(…)
and IAsyncResult etc.
</p>
        <p>
Well done MS!
</p>
        <p>
Enjoy and here’s my VS.NET Sample Solutions – I had great fun! Oh – this is also applicable
to Silverlight + WP7 apps :)<br /></p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:a0df05fc-9ae9-4249-bc41-83e6ce52876b" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/AsyncExperiments.zip" target="_blank">Samples
(114KB)</a>
          </p>
        </div>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=eed3722c-aef6-42e1-9ea5-6049a367a8d5" />
      </body>
      <title>Easier Async Programming Coming to C#/VB soon…</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx</link>
      <pubDate>Tue, 26 Apr 2011 13:33:52 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks, I thought I’d share something that captivated me on this rainy Easter day
and that was
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Visual Studio Asynchronous Programming - &lt;/strong&gt;&lt;a title="http://msdn.microsoft.com/en-au/vstudio/async" href="http://msdn.microsoft.com/en-au/vstudio/async"&gt;&lt;strong&gt;http://msdn.microsoft.com/en-au/vstudio/async&lt;/strong&gt;&lt;/a&gt;
&lt;br&gt;
(you’ll need VS2010 + SP1 before you grab the CTP)&lt;br&gt;
There’s a new improved compiler + an extended library for us.
&lt;/p&gt;
&lt;p&gt;
Hands up who’s done async programming in either VB.NET or C#??? It’s a pain! Thread
management, Main UI threads can only update certain objects, passing values between
main + background threads, determining whether a thread has completed its tasks… and
so on… 
&lt;/p&gt;
&lt;p&gt;
Basically all these ‘issues’ keep us from delving further into the world of asynchronous
programming cause it very rapidly becomes complex just managing the two worlds – sync
+ async.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Today I was pleasantly surprised!!!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
About a year ago I saw a great presentation on F# and I was amazed at how if they
wanted to run a bit of code async it was simple an extra character as in:
&lt;/p&gt;
&lt;p&gt;
set results = …..&amp;nbsp;&amp;nbsp; &amp;lt;-sync
&lt;/p&gt;
&lt;p&gt;
set results! = ….&amp;nbsp; &amp;lt;- run this async
&lt;/p&gt;
&lt;p&gt;
(don’t quote me on the above, but it’s something like that – let’s call it pseudo
code)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Why are we interested in this?&lt;/strong&gt; – that’s always the first question
to ask when investigating. Too many times we here ‘this is really cool’ and ‘check
this cool software out’ etc… but the real reason of WHY do we want to go down this
road is never answered. 
&lt;/p&gt;
&lt;p&gt;
On a ‘developers machine’ looking at 5 items, running a single test client – you’d
have to say “&lt;strong&gt;works on my machine” &lt;/strong&gt;and you’d have no need to async
anything. True. Let’s move beyond our beloved developer box and think about UAT/PROD
environments and what your code is doing.&lt;br&gt;
&lt;br&gt;
What happens if 4 concurrent requests come along – how is your code going to perform?
(As developers we’d be thinking …’it’s in the hands of IIS, not my issue’ :) )&lt;br&gt;
(I recently was presented with a solution that ran across 20 odd servers, the answer
to everything was get more hardware to make the app more performant, scalable etc
– couldnt be the code.)
&lt;/p&gt;
&lt;p&gt;
So as the requests start to build (don’t know an exact number but let’s say 100/sec),
what is happening to your code? how often do we sit down with profiling tools on our
code in this space? must be the disks..slow…and as always we have definitive proof &lt;strong&gt;works
on my machine&lt;/strong&gt; says the developer!
&lt;/p&gt;
&lt;p&gt;
It’s not until we see our code running under load that we get an appreciation for
where things could be improved and are causing grief for not only IIS but other systems
as well.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Scalability, performance and scalability&lt;/strong&gt; – single threaded app/service
vs multi-threaded. Multi-threaded tend to win all the time.
&lt;/p&gt;
&lt;p&gt;
Let me give you a couple of suggestions where this stuff is great:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
As part of a WF/WCF/Class where you want to ‘push’ some processing into the background
– critical things can be done upfront, and you can push some of the ‘other stuff’
into the background.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Take advantage of some of the great multi-core/multi-cpu Servers out there – single
threaded tend to run on the same core on the same CPU (known as thread affinity)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Anyway enough jabbering from me and let’s see some of the hidden gems…
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Async Programming Framework&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Let me show you a couple of examples (from my set):
&lt;/p&gt;
&lt;p&gt;
1. &lt;strong&gt;Fetching a webpage&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb.png" width="808" height="247"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Here I go off to twitter and search for all the BizTalk items.
&lt;/p&gt;
&lt;p&gt;
Couple of things to notice 
&lt;br&gt;
- &lt;strong&gt;…Async&lt;/strong&gt; is added to the end of routines for convention, indicating
that these are Async callable routines.&lt;br&gt;
- not a &lt;strong&gt;single IAsyncResult&lt;/strong&gt; to be seen, no &lt;strong&gt;StateObject &lt;/strong&gt;and
no &lt;strong&gt;Callback routines!&lt;/strong&gt;
&lt;br&gt;
– line 104 the &lt;strong&gt;async&lt;/strong&gt; keyword indicating that this routine itself
can be called async if desired (more for the compiler)&lt;br&gt;
- line 108 the &lt;strong&gt;await &lt;/strong&gt;keyword is used in the Async framework to ‘wait
for the async task to complete’&amp;nbsp; then move onto the next line.&lt;br&gt;
- line 108 &lt;strong&gt;WebRequest.Create(…).GetResponseAsync&lt;/strong&gt; – it’s the &lt;strong&gt;GetResponseAsync&lt;/strong&gt; that
is the async method, no …Begin or ..OnEnd calls! Just write it as you read it.&lt;br&gt;
- line 109 We get a reference to the response stream (I should check for the existence
of data etc – demo code, demo code :))&lt;br&gt;
- line 112 &lt;strong&gt;…await stm.ReadAsync(…&lt;/strong&gt;) – reads the response stream into
a buffer on a background thread and we wait there until this completes (await keyword).
By all means there’s many other ways to program this, as in we don’t need to wait,
we could run this guy in the background quite happy and then check on him periodically.&lt;br&gt;
&lt;br&gt;
That’s it! Not too tough at all, multi-threaded goodness right there. You can have
blocking and non-blocking calls etc.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. What about a Chunk of CPU based code&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
NO Async Example – as per normal, doing some cpu things.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_1.png" width="604" height="262"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Written in Async….&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_2.png" width="608" height="349"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Points to notice:&lt;br&gt;
- line 63 &lt;strong&gt;async Task&amp;lt;int[]&amp;gt;&lt;/strong&gt; … to the Async framework the async
methods are wrapped within a &lt;strong&gt;Task&lt;/strong&gt; class. We must ‘wrap’ anything
we return from our routines within a &lt;strong&gt;Task&amp;lt;..&amp;gt;&lt;/strong&gt; – here I’m returning
an &lt;strong&gt;int[]&lt;br&gt;
&lt;/strong&gt;-line 66 &lt;strong&gt;… = TaskEx.Run(…something to run in a background thread…). &lt;/strong&gt;As
we’re dealing with a block of code, there’s a &lt;strong&gt;Task Extension&lt;/strong&gt; class
that allows us to run that bit of code Async.&lt;br&gt;
-line 79 &lt;strong&gt;await matrix&lt;/strong&gt; – this line ensures that our async routine
has indeed completed (or errored) before we move onto the next line.
&lt;/p&gt;
&lt;p&gt;
Too easy if you’ve lived in the other world.
&lt;/p&gt;
&lt;p&gt;
As always remember this is CTP so I wouldn’t go rolling out into Prod just yet. The
perf numbers I get are pretty much identical to rolling all of this by hand with ThreadPool.QueueWorkItem(…)
and IAsyncResult etc.
&lt;/p&gt;
&lt;p&gt;
Well done MS!
&lt;/p&gt;
&lt;p&gt;
Enjoy and here’s my VS.NET Sample Solutions – I had great fun! Oh – this is also applicable
to Silverlight + WP7 apps :)&lt;br&gt;
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:a0df05fc-9ae9-4249-bc41-83e6ce52876b" class="wlWriterEditableSmartContent"&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/AsyncExperiments.zip" target="_blank"&gt;Samples
(114KB)&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=eed3722c-aef6-42e1-9ea5-6049a367a8d5" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</comments>
      <category>.NET Developer</category>
      <category>Async</category>
      <category>Silverlight</category>
      <category>TechTalk</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=2337dbfb-3232-4688-be47-96ff6a98413f</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,2337dbfb-3232-4688-be47-96ff6a98413f.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,2337dbfb-3232-4688-be47-96ff6a98413f.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=2337dbfb-3232-4688-be47-96ff6a98413f</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The scene looks like this – while teaching a <strong>SharePoint 2010 class </strong>I
decided to build a Feature that used one of the OOTB Service Applications of SharePoint
2010.<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb.png" width="640" height="467" /></a> 
</p>
        <p>
I decided to create a PDF Converter ‘Feature’ that used the <strong>Word Automation</strong> Services
hosted in SharePoint 2010. Looking into the Word Automation Services, I’d say that
if you’ve already got a PDF creation process going, then stick with it as it appears
this service is pretty simple. However if you’ve got nothing, then Word Automation
Services will be great!<br />
(Having spent a previous life in a graphics company, there are many options that go
with creating just that perfect PDF…I could find none of these here :()<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_3.png" width="738" height="221" /></a><br />
(yes the pdf icon needs work…)
</p>
        <p>
So I created a VS.NET 2010 Solution with a Feature.<br /><a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_4.png" width="229" height="322" /></a></p>
        <p>
The <strong>PDFConverter.cs </strong>is where the crux of the work is – the rest of
the solution is working out just the right spot to call it.
</p>
        <p>
          <strong>Couple of Interesting Points about the Solution</strong>
        </p>
        <p>
          <strong>1. ScriptLink</strong> – using this from a CustomAction within an Elements
file allows to inject Script into a site where the Feature is Activated. There is
also <strong>ScriptBody</strong> that allows you to inject script code right there.
</p>
        <p>
          <strong>2. RegistrationType</strong> – being declared as a FileType, currently this
will work with <strong>docx</strong>. Feel free to experiment and extend out.<br />
Also, seeing this action is activated on a list item, we need to track what list it
came from <strong>{ListId} </strong>and the item in that list <strong>{ItemId} </strong>which
is an integer.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:618b44f1-5e70-4fe6-bc72-54703a8ebdbc" class="wlWriterEditableSmartContent">
          <pre style=" width: 836px; height: 270px;background-color:White;overflow: auto;">
            <div>
              <!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
              <span style="color: #008080;"> 1</span>
              <span style="color: #000000;">&lt;</span>
              <span style="color: #000000;">Elements
xmlns</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">http://schemas.microsoft.com/sharepoint/</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">&gt;</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 2</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">&lt;</span>
              <span style="color: #000000;">CustomAction
Id</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">MicksPDFScript</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 3</span>
              <span style="color: #000000;"> ScriptSrc</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">~site/_layouts/WordAutomationServices/Scripts/MoveItMoveIt.js</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 4</span>
              <span style="color: #000000;"> Location</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">ScriptLink</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">&gt;</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 5</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">&lt;/</span>
              <span style="color: #000000;">CustomAction</span>
              <span style="color: #000000;">&gt;</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 6</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 7</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">&lt;</span>
              <span style="color: #000000;">CustomAction
Id</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">MicksPDFConverter</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 8</span>
              <span style="color: #000000;"> RegistrationType</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">FileType</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 9</span>
              <span style="color: #000000;"> RegistrationId</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">docx</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">10</span>
              <span style="color: #000000;"> Location</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">EditControlBlock</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">11</span>
              <span style="color: #000000;"> Sequence</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">106</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">12</span>
              <span style="color: #000000;"> Title</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">Convert
to PDF</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">13</span>
              <span style="color: #000000;"> ImageUrl</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">~site/_layouts/WordAutomationServices/Images/pdf.gif</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">14</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">&gt;</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">15</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">&lt;</span>
              <span style="color: #000000;">UrlAction
Url</span>
              <span style="color: #000000;">=</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">javascript:MicksOpenDialog('{ListId}','{ItemId}');</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">/&gt;</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">16</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">&lt;/</span>
              <span style="color: #000000;">CustomAction</span>
              <span style="color: #000000;">&gt;</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">17</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">18</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">&lt;/</span>
              <span style="color: #000000;">Elements</span>
              <span style="color: #000000;">&gt;</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">19</span>
              <span style="color: #000000;">
              </span>
            </div>
          </pre>
          <!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com -->
        </div>
        <p>
          <strong>3. Code that actually does the work</strong> – is pretty simple really with <strong>Folders
and entire Document Libraries able to be passed to the Conversion Job.</strong><br />
One annoying thing is that below in Line15, <strong>conversionJob.Start()</strong> is
called, really a job gets created and added to the Job Timer queue. Regardless of
what goes on, the <strong>Started</strong> property always returns <strong>true.</strong><br /><br />
Typically I’ve found the Timer Job to kick in every 5 mins to process the conversions
and eventually a PDF file is seen in the library.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:099cac3e-eb47-48a6-a341-1ce82e3efbf2" class="wlWriterEditableSmartContent">
          <pre style=" width: 836px; height: 270px;background-color:White;overflow: auto;">
            <div>
              <!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
              <span style="color: #008080;"> 1</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #0000FF;">public</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #0000FF;">bool</span>
              <span style="color: #000000;"> Convert(</span>
              <span style="color: #0000FF;">string</span>
              <span style="color: #000000;"> srcFile,</span>
              <span style="color: #0000FF;">string</span>
              <span style="color: #000000;"> dstFile) </span>
              <span style="color: #008080;"> 2</span>
              <span style="color: #000000;"> { </span>
              <span style="color: #008080;"> 3</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 4</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008000;">//</span>
              <span style="color: #008000;">create
references to the Word Services.</span>
              <span style="color: #008000;">
              </span>
              <span style="color: #008080;"> 5</span>
              <span style="color: #008000;">
              </span>
              <span style="color: #000000;"> var
wdProxy </span>
              <span style="color: #000000;">=</span>
              <span style="color: #000000;"> (WordServiceApplicationProxy)SPServiceContext.Current.GetDefaultProxy(</span>
              <span style="color: #0000FF;">typeof</span>
              <span style="color: #000000;">(WordServiceApplicationProxy)); </span>
              <span style="color: #008080;"> 6</span>
              <span style="color: #000000;"> var
conversionJob </span>
              <span style="color: #000000;">=</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #0000FF;">new</span>
              <span style="color: #000000;"> ConversionJob(wdProxy); </span>
              <span style="color: #008080;"> 7</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;"> 8</span>
              <span style="color: #000000;"> conversionJob.UserToken </span>
              <span style="color: #000000;">=</span>
              <span style="color: #000000;"> SPContext.Current.Web.CurrentUser.UserToken; </span>
              <span style="color: #008080;"> 9</span>
              <span style="color: #000000;"> conversionJob.Name </span>
              <span style="color: #000000;">=</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">Micks
PDF Conversion Job </span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #000000;">+</span>
              <span style="color: #000000;"> DateTime.Now.ToString(</span>
              <span style="color: #800000;">"</span>
              <span style="color: #800000;">hhmmss</span>
              <span style="color: #800000;">"</span>
              <span style="color: #000000;">); </span>
              <span style="color: #008080;">10</span>
              <span style="color: #000000;"> conversionJob.Settings.OutputFormat </span>
              <span style="color: #000000;">=</span>
              <span style="color: #000000;"> SaveFormat.PDF; </span>
              <span style="color: #008080;">11</span>
              <span style="color: #000000;"> conversionJob.Settings.OutputSaveBehavior </span>
              <span style="color: #000000;">=</span>
              <span style="color: #000000;"> SaveBehavior.AlwaysOverwrite; </span>
              <span style="color: #008080;">12</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">13</span>
              <span style="color: #000000;"> conversionJob.AddFile(srcFile,
dstFile); </span>
              <span style="color: #008080;">14</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">15</span>
              <span style="color: #000000;"> conversionJob.Start(); </span>
              <span style="color: #008080;">16</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #0000FF;">return</span>
              <span style="color: #000000;"> (conversionJob.Started); </span>
              <span style="color: #008080;">17</span>
              <span style="color: #000000;">
              </span>
              <span style="color: #008080;">18</span>
              <span style="color: #000000;"> }</span>
            </div>
          </pre>
          <!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com -->
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
A couple of screen shots in action:
</p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_5.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_5.png" width="501" height="431" />
          </a>
        </p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_6.png" width="502" height="238" />
          </a>
        </p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_7.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_7.png" width="653" height="391" />
          </a>
        </p>
        <p>
Of course this is not production ready, but it should give you a great start in getting
there. To start, simply install and Activate the Feature on a site collection to see
the functionality.
</p>
        <p>
Go to a document library and activate the item drop down to see the <strong>Convert
to PDF</strong> option. <strong>Must be a DOCX file</strong> currently.
</p>
        <p>
Grab the VSNET2010 Solution and go for it – have fun.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:0b5a6e61-5690-4a40-adee-4f630a4ef089" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/WordAuto.zip" target="_blank">PDF
CONVERTER SOLUTION</a>
          </p>
        </div>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=2337dbfb-3232-4688-be47-96ff6a98413f" />
      </body>
      <title>SharePoint 2010: A Simple Word to PDF Converter using Word Automation Services</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,2337dbfb-3232-4688-be47-96ff6a98413f.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2010/09/20/SharePoint2010ASimpleWordToPDFConverterUsingWordAutomationServices.aspx</link>
      <pubDate>Mon, 20 Sep 2010 11:06:48 GMT</pubDate>
      <description>&lt;p&gt;
The scene looks like this – while teaching a &lt;strong&gt;SharePoint 2010 class &lt;/strong&gt;I
decided to build a Feature that used one of the OOTB Service Applications of SharePoint
2010.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb.png" width="640" height="467"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
I decided to create a PDF Converter ‘Feature’ that used the &lt;strong&gt;Word Automation&lt;/strong&gt; Services
hosted in SharePoint 2010. Looking into the Word Automation Services, I’d say that
if you’ve already got a PDF creation process going, then stick with it as it appears
this service is pretty simple. However if you’ve got nothing, then Word Automation
Services will be great!&lt;br&gt;
(Having spent a previous life in a graphics company, there are many options that go
with creating just that perfect PDF…I could find none of these here :()&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_3.png" width="738" height="221"&gt;&lt;/a&gt; 
&lt;br&gt;
(yes the pdf icon needs work…)
&lt;/p&gt;
&lt;p&gt;
So I created a VS.NET 2010 Solution with a Feature.&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_4.png" width="229" height="322"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The &lt;strong&gt;PDFConverter.cs &lt;/strong&gt;is where the crux of the work is – the rest of
the solution is working out just the right spot to call it.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Couple of Interesting Points about the Solution&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. ScriptLink&lt;/strong&gt; – using this from a CustomAction within an Elements
file allows to inject Script into a site where the Feature is Activated. There is
also &lt;strong&gt;ScriptBody&lt;/strong&gt; that allows you to inject script code right there.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. RegistrationType&lt;/strong&gt; – being declared as a FileType, currently this
will work with &lt;strong&gt;docx&lt;/strong&gt;. Feel free to experiment and extend out.&lt;br&gt;
Also, seeing this action is activated on a list item, we need to track what list it
came from &lt;strong&gt;{ListId} &lt;/strong&gt;and the item in that list &lt;strong&gt;{ItemId} &lt;/strong&gt;which
is an integer.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:618b44f1-5e70-4fe6-bc72-54703a8ebdbc" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 836px; height: 270px;background-color:White;overflow: auto;"&gt;
&lt;div&gt;
&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Elements
xmlns&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;CustomAction
Id&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;MicksPDFScript&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt; ScriptSrc&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;~site/_layouts/WordAutomationServices/Scripts/MoveItMoveIt.js&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt; Location&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ScriptLink&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;CustomAction&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;CustomAction
Id&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;MicksPDFConverter&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt; RegistrationType&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;FileType&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt; RegistrationId&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;docx&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt; Location&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;EditControlBlock&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt; Sequence&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;106&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt; Title&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Convert
to PDF&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt; ImageUrl&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;~site/_layouts/WordAutomationServices/Images/pdf.gif&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UrlAction
Url&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;javascript:MicksOpenDialog('{ListId}','{ItemId}');&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;CustomAction&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Elements&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;3. Code that actually does the work&lt;/strong&gt; – is pretty simple really with &lt;strong&gt;Folders
and entire Document Libraries able to be passed to the Conversion Job.&lt;/strong&gt;
&lt;br&gt;
One annoying thing is that below in Line15, &lt;strong&gt;conversionJob.Start()&lt;/strong&gt; is
called, really a job gets created and added to the Job Timer queue. Regardless of
what goes on, the &lt;strong&gt;Started&lt;/strong&gt; property always returns &lt;strong&gt;true.&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
Typically I’ve found the Timer Job to kick in every 5 mins to process the conversions
and eventually a PDF file is seen in the library.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:099cac3e-eb47-48a6-a341-1ce82e3efbf2" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 836px; height: 270px;background-color:White;overflow: auto;"&gt;
&lt;div&gt;
&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt; Convert(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; srcFile,&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; dstFile) &lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt; { &lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;create
references to the Word Services.&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; var
wdProxy &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (WordServiceApplicationProxy)SPServiceContext.Current.GetDefaultProxy(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(WordServiceApplicationProxy)); &lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt; var
conversionJob &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; ConversionJob(wdProxy); &lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt; conversionJob.UserToken &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SPContext.Current.Web.CurrentUser.UserToken; &lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt; conversionJob.Name &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Micks
PDF Conversion Job &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; DateTime.Now.ToString(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;hhmmss&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt; conversionJob.Settings.OutputFormat &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SaveFormat.PDF; &lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt; conversionJob.Settings.OutputSaveBehavior &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SaveBehavior.AlwaysOverwrite; &lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt; conversionJob.AddFile(srcFile,
dstFile); &lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt; conversionJob.Start(); &lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; (conversionJob.Started); &lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt; }&lt;/span&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
A couple of screen shots in action:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_5.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_5.png" width="501" height="431"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_6.png" width="502" height="238"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_7.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/image_thumb_7.png" width="653" height="391"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Of course this is not production ready, but it should give you a great start in getting
there. To start, simply install and Activate the Feature on a site collection to see
the functionality.
&lt;/p&gt;
&lt;p&gt;
Go to a document library and activate the item drop down to see the &lt;strong&gt;Convert
to PDF&lt;/strong&gt; option. &lt;strong&gt;Must be a DOCX file&lt;/strong&gt; currently.
&lt;/p&gt;
&lt;p&gt;
Grab the VSNET2010 Solution and go for it – have fun.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:0b5a6e61-5690-4a40-adee-4f630a4ef089" class="wlWriterEditableSmartContent"&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/2010/SharePoint2010ASimpleWordtoPDFConverteru_12456/WordAuto.zip" target="_blank"&gt;PDF
CONVERTER SOLUTION&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=2337dbfb-3232-4688-be47-96ff6a98413f" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,2337dbfb-3232-4688-be47-96ff6a98413f.aspx</comments>
      <category>.NET Developer</category>
      <category>SharePoint</category>
      <category>SharePoint/2010</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=1922491d-23f6-4c5e-b6c5-a6533e693d7a</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,1922491d-23f6-4c5e-b6c5-a6533e693d7a.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,1922491d-23f6-4c5e-b6c5-a6533e693d7a.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=1922491d-23f6-4c5e-b6c5-a6533e693d7a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Olaf and I were cracking away on some SharePoint 2010 work which we thought should
be simple…point SPMetal to the site and start LINQ-ing to our hearts content…..
</p>
        <p>
with the one exception that we couldn’t select items from a list based on their <strong>Content
Type</strong>.
</p>
        <p>
By default <strong>SPMetal.exe doesn’t include these ‘system’ fields</strong> (apart
from ID + Title – go figure) and the secret is to use an <strong>Override file.</strong></p>
        <p>
The good oil is:<a title="http://msdn.microsoft.com/en-us/library/ee535056.aspx" href="http://msdn.microsoft.com/en-us/library/ee535056.aspx">http://msdn.microsoft.com/en-us/library/ee535056.aspx</a><br />
(Here’s a good article on how .NET Types are mapped to SharePoint - <a title="http://msdn.microsoft.com/en-us/library/ee536245.aspx" href="http://msdn.microsoft.com/en-us/library/ee536245.aspx">http://msdn.microsoft.com/en-us/library/ee536245.aspx</a>)
</p>
        <p>
          <strong>The simple override/parameters file:</strong>
        </p>
        <pre style="font-family: consolas">
          <span style="color: blue">&lt;</span>
          <span style="color: #a31515">Web</span>
          <span style="color: blue"> </span>
          <span style="color: red">AccessModifier</span>
          <span style="color: blue">=</span>"<span style="color: blue">Internal</span>"<span style="color: blue"> </span><span style="color: red">xmlns</span><span style="color: blue">=</span>"<span style="color: blue">http://schemas.microsoft.com/SharePoint/2009/spmetal</span>"<span style="color: blue">&gt;</span><br /><span style="color: blue">  &lt;</span><span style="color: #a31515">ContentType</span><span style="color: blue"> </span><span style="color: red">Name</span><span style="color: blue">=</span>"<span style="color: blue">Item</span>"<span style="color: blue"> </span><span style="color: red">Class</span><span style="color: blue">=</span>"<span style="color: blue">Item</span>"<span style="color: blue">&gt;</span><br /><span style="color: blue">    &lt;</span><span style="color: #a31515">Column</span><span style="color: blue"> </span><span style="color: red">Name</span><span style="color: blue">=</span>"<span style="color: blue">ContentType</span>"<span style="color: blue"> </span><span style="color: red">Member</span><span style="color: blue">=</span>"<span style="color: blue">ContentType</span>"<span style="color: blue"> /&gt;</span><br /><span style="color: blue">   </span><br /><span style="color: blue">  &lt;/</span><span style="color: #a31515">ContentType</span><span style="color: blue">&gt;</span><br /><span style="color: blue">  </span><br /><span style="color: blue">&lt;/</span><span style="color: #a31515">Web</span><span style="color: blue">&gt;</span><br /></pre>
        <p>
 
</p>
        <p>
          <strong>The SPMetal Command Line</strong>
        </p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/Shar.exeandsystemfieldsnamelyContentType_FF88/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/Shar.exeandsystemfieldsnamelyContentType_FF88/image_thumb.png" width="667" height="52" />
          </a>
        </p>
        <p>
          <strong>The VS.NET Code</strong>
        </p>
        <blockquote>
          <pre style="font-family: consolas"> <span style="color: blue">static</span> <span style="color: blue">void</span> Main(<span style="color: blue">string</span>[]
args)<br />
        {<br />
            <span style="color: blue">using</span> (<span style="color: #2b91af">BreezeDataContext</span> dc
= <span style="color: blue">new</span> <span style="color: #2b91af">BreezeDataContext</span>(<span style="color: #a31515">"http://breezelocal"</span>))<br />
            {<br />
                <span style="color: blue">var</span> myitems
= <span style="color: blue">from</span> i <span style="color: blue">in</span> dc.GetList&lt;<span style="color: #2b91af">ContentListTraining</span>&gt;(<span style="color: #a31515">"My
Content List"</span>)<br />
                              <span style="color: blue">where</span> i.ContentType
== <span style="color: #a31515">"Training"</span><br />
                              <span style="color: blue">select</span> i;<br />
                <span style="color: blue">var</span> courses
= myitems.ToList&lt;<span style="color: #2b91af">ContentListTraining</span>&gt;();<br /><br />
                <span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">"There
are {0} items"</span>,courses[0].Title);<br />
                    
<br />
            }<br /><br />
            <span style="color: #2b91af">Console</span>.ReadLine();<br />
        }</pre>
        </blockquote>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=1922491d-23f6-4c5e-b6c5-a6533e693d7a" />
      </body>
      <title>SharePoint 2010: SPMetal.exe and system fields namely ContentType</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,1922491d-23f6-4c5e-b6c5-a6533e693d7a.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2010/07/28/SharePoint2010SPMetalexeAndSystemFieldsNamelyContentType.aspx</link>
      <pubDate>Wed, 28 Jul 2010 08:10:19 GMT</pubDate>
      <description>&lt;p&gt;
Olaf and I were cracking away on some SharePoint 2010 work which we thought should
be simple…point SPMetal to the site and start LINQ-ing to our hearts content…..
&lt;/p&gt;
&lt;p&gt;
with the one exception that we couldn’t select items from a list based on their &lt;strong&gt;Content
Type&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
By default &lt;strong&gt;SPMetal.exe doesn’t include these ‘system’ fields&lt;/strong&gt; (apart
from ID + Title – go figure) and the secret is to use an &lt;strong&gt;Override file.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The good oil is:&lt;a title="http://msdn.microsoft.com/en-us/library/ee535056.aspx" href="http://msdn.microsoft.com/en-us/library/ee535056.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee535056.aspx&lt;/a&gt;
&lt;br&gt;
(Here’s a good article on how .NET Types are mapped to SharePoint - &lt;a title="http://msdn.microsoft.com/en-us/library/ee536245.aspx" href="http://msdn.microsoft.com/en-us/library/ee536245.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee536245.aspx&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The simple override/parameters file:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre style="font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red"&gt;AccessModifier&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Internal&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/SharePoint/2009/spmetal&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentType&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Item&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Item&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Column&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ContentType&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red"&gt;Member&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ContentType&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentType&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp; &lt;/span&gt;
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The SPMetal Command Line&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/Shar.exeandsystemfieldsnamelyContentType_FF88/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/Shar.exeandsystemfieldsnamelyContentType_FF88/image_thumb.png" width="667" height="52"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The VS.NET Code&lt;/strong&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="font-family: consolas"&gt;&amp;nbsp;&lt;span style="color: blue"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[]
args)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;BreezeDataContext&lt;/span&gt; dc
= &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;BreezeDataContext&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"http://breezelocal"&lt;/span&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; {&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; &lt;span style="color: blue"&gt;var&lt;/span&gt; myitems
= &lt;span style="color: blue"&gt;from&lt;/span&gt; i &lt;span style="color: blue"&gt;in&lt;/span&gt; dc.GetList&amp;lt;&lt;span style="color: #2b91af"&gt;ContentListTraining&lt;/span&gt;&amp;gt;(&lt;span style="color: #a31515"&gt;"My
Content List"&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;where&lt;/span&gt; i.ContentType
== &lt;span style="color: #a31515"&gt;"Training"&lt;/span&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;select&lt;/span&gt; i;&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; &lt;span style="color: blue"&gt;var&lt;/span&gt; courses
= myitems.ToList&amp;lt;&lt;span style="color: #2b91af"&gt;ContentListTraining&lt;/span&gt;&amp;gt;();&lt;br&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; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"There
are {0} items"&lt;/span&gt;,courses[0].Title);&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; 
&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; }&lt;br&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; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=1922491d-23f6-4c5e-b6c5-a6533e693d7a" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,1922491d-23f6-4c5e-b6c5-a6533e693d7a.aspx</comments>
      <category>.NET Developer</category>
      <category>SharePoint</category>
      <category>SharePoint/2010</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=25a2011d-0bfc-46d2-b394-c1421a3de166</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,25a2011d-0bfc-46d2-b394-c1421a3de166.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,25a2011d-0bfc-46d2-b394-c1421a3de166.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=25a2011d-0bfc-46d2-b394-c1421a3de166</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I got an email from David Marsh telling me about this new world from MS. Let me share
a little…<br />
Way back when…LOGO was one of the first languages I learnt as a kid.
</p>
        <p>
Moving a turtle around on a page with commands such as <strong>PenUp, PenDown, RightTurn
etc etc</strong> – pretty cool as a kid and then you could draw things (there was
a big version of the Turtle that interfaced into an Apple II via a ribbon cable as
wide as a 4 lane highway)
</p>
        <p>
MS Dev Labs have released a great <strong>SmallBasic</strong> environment that is
very simple to pickup (great for kids).<br />
It’s got a very simple set of commands <strong>AND it outputs straight to Silverlight</strong>.<br /><img src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/SmallBasicFunSimplePowerfulProgrammingf_B497/Small%20Basic_2.png" width="488" height="313" /><br /><br />
Pretty quick ways of building silverlight apps….nice!<br /><br />
Check out <a title="http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx" href="http://smallbasic.com">http://smallbasic.com</a> –only
if you have some free time <img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif" /></p>
        <p>
          <hr />
        </p>
        <p>
          <object id="sbapp" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="640" height="480">
            <param name="source" value="http://smallbasic.com/program/ClientBin/SBWeb.xap" />
            <param name="onError" value="onSilverlightError" />
            <param name="background" value="white" />
            <param name="minRuntimeVersion" value="3.0.40624.0" />
            <param name="autoUpgrade" value="true" />
            <param name="initParams" value="programId=WKN265" />
          </object>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=25a2011d-0bfc-46d2-b394-c1421a3de166" />
      </body>
      <title>Turtle LOGO is reborn – Silverlight style</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,25a2011d-0bfc-46d2-b394-c1421a3de166.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2010/02/10/TurtleLOGOIsRebornSilverlightStyle.aspx</link>
      <pubDate>Wed, 10 Feb 2010 03:39:38 GMT</pubDate>
      <description>&lt;p&gt;
I got an email from David Marsh telling me about this new world from MS. Let me share
a little…&lt;br&gt;
Way back when…LOGO was one of the first languages I learnt as a kid.
&lt;/p&gt;
&lt;p&gt;
Moving a turtle around on a page with commands such as &lt;strong&gt;PenUp, PenDown, RightTurn
etc etc&lt;/strong&gt; – pretty cool as a kid and then you could draw things (there was
a big version of the Turtle that interfaced into an Apple II via a ribbon cable as
wide as a 4 lane highway)
&lt;/p&gt;
&lt;p&gt;
MS Dev Labs have released a great &lt;strong&gt;SmallBasic&lt;/strong&gt; environment that is
very simple to pickup (great for kids).&lt;br&gt;
It’s got a very simple set of commands &lt;strong&gt;AND it outputs straight to Silverlight&lt;/strong&gt;.&lt;br&gt;
&lt;img src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/SmallBasicFunSimplePowerfulProgrammingf_B497/Small%20Basic_2.png" width="488" height="313"&gt;
&lt;br&gt;
&lt;br&gt;
Pretty quick ways of building silverlight apps….nice!&lt;br&gt;
&lt;br&gt;
Check out &lt;a title="http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx" href="http://smallbasic.com"&gt;http://smallbasic.com&lt;/a&gt; –only
if you have some free time &lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;object id='sbapp' data='data:application/x-silverlight-2,' type='application/x-silverlight-2' width='640' height='480'&gt;
&lt;param name="source" value="http://smallbasic.com/program/ClientBin/SBWeb.xap" /&gt;
&lt;param name="onError" value="onSilverlightError" /&gt;
&lt;param name="background" value="white" /&gt;
&lt;param name="minRuntimeVersion" value="3.0.40624.0" /&gt;
&lt;param name="autoUpgrade" value="true" /&gt;
&lt;param name="initParams" value="programId=WKN265" /&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=25a2011d-0bfc-46d2-b394-c1421a3de166" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,25a2011d-0bfc-46d2-b394-c1421a3de166.aspx</comments>
      <category>.NET Developer</category>
      <category>General</category>
      <category>Silverlight</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Many times in BizTalk land we work with Schemas that are nested and have several related
Schemas that are <strong>Imported</strong> from URL locations etc.
</p>
        <p>
When you include these schemas and deploy to Production, you find out that the BizTalk
server doesn’t access the Internet directly. Hence all the schema Imports fail.
</p>
        <p>
You’ll then go and try hand edit the Imports, downloading the referenced Schema and
try and Mash up something that refers to local files and no URL based Schemas. It
may or may not work…till the next update…
</p>
        <p>
I recently came across a handy set of free tools that take all the pain out to do
with Schemas –&gt; 
</p>
        <p>
          <strong>
            <a href="http://www.xmlhelpline.com/tools/index.html" target="_blank">Xml
Help Line</a>
          </strong>
        </p>
        <p>
Which has <strong>Xml Schema Lightener, Xml Schema Flattener</strong></p>
        <p>
Another very handy tool not to leave home without.
</p>
        <p>
Enjoy. 
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72" />
      </body>
      <title>Handy XML Tools – Schema Tools</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2010/01/14/HandyXMLToolsSchemaTools.aspx</link>
      <pubDate>Thu, 14 Jan 2010 22:43:18 GMT</pubDate>
      <description>&lt;p&gt;
Many times in BizTalk land we work with Schemas that are nested and have several related
Schemas that are &lt;strong&gt;Imported&lt;/strong&gt; from URL locations etc.
&lt;/p&gt;
&lt;p&gt;
When you include these schemas and deploy to Production, you find out that the BizTalk
server doesn’t access the Internet directly. Hence all the schema Imports fail.
&lt;/p&gt;
&lt;p&gt;
You’ll then go and try hand edit the Imports, downloading the referenced Schema and
try and Mash up something that refers to local files and no URL based Schemas. It
may or may not work…till the next update…
&lt;/p&gt;
&lt;p&gt;
I recently came across a handy set of free tools that take all the pain out to do
with Schemas –&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://www.xmlhelpline.com/tools/index.html" target="_blank"&gt;Xml
Help Line&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Which has &lt;strong&gt;Xml Schema Lightener, Xml Schema Flattener&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Another very handy tool not to leave home without.
&lt;/p&gt;
&lt;p&gt;
Enjoy. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,d927cfa7-e9f4-4771-a7b7-c8f50cfcbc72.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=75d78fdb-924c-4a8e-ad54-89262abd4fc1</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,75d78fdb-924c-4a8e-ad54-89262abd4fc1.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,75d78fdb-924c-4a8e-ad54-89262abd4fc1.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=75d78fdb-924c-4a8e-ad54-89262abd4fc1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently at the SharePoint Conference (SPC2010) delegates were given a beautiful book
with all sorts of developers bits.
</p>
        <p>
The book stars 123 pages of great information, and improvements to many areas that
we previously had pain with (lists, queries, and just CAML in general)
</p>
        <p>
There’s also 6 walkthroughs (sort of like HOLs) with code etc. to give you a feel
for customising SharePoint. 
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cffb14e8-88a9-43bd-87aa-4792ab60d320&amp;displaylang=en" target="_blank">Grab
the PDF version HERE</a>
          <br />
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cffb14e8-88a9-43bd-87aa-4792ab60d320&amp;displaylang=en" target="_blank">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/SharePoint2010ProfessionalDevelopersGuid_ED4B/image_5.png" width="304" height="392" />
          </a>
        </p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
Some snippets which I found interesting from the book are:
</p>
        <ol>
          <li>
Some great object model options now for integrating with SharePoint.<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/SharePoint2010ProfessionalDevelopersGuid_ED4B/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/SharePoint2010ProfessionalDevelopersGuid_ED4B/image_thumb.png" width="320" height="246" /></a><br />
Points to note here: 
<br />
- Client OM + Rest are exposed as WCF Services (based on Client.Svc) and the Client
OM is a batched model, so you transmit only what you ask for within Object Collection
Hierarchies (unlike SPSite.AllWebs etc etc)<br />
- LINQ to SharePoint is initially created with SPMetal to create all the LINQ classes
(there’s no ‘designer’ support for this yet, like LINQ for SQL – at least in this
beta)<br />
- External Lists are an interesting one, you can develop plugins to expose two-way
data syncs within SharePoint. I’m looking to reach out to SAP + Siebel systems when
I explore this option :)<br /></li>
          <li>
Resource Throttling is turned on by default – previously developers could write code
like SPList.Items… Usually on a Developer’s machine, with 5 items in a list this was
not an issue, 8000 items in a list turns into a different story.<br /><br />
SharePoint 2010 now has safe guards against this turned on by default.</li>
        </ol>
        <p>
Enjoy…I’m off to enjoy the sun.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=75d78fdb-924c-4a8e-ad54-89262abd4fc1" />
      </body>
      <title>SharePoint 2010: Professional Developers Guide (BETA) Released</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,75d78fdb-924c-4a8e-ad54-89262abd4fc1.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2009/11/14/SharePoint2010ProfessionalDevelopersGuideBETAReleased.aspx</link>
      <pubDate>Sat, 14 Nov 2009 05:53:07 GMT</pubDate>
      <description>&lt;p&gt;
Recently at the SharePoint Conference (SPC2010) delegates were given a beautiful book
with all sorts of developers bits.
&lt;/p&gt;
&lt;p&gt;
The book stars 123 pages of great information, and improvements to many areas that
we previously had pain with (lists, queries, and just CAML in general)
&lt;/p&gt;
&lt;p&gt;
There’s also 6 walkthroughs (sort of like HOLs) with code etc. to give you a feel
for customising SharePoint. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cffb14e8-88a9-43bd-87aa-4792ab60d320&amp;amp;displaylang=en" target="_blank"&gt;Grab
the PDF version HERE&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cffb14e8-88a9-43bd-87aa-4792ab60d320&amp;amp;displaylang=en" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/SharePoint2010ProfessionalDevelopersGuid_ED4B/image_5.png" width="304" height="392"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Some snippets which I found interesting from the book are:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Some great object model options now for integrating with SharePoint.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/SharePoint2010ProfessionalDevelopersGuid_ED4B/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/SharePoint2010ProfessionalDevelopersGuid_ED4B/image_thumb.png" width="320" height="246"&gt;&lt;/a&gt; 
&lt;br&gt;
Points to note here: 
&lt;br&gt;
- Client OM + Rest are exposed as WCF Services (based on Client.Svc) and the Client
OM is a batched model, so you transmit only what you ask for within Object Collection
Hierarchies (unlike SPSite.AllWebs etc etc)&lt;br&gt;
- LINQ to SharePoint is initially created with SPMetal to create all the LINQ classes
(there’s no ‘designer’ support for this yet, like LINQ for SQL – at least in this
beta)&lt;br&gt;
- External Lists are an interesting one, you can develop plugins to expose two-way
data syncs within SharePoint. I’m looking to reach out to SAP + Siebel systems when
I explore this option :)&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Resource Throttling is turned on by default – previously developers could write code
like SPList.Items… Usually on a Developer’s machine, with 5 items in a list this was
not an issue, 8000 items in a list turns into a different story.&lt;br&gt;
&lt;br&gt;
SharePoint 2010 now has safe guards against this turned on by default.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Enjoy…I’m off to enjoy the sun.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=75d78fdb-924c-4a8e-ad54-89262abd4fc1" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,75d78fdb-924c-4a8e-ad54-89262abd4fc1.aspx</comments>
      <category>.NET Developer</category>
      <category>Office</category>
      <category>Office/Deployment</category>
      <category>SharePoint/2010</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=fbfc5075-cc79-4200-a157-8cb4a917385a</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,fbfc5075-cc79-4200-a157-8cb4a917385a.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,fbfc5075-cc79-4200-a157-8cb4a917385a.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=fbfc5075-cc79-4200-a157-8cb4a917385a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Great to see some public information surfacing around SharePoint 2010 and development.
</p>
        <p>
To get started (if you’re not already) here’s the SDK with a CHM file and PDF/XPS
on “how to customise the ribbon”.<br /><a title="http://www.microsoft.com/downloads/details.aspx?familyid=94AFE886-3B20-4BC9-9A0D-ACD8CD232C24&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?familyid=94AFE886-3B20-4BC9-9A0D-ACD8CD232C24&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=94AFE886-3B20-4BC9-9A0D-ACD8CD232C24&amp;displaylang=en</a></p>
        <p>
Doing a little digging in the CHM file, you can see (below) all the different Content
categories with some special areas to note:
</p>
        <ol>
          <li>
There appears to be a Visio Server – I guess like InfoPath + Excel Services as they
currently stand in 2007.</li>
          <li>
AJAX + JSON seem to make an appearance at the foundational core – yay! less page reloads.</li>
          <li>
WCF Services used (*.SVC) as expected and simplified. Also it appears that BDC systems
are accessible via a SharePoint custom WCF Binding, making it possible to work on
BDC based data from various applications within SharePoint. SharePoint might become
the hub ‘repository’ for this sort of information.</li>
        </ol>
        <p>
Bear in mind *alot* of this information is ‘subject’ to change.<br /><br />
Certainly going fwd it should be very exciting to see what actually ships and whether
some of the immediate constraints are dealt with.
</p>
        <p>
Looks like we’re up for another Ribbon experience in this Version of SharePoint from
within the Browser.
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/WindowsLiveWriter/SharePoint2010TechPreviewDeveloperSDKish_CAD/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/WindowsLiveWriter/SharePoint2010TechPreviewDeveloperSDKish_CAD/image_thumb.png" width="644" height="428" />
          </a>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=fbfc5075-cc79-4200-a157-8cb4a917385a" />
      </body>
      <title>SharePoint 2010 (Tech Preview) Developer SDK is here</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,fbfc5075-cc79-4200-a157-8cb4a917385a.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2009/09/03/SharePoint2010TechPreviewDeveloperSDKIsHere.aspx</link>
      <pubDate>Thu, 03 Sep 2009 14:54:21 GMT</pubDate>
      <description>&lt;p&gt;
Great to see some public information surfacing around SharePoint 2010 and development.
&lt;/p&gt;
&lt;p&gt;
To get started (if you’re not already) here’s the SDK with a CHM file and PDF/XPS
on “how to customise the ribbon”.&lt;br&gt;
&lt;a title="http://www.microsoft.com/downloads/details.aspx?familyid=94AFE886-3B20-4BC9-9A0D-ACD8CD232C24&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?familyid=94AFE886-3B20-4BC9-9A0D-ACD8CD232C24&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=94AFE886-3B20-4BC9-9A0D-ACD8CD232C24&amp;amp;displaylang=en&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Doing a little digging in the CHM file, you can see (below) all the different Content
categories with some special areas to note:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
There appears to be a Visio Server – I guess like InfoPath + Excel Services as they
currently stand in 2007.&lt;/li&gt;
&lt;li&gt;
AJAX + JSON seem to make an appearance at the foundational core – yay! less page reloads.&lt;/li&gt;
&lt;li&gt;
WCF Services used (*.SVC) as expected and simplified. Also it appears that BDC systems
are accessible via a SharePoint custom WCF Binding, making it possible to work on
BDC based data from various applications within SharePoint. SharePoint might become
the hub ‘repository’ for this sort of information.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Bear in mind *alot* of this information is ‘subject’ to change.&lt;br&gt;
&lt;br&gt;
Certainly going fwd it should be very exciting to see what actually ships and whether
some of the immediate constraints are dealt with.
&lt;/p&gt;
&lt;p&gt;
Looks like we’re up for another Ribbon experience in this Version of SharePoint from
within the Browser.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/WindowsLiveWriter/SharePoint2010TechPreviewDeveloperSDKish_CAD/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/WindowsLiveWriter/SharePoint2010TechPreviewDeveloperSDKish_CAD/image_thumb.png" width="644" height="428"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=fbfc5075-cc79-4200-a157-8cb4a917385a" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,fbfc5075-cc79-4200-a157-8cb4a917385a.aspx</comments>
      <category>.NET Developer</category>
      <category>MOSS</category>
      <category>Office</category>
      <category>Office/Deployment</category>
      <category>SharePoint/2010</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=31142105-0e22-4daf-b4a7-0a636fe13bf2</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,31142105-0e22-4daf-b4a7-0a636fe13bf2.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,31142105-0e22-4daf-b4a7-0a636fe13bf2.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=31142105-0e22-4daf-b4a7-0a636fe13bf2</wfw:commentRss>
      <title>WCF Champ vs Contender Series</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,31142105-0e22-4daf-b4a7-0a636fe13bf2.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2009/04/10/WCFChampVsContenderSeries.aspx</link>
      <pubDate>Fri, 10 Apr 2009 21:30:12 GMT</pubDate>
      <description>&lt;p&gt;
Well folks, hot on the heels of the MMA Contender Series....here's another Series
which I'm sure will cause a stir.
&lt;/p&gt;
&lt;p&gt;
Check out part#1 and part#2 below
&lt;/p&gt;
&lt;br&gt;
&lt;object width="560" height="340"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/7y2aQ-A_AIs&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&gt;&gt;
&lt;param name="allowFullScreen" value="true"&gt;&gt;
&lt;param name="allowscriptaccess" value="always"&gt;&gt;&lt;embed src="http://www.youtube.com/v/7y2aQ-A_AIs&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;hr&gt;
&lt;br&gt;
&lt;object width="560" height="340"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/RRzyJuVOa4s&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"&gt;&gt;
&lt;param name="allowFullScreen" value="true"&gt;&gt;
&lt;param name="allowscriptaccess" value="always"&gt;&gt;&lt;embed src="http://www.youtube.com/v/RRzyJuVOa4s&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=31142105-0e22-4daf-b4a7-0a636fe13bf2" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,31142105-0e22-4daf-b4a7-0a636fe13bf2.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=20de6d3f-5145-4458-ae5b-63feaf789b04</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,20de6d3f-5145-4458-ae5b-63feaf789b04.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,20de6d3f-5145-4458-ae5b-63feaf789b04.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=20de6d3f-5145-4458-ae5b-63feaf789b04</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi guys,
</p>
        <p>
If you're looking to get into how to host WCF Services on Azure, showing some cool
graphics, then these samples are for you.
</p>
        <p>
Silverlight v3.0 (beta), and important samples showing how to take your existing WCF
Services and hosting/housing them in Auze (there's a few gotchas - and these samples
have work arounds :) )
</p>
        <p>
Grab them here - 
</p>
        <p>
          <a href="http://code.msdn.microsoft.com/wcfazure">http://code.msdn.microsoft.com/wcfazure</a>
        </p>
        <p>
          <img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=wcfazure&amp;DownloadId=5304" />
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=20de6d3f-5145-4458-ae5b-63feaf789b04" />
      </body>
      <title>WCF, Azure and Samples - lots of Samples</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,20de6d3f-5145-4458-ae5b-63feaf789b04.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2009/04/10/WCFAzureAndSamplesLotsOfSamples.aspx</link>
      <pubDate>Fri, 10 Apr 2009 05:29:20 GMT</pubDate>
      <description>&lt;p&gt;
Hi guys,
&lt;/p&gt;
&lt;p&gt;
If you're looking to get into how to host WCF Services on Azure, showing some cool
graphics, then these samples are for you.
&lt;/p&gt;
&lt;p&gt;
Silverlight v3.0 (beta), and important samples showing how to take your existing WCF
Services and hosting/housing them in Auze (there's a few gotchas - and these samples
have work arounds :) )
&lt;/p&gt;
&lt;p&gt;
Grab them here - 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://code.msdn.microsoft.com/wcfazure"&gt;http://code.msdn.microsoft.com/wcfazure&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=wcfazure&amp;amp;DownloadId=5304"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=20de6d3f-5145-4458-ae5b-63feaf789b04" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,20de6d3f-5145-4458-ae5b-63feaf789b04.aspx</comments>
      <category>.NET Developer</category>
      <category>Azure</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=b35f49c5-0d75-4fea-80c0-3635d500799a</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,b35f49c5-0d75-4fea-80c0-3635d500799a.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,b35f49c5-0d75-4fea-80c0-3635d500799a.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=b35f49c5-0d75-4fea-80c0-3635d500799a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yep - hot off the press thanks to Stephen a friend of mine (who brought this to my
attention)
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42">http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42</a>
        </p>
        <p>
Don't leave home without it.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=b35f49c5-0d75-4fea-80c0-3635d500799a" />
      </body>
      <title>SharePoint Designer - now FREE</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,b35f49c5-0d75-4fea-80c0-3635d500799a.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2009/04/05/SharePointDesignerNowFREE.aspx</link>
      <pubDate>Sun, 05 Apr 2009 08:55:07 GMT</pubDate>
      <description>&lt;p&gt;
Yep - hot off the press thanks to Stephen a friend of mine (who brought this to my
attention)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Don't leave home without it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=b35f49c5-0d75-4fea-80c0-3635d500799a" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,b35f49c5-0d75-4fea-80c0-3635d500799a.aspx</comments>
      <category>.NET Developer</category>
      <category>MOSS</category>
      <category>MOSS/Admin</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=657bd288-e488-4f09-88ec-b491552614f0</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,657bd288-e488-4f09-88ec-b491552614f0.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,657bd288-e488-4f09-88ec-b491552614f0.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=657bd288-e488-4f09-88ec-b491552614f0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You want to know the ins and outs of WCF at a glance – then the mini-book is a winner.<br />
(Just let this puppy fall out of your back pocket in the office and watch the guys
instantly want to Sync up their Complete Series of Star Trek with you…)
</p>
        <p>
Seriously – great guide, easy to flick through and welcome to another 8 million lines
of code you thought you could live without :)
</p>
        <p>
Thanks to the efforts of <strong>Cliff Simpkins and his team</strong> for their dedication
on this.
</p>
        <p>
          <strong>6 Chapters + Code….are you man enough?</strong>
        </p>
        <p>
          <a title="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=netfxsamples&amp;DownloadId=4962" href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=netfxsamples&amp;DownloadId=4962">http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=netfxsamples&amp;DownloadId=4962</a>
          <br />
          <br />
          <img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="WCF Channel Stack" border="0" alt="WCF Channel Stack" align="left" src="http://blogs.breezetraining.com.au/mickb/content/WCFChannelMiniBookrevived_12D5E/clip_image002.gif" width="407" height="297" />
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=657bd288-e488-4f09-88ec-b491552614f0" />
      </body>
      <title>WCF Channel Mini Book - revived</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,657bd288-e488-4f09-88ec-b491552614f0.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2009/03/12/WCFChannelMiniBookRevived.aspx</link>
      <pubDate>Thu, 12 Mar 2009 10:25:56 GMT</pubDate>
      <description>&lt;p&gt;
You want to know the ins and outs of WCF at a glance – then the mini-book is a winner.&lt;br&gt;
(Just let this puppy fall out of your back pocket in the office and watch the guys
instantly want to Sync up their Complete Series of Star Trek with you…)
&lt;/p&gt;
&lt;p&gt;
Seriously – great guide, easy to flick through and welcome to another 8 million lines
of code you thought you could live without :)
&lt;/p&gt;
&lt;p&gt;
Thanks to the efforts of &lt;strong&gt;Cliff Simpkins and his team&lt;/strong&gt; for their dedication
on this.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;6 Chapters + Code….are you man enough?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=netfxsamples&amp;amp;DownloadId=4962" href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=netfxsamples&amp;amp;DownloadId=4962"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=netfxsamples&amp;amp;DownloadId=4962&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="WCF Channel Stack" border="0" alt="WCF Channel Stack" align="left" src="http://blogs.breezetraining.com.au/mickb/content/WCFChannelMiniBookrevived_12D5E/clip_image002.gif" width="407" height="297"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=657bd288-e488-4f09-88ec-b491552614f0" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,657bd288-e488-4f09-88ec-b491552614f0.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>Tips</category>
      <category>WinWF</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=a0e0f91a-8052-4935-907c-669ac496e4eb</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,a0e0f91a-8052-4935-907c-669ac496e4eb.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,a0e0f91a-8052-4935-907c-669ac496e4eb.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=a0e0f91a-8052-4935-907c-669ac496e4eb</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image.png">
            <img title="Cant do" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="184" alt="Cant do" src="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_thumb.png" width="378" border="0" />
          </a>
        </p>
        <p>
          <strong>“The product cannot be installed on this machine since it seems to be a domain
controller”</strong>
        </p>
        <p>
What a start to 2009!!! – the above dreaded message when trying to (in this case)
install <strong>BizTalk RFID</strong> on a <strong>DC</strong>.<br />
For me – this happens quite a bit, as I’m building up a proof of concept, a demo,
something to show and present with.
</p>
        <p>
I always…always….forget to install BizTalk RFID bits before I promote to a DC (this
technique can also cause security acct issues after the machine has been promoted
to a DC – depends on how the authentication is setup etc)
</p>
        <p>
          <strong>NOTE: BTW – Installing BizTalk RFID on a DC is NOT SUPPORTED</strong> (had
to put that one in their – keeps both sides happy)
</p>
        <p>
For love or money I’ve bounced this question around for a while and come up empty,
until…today!!! Niklas Engfelt<strong> a senior MS support engineer came to my rescue </strong>(he
famously provided those thoughts from left field which were on the money! Big thank
you Niklas)
</p>
        <p>
He suggested grabbing <strong>Orca from the Platform SDK</strong> and having a browse
through – I’d used HEX editors, disassembled files, attached process monitors during
installs and looked through any config file with a fine tooth comb…but I’d never tried
a <strong>MSI Editor</strong>.
</p>
        <p>
          <strong>The steps to Enlightenment: </strong>(changing the installer validation conditions)
</p>
        <ol>
          <li>
Grab a download of <a href="http://www.technipages.com/download-orca-msi-editor.html" target="_blank">Orca
from here</a> (I didn’t have the platform SDK currently installed and wasn’t about
to install 1.2 GB worth either) and follow default install prompts.</li>
          <li>
If you haven’t done so already copy the <strong>RFID_x86 </strong>or <strong>RFID_x64</strong> folders
off the install media to a temp folder nearby (note: sometimes on Win2K8, the system
prevents copied files from being accessed until an admin comes along and says ‘these
are ok’ by going into File-&gt;Properties on each file. It’s weird I know, but I get
it every now and then)</li>
          <li>
            <strong>Locate the RFIDServices.msi</strong> under the RFID folder and you’re ready
to go.</li>
          <li>
            <strong>Launch Orca </strong>and <strong>open RFIDServices.msi </strong>to get something
like:</li>
          <li>
            <a href="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_3.png" target="_blank">
              <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="395" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_thumb_3.png" width="621" border="0" />
            </a>
            <br />
          </li>
          <li>
Under the <strong>Tables Column</strong> select <strong>LaunchCondition </strong>and
drop the <strong>2nd Row </strong>as follows:<br /></li>
          <li>
            <a href="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_4.png">
              <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_thumb_4.png" width="724" border="0" />
            </a>
            <br />
          </li>
          <li>
            <strong>Drop the Row and Save the MSI file again.</strong>
            <br />
          </li>
          <li>
Run Setup.exe as per normal.</li>
        </ol>
        <p>
Oh what a sweet day!
</p>
        <p>
p.s. I’m sure you’d be able to employ this technique onto other MSI’s causing grief.
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Mick
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a0e0f91a-8052-4935-907c-669ac496e4eb" />
      </body>
      <title>Installing BizTalk RFID on a DC!!! Oh at last!!!</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,a0e0f91a-8052-4935-907c-669ac496e4eb.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2009/01/05/InstallingBizTalkRFIDOnADCOhAtLast.aspx</link>
      <pubDate>Mon, 05 Jan 2009 03:18:43 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image.png"&gt;&lt;img title="Cant do" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="184" alt="Cant do" src="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_thumb.png" width="378" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;“The product cannot be installed on this machine since it seems to be a domain
controller”&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
What a start to 2009!!! – the above dreaded message when trying to (in this case)
install &lt;strong&gt;BizTalk RFID&lt;/strong&gt; on a &lt;strong&gt;DC&lt;/strong&gt;.&lt;br&gt;
For me – this happens quite a bit, as I’m building up a proof of concept, a demo,
something to show and present with.
&lt;/p&gt;
&lt;p&gt;
I always…always….forget to install BizTalk RFID bits before I promote to a DC (this
technique can also cause security acct issues after the machine has been promoted
to a DC – depends on how the authentication is setup etc)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;NOTE: BTW – Installing BizTalk RFID on a DC is NOT SUPPORTED&lt;/strong&gt; (had
to put that one in their – keeps both sides happy)
&lt;/p&gt;
&lt;p&gt;
For love or money I’ve bounced this question around for a while and come up empty,
until…today!!! Niklas Engfelt&lt;strong&gt; a senior MS support engineer came to my rescue &lt;/strong&gt;(he
famously provided those thoughts from left field which were on the money! Big thank
you Niklas)
&lt;/p&gt;
&lt;p&gt;
He suggested grabbing &lt;strong&gt;Orca from the Platform SDK&lt;/strong&gt; and having a browse
through – I’d used HEX editors, disassembled files, attached process monitors during
installs and looked through any config file with a fine tooth comb…but I’d never tried
a &lt;strong&gt;MSI Editor&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The steps to Enlightenment: &lt;/strong&gt;(changing the installer validation conditions)
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Grab a download of &lt;a href="http://www.technipages.com/download-orca-msi-editor.html" target="_blank"&gt;Orca
from here&lt;/a&gt; (I didn’t have the platform SDK currently installed and wasn’t about
to install 1.2 GB worth either) and follow default install prompts.&lt;/li&gt;
&lt;li&gt;
If you haven’t done so already copy the &lt;strong&gt;RFID_x86 &lt;/strong&gt;or &lt;strong&gt;RFID_x64&lt;/strong&gt; folders
off the install media to a temp folder nearby (note: sometimes on Win2K8, the system
prevents copied files from being accessed until an admin comes along and says ‘these
are ok’ by going into File-&amp;gt;Properties on each file. It’s weird I know, but I get
it every now and then)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locate the RFIDServices.msi&lt;/strong&gt; under the RFID folder and you’re ready
to go.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Launch Orca &lt;/strong&gt;and &lt;strong&gt;open RFIDServices.msi &lt;/strong&gt;to get something
like:&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_3.png" target="_blank"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="395" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_thumb_3.png" width="621" border="0"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Under the &lt;strong&gt;Tables Column&lt;/strong&gt; select &lt;strong&gt;LaunchCondition &lt;/strong&gt;and
drop the &lt;strong&gt;2nd Row &lt;/strong&gt;as follows:&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/InstallingBizTalkRFIDonaDCOhatlast_C91D/image_thumb_4.png" width="724" border="0"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drop the Row and Save the MSI file again.&lt;/strong&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Run Setup.exe as per normal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Oh what a sweet day!
&lt;/p&gt;
&lt;p&gt;
p.s. I’m sure you’d be able to employ this technique onto other MSI’s causing grief.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Mick
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a0e0f91a-8052-4935-907c-669ac496e4eb" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,a0e0f91a-8052-4935-907c-669ac496e4eb.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/RFID</category>
      <category>General</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With all the developer extensions in recent time around SharePoint (Features, Solutions
etc), I've found there seems to be a few little known and little used 'other' APIs
within the SharePoint space.
</p>
        <p>
We've got things like WebServices and the SharePoint Object Model (SPSite etc) that
we use however, there's a couple of other APIs that could be useful also for the times
when you're not running locally on the SharePoint machine - they generally center
around HTTP and extending it.
</p>
        <p>
Two (that come immediately to my mind) are:
</p>
        <p>
1. WebDav - early versions of 'Web Folders' used this.
</p>
        <p>
          <strong>2. RPC (over HTTP) APIs - Front Page and SharePoint Designer still use these.<br /></strong>(InfoPath when submitting forms uses this to promote properties to a forms
library)
</p>
        <p>
A great example of this is <strong><a href="http://www.codeplex.com/sharepad/Release/ProjectReleases.aspx?ReleaseId=4668" target="_blank">SharePad
for SharePoint on CodePlex</a></strong></p>
        <p>
Merry Christmas,
</p>
        <p>
Mick.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427" />
      </body>
      <title>SharePoint APIs - RPC for SharePoint Sample</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/12/23/SharePointAPIsRPCForSharePointSample.aspx</link>
      <pubDate>Tue, 23 Dec 2008 04:34:03 GMT</pubDate>
      <description>&lt;p&gt;
With all the developer extensions in recent time around SharePoint (Features, Solutions
etc), I've found there seems to be a few little known and little used 'other' APIs
within the SharePoint space.
&lt;/p&gt;
&lt;p&gt;
We've got things like WebServices and the SharePoint Object Model (SPSite etc) that
we use however, there's a couple of other APIs that could be useful also for the times
when you're not running locally on the SharePoint machine - they generally center
around HTTP and extending it.
&lt;/p&gt;
&lt;p&gt;
Two (that come immediately to my mind) are:
&lt;/p&gt;
&lt;p&gt;
1. WebDav - early versions of 'Web Folders' used this.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. RPC (over HTTP) APIs - Front Page and SharePoint Designer still use these.&lt;br&gt;
&lt;/strong&gt;(InfoPath when submitting forms uses this to promote properties to a forms
library)
&lt;/p&gt;
&lt;p&gt;
A great example of this is &lt;strong&gt;&lt;a href="http://www.codeplex.com/sharepad/Release/ProjectReleases.aspx?ReleaseId=4668" target="_blank"&gt;SharePad
for SharePoint on CodePlex&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Merry Christmas,
&lt;/p&gt;
&lt;p&gt;
Mick.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,6faca3b1-d2e0-4aa8-aa2f-6e46ba7ae427.aspx</comments>
      <category>.NET Developer</category>
      <category>MOSS</category>
      <category>Office</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=9ef70dbb-4332-4221-bff0-74c5047079cc</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,9ef70dbb-4332-4221-bff0-74c5047079cc.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,9ef70dbb-4332-4221-bff0-74c5047079cc.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=9ef70dbb-4332-4221-bff0-74c5047079cc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ever wondered how you might implement "<strong>Hello World</strong>" in a non-domain
specific language such as in the roots of Oslo looks like.........(I found a snippet
from one of the PDC Webcasts....)
</p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="108" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image_thumb.png" width="644" border="0" />
          </a>
        </p>
        <p>
(This is written in a tool/shell that ships as part of the Oslo SDK - Intellipad)<br />
The left hand side is <strong>the instance document</strong>; the middle is the <strong>grammar </strong>or <strong>transformation</strong>;
and the right is the <strong>Output Graph.</strong></p>
        <p>
This is a pretty specific sample - as in fact its very specific and only takes one
input - "Hello World" (as dictated on the <strong>syntax line</strong>)
</p>
        <p>
          <strong>What's so special about all of this??</strong> I hear you ask.....
</p>
        <p>
There's a huge amount of power in being able to 'model' your world/data and relationships.
Today we're pretty comfortable with <strong>XML</strong> but we also have to tolerate
things like parsing '&lt;' or attributes etc. Or if you've ever been given a schema
full 100s of fields when you needed to use just 5. XML is not perfect, but it certainly
has its need.
</p>
        <p>
Storing this sort of XML in the DB I think is painful at best, while SQL 2005/2008
goes part way towards helping us, there's still a bunch of specifics that the DB needs
to know about the XML and if that Schema changes, then that change goes all the way
to the DB....otherwise the alternative is Tables/Rows/Columns + invest in Stored Procs
to manipulate the data.
</p>
        <p>
          <strong>Enter the Modeling Language -M</strong>
        </p>
        <p>
We can basically define our world - if you're dealing with a customer with 5 attributes,
that's all you specify. You could take your V1.0 representation of a Customer and
extend it etc etc.
</p>
        <p>
Deploying the model is deployed straight to the Database (known as a Repository) -
the deployment step actually creates one or more tables, and corresponding Views.
Access is never granted to the raw table, only to the View. That way when you extend
or upgrade your models, existing clients see just their original 'View' keeping the
new attributes separate.
</p>
        <p>
So in terms of building a model of the information your systems are utilising -&gt;
'M' is a very rich language, which decorates and defines a whole bunch of metadata
around your needed entities.<br /><br />
Digging a little deeper into <strong>M.... we have 3 main defining components:</strong></p>
        <p>
          <strong>1. M-Schema </strong>- defines the entities + metadata (e.g. unique values/ids
etc)
</p>
        <p>
          <strong>2. M-Grammar </strong>- defines the 'Transformation'. How to <strong>transform</strong> the
source into the output. You could loosely look at this as:  <strong>Y=fn(M) </strong><em>"Y
equals some Function of M"</em></p>
        <p>
          <strong>3. M-Graph </strong>- a directed graph that defines the output (they use <strong>directed
graph</strong> to indicate through lexical parses, that something has a start and
definitely finishes.This is a check the compiler will do)<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image_3.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="384" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image_thumb_3.png" width="660" border="0" /></a></p>
        <p>
You'll notice at the top of this shot, there are <strong>DSLs</strong> - these are <strong>Domain
Specific Languages</strong>. e.g. a language full of terms and expressions to define
for e.g <strong>How to work with You local surf clubs competitions</strong>; another
could be <strong>How to Manage and describe Santa's Wish list.</strong><br /><br />
You might be thinking....I go pretty well in C#, why should I look into <strong>M??</strong> C#
is obviously a highly functional language that when you start coding you've got all
the language constructs and notation under the sun at your disposal - decorations
are done through attributes on methods/classes etc.....but modeling something still
in done in a pretty bland way e.g. structs, classes, datasets, typed datasets etc.
You're starting with a wide open language that really without you creating a bunch
of classes/code doesn't have methods like <strong>Club.StartCarnival.....</strong><br /><br />
M - take what you're describing, a carnival and model it. What entities are in a Carnival
(people, lifesavers, boats etc) - model this - give us a picture of what they look
like (data you'd like to hold and the relation ship), define a grammar (words, constructs
and operations) on how we can work with these entities - we now have a <strong>Surf
DSL </strong>(that of course can be extended to V2.0....)
</p>
        <p>
          <br />
Developing solutions against the Surf DSL - the compiler knows all the defined commands,
constructs and schemas (cause we defined them in our DSL). They're the only operands
that you can use as a developer - this simplifies the picture immensely.
</p>
        <p>
The beauty about M is that the DSL is simply deployed to a Repository (which at this
stage is SQL Server, but could be any DB as we get access to the TSQL behind the scenes)<br /><br /><strong>As I dig a little deeper I'll be illustrating with some samples going forward
- hope you enjoyed this post....for now :)</strong></p>
        <p>
Lastly - it's amazing that way back at Uni, I studied a subject called <strong>'The
Natural Language-L'</strong> (and it was one of those things where I thought - I'd
never use this again....well guess what 15 years on....M is looking very close. How
I even remember this is even scarier!!!) - the subject was language agnostic and dealt
with what was required to create/specify a language that could be learnt, written
and interpreted.
</p>
        <p>
Cheers...'L'
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=9ef70dbb-4332-4221-bff0-74c5047079cc" />
      </body>
      <title>Hello World in Oslo</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,9ef70dbb-4332-4221-bff0-74c5047079cc.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/11/12/HelloWorldInOslo.aspx</link>
      <pubDate>Wed, 12 Nov 2008 11:34:12 GMT</pubDate>
      <description>&lt;p&gt;
Ever wondered how you might implement "&lt;strong&gt;Hello World&lt;/strong&gt;" in a non-domain
specific language such as in the roots of Oslo looks like.........(I found a snippet
from one of the PDC Webcasts....)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="108" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image_thumb.png" width="644" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
(This is written in a tool/shell that ships as part of the Oslo SDK - Intellipad)&lt;br&gt;
The left hand side is &lt;strong&gt;the instance document&lt;/strong&gt;; the middle is the &lt;strong&gt;grammar &lt;/strong&gt;or &lt;strong&gt;transformation&lt;/strong&gt;;
and the right is the &lt;strong&gt;Output Graph.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This is a pretty specific sample - as in fact its very specific and only takes one
input - "Hello World" (as dictated on the &lt;strong&gt;syntax line&lt;/strong&gt;)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What's so special about all of this??&lt;/strong&gt; I hear you ask.....
&lt;/p&gt;
&lt;p&gt;
There's a huge amount of power in being able to 'model' your world/data and relationships.
Today we're pretty comfortable with &lt;strong&gt;XML&lt;/strong&gt; but we also have to tolerate
things like parsing '&amp;lt;' or attributes etc. Or if you've ever been given a schema
full 100s of fields when you needed to use just 5. XML is not perfect, but it certainly
has its need.
&lt;/p&gt;
&lt;p&gt;
Storing this sort of XML in the DB I think is painful at best, while SQL 2005/2008
goes part way towards helping us, there's still a bunch of specifics that the DB needs
to know about the XML and if that Schema changes, then that change goes all the way
to the DB....otherwise the alternative is Tables/Rows/Columns + invest in Stored Procs
to manipulate the data.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Enter the Modeling Language -M&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We can basically define our world - if you're dealing with a customer with 5 attributes,
that's all you specify. You could take your V1.0 representation of a Customer and
extend it etc etc.
&lt;/p&gt;
&lt;p&gt;
Deploying the model is deployed straight to the Database (known as a Repository) -
the deployment step actually creates one or more tables, and corresponding Views.
Access is never granted to the raw table, only to the View. That way when you extend
or upgrade your models, existing clients see just their original 'View' keeping the
new attributes separate.
&lt;/p&gt;
&lt;p&gt;
So in terms of building a model of the information your systems are utilising -&amp;gt;
'M' is a very rich language, which decorates and defines a whole bunch of metadata
around your needed entities.&lt;br&gt;
&lt;br&gt;
Digging a little deeper into &lt;strong&gt;M.... we have 3 main defining components:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. M-Schema &lt;/strong&gt;- defines the entities + metadata (e.g. unique values/ids
etc)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. M-Grammar &lt;/strong&gt;- defines the 'Transformation'. How to &lt;strong&gt;transform&lt;/strong&gt; the
source into the output. You could loosely look at this as:&amp;nbsp; &lt;strong&gt;Y=fn(M) &lt;/strong&gt;&lt;em&gt;"Y
equals some Function of M"&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;3. M-Graph &lt;/strong&gt;- a directed graph that defines the output (they use &lt;strong&gt;directed
graph&lt;/strong&gt; to indicate through lexical parses, that something has a start and
definitely finishes.This is a check the compiler will do)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="384" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/HelloWorldinOslo_132F9/image_thumb_3.png" width="660" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
You'll notice at the top of this shot, there are &lt;strong&gt;DSLs&lt;/strong&gt; - these are &lt;strong&gt;Domain
Specific Languages&lt;/strong&gt;. e.g. a language full of terms and expressions to define
for e.g &lt;strong&gt;How to work with You local surf clubs competitions&lt;/strong&gt;; another
could be &lt;strong&gt;How to Manage and describe Santa's Wish list.&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
You might be thinking....I go pretty well in C#, why should I look into &lt;strong&gt;M??&lt;/strong&gt; C#
is obviously a highly functional language that when you start coding you've got all
the language constructs and notation under the sun at your disposal - decorations
are done through attributes on methods/classes etc.....but modeling something still
in done in a pretty bland way e.g. structs, classes, datasets, typed datasets etc.
You're starting with a wide open language that really without you creating a bunch
of classes/code doesn't have methods like &lt;strong&gt;Club.StartCarnival.....&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
M - take what you're describing, a carnival and model it. What entities are in a Carnival
(people, lifesavers, boats etc) - model this - give us a picture of what they look
like (data you'd like to hold and the relation ship), define a grammar (words, constructs
and operations) on how we can work with these entities - we now have a &lt;strong&gt;Surf
DSL &lt;/strong&gt;(that of course can be extended to V2.0....)
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Developing solutions against the Surf DSL - the compiler knows all the defined commands,
constructs and schemas (cause we defined them in our DSL). They're the only operands
that you can use as a developer - this simplifies the picture immensely.
&lt;/p&gt;
&lt;p&gt;
The beauty about M is that the DSL is simply deployed to a Repository (which at this
stage is SQL Server, but could be any DB as we get access to the TSQL behind the scenes)&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;As I dig a little deeper I'll be illustrating with some samples going forward
- hope you enjoyed this post....for now :)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Lastly - it's amazing that way back at Uni, I studied a subject called &lt;strong&gt;'The
Natural Language-L'&lt;/strong&gt; (and it was one of those things where I thought - I'd
never use this again....well guess what 15 years on....M is looking very close. How
I even remember this is even scarier!!!) - the subject was language agnostic and dealt
with what was required to create/specify a language that could be learnt, written
and interpreted.
&lt;/p&gt;
&lt;p&gt;
Cheers...'L'
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=9ef70dbb-4332-4221-bff0-74c5047079cc" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,9ef70dbb-4332-4221-bff0-74c5047079cc.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk/Oslo</category>
      <category>Events/PDC08</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=5d262b62-e608-4071-a96e-5b5af408a8a2</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,5d262b62-e608-4071-a96e-5b5af408a8a2.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,5d262b62-e608-4071-a96e-5b5af408a8a2.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=5d262b62-e608-4071-a96e-5b5af408a8a2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Folks - while setting up some IIS servers for a BTS production environment I came
across this handy little tool.
</p>
        <p>
Basically gives you a Tree View of what things you'd like to install on your IIS Web
Server from MS (mother ship).
</p>
        <p>
Includes things like Service Packs, etc etc. - handy spot to grab all the new files
in <strong>one spot.<br /></strong>(as opposed to the piece meal approach - of install asp.net, oh you need
the .net 3.5 framework - install...oh...you also need SP1 ..with maybe a few reboots
inbetween)
</p>
        <p>
- single place for all the tools and other components that you'll need.
</p>
        <p>
- great way to do them <strong>all at once</strong>.
</p>
        <p>
Here's what you're after - 
<br /><a title="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx" href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx">http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx</a><br /><br />
 <a href="http://blogs.breezetraining.com.au/mickb/content/IIS.0andbeyondWebPlatformInstallerToolbe_14411/introPage.jpg"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="introPage" src="http://blogs.breezetraining.com.au/mickb/content/IIS.0andbeyondWebPlatformInstallerToolbe_14411/introPage_thumb.jpg" width="219" height="163" /></a></p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=5d262b62-e608-4071-a96e-5b5af408a8a2" />
      </body>
      <title>IIS7.0 and beyond Web Platform Installer Tool (beta)</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,5d262b62-e608-4071-a96e-5b5af408a8a2.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/11/03/IIS70AndBeyondWebPlatformInstallerToolBeta.aspx</link>
      <pubDate>Mon, 03 Nov 2008 12:02:46 GMT</pubDate>
      <description>&lt;p&gt;
Folks - while setting up some IIS servers for a BTS production environment I came
across this handy little tool.
&lt;/p&gt;
&lt;p&gt;
Basically gives you a Tree View of what things you'd like to install on your IIS Web
Server from MS (mother ship).
&lt;/p&gt;
&lt;p&gt;
Includes things like Service Packs, etc etc. - handy spot to grab all the new files
in &lt;strong&gt;one spot.&lt;br&gt;
&lt;/strong&gt;(as opposed to the piece meal approach - of install asp.net, oh you need
the .net 3.5 framework - install...oh...you also need SP1 ..with maybe a few reboots
inbetween)
&lt;/p&gt;
&lt;p&gt;
- single place for all the tools and other components that you'll need.
&lt;/p&gt;
&lt;p&gt;
- great way to do them &lt;strong&gt;all at once&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Here's what you're after - 
&lt;br&gt;
&lt;a title="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx" href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx"&gt;http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&lt;a href="http://blogs.breezetraining.com.au/mickb/content/IIS.0andbeyondWebPlatformInstallerToolbe_14411/introPage.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="introPage" src="http://blogs.breezetraining.com.au/mickb/content/IIS.0andbeyondWebPlatformInstallerToolbe_14411/introPage_thumb.jpg" width="219" height="163"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=5d262b62-e608-4071-a96e-5b5af408a8a2" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,5d262b62-e608-4071-a96e-5b5af408a8a2.aspx</comments>
      <category>.NET Developer</category>
      <category>General</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="138" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEd2008UpdateYourmyPrivacyconcern_1479F/BreezeExhibit2.jpg" width="135" />
        </p>
        <p>
The system we built has made it through its maiden event and was still capturing reads
well into the later afternoon (until we got round to tearing it down....technically
called 'Bump Out'....with all the moving bodies and parts, it's no wonder they call
it Bump Out!)<br /><br />
 <strong>I grabbed a couple of SilverLight screen shots to show what the system
is capable of </strong>- in the hectic pace of last week I didn't manage to grab some
screen captures of the system in action, these screen shots come from the courtesy
of <a href="http://eileenbrown.wordpress.com/2008/09/04/real-innovation-with-rfid-at-teched-australia/" target="_blank">Eileen
Brown's Blog</a> (she is responsible for running MS Events in the UK + a founder/advocate
for Women in IT)<br /><br /><strong>Walk-In Displays</strong> - these walk in displays were up on the big screens
as delegates entered/exited their sessions. Pretty cool!!!.<br /></p>
        <div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:3e2860e9-f100-42df-b01a-882f49736886" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <img border="0" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEdWrapUp_C77A/rfid1.png" />
        </div>
        <p>
          <br />
These screens are delivered via a browser and are what we call the <strong>'Walk-in'
Display. </strong>Here you can see 3 people leaving the room with the graph in the
background showing some delegate profiling data around attendance of previous TechEds.<br /></p>
        <div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:139b24a9-1f3e-4971-aa5f-f703e130b176" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <img border="0" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEdWrapUp_C77A/rfid2.png" />
        </div>
        <p>
Here we've got an enter and a leaving of the session. Something we didn't get time
to do at this show was to play on the scope for customisations with these avatars.
We had over 120 textures + bitmap type surfaces set for this, but during the show
this 'feature' got bumped further down the list. (Hats, scarves, hair type, colours
etc. you know the stuff)
</p>
        <p>
We had fun with a couple of names though - <strong>'@Coatsy'</strong> was one, <strong>'The
Stig'</strong> was another.
</p>
        <p>
The beauty about these screens was that people outside the conference got real time
stats about the rooms and could see the 'Walk-in' displays in near real time. (Late
night trouble shooting with my friends in MS Corp - this proved a great tool)
</p>
        <p>
In testing performance of our SL Services over the internet - I had a link to the
UK where we had a technician monitoring the various walk-in displays and giving feedback.
All worked pretty well. 
<br />
(At this point we don't have an upper limit on the number of individual 'Walk-in'
display sessions that run concurrently - each open browser receiving events in near
realtime is an additional WCF Service instance + a SQL connection. Not sure how much
benefit SQL Connection pooling will give as these connections are active pretty much
all the time)<br /><br /></p>
        <div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:e31f084f-726e-4e50-991b-ca70d7f43b32" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <img border="0" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEdWrapUp_C77A/rfid3.png" />
        </div>
        <br />
This screen is from the <strong>'Speaker Charts' </strong>which are designed to give
the speaker various breakdowns of up to the minute information of their audiences.
<p>
 
</p><p><strong>Overall the Breeze Boiler room (HQ)</strong> got great attendance from the
delegates wanting to know the "whats/whos/whys" on the<strong> Breeze Event Tracker
System.</strong></p><p>
We're currently still analysing the results but some interesting numbers are:
</p><p>
(1) In a 16 hr period for one room, we got 345000 reads.......(this maybe picking
up the persons in the back row while sessions are on - our business logic takes care
of these)
</p><p>
(2) We experienced a very particular 'known' problem (don't you love it when you experience
an issue for the first time and describe it, only to be told it's 'known' - well telling
us that ahead of time would have been great :). The problem arises from Tags being
physically close together, and two tags respond 'around' the same time. In very special
circumstances this confuses the Reader and instead of getting 12byte TagIDs we got
16, 18 or sometimes 20 byte IDs where the 2 tagIDs were 'spliced'.
</p><p>
It occurred in very special cases - but we got it. That particular read should be
discarded as it fails the CRC check.<br />
In peak time, out of 8000 reads we got around 2 of these cases.
</p><p>
Couple of phone calls to India and our Intel R1000 Provider was 'patched' and as a
PlanB we had the current provider being wrapped by another .NET class to catch that
particular exception.
</p><p>
(3) <strong>SCOM2007 couldn't have worked better!!!!</strong> I dropped on the BizTalk
RFID Mgmnt pack and it was a breath of fresh air. All the Readers, Devices, Processes,
Providers and RFID Servers out on the network appeared as healthy items in lists (mostly).
From the mgmnt pack I was able to see the number of Tags Read, settings, when the
last heartbeat was heard etc etc. from all the devices over the conference - certainly <strong>Mission
Control</strong>.
</p><p>
(4) We had various 'Show' type issues such as power cords being unplugged; cables
being cut; cabinets that housed the equipment in each room collapsing....so all in
all it was filled with fun and excitement. We did have a couple of Network issues
where at the conference there were several networks implemented for different regions/events
at the conference. e.g Public Delegate WiFi; Networks within each of the Break out
rooms - we were on our own VLAN and these network layers above us, proved a little
troublesome from time to time.
</p><p>
 
</p><p><strong>Various Licensing arrangements of this system are available </strong>- from
the software components through to the hardware. Feel free to ping me for more details.
</p><p>
Here's a video of a screen capture that I *did* manage to do.
</p><div class="wlWriterSmartContent" id="scid:53357c8b-5919-4e32-8c25-305d27c17a37:2792cc03-712b-408f-a168-b8dcb9dbfddc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><embed src="http://www.youtube.com/v/2Ysk-OC78OY&amp;rel=0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed><br /><a href="http://www.youtube.com/watch?v=2Ysk-OC78OY" target="_blank">YouTube - Breeze
Event System - TechEd 2008 WalkIn Display Demo</a></div><img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5" /></body>
      <title>RFID @ TechEd Wrap Up - &amp;quot;Breeze Event Tracker&amp;quot;</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/09/11/RFIDTechEdWrapUpQuotBreezeEventTrackerquot.aspx</link>
      <pubDate>Thu, 11 Sep 2008 11:54:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img height="138" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEd2008UpdateYourmyPrivacyconcern_1479F/BreezeExhibit2.jpg" width="135"&gt;
&lt;/p&gt;
&lt;p&gt;
The system we built has made it through its maiden event and was still capturing reads
well into the later afternoon (until we got round to tearing it down....technically
called 'Bump Out'....with all the moving bodies and parts, it's no wonder they call
it Bump Out!)&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&lt;strong&gt;I grabbed a couple of SilverLight screen shots to show what the system
is capable of &lt;/strong&gt;- in the hectic pace of last week I didn't manage to grab some
screen captures of the system in action, these screen shots come from the courtesy
of &lt;a href="http://eileenbrown.wordpress.com/2008/09/04/real-innovation-with-rfid-at-teched-australia/" target="_blank"&gt;Eileen
Brown's Blog&lt;/a&gt; (she is responsible for running MS Events in the UK + a founder/advocate
for Women in IT)&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Walk-In Displays&lt;/strong&gt; - these walk in displays were up on the big screens
as delegates entered/exited their sessions. Pretty cool!!!.&lt;br&gt;
&lt;div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:3e2860e9-f100-42df-b01a-882f49736886" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;img border="0" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEdWrapUp_C77A/rfid1.png" /&gt;
&lt;/div&gt;
&gt;
&lt;p&gt;
&lt;br&gt;
These screens are delivered via a browser and are what we call the &lt;strong&gt;'Walk-in'
Display. &lt;/strong&gt;Here you can see 3 people leaving the room with the graph in the
background showing some delegate profiling data around attendance of previous TechEds.&lt;br&gt;
&lt;div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:139b24a9-1f3e-4971-aa5f-f703e130b176" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;img border="0" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEdWrapUp_C77A/rfid2.png" /&gt;
&lt;/div&gt;
&gt;
&lt;p&gt;
Here we've got an enter and a leaving of the session. Something we didn't get time
to do at this show was to play on the scope for customisations with these avatars.
We had over 120 textures + bitmap type surfaces set for this, but during the show
this 'feature' got bumped further down the list. (Hats, scarves, hair type, colours
etc. you know the stuff)
&lt;/p&gt;
&lt;p&gt;
We had fun with a couple of names though - &lt;strong&gt;'@Coatsy'&lt;/strong&gt; was one, &lt;strong&gt;'The
Stig'&lt;/strong&gt; was another.
&lt;/p&gt;
&lt;p&gt;
The beauty about these screens was that people outside the conference got real time
stats about the rooms and could see the 'Walk-in' displays in near real time. (Late
night trouble shooting with my friends in MS Corp - this proved a great tool)
&lt;/p&gt;
&lt;p&gt;
In testing performance of our SL Services over the internet - I had a link to the
UK where we had a technician monitoring the various walk-in displays and giving feedback.
All worked pretty well. 
&lt;br&gt;
(At this point we don't have an upper limit on the number of individual 'Walk-in'
display sessions that run concurrently - each open browser receiving events in near
realtime is an additional WCF Service instance + a SQL connection. Not sure how much
benefit SQL Connection pooling will give as these connections are active pretty much
all the time)&lt;br&gt;
&lt;br&gt;
&lt;div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:e31f084f-726e-4e50-991b-ca70d7f43b32" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;img border="0" src="http://blogs.breezetraining.com.au/mickb/content/RFIDTechEdWrapUp_C77A/rfid3.png" /&gt;
&lt;/div&gt;
&lt;br&gt;
This screen is from the &lt;strong&gt;'Speaker Charts' &lt;/strong&gt;which are designed to give
the speaker various breakdowns of up to the minute information of their audiences.&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Overall the Breeze Boiler room (HQ)&lt;/strong&gt; got great attendance from the
delegates wanting to know the "whats/whos/whys" on the&lt;strong&gt; Breeze Event Tracker
System.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We're currently still analysing the results but some interesting numbers are:
&lt;/p&gt;
&lt;p&gt;
(1) In a 16 hr period for one room, we got 345000 reads.......(this maybe picking
up the persons in the back row while sessions are on - our business logic takes care
of these)
&lt;/p&gt;
&lt;p&gt;
(2) We experienced a very particular 'known' problem (don't you love it when you experience
an issue for the first time and describe it, only to be told it's 'known' - well telling
us that ahead of time would have been great :). The problem arises from Tags being
physically close together, and two tags respond 'around' the same time. In very special
circumstances this confuses the Reader and instead of getting 12byte TagIDs we got
16, 18 or sometimes 20 byte IDs where the 2 tagIDs were 'spliced'.
&lt;/p&gt;
&lt;p&gt;
It occurred in very special cases - but we got it. That particular read should be
discarded as it fails the CRC check.&lt;br&gt;
In peak time, out of 8000 reads we got around 2 of these cases.
&lt;/p&gt;
&lt;p&gt;
Couple of phone calls to India and our Intel R1000 Provider was 'patched' and as a
PlanB we had the current provider being wrapped by another .NET class to catch that
particular exception.
&lt;/p&gt;
&lt;p&gt;
(3) &lt;strong&gt;SCOM2007 couldn't have worked better!!!!&lt;/strong&gt; I dropped on the BizTalk
RFID Mgmnt pack and it was a breath of fresh air. All the Readers, Devices, Processes,
Providers and RFID Servers out on the network appeared as healthy items in lists (mostly).
From the mgmnt pack I was able to see the number of Tags Read, settings, when the
last heartbeat was heard etc etc. from all the devices over the conference - certainly &lt;strong&gt;Mission
Control&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
(4) We had various 'Show' type issues such as power cords being unplugged; cables
being cut; cabinets that housed the equipment in each room collapsing....so all in
all it was filled with fun and excitement. We did have a couple of Network issues
where at the conference there were several networks implemented for different regions/events
at the conference. e.g Public Delegate WiFi; Networks within each of the Break out
rooms - we were on our own VLAN and these network layers above us, proved a little
troublesome from time to time.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Various Licensing arrangements of this system are available &lt;/strong&gt;- from
the software components through to the hardware. Feel free to ping me for more details.
&lt;/p&gt;
&lt;p&gt;
Here's a video of a screen capture that I *did* manage to do.
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:53357c8b-5919-4e32-8c25-305d27c17a37:2792cc03-712b-408f-a168-b8dcb9dbfddc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;embed src="http://www.youtube.com/v/2Ysk-OC78OY&amp;amp;rel=0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt; 
&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=2Ysk-OC78OY" target="_blank"&gt;YouTube - Breeze
Event System - TechEd 2008 WalkIn Display Demo&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,c65a57c8-d5d5-4a1d-8a0f-abed3ce1c0c5.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
      <category>BizTalk/RFID</category>
      <category>Breeze/BET</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=0b3c0ed1-a8fb-4b7d-96ed-a8938739b17b</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,0b3c0ed1-a8fb-4b7d-96ed-a8938739b17b.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,0b3c0ed1-a8fb-4b7d-96ed-a8938739b17b.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=0b3c0ed1-a8fb-4b7d-96ed-a8938739b17b</wfw:commentRss>
      <title>Setting up SqlCe Merge Replication with ISA Server in the middle.</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,0b3c0ed1-a8fb-4b7d-96ed-a8938739b17b.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/08/06/SettingUpSqlCeMergeReplicationWithISAServerInTheMiddle.aspx</link>
      <pubDate>Wed, 06 Aug 2008 14:37:05 GMT</pubDate>
      <description>&lt;p&gt;
Wow! I had to venture into the 'cave' and solved this problem - talk about a character
building experience!
&lt;/p&gt;
&lt;p&gt;
I'm currently building a &lt;strong&gt;Mobile BizTalk RFID 1.1&lt;/strong&gt; solution for &lt;a href="http://www.microsoft.com.au/teched/" target=_blank&gt;TechEd08&lt;/a&gt; that
runs on a PPC with a &lt;a href="http://www.kenetics-group.com/products/productsinfo-cfcards.html#vcfuhf" target=_blank&gt;Kenetics
CFUHF Reader&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;*** Early Screen Shot *** :) &lt;/strong&gt;&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_3.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=244 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_3.png" width=184 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
So in building out this application the details always bring unforeseen challenges
to light:
&lt;/p&gt;
&lt;p&gt;
1) The application houses all the BizTalk RFID pieces (providers, device proxies etc)
so registration, and starting/stopping providers/device discovery and applying properties
to the device needs to be all taken care of.
&lt;/p&gt;
&lt;p&gt;
2) I built an RFID Mobile Provider for the Kenetics device - I worked with their support
engineers solidly for a week to build what I needed. I took a trip down memory lane
and have had enough pinvoking to last till Christmas.
&lt;/p&gt;
&lt;p&gt;
3) The app also manages a several local SQLCe databases - one for my app, the others
for the operation of BizTalk RFID Mobile locally on the device (mainly for it's OOTB
store/forward mechanism).
&lt;/p&gt;
&lt;p&gt;
After weighing up several options in this solution and how to get data to/from the
device reliably I decided to go with SqlCe Merge Replication as we needed to push/pull
data from several tables and schema changes.
&lt;/p&gt;
&lt;p&gt;
4) Which leads me onto one of the most little known items......
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;How do I setup SqlCe Merge replication? &lt;/strong&gt;it's a mine field, change
something here and boom over there.&lt;br&gt;
&lt;br&gt;
The picture&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_31.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=236 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_31.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Phase 1:&lt;/strong&gt; 
&lt;p&gt;
Forget ISA for the moment. If you can, aim to get replication running in a local environment
first (e.g. Local LAN on same network, through VPNs etc) 
&lt;p&gt;
&lt;strong&gt;Getting the SQL bits Setup&lt;/strong&gt;
&lt;br&gt;
Ok - the pieces to the initial puzzle..... 
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sql Server Side&lt;/strong&gt; 
&lt;ol&gt;
&lt;li&gt;
Sql Server and it's additional Sql Mobile Replication Bits - &lt;a href="http://www.microsoft.com/sql/editions/compact/downloads.mspx"&gt;download
from here&lt;/a&gt;. 
&lt;li&gt;
IIS to expose a replication 'end point' where the remote devices will connect to and
replication will take place through. IIS can be separate out onto a different machine. 
&lt;li&gt;
As in my case, somewhere that the 'snapshot' DB information will live to merge down
to the devices. Mine was a UNC share - SQL created this after I completed the Publication
wizard. 
&lt;li&gt;
Installation -You want the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b18327f3-96e1-415d-b037-9e0c46d49956&amp;amp;displaylang=en"&gt;SQL
Server Compact 3.5 Server Tools&lt;/a&gt; installed &lt;strong&gt;on BOTH the IIS AND SQL Machines &lt;/strong&gt;(if
these are one and the same, then you only need it once)&lt;br&gt;
The server tools has two main components - one being the bits that drive IIS and the
other being a wizard that configures the exposed virtual directory and sets security
onto it.&lt;br&gt;
&lt;strong&gt;If IIS and SQL are on separate machines, the easiest way to go is:&lt;br&gt;
- &lt;/strong&gt;get SQL to publish the snapshot to a UNC share e.g. &lt;a href="file://\\sqlserver\data"&gt;\\sqlserver\data&lt;/a&gt;
&lt;br&gt;
- On the IIS box, run the &lt;strong&gt;Configure Web and Synchronization Wizard&lt;/strong&gt; (installed
with the above server tools) and a later screen will ask you where this data is coming
from - simply point to the UNC share.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;strong&gt;Mobile Device Side&lt;/strong&gt; 
&lt;ol&gt;
&lt;li&gt;
The equivalent SQL Mobile Replication tools need to be installed (above and beyond
just normal SqlCe database components install) - &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=38ED2670-A70A-43B3-87F3-7AB67B56CBF2&amp;amp;displaylang=en"&gt;SQL
Server Compact 3.5 for Windows Mobile&lt;/a&gt;
&lt;br&gt;
*** NOTE: make sure that the bits on both the Mobile + Servers all match ***&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;strong&gt;Server Side Security &lt;/strong&gt;- For this let's work backwards, from the publication
through to the exposed endpoint. 
&lt;ol&gt;
&lt;li&gt;
Publication Security - this is set through the &lt;strong&gt;Publication Access List&lt;/strong&gt; within
SQL Mgmnt Studio&lt;br&gt;
The group in question is the &lt;strong&gt;ExhibitorsGroup&lt;br&gt;
&lt;/strong&gt;&lt;strong&gt;
&lt;br&gt;
Create a publication within the SQL Management Studio&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_4.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=155 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_4.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
(Publication General Properties)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_5.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=113 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_5.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
(Snapshot Properties - note the file location)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_6.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=219 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_6.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
(FTP Snapshot + Internet - I've just used Internet and no IIS server name as this
is configured in the Mobile Wizard)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_7.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=220 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_7.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
(Publication access list - I've blanked out sensitive info, but you can see the BETDEV\ExhibitorGroup
being manually addded to the list)&lt;br&gt;
The rest of the publication settings are defaults - for me anyway. 
&lt;br&gt;
&lt;li&gt;
&lt;strong&gt;Let's go to the UNC share - = C:\Public\Exhibitor.SqlCE.FileShare&lt;br&gt;
&lt;/strong&gt;This is the UNC share that IIS repl component will connect to at the back
end.&lt;br&gt;
Note: the BETDEV\ExhibitorsGroup obviously needs r/w access to this folder.&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_8.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=244 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_8.png" width=188 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;li&gt;
Let's run the &lt;strong&gt;'Configure Web and Synchronization Wizard' &lt;/strong&gt;to configure
the IIS component.&lt;br&gt;
(you'll find it off the tools menu after you've installed the Mobile Server Tools
from the links above)&lt;br&gt;
&lt;strong&gt;Note: &lt;/strong&gt;one of the interesting things I found here is that after running
the wizard, I normally go a tweak a few things in IIS - directory browsing etc. As
a rule of thumb, if you want to change something with the Virtual Directory that is
created at the end of this wizard, &lt;strong&gt;re-run the wizard to do it!!! :)&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_11.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_11.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Press next if prompted with the welcome screen note my options here - SQL Mobile and
press &lt;strong&gt;Next&lt;/strong&gt;.Cool&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_12.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_12.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Select the site and &lt;strong&gt;Create a Virtual Directory&lt;/strong&gt; (I'm re-running the
wizard so I'm going to select&lt;strong&gt; Configure Existing&lt;/strong&gt;). Press &lt;strong&gt;Next&lt;/strong&gt;.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_13.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_13.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
I created an alias of &lt;strong&gt;SqlCERepl directory &lt;/strong&gt;and accepted a sub-directory
under the SqlMobile dir.&lt;br&gt;
(you can change this, but looking around the forums it was a source of grief - I could
do without :) )&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_14.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_14.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Here - I selected &lt;strong&gt;HTTP and not HTTPS access to the VirtualDirectory &lt;/strong&gt;(and
SQL Service agent).&lt;br&gt;
I did this as if you remember the diagram at the top of this post, &lt;strong&gt;ISA will
serve as the HTTPS endpoint&lt;/strong&gt; and will fwd the request via &lt;strong&gt;HTTP&lt;/strong&gt; to
our IIS/SQL box.&lt;br&gt;
IF you do want to change from HTTP to HTTPS or visa versa - re-run this wizard. Save
you about 4 hrs of head banging.&lt;br&gt;
Click &lt;strong&gt;Next&lt;/strong&gt; when ready.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_15.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_15.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
On this page - I selected 'Authentication required' and not anonymous. This has something
to do with the data that I'm replicating as I'm using a Filter based on 'UserName'.
So in my case, the username that the devices connect with will be my differentiator
(I looked into using something like 'deviceID' but didn't get too far)&lt;br&gt;
Click &lt;strong&gt;Next&lt;/strong&gt;.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_16.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_16.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Select the type of authentication to be made against IIS - I selected NTLM (basic
is fine also - but you need to be mindful that we're using HTTP at this point)&lt;br&gt;
&lt;strong&gt;Quick note on Security: &lt;/strong&gt;So far, we've got 2 areas that need authentication. 
&lt;br&gt;
1) the IIS virtual directory and 2) accessing the actual SQL Publication in the UNC
share and SQL Publisher Access List.&lt;br&gt;
&lt;br&gt;
So if the two machines are separated (IIS + Sql), NTLM will no transverse these machines
(known as the 'double-hop' problem) so I'm assuming Basic or Kerberos is the safer
bet.&lt;br&gt;
Click &lt;strong&gt;Next &lt;/strong&gt;when ready.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_17.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_17.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
On the &lt;strong&gt;Directory Access Screen&lt;/strong&gt; note the presence of the ExhibitorsGroup
and also this publication is accessing the &lt;strong&gt;UNC Share&lt;/strong&gt; we created earlier.&lt;br&gt;
Next to continue.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_18.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_18.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
UNC path specified - here you can see how this could be pointing to this SQL Share
sitting on another machine as in the 2 machine hosted scenario.&lt;br&gt;
&lt;strong&gt;Click Next and Finish &lt;/strong&gt;to see something like:&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_9.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_9.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
You're virtual directory is now configured.&lt;br&gt;
To &lt;strong&gt;test your configuration so far go to:&lt;br&gt;
&lt;/strong&gt;&lt;a href="http://&lt;server&gt;/sqlcerepl/sqlcesa35.dll?diag" temp_href="http://&lt;server&gt;/sqlcerepl/sqlcesa35.dll?diag"&gt;http://&amp;lt;server&amp;gt;/sqlcerepl/sqlcesa35.dll?diag&lt;/a&gt; -
diagnostics screen to get something like:&lt;br&gt;
&lt;strong&gt;You should be prompted to login - &lt;/strong&gt;enter account details that have
access.&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_10.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=179 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_10.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
This is our fallback screen - next we will configure the ISA component and come back
to our test screen to make sure.&lt;br&gt;
You're done - here. :)&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;strong&gt;Configure ISA Server&lt;br&gt;
&lt;/strong&gt;ISA server will be the bridge between our public SSL access and our internal
IIS/SQL Server. We would effectively like ISA to simply route the request and pass
it through without to much tampering with our good packets.&lt;br&gt;
&lt;br&gt;
ISA Server is on IP address: IP:Y_Internal&lt;br&gt;
The Internal Server here is : 10.1.0.191&lt;br&gt;
The public Interface on the ISA Server is for our purpose known as IP:&lt;em&gt;X_Public&lt;br&gt;
&lt;/em&gt;and it's FQDN is : &lt;strong&gt;demo.micks.org&lt;/strong&gt; (in otherwords - this is the
public DNS name that will point to the public interface of your ISA box)&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;NOTE: Make sure you have your SSL cert ready - &lt;/strong&gt;I created an inhouse
cert from a standalone cert server.&lt;br&gt;
You need at least a 'Server Authentication' Certificate to apply within ISA.&lt;br&gt;
(I'll show you a little trick in the mobile app to get round the fact that the certificate
is from a non-trusted Cert. Authority by default)&lt;br&gt;
&lt;strong&gt;The friendly name on the cert should be - 'demo.micks.org' &lt;/strong&gt;(without
the quotes)&lt;br&gt;
All this keeps SSL happy.&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a publishing rule in ISA 2006 that will effectively route all requests
coming to the public interface to our internal IIS/SQL Server.&lt;br&gt;
&lt;/strong&gt; 
&lt;li&gt;
Fire up the ISA MMC and create a &lt;strong&gt;New Web Server Publishing Rule &lt;/strong&gt;-
I've called this sample rule, "Public to Internal IIS/SQL Repl"&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_19.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=235 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_19.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Click &lt;strong&gt;Next &lt;/strong&gt;when done.&lt;br&gt;
&lt;li&gt;
Rule Action - set to Allow&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_20.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=234 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_20.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next&lt;br&gt;
&lt;li&gt;
Publishing Type=Single Web&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_21.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=234 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_21.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next&lt;br&gt;
&lt;li&gt;
Server Connection Security - SSL.This means that SSL is going to be used over the
public network.&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_22.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=233 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_22.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next&lt;br&gt;
&lt;li&gt;
On the Internal Publishing Details - I tend to hardcode the IP address in, just to
reduce any ambiguity.&lt;br&gt;
Note the IP address - internally acessible only. 10.x.x.x&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_23.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=235 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_23.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next&lt;br&gt;
&lt;li&gt;
Further settings on the &lt;strong&gt;Internal Publishing Details&lt;br&gt;
&lt;/strong&gt;NOTE: the option of fwding the original client host headers to the internal
IIS/SQL (I found a variety of incomplete&amp;nbsp; HTTP Header details errors attempting
to sync if I cleared this checkbox)&lt;br&gt;
&lt;br&gt;
We also can restrict the access on this rule by specifying the path of &lt;strong&gt;/SqlCeRepl/*&lt;/strong&gt; (this
is obviously the Virtual Directory created earlier)&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_24.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=234 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_24.png" width=244 border=0&gt;&lt;/a&gt;
&lt;br&gt;
Next 
&lt;br&gt;
&lt;li&gt;
Fill in your public DNS name - don't worry that the wizard screen is showing &lt;strong&gt;&lt;a href="http://demo.micks.org"&gt;http://demo.micks.org&lt;/a&gt; and
NOT &lt;a href="https://demo.micks.org"&gt;https://demo.micks.org&lt;/a&gt;&lt;/strong&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_25.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=234 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_25.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next&lt;br&gt;
&lt;li&gt;
Create a listener (if you need to ) as follows:&lt;br&gt;
(I've modified the screen shot slightly - from my listener)&lt;br&gt;
Note the ports: 8443 that SSL requests is coming on. You can use 443 if you prefer,
I had other things on those ports)&lt;br&gt;
Also - I setup &lt;strong&gt;NO Authentication&lt;/strong&gt; and replication works. You *could*
try setting up Basic Authentication here and using Delegated Authentication (ISA server
will login to the IIS/SQL box on your behalf with the inputted security credentials).&lt;br&gt;
&lt;br&gt;
I've also supplied the Certificate here as well (add your cert to the machine store
ahead of time)&lt;br&gt;
&lt;br&gt;
A way to test if your auth is going to work - fire up your browser and try &lt;a href="http://&lt;server&gt;/sqlcerepl/sqlcesa35.dll?diag" temp_href="http://&lt;server&gt;/sqlcerepl/sqlcesa35.dll?diag"&gt;http://&amp;lt;server&amp;gt;/sqlcerepl/sqlcesa35.dll?diag&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;You should be prompted for login details ONLY ONCE. If you need to supply
them twice &lt;/strong&gt;and then you see the diagnostic page, your mobile application
replication will fail :-(. Once and once only.&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_26.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=234 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_26.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next.&lt;br&gt;
&lt;li&gt;
Authentication Delegation- we want the client to auth. directly against the backend
(routed through ISA of course :) )&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_27.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=233 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_27.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next.&lt;br&gt;
&lt;li&gt;
&lt;strong&gt;User Sets - &lt;/strong&gt;because we don't have authentication here, ISA can't
determine users, so &lt;strong&gt;All Users&lt;/strong&gt; is our only option.&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_28.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=234 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_28.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Next.&lt;br&gt;
&lt;li&gt;
What a glorious site....almost done......&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_29.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=236 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_29.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Click &lt;strong&gt;Finish&lt;/strong&gt; to complete the wizard.&lt;br&gt;
&lt;li&gt;
Right click on the rule just created and select &lt;strong&gt;Properties&lt;/strong&gt; - we need
to change the &lt;strong&gt;Link Translation to OFF&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_30.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=244 alt=image src="http://blogs.breezetraining.com.au/mickb/content/SettingupSqlCeMergeReplicationwithISASe_B870/image_thumb_30.png" width=204 border=0&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;
&lt;/strong&gt;This was the major source of my grief - I kept getting 'HTTP Headers malformed...'
ERROR:28035 when trying to sync from the Device - yay!&lt;br&gt;
&lt;br&gt;
I was fortunate to be able to contact a friend of mine &lt;a href="http://www.handheldlogic.com/" target=_blank&gt;Darren
Shaffer (Mobile MVP)&lt;/a&gt; that explained what was required to be sent back/forth in
the headers during the conversation - big thanks there Darren!&lt;br&gt;
&lt;li&gt;
&lt;strong&gt;You should be able to browse to &lt;a href="https://&lt;yourserver&gt;/sqlcerepl/sqlcesa35.dll?diag" temp_href="https://&lt;yourserver&gt;/sqlcerepl/sqlcesa35.dll?diag"&gt;https://&amp;lt;yourserver&amp;gt;/sqlcerepl/sqlcesa35.dll?diag&lt;/a&gt; -
it should WORK :)&lt;br&gt;
If not - resolve before moving on. (you may get IE grumbling about the Certificate
being invalid if it's an inhouse cert)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;strong&gt;Configure the MOBILE replication piece!!!&lt;/strong&gt; 
&lt;ol&gt;
&lt;li&gt;
Make sure you have installed the SQL CE 3.5 Core + Repl CABs at least. 
&lt;li&gt;
On the mobile device, I tend to have routines to &lt;strong&gt;Add &lt;/strong&gt;and &lt;strong&gt;Remove
DB Subscriptions&lt;/strong&gt; as I found that if any publication changes on SQL Server
happened - e.g. a field was modified, or a table added/removed from the Publication,
then Merge Repl would fail even though it previously was working.&lt;br&gt;
&lt;br&gt;
Easier to Remove the Subscription on the local SQLCE db, and then add it again.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Note: InternetUrl&lt;/strong&gt; = &lt;a href="https://&lt;yourserver.com&gt;" temp_href="https://&lt;yourserver.com&gt;"&gt;https://&amp;lt;yourserver.com&amp;gt;&lt;/a&gt;
&lt;br&gt;
Username + pass must be a user that has access to all the bits we configured above.
In my case, someone who is a member of the ExhibitorsGroup.&lt;br&gt;
&lt;br&gt;
The code looks like this:&lt;br&gt;
&lt;div class=csharpcode&gt;&lt;pre&gt;&lt;span class=lnum&gt; 1: &lt;/span&gt; &lt;span class=kwrd&gt;public&lt;/span&gt; &lt;span class=kwrd&gt;void&lt;/span&gt; AddReplAndSync()&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 2: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 3: &lt;/span&gt; &lt;span class=rem&gt;//using
System.Data.SqlServerCe;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 4: &lt;/span&gt; &lt;span class=kwrd&gt;bool&lt;/span&gt; bAddRepl
= &lt;span class=kwrd&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 5: &lt;/span&gt; &lt;span class=kwrd&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 6: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 7: &lt;/span&gt; &lt;span class=kwrd&gt;if&lt;/span&gt; (DoDBLookup(&lt;span class=str&gt;"SELECT
count(*) as cRow FROM __sysMergeSubscriptions WHERE Subscriber='ExhibitorSubscription'"&lt;/span&gt;, &lt;span class=str&gt;"cRow"&lt;/span&gt;)
!= &lt;span class=str&gt;"1"&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 8: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 9: &lt;/span&gt; bAddRepl
= &lt;span class=kwrd&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 10: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 11: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 12: &lt;/span&gt; &lt;span class=kwrd&gt;catch&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 13: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 14: &lt;/span&gt; bAddRepl
= &lt;span class=kwrd&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 15: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 16: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 17: &lt;/span&gt; SqlCeReplication
repl = &lt;span class=kwrd&gt;new&lt;/span&gt; SqlCeReplication();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 18: &lt;/span&gt; repl.InternetUrl
= AppSettings.Settings.ReplServer + &lt;span class=str&gt;"sqlcesa35.dll"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 19: &lt;/span&gt; repl.InternetLogin
= AppSettings.Settings.ReplUser;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 20: &lt;/span&gt; repl.InternetPassword
= &lt;span class=str&gt;"XXXXXX"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 21: &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 22: &lt;/span&gt; repl.Publisher
= AppSettings.Settings.ReplPublisher;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 23: &lt;/span&gt; repl.PublisherDatabase
= AppSettings.Settings.ReplPubDB;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 24: &lt;/span&gt; repl.PublisherSecurityMode
= SecurityType.NTAuthentication;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 25: &lt;/span&gt; repl.Publication
= AppSettings.Settings.ReplPubName;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 26: &lt;/span&gt; repl.Subscriber
= AppSettings.Settings.ReplSubName;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 27: &lt;/span&gt; repl.SubscriberConnectionString
= &lt;span class=kwrd&gt;string&lt;/span&gt;.Format(&lt;span class=str&gt;"DATA SOURCE='{0}'"&lt;/span&gt;,
ESDAL.GetDBPath());&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 28: &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 29: &lt;/span&gt; &lt;span class=kwrd&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 30: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 31: &lt;/span&gt; &lt;span class=kwrd&gt;if&lt;/span&gt; (bAddRepl)&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 32: &lt;/span&gt; repl.AddSubscription(AddOption.ExistingDatabase);&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 33: &lt;/span&gt; CloseAllDBConnections();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 34: &lt;/span&gt; repl.Synchronize();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 35: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 36: &lt;/span&gt; &lt;span class=kwrd&gt;catch&lt;/span&gt; (SqlCeException
e)&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 37: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 38: &lt;/span&gt; MessageBox.Show(e.ToString()
+ e.NativeError.ToString());&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 39: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 40: &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 41: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 42: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 43: &lt;/span&gt; &lt;span class=kwrd&gt;public&lt;/span&gt; &lt;span class=kwrd&gt;void&lt;/span&gt; ReplRemove()&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 44: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 45: &lt;/span&gt; CloseAllDBConnections();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 46: &lt;/span&gt; SqlCeReplication
repl = &lt;span class=kwrd&gt;new&lt;/span&gt; SqlCeReplication();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 47: &lt;/span&gt; repl.SubscriberConnectionString
= &lt;span class=kwrd&gt;string&lt;/span&gt;.Format(&lt;span class=str&gt;"DATA SOURCE='{0}'"&lt;/span&gt;,
ESDAL.GetDBPath());&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 48: &lt;/span&gt; repl.InternetUrl = AppSettings.Settings.ReplServer
+ &lt;span class=str&gt;"sqlcesa35.dll"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 49: &lt;/span&gt; repl.InternetLogin
= AppSettings.Settings.ReplUser;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 50: &lt;/span&gt; repl.InternetPassword
= &lt;span class=str&gt;"XXXXXX"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 51: &lt;/span&gt; repl.Publisher
= AppSettings.Settings.ReplPublisher;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 52: &lt;/span&gt; repl.PublisherDatabase
= AppSettings.Settings.ReplPubDB;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 53: &lt;/span&gt; repl.PublisherSecurityMode
= SecurityType.NTAuthentication;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 54: &lt;/span&gt; repl.Publication
= AppSettings.Settings.ReplPubName;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 55: &lt;/span&gt; repl.Subscriber
= AppSettings.Settings.ReplSubName;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 56: &lt;/span&gt; &lt;span class=kwrd&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 57: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 58: &lt;/span&gt; CloseAllDBConnections();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 59: &lt;/span&gt; repl.DropSubscription(DropOption.LeaveDatabase);&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 60: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 61: &lt;/span&gt; &lt;span class=kwrd&gt;catch&lt;/span&gt; (SqlCeException
e)&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 62: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 63: &lt;/span&gt; MessageBox.Show(e.ToString()
+ e.NativeError.ToString());&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 64: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 65: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 66: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 67: &lt;/span&gt; &lt;span class=kwrd&gt;private&lt;/span&gt; &lt;span class=kwrd&gt;void&lt;/span&gt; CloseAllDBConnections()&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 68: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 69: &lt;/span&gt; &lt;span class=kwrd&gt;if&lt;/span&gt; ((_dbCon
!= &lt;span class=kwrd&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (_dbCon.State != ConnectionState.Closed))&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 70: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 71: &lt;/span&gt; _dbCon.Dispose();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 72: &lt;/span&gt; _dbCon
= &lt;span class=kwrd&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 73: &lt;/span&gt; GC.Collect();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 74: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 75: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 76: &lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type=text/css&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Trick to deal with Inhouse generated certificates&lt;/strong&gt; - 
&lt;br&gt;
Within your mobile app we create a class that essentially returns &lt;strong&gt;True&lt;/strong&gt; when
asked &lt;strong&gt;'Is this Cert. valid?'&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;Somewhere upon starting up your app - e.g. Form_Load - insert LINE#1 below.
&lt;/p&gt;
&lt;p&gt;
LINE#3 onwards describes the class 'MyCustomSSLPolicy'&lt;br&gt;
&lt;/p&gt;
&lt;div class=csharpcode&gt;&lt;pre&gt;&lt;span class=lnum&gt; 1: &lt;/span&gt;System.Net.ServicePointManager.CertificatePolicy
= &lt;span class=kwrd&gt;new&lt;/span&gt; MyCustomSSLPolicy();&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 2: &lt;/span&gt;......&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 3: &lt;/span&gt;&lt;span class=kwrd&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 4: &lt;/span&gt;&lt;span class=kwrd&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 5: &lt;/span&gt;&lt;span class=kwrd&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 6: &lt;/span&gt;&lt;span class=kwrd&gt;using&lt;/span&gt; System.Net;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 7: &lt;/span&gt;&lt;span class=kwrd&gt;using&lt;/span&gt; System.Security.Cryptography.X509Certificates;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 8: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 9: &lt;/span&gt;&lt;span class=kwrd&gt;namespace&lt;/span&gt; MicksDemos.Utilities&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 10: &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 11: &lt;/span&gt; &lt;span class=kwrd&gt;public&lt;/span&gt; &lt;span class=kwrd&gt;class&lt;/span&gt; MyCustomSSLPolicy
: ICertificatePolicy&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 12: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 13: &lt;/span&gt; &lt;span class=kwrd&gt;public&lt;/span&gt; &lt;span class=kwrd&gt;bool&lt;/span&gt; CheckValidationResult(ServicePoint
srvPoint,&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 14: &lt;/span&gt; X509Certificate certificate, WebRequest
request, &lt;span class=kwrd&gt;int&lt;/span&gt; certificateProblem)&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 15: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 16: &lt;/span&gt; &lt;span class=kwrd&gt;return&lt;/span&gt; &lt;span class=kwrd&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 17: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 18: &lt;/span&gt; }&lt;/pre&gt;&lt;pre&gt;&lt;span class=lnum&gt; 19: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type=text/css&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
&lt;br&gt;
&lt;br&gt;
Closing note:
&lt;/p&gt;
&lt;p&gt;
Hope you find this useful - I've done this a few times now and am amazed with the
lack of info around this especially through ISA.&lt;br&gt;
&lt;br&gt;
If you get any errors around "Can't contact SQL Reconciler..." etc errors - &lt;strong&gt;GENERALLY
try and rebuild the snapshop server side, then try syncing again.&lt;/strong&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
Nighty night!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=0b3c0ed1-a8fb-4b7d-96ed-a8938739b17b" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,0b3c0ed1-a8fb-4b7d-96ed-a8938739b17b.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk/RFID</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=8145cbcd-c289-4839-8646-87124c092c5c</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,8145cbcd-c289-4839-8646-87124c092c5c.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,8145cbcd-c289-4839-8646-87124c092c5c.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=8145cbcd-c289-4839-8646-87124c092c5c</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Folks - fellow MVP <a href="http://seroter.wordpress.com" target="_blank">Richard
Seroter</a> has written a VERY comprehensive series around this very topic including
the new BizTalk Adapter Pack V1.0 (V2.0 is in Beta at the moment).
</p>
        <p>
Over 20+ thousand words + 178 screen shots - all for the love of BizTalk/WCF.
</p>
        <p>
Complete with Source Code!!!
</p>
        <p>
What a champion series - I'm looking forward to in tucking into some of his great
material!
</p>
        <p>
          <strong>The BizTalk community is in debt to you Richard - well done!!!</strong>
        </p>
        <p>
          <a href="http://seroter.wordpress.com/2008/05/08/article-series-on-biztalk-and-wcf-part-ix-biztalk-adapter-pack-biztalk-patterns/" target="_blank">SERIES
SUMMARY FOUND HERE</a>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=8145cbcd-c289-4839-8646-87124c092c5c" />
      </body>
      <title>BizTalk &amp;amp; WCF - the answers are here!</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,8145cbcd-c289-4839-8646-87124c092c5c.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/08/06/BizTalkAmpWCFTheAnswersAreHere.aspx</link>
      <pubDate>Wed, 06 Aug 2008 01:06:02 GMT</pubDate>
      <description>&lt;p&gt;
Folks - fellow MVP &lt;a href="http://seroter.wordpress.com" target="_blank"&gt;Richard
Seroter&lt;/a&gt; has written a VERY comprehensive series around this very topic including
the new BizTalk Adapter Pack V1.0 (V2.0 is in Beta at the moment).
&lt;/p&gt;
&lt;p&gt;
Over 20+ thousand words + 178 screen shots - all for the love of BizTalk/WCF.
&lt;/p&gt;
&lt;p&gt;
Complete with Source Code!!!
&lt;/p&gt;
&lt;p&gt;
What a champion series - I'm looking forward to in tucking into some of his great
material!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The BizTalk community is in debt to you Richard - well done!!!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://seroter.wordpress.com/2008/05/08/article-series-on-biztalk-and-wcf-part-ix-biztalk-adapter-pack-biztalk-patterns/" target="_blank"&gt;SERIES
SUMMARY FOUND HERE&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=8145cbcd-c289-4839-8646-87124c092c5c" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,8145cbcd-c289-4839-8646-87124c092c5c.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
      <category>Training</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=c4245770-6def-4f16-a29c-74ccca5fbe13</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,c4245770-6def-4f16-a29c-74ccca5fbe13.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,c4245770-6def-4f16-a29c-74ccca5fbe13.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=c4245770-6def-4f16-a29c-74ccca5fbe13</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This one came from <a href="http://blogs.msdn.com/paolos/" target="_blank">Paolo Salvatori</a> (a
senior PM within the MS Connected Systems Division Team... I know a bit of a mouthful)
whom has gotten in touch with his creative side and drawn a picture for all us common
folk :) - well done Paolo.
</p>
        <p>
The scenario is - a <strong>Request/Response Port is published</strong> at the 'front
end', goes through BizTalk and the work is done by a backend system that operates
via a <strong>One-Way Send </strong>and BTS gets the response via <strong>another
One-Way Receive</strong>.
</p>
        <p>
The thing I like about Paolo's piece of work is that he shows all the Message Context
Properties required to be set by BizTalk for message correlation.<br />
Which makes this a <strong>Messaging Only Solution and NO Orchestrations required!!!! </strong>(how
cool)
</p>
        <p>
 
</p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/AGreatBizTalkScenarioTwoWayPortbeingServ_10C14/BTSImage.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="356" alt="BizTalk Request Response Port" src="http://blogs.breezetraining.com.au/mickb/content/AGreatBizTalkScenarioTwoWayPortbeingServ_10C14/BTSImage_thumb.jpg" width="644" border="0" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Click on the image to enlarge......one day I'll get Silverlight Zoom Composer control
running for these.... :)
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=c4245770-6def-4f16-a29c-74ccca5fbe13" />
      </body>
      <title>A Great BizTalk Scenario - Two Way Port being Serviced by two one way backend ports</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,c4245770-6def-4f16-a29c-74ccca5fbe13.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/07/21/AGreatBizTalkScenarioTwoWayPortBeingServicedByTwoOneWayBackendPorts.aspx</link>
      <pubDate>Mon, 21 Jul 2008 09:04:00 GMT</pubDate>
      <description>&lt;p&gt;
This one came from &lt;a href="http://blogs.msdn.com/paolos/" target="_blank"&gt;Paolo Salvatori&lt;/a&gt; (a
senior PM within the MS Connected Systems Division Team... I know a bit of a mouthful)
whom has gotten in touch with his creative side and drawn a picture for all us common
folk :) - well done Paolo.
&lt;/p&gt;
&lt;p&gt;
The scenario is - a &lt;strong&gt;Request/Response Port is published&lt;/strong&gt; at the 'front
end', goes through BizTalk and the work is done by a backend system that operates
via a &lt;strong&gt;One-Way Send &lt;/strong&gt;and BTS gets the response via &lt;strong&gt;another
One-Way Receive&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
The thing I like about Paolo's piece of work is that he shows all the Message Context
Properties required to be set by BizTalk for message correlation.&lt;br&gt;
Which makes this a &lt;strong&gt;Messaging Only Solution and NO Orchestrations required!!!! &lt;/strong&gt;(how
cool)
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/AGreatBizTalkScenarioTwoWayPortbeingServ_10C14/BTSImage.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="356" alt="BizTalk Request Response Port" src="http://blogs.breezetraining.com.au/mickb/content/AGreatBizTalkScenarioTwoWayPortbeingServ_10C14/BTSImage_thumb.jpg" width="644" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Click on the image to enlarge......one day I'll get Silverlight Zoom Composer control
running for these.... :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=c4245770-6def-4f16-a29c-74ccca5fbe13" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,c4245770-6def-4f16-a29c-74ccca5fbe13.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=6001b0f2-db50-452a-a87c-3625840a1236</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,6001b0f2-db50-452a-a87c-3625840a1236.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,6001b0f2-db50-452a-a87c-3625840a1236.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=6001b0f2-db50-452a-a87c-3625840a1236</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After the more than normal pain in getting this done for my <a href="http://blogs.breezetraining.com.au/mickb/2008/07/13/GettingSilverlight2Beta2WorkingOnWSSMOSSSP1.aspx" target="_blank">previous
post</a>, I decided to post the fruits of my labour (not labor that my wife tells
me about watermellons and men wouldn't know the first thing about birth....I'm not
about to do the pepsi challenge on that :))
</p>
        <p>
- <strong>this is a stock standard Web.Config for a MOSS install NOT a plain WSS install</strong> (there's
about 3 lines different from a plain WSS install to a MOSS install - mainly anything
that references SharePoint.Publishing....)
</p>
        <p>
Grab this and these are the changes that WORK!
</p>
        <p>
Enjoy!
</p>
        <div class="wlWriterSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:131fbaa8-15fe-4511-a6d8-6ea0446cf092" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
          </p>
          <div>
            <a href="http://blogs.breezetraining.com.au/mickb/content/SampleSharePoi.ConfigforSharePoint2Beta2_13DC6/Sample.web.zip" target="_self">Sample.web.zip</a>
          </div>
        </div>
        <p>
Cheers,
</p>
        <p>
Mick.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6001b0f2-db50-452a-a87c-3625840a1236" />
      </body>
      <title>Sample SharePoint Web.Config for SharePoint 2 Beta 2</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,6001b0f2-db50-452a-a87c-3625840a1236.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/07/13/SampleSharePointWebConfigForSharePoint2Beta2.aspx</link>
      <pubDate>Sun, 13 Jul 2008 12:38:41 GMT</pubDate>
      <description>&lt;p&gt;
After the more than normal pain in getting this done for my &lt;a href="http://blogs.breezetraining.com.au/mickb/2008/07/13/GettingSilverlight2Beta2WorkingOnWSSMOSSSP1.aspx" target="_blank"&gt;previous
post&lt;/a&gt;, I decided to post the fruits of my labour (not labor that my wife tells
me about watermellons and men wouldn't know the first thing about birth....I'm not
about to do the pepsi challenge on that :))
&lt;/p&gt;
&lt;p&gt;
- &lt;strong&gt;this is a stock standard Web.Config for a MOSS install NOT a plain WSS install&lt;/strong&gt; (there's
about 3 lines different from a plain WSS install to a MOSS install - mainly anything
that references SharePoint.Publishing....)
&lt;/p&gt;
&lt;p&gt;
Grab this and these are the changes that WORK!
&lt;/p&gt;
&lt;p&gt;
Enjoy!
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:131fbaa8-15fe-4511-a6d8-6ea0446cf092" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;div&gt;&lt;a href="http://blogs.breezetraining.com.au/mickb/content/SampleSharePoi.ConfigforSharePoint2Beta2_13DC6/Sample.web.zip" target="_self"&gt;Sample.web.zip&lt;/a&gt;
&lt;/div&gt;
&gt;
&lt;/div&gt;
&lt;p&gt;
Cheers,
&lt;/p&gt;
&lt;p&gt;
Mick.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6001b0f2-db50-452a-a87c-3625840a1236" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,6001b0f2-db50-452a-a87c-3625840a1236.aspx</comments>
      <category>.NET Developer</category>
      <category>MOSS</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=2ca7568d-9efa-4287-bc00-f1ca003ce024</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,2ca7568d-9efa-4287-bc00-f1ca003ce024.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,2ca7568d-9efa-4287-bc00-f1ca003ce024.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=2ca7568d-9efa-4287-bc00-f1ca003ce024</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#ff0000">"Could not load file or assembly 'System.Web.Silverlight, Version=2.0.5.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies."</font>
        </p>
        <p>
You're starting to Roll your sleeves up and get dirty with Silverlight 2 Beta 2, load
up some of the <a href="http://www.ssblueprints.net/sharepoint/">Silverlight Blueprint
for SharePoint Samples</a>, run the installer (it's great that most of these examples
have an installer) and <strong>Boom! you get the above error!!!</strong></p>
        <p>
Here's a list I've compiled to get Silverlight working - I'm currently running this
on <strong>Win2008 IIS7</strong></p>
        <p>
(1) <strong>Install WSS SP1/MOSS SP1 on your SharePoint box</strong> if you haven't
already. You need the SP1 to support .NET 3.5 calls through SharePoint - my guess
is that these tell SharePoint not to intercept the calls and let them go to their
rightful owners.
</p>
        <p>
(2) <strong>Create a 'dummy' site collection on a test Web Application </strong>-
e.g. <a href="http://localhost:81">http://localhost:81</a> - This is so you can see
all the changes to the web.config that are made through the installation process,
in isolation. By keeping this separate to your usual web.config, you'll be able to
merge changes at a later date.
</p>
        <p>
(3) <strong>Install the Silverlight 2 Beta 2 runtime and other developer bits - </strong>From <a href="http://Silverlight.net">http://Silverlight.net</a> - <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434&amp;displaylang=en" target="_blank">VS2008
Developer Bits</a> and just the <a href="http://www.microsoft.com/silverlight/resources/install.aspx?v=2.0" target="_blank">runtime
if you want from here</a></p>
        <p>
(4) <strong>Do one installation of a Silverlight for BluePrint Sample </strong>- the
installer creates a 'virtual directory' under your Web Site called <strong>ClientBin</strong> where
the various Silverlight 2 files go (*.js, *.XAP). This is a handy install so you can
see what the directory execution settings are required to make this work through SharePoint.
i.e. Execute permissions only. Take note of this directory.
</p>
        <p>
(5) <strong>Add a IIS MIME type - </strong>With Silverlight 2 beta 2 - there is a
new file type added which is a <strong>*.XAP file type</strong>. IIS by default doesn't
know how to encode/translate or send these files down over the wire.<br /><strong>Add a mime type of: Extention: xap Mime Type: application/x-silverlight-app</strong> to
your IIS Test Web Site
</p>
        <p>
(6) <strong>Make Web.Config changes</strong> - there's a whole series of Web.Config
changes to be made to your SharePoint Web Application to support AJAX/.NET 3.5 and
now Silverlight.... fortunately other hard working folks have done this for you!!!!
:) Bless their cotton socks! - grab the <a href="http://www.codeplex.com/features" target="_blank">Feature
that makes the modifications from here</a> (<strong>** NB: you want the 3.5 config
feature</strong>)
</p>
        <p>
You're almost done........ :)
</p>
        <p>
          <strong>(7) EXCEPT for the error above!!!</strong> After much inspection of your system,
you'll realise that you *don't* have that DLL (on a clean install). The Silverlight
Ninja will know that this is from Silverlight 2 Beta 1 and not found in the Beta 2
kits!! Yay team!
</p>
        <p>
The <strong>System.Web.Silverlight.dll </strong>is found in the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4e03409a-77f3-413f-b108-1243c243c4fe&amp;displaylang=en" target="_blank">Silverlight
2 beta 1 SDK</a> - so download that puppy, extract out the DLL and either GAC it,
or add it to your <strong>BIN </strong>directory on your SharePoint site. (I added
it to my BIN directory - as I reckon when SL2 is released, this problem would have
been resolved)<br /><font color="#ff0000">(**UPDATED: Due to how painful that was, I decided to package
up the DLL for you - HERE**)</font></p>
        <p>
          <strong>Here are the Compiled Files - FOR SL2 BETA 2 - they WORK!! :-)</strong>
        </p>
        <p>
          <strong>(I grabbed the Blueprint Hello World Web Part and updated to work)</strong>
        </p>
        <p>
          <strong>1. Silverlight Web Part DLL</strong>
        </p>
        <p>
          <strong>2. Silverlight *.XAP updated for Beta 2, copy straight to the *sub-directory*
under your client BIN</strong>
        </p>
        <p>
          <strong>3. Sample SharePoint Web.Config with all the changes! :-)</strong>
        </p>
        <div class="wlWriterSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:ebcd2f6f-91c3-4490-960c-08d82af337ed" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">
          <p>
          </p>
          <div>GET THE FILES HERE<a href="http://blogs.breezetraining.com.au/mickb/content/GettingSilverlight2Beta2workingonWSSMOSS_12867/AllSilverlight2B2.CompiledFiles.zip" target="_blank">AllSilverlight2B2.CompiledFiles.zip</a></div>
          <div class="wlWriterSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:4f75b5aa-c158-460d-8b2e-2e4e81a6e3f5" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">
          </div>
          <p>
          </p>
        </div>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=2ca7568d-9efa-4287-bc00-f1ca003ce024" />
      </body>
      <title>Getting Silverlight 2 Beta 2 working on WSS/MOSS SP1</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,2ca7568d-9efa-4287-bc00-f1ca003ce024.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/07/13/GettingSilverlight2Beta2WorkingOnWSSMOSSSP1.aspx</link>
      <pubDate>Sun, 13 Jul 2008 11:08:09 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font color=#ff0000&gt;"Could not load file or assembly 'System.Web.Silverlight, Version=2.0.5.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies."&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
You're starting to Roll your sleeves up and get dirty with Silverlight 2 Beta 2, load
up some of the &lt;a href="http://www.ssblueprints.net/sharepoint/"&gt;Silverlight Blueprint
for SharePoint Samples&lt;/a&gt;, run the installer (it's great that most of these examples
have an installer) and &lt;strong&gt;Boom! you get the above error!!!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Here's a list I've compiled to get Silverlight working - I'm currently running this
on &lt;strong&gt;Win2008 IIS7&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
(1) &lt;strong&gt;Install WSS SP1/MOSS SP1 on your SharePoint box&lt;/strong&gt; if you haven't
already. You need the SP1 to support .NET 3.5 calls through SharePoint - my guess
is that these tell SharePoint not to intercept the calls and let them go to their
rightful owners.
&lt;/p&gt;
&lt;p&gt;
(2) &lt;strong&gt;Create a 'dummy' site collection on a test Web Application &lt;/strong&gt;-
e.g. &lt;a href="http://localhost:81"&gt;http://localhost:81&lt;/a&gt; - This is so you can see
all the changes to the web.config that are made through the installation process,
in isolation. By keeping this separate to your usual web.config, you'll be able to
merge changes at a later date.
&lt;/p&gt;
&lt;p&gt;
(3) &lt;strong&gt;Install the Silverlight 2 Beta 2 runtime and other developer bits - &lt;/strong&gt;From &lt;a href="http://Silverlight.net"&gt;http://Silverlight.net&lt;/a&gt; - &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434&amp;amp;displaylang=en" target=_blank&gt;VS2008
Developer Bits&lt;/a&gt; and just the &lt;a href="http://www.microsoft.com/silverlight/resources/install.aspx?v=2.0" target=_blank&gt;runtime
if you want from here&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
(4) &lt;strong&gt;Do one installation of a Silverlight for BluePrint Sample &lt;/strong&gt;- the
installer creates a 'virtual directory' under your Web Site called &lt;strong&gt;ClientBin&lt;/strong&gt; where
the various Silverlight 2 files go (*.js, *.XAP). This is a handy install so you can
see what the directory execution settings are required to make this work through SharePoint.
i.e. Execute permissions only. Take note of this directory.
&lt;/p&gt;
&lt;p&gt;
(5) &lt;strong&gt;Add a IIS MIME type - &lt;/strong&gt;With Silverlight 2 beta 2 - there is a
new file type added which is a &lt;strong&gt;*.XAP file type&lt;/strong&gt;. IIS by default doesn't
know how to encode/translate or send these files down over the wire.&lt;br&gt;
&lt;strong&gt;Add a mime type of: Extention: xap Mime Type: application/x-silverlight-app&lt;/strong&gt; to
your IIS Test Web Site
&lt;/p&gt;
&lt;p&gt;
(6) &lt;strong&gt;Make Web.Config changes&lt;/strong&gt; - there's a whole series of Web.Config
changes to be made to your SharePoint Web Application to support AJAX/.NET 3.5 and
now Silverlight.... fortunately other hard working folks have done this for you!!!!
:) Bless their cotton socks! - grab the &lt;a href="http://www.codeplex.com/features" target=_blank&gt;Feature
that makes the modifications from here&lt;/a&gt; (&lt;strong&gt;** NB: you want the 3.5 config
feature&lt;/strong&gt;)
&lt;/p&gt;
&lt;p&gt;
You're almost done........ :)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;(7) EXCEPT for the error above!!!&lt;/strong&gt; After much inspection of your system,
you'll realise that you *don't* have that DLL (on a clean install). The Silverlight
Ninja will know that this is from Silverlight 2 Beta 1 and not found in the Beta 2
kits!! Yay team!
&lt;/p&gt;
&lt;p&gt;
The &lt;strong&gt;System.Web.Silverlight.dll &lt;/strong&gt;is found in the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4e03409a-77f3-413f-b108-1243c243c4fe&amp;amp;displaylang=en" target=_blank&gt;Silverlight
2 beta 1 SDK&lt;/a&gt; - so download that puppy, extract out the DLL and either GAC it,
or add it to your &lt;strong&gt;BIN &lt;/strong&gt;directory on your SharePoint site. (I added
it to my BIN directory - as I reckon when SL2 is released, this problem would have
been resolved)&lt;br&gt;
&lt;font color=#ff0000&gt;(**UPDATED: Due to how painful that was, I decided to package
up the DLL for you - HERE**)&lt;/font&gt; 
&lt;p&gt;
&lt;strong&gt;Here are the Compiled Files - FOR SL2 BETA 2 - they WORK!! :-)&lt;/strong&gt; 
&lt;p&gt;
&lt;strong&gt;(I grabbed the Blueprint Hello World Web Part and updated to work)&lt;/strong&gt; 
&lt;p&gt;
&lt;strong&gt;1. Silverlight Web Part DLL&lt;/strong&gt; 
&lt;p&gt;
&lt;strong&gt;2. Silverlight *.XAP updated for Beta 2, copy straight to the *sub-directory*
under your client BIN&lt;/strong&gt; 
&lt;p&gt;
&lt;strong&gt;3. Sample SharePoint Web.Config with all the changes! :-)&lt;/strong&gt;
&lt;/p&gt;
&lt;div class=wlWriterSmartContent id=scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:ebcd2f6f-91c3-4490-960c-08d82af337ed style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;p&gt;
&lt;div&gt;GET THE FILES HERE&lt;a href="http://blogs.breezetraining.com.au/mickb/content/GettingSilverlight2Beta2workingonWSSMOSS_12867/AllSilverlight2B2.CompiledFiles.zip" target=_blank&gt;AllSilverlight2B2.CompiledFiles.zip&lt;/a&gt;
&lt;/div&gt;
&lt;div class=wlWriterSmartContent id=scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:4f75b5aa-c158-460d-8b2e-2e4e81a6e3f5 style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=2ca7568d-9efa-4287-bc00-f1ca003ce024" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,2ca7568d-9efa-4287-bc00-f1ca003ce024.aspx</comments>
      <category>.NET Developer</category>
      <category>MOSS</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=592fdf80-5b39-4baf-bc8a-104a52dd7539</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,592fdf80-5b39-4baf-bc8a-104a52dd7539.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,592fdf80-5b39-4baf-bc8a-104a52dd7539.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=592fdf80-5b39-4baf-bc8a-104a52dd7539</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the handiest tools I've used in the last year - <a title="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx" href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx">http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx</a></p>
        <p>
If you're presenting, even just showing your code, screen to colleagues then this
is superb
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=592fdf80-5b39-4baf-bc8a-104a52dd7539" />
      </body>
      <title>New Version of ZoomIt hits 2.x</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,592fdf80-5b39-4baf-bc8a-104a52dd7539.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/07/10/NewVersionOfZoomItHits2x.aspx</link>
      <pubDate>Thu, 10 Jul 2008 10:50:48 GMT</pubDate>
      <description>&lt;p&gt;
One of the handiest tools I've used in the last year - &lt;a title="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx" href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx"&gt;http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you're presenting, even just showing your code, screen to colleagues then this
is superb
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=592fdf80-5b39-4baf-bc8a-104a52dd7539" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,592fdf80-5b39-4baf-bc8a-104a52dd7539.aspx</comments>
      <category>.NET Developer</category>
      <category>Other</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=f882e7a2-a0cc-425c-accb-a015a0496ba6</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,f882e7a2-a0cc-425c-accb-a015a0496ba6.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,f882e7a2-a0cc-425c-accb-a015a0496ba6.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=f882e7a2-a0cc-425c-accb-a015a0496ba6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You'll get this error when using WCF/IIS and host headers.....fortunately a fellow
colleague <a href="http://weblogs.asp.net/pglavich/archive/2008/06/04/wcf-services-getting-errors-when-hosting-in-iis.aspx" target="_blank">Paul
Glavich</a> figured it out!!! Well done Paul! (It involves an IIS reshuffle, you may
be able to do something within a custom WCF Binding.)
</p>
        <p>
Remember: <strong>There is a limit on the number of IIS Websites you can have on a
single machine.</strong></p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=f882e7a2-a0cc-425c-accb-a015a0496ba6" />
      </body>
      <title>This collection already contains an address with scheme http. There can be at most one address per scheme in this collection - WCF/BizTalk Error</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,f882e7a2-a0cc-425c-accb-a015a0496ba6.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/07/02/ThisCollectionAlreadyContainsAnAddressWithSchemeHttpThereCanBeAtMostOneAddressPerSchemeInThisCollectionWCFBizTalkError.aspx</link>
      <pubDate>Wed, 02 Jul 2008 21:51:38 GMT</pubDate>
      <description>&lt;p&gt;
You'll get this error when using WCF/IIS and host headers.....fortunately a fellow
colleague &lt;a href="http://weblogs.asp.net/pglavich/archive/2008/06/04/wcf-services-getting-errors-when-hosting-in-iis.aspx" target="_blank"&gt;Paul
Glavich&lt;/a&gt; figured it out!!! Well done Paul! (It involves an IIS reshuffle, you may
be able to do something within a custom WCF Binding.)
&lt;/p&gt;
&lt;p&gt;
Remember: &lt;strong&gt;There is a limit on the number of IIS Websites you can have on a
single machine.&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=f882e7a2-a0cc-425c-accb-a015a0496ba6" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,f882e7a2-a0cc-425c-accb-a015a0496ba6.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You might be wondering what do all these guys have in common....good question....
:-)
</p>
        <p>
We're currently building an <strong>RFID enabled System</strong> where complex processes
are handled by BizTalk Server, and data being pushed down to Silverlight V2.0 clients
via a WCF Silverlight 'Eventing System' (which really is polling under the hood, but
to us in developer land - it's cool and it's Events)
</p>
        <p>
          <a href="http://blogs.breezetraining.com.au/scotts/2008/06/28/Silverlight2Beta2AndDuplexWCFServices.aspx" target="_blank">Scotty</a> has
the full write up of some of his learning experiences through this - well done Scotty,
he's been in that place where there are no manuals, no documentation, no previous
code, just a gut feel and a compass to sail the seas.
</p>
        <p>
We demo-ed the system at our last user group (or more over used them a guinea pigs
:)
</p>
        <p>
          <strong>Token Screen shot: </strong>(we've associated tags with people information
and this is what is displayed when TagReadEvents are captured. We need a little work
to avoid being underneath or on top of a previous animation)<br /></p>
        <p>
          <a href="http://blogs.breezetraining.com.au/scotts/2008/06/28/Silverlight2Beta2AndDuplexWCFServices.aspx" target="_blank">FULL
DETAILS HERE</a>
        </p>
        <div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:13d7bca6-c216-484d-9f96-c88b7618589c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <img border="0" src="http://blogs.breezetraining.com.au/mickb/content/Silverlight2BizTalkRFIDBizTalkServerandW_8B7D/silverlightdisplayinaction1_4.png" />
        </div>
        <div class="wlWriterSmartContent" id="scid:31C7882A-CF45-4fcc-A614-7A5A52E598FF:a77efc50-66ae-4d7d-a9b2-b484b5b25512" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <img src="http://blogs.breezetraining.com.au/mickb/content/Silverlight2BizTalkRFIDBizTalkServerandW_8B7D/Ink033866877564.png" title="Ink Generated with Ink Blog Plugin - http://www.edholloway.com" />
          </p>
          <p>
          </p>
        </div>
        <strong>Artists impression!</strong>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f" />
      </body>
      <title>Silverlight 2, BizTalk RFID, BizTalk Server and WCF PollingDuplexBinding Element</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/06/30/Silverlight2BizTalkRFIDBizTalkServerAndWCFPollingDuplexBindingElement.aspx</link>
      <pubDate>Mon, 30 Jun 2008 23:55:17 GMT</pubDate>
      <description>&lt;p&gt;
You might be wondering what do all these guys have in common....good question....
:-)
&lt;/p&gt;
&lt;p&gt;
We're currently building an &lt;strong&gt;RFID enabled System&lt;/strong&gt; where complex processes
are handled by BizTalk Server, and data being pushed down to Silverlight V2.0 clients
via a WCF Silverlight 'Eventing System' (which really is polling under the hood, but
to us in developer land - it's cool and it's Events)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/scotts/2008/06/28/Silverlight2Beta2AndDuplexWCFServices.aspx" target="_blank"&gt;Scotty&lt;/a&gt; has
the full write up of some of his learning experiences through this - well done Scotty,
he's been in that place where there are no manuals, no documentation, no previous
code, just a gut feel and a compass to sail the seas.
&lt;/p&gt;
&lt;p&gt;
We demo-ed the system at our last user group (or more over used them a guinea pigs
:)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Token Screen shot: &lt;/strong&gt;(we've associated tags with people information
and this is what is displayed when TagReadEvents are captured. We need a little work
to avoid being underneath or on top of a previous animation)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/scotts/2008/06/28/Silverlight2Beta2AndDuplexWCFServices.aspx" target="_blank"&gt;FULL
DETAILS HERE&lt;/a&gt;
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:13d7bca6-c216-484d-9f96-c88b7618589c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;img border="0" src="http://blogs.breezetraining.com.au/mickb/content/Silverlight2BizTalkRFIDBizTalkServerandW_8B7D/silverlightdisplayinaction1_4.png" /&gt;
&lt;/div&gt;
&lt;div class="wlWriterSmartContent" id="scid:31C7882A-CF45-4fcc-A614-7A5A52E598FF:a77efc50-66ae-4d7d-a9b2-b484b5b25512" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;img src="http://blogs.breezetraining.com.au/mickb/content/Silverlight2BizTalkRFIDBizTalkServerandW_8B7D/Ink033866877564.png" title="Ink Generated with Ink Blog Plugin - http://www.edholloway.com"&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;strong&gt;Artists impression!&lt;/strong&gt;&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,7da6eaa1-bc36-4f05-8d8e-4d5a917e6e8f.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
      <category>BizTalk/RFID</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=e5bf0bce-3c53-4de9-8de2-c4af99df225b</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,e5bf0bce-3c53-4de9-8de2-c4af99df225b.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,e5bf0bce-3c53-4de9-8de2-c4af99df225b.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=e5bf0bce-3c53-4de9-8de2-c4af99df225b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://blogs.msdn.com/webdevtools/Default.aspx" href="http://blogs.msdn.com/webdevtools/Default.aspx">http://blogs.msdn.com/webdevtools/Default.aspx</a>
        </p>
        <p>
Some pretty cool features as I've <a href="http://blogs.breezetraining.com.au/mickb/2008/06/04/Sliverlight2Beta2OutThisWeek.aspx" target="_blank">previously
posted</a></p>
        <p>
From my perspective I'm particularly interested in the supported 'WCF Dual HTTP Binding'.......more
on that later :)
</p>
        <p>
(updated**)
</p>
        <p>
          <font color="#ff0000">SILVERLIGHT 2.0 BETA 2 SDK is now available!!!!</font>
        </p>
        <p>
          <font color="#000000">Grab it here from the <a href="http://silverlight.net/GetStarted/">Getting
Started section</a></font>
        </p>
        <p>
          <font color="#000000">Also get the videos, hands on labs, training material from <a href="http://silverlight.net/learn/">HERE</a></font>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=e5bf0bce-3c53-4de9-8de2-c4af99df225b" />
      </body>
      <title>Silverlight 2.0 Beta 2....screen shots from the horses mouth</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,e5bf0bce-3c53-4de9-8de2-c4af99df225b.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/06/07/Silverlight20Beta2screenShotsFromTheHorsesMouth.aspx</link>
      <pubDate>Sat, 07 Jun 2008 00:50:21 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title=http://blogs.msdn.com/webdevtools/Default.aspx href="http://blogs.msdn.com/webdevtools/Default.aspx"&gt;http://blogs.msdn.com/webdevtools/Default.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Some pretty cool features as I've &lt;a href="http://blogs.breezetraining.com.au/mickb/2008/06/04/Sliverlight2Beta2OutThisWeek.aspx" target=_blank&gt;previously
posted&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
From my perspective I'm particularly interested in the supported 'WCF Dual HTTP Binding'.......more
on that later :)
&lt;/p&gt;
&lt;p&gt;
(updated**)
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#ff0000&gt;SILVERLIGHT 2.0 BETA 2 SDK is now available!!!!&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;Grab it here from the &lt;a href="http://silverlight.net/GetStarted/"&gt;Getting
Started section&lt;/a&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;Also get the videos, hands on labs, training material from &lt;a href="http://silverlight.net/learn/"&gt;HERE&lt;/a&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=e5bf0bce-3c53-4de9-8de2-c4af99df225b" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,e5bf0bce-3c53-4de9-8de2-c4af99df225b.aspx</comments>
      <category>.NET Developer</category>
      <category>General</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=d23c3eca-6f74-42a8-a3e8-16bf93994dfc</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,d23c3eca-6f74-42a8-a3e8-16bf93994dfc.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,d23c3eca-6f74-42a8-a3e8-16bf93994dfc.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=d23c3eca-6f74-42a8-a3e8-16bf93994dfc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://silverlight.net/blogs/jesseliberty" target="_blank">Jesse</a> has
written a great little article on creating a <a href="http://silverlight.net/blogs/jesseliberty/archive/2008/06/06/popup-control.aspx" target="_blank">popup
control</a> in Silverlight 2.0.
</p>
        <p>
Nice way of doing it - I was also thinking, that quite simply you could also set the <strong>ZIndex</strong> of
the element to a positive value.
</p>
        <p>
Enjoy.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d23c3eca-6f74-42a8-a3e8-16bf93994dfc" />
      </body>
      <title>Some Silverlight reading... a popup control</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,d23c3eca-6f74-42a8-a3e8-16bf93994dfc.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/06/07/SomeSilverlightReadingAPopupControl.aspx</link>
      <pubDate>Sat, 07 Jun 2008 00:40:30 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://silverlight.net/blogs/jesseliberty" target="_blank"&gt;Jesse&lt;/a&gt; has
written a great little article on creating a &lt;a href="http://silverlight.net/blogs/jesseliberty/archive/2008/06/06/popup-control.aspx" target="_blank"&gt;popup
control&lt;/a&gt; in Silverlight 2.0.
&lt;/p&gt;
&lt;p&gt;
Nice way of doing it - I was also thinking, that quite simply you could also set the &lt;strong&gt;ZIndex&lt;/strong&gt; of
the element to a positive value.
&lt;/p&gt;
&lt;p&gt;
Enjoy.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d23c3eca-6f74-42a8-a3e8-16bf93994dfc" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,d23c3eca-6f74-42a8-a3e8-16bf93994dfc.aspx</comments>
      <category>.NET Developer</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=81584c6c-dc01-4722-9daf-0e436c535154</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,81584c6c-dc01-4722-9daf-0e436c535154.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,81584c6c-dc01-4722-9daf-0e436c535154.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=81584c6c-dc01-4722-9daf-0e436c535154</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've started developing a RFID Mobile application on a Windows Mobile device - which
is pretty cool.
</p>
        <p>
I decided to use VS2008 and all worked well until deployment.<br />
"Unable to load System.Data.SqlServerCe.dll ....Version=3.0.xxxxx " as the version
OOTB with VS2008 is v3.5
</p>
        <p>
So I grabbed <a href="http://www.microsoft.com/downloads/details.aspx?familyid=5BD8ABAA-5813-4DB3-B23A-24551DE2ECC1&amp;displaylang=en" target="_blank">SQL
CE Mobile 3.0</a> and copied over and installed the <strong>sqlce30.wce5.armv4i.CAB</strong> and
all is good!
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=81584c6c-dc01-4722-9daf-0e436c535154" />
      </body>
      <title>BizTalk RFID Mobile 1.1 Development</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,81584c6c-dc01-4722-9daf-0e436c535154.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/06/06/BizTalkRFIDMobile11Development.aspx</link>
      <pubDate>Fri, 06 Jun 2008 03:31:18 GMT</pubDate>
      <description>&lt;p&gt;
I've started developing a RFID Mobile application on a Windows Mobile device - which
is pretty cool.
&lt;/p&gt;
&lt;p&gt;
I decided to use VS2008 and all worked well until deployment.&lt;br&gt;
"Unable to load System.Data.SqlServerCe.dll ....Version=3.0.xxxxx " as the version
OOTB with VS2008 is v3.5
&lt;/p&gt;
&lt;p&gt;
So I grabbed &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5BD8ABAA-5813-4DB3-B23A-24551DE2ECC1&amp;amp;displaylang=en" target="_blank"&gt;SQL
CE Mobile 3.0&lt;/a&gt; and copied over and installed the &lt;strong&gt;sqlce30.wce5.armv4i.CAB&lt;/strong&gt; and
all is good!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=81584c6c-dc01-4722-9daf-0e436c535154" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,81584c6c-dc01-4722-9daf-0e436c535154.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk/RFID</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=979fc53a-f78a-4a8e-ad38-31b662c0e7c9</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,979fc53a-f78a-4a8e-ad38-31b662c0e7c9.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,979fc53a-f78a-4a8e-ad38-31b662c0e7c9.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=979fc53a-f78a-4a8e-ad38-31b662c0e7c9</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was cracking into getting my machine setup for a Silverlight project that I'm working
on and came up with the above error.<br /><br />
Now....I admit....running x64 Windows 2008 on my Fijitsu Laptop mighten be the best
combination given the huge support for my laptop drivers that I have.
</p>
        <p>
I installed all the new(er) Silverlight 2.0 Beta bits from <a href="http://silverlight.net">http://silverlight.net</a> (<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;displaylang=en" target="_blank">VS2008
Silverlight 2.0 Beta 1 Bits</a>) and opened up my VS2008 seeing all the new Silverlight
project types - cool! (I thought)
</p>
        <p>
Each time I either <strong>created or opened</strong> an existing project - boom!
up came the error.
</p>
        <p>
So I figured the installation didn't complete properly.........after running/re-running/uninstalling/installing
countless times the error <strong>was still there!!!!</strong></p>
        <p>
My one solace and saving grace was running the following command line:
</p>
        <p>
          <strong>devenv /setup</strong>
        </p>
        <p>
......"I'm on my way, on my way to happiness today.....ah huh ah huh ah huh"........
</p>
        <p>
:-)
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=979fc53a-f78a-4a8e-ad38-31b662c0e7c9" />
      </body>
      <title>&amp;quot;The project type is not supported by this installation?&amp;quot; - VS2008 and Silverlight error!</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,979fc53a-f78a-4a8e-ad38-31b662c0e7c9.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/06/01/quotTheProjectTypeIsNotSupportedByThisInstallationquotVS2008AndSilverlightError.aspx</link>
      <pubDate>Sun, 01 Jun 2008 11:25:53 GMT</pubDate>
      <description>&lt;p&gt;
I was cracking into getting my machine setup for a Silverlight project that I'm working
on and came up with the above error.&lt;br&gt;
&lt;br&gt;
Now....I admit....running x64 Windows 2008 on my Fijitsu Laptop mighten be the best
combination given the huge support for my laptop drivers that I have.
&lt;/p&gt;
&lt;p&gt;
I installed all the new(er) Silverlight 2.0 Beta bits from &lt;a href="http://silverlight.net"&gt;http://silverlight.net&lt;/a&gt; (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en" target="_blank"&gt;VS2008
Silverlight 2.0 Beta 1 Bits&lt;/a&gt;) and opened up my VS2008 seeing all the new Silverlight
project types - cool! (I thought)
&lt;/p&gt;
&lt;p&gt;
Each time I either &lt;strong&gt;created or opened&lt;/strong&gt; an existing project - boom!
up came the error.
&lt;/p&gt;
&lt;p&gt;
So I figured the installation didn't complete properly.........after running/re-running/uninstalling/installing
countless times the error &lt;strong&gt;was still there!!!!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
My one solace and saving grace was running the following command line:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;devenv /setup&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
......"I'm on my way, on my way to happiness today.....ah huh ah huh ah huh"........
&lt;/p&gt;
&lt;p&gt;
:-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=979fc53a-f78a-4a8e-ad38-31b662c0e7c9" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,979fc53a-f78a-4a8e-ad38-31b662c0e7c9.aspx</comments>
      <category>.NET Developer</category>
      <category>Silverlight</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks,
</p>
        <p>
While freezing in NZ (this week) I came across this this great MSDN article discussing
some of the lower level implementation details around .NET 3.5 Framework.
</p>
        <p>
The part that interests me is the Presence information (right at the end of the article)
where once a connection is setup, you can get presence information about the other
party - right from the .NET 3.5 framework.<br /><br />
If you've ever had to try and develop for that other ways i.e. by talking straight
to communicator, or messenger or... etc.<br /><br />
You'll realise that they each have a slightly different API set, (some accept SIP,
some don't, some require it, some don't...) and it's opening up trouble - cause on
the target deployment machine...can you imagine the production guys when you say "hang
on, I've just got to go and download Messenger (from Live)...."
</p>
        <p>
Anyway - here's the article.
</p>
        <p>
Enjoy - <a title="http://msdn.microsoft.com/en-us/magazine/cc163356.aspx" href="http://msdn.microsoft.com/en-us/magazine/cc163356.aspx">http://msdn.microsoft.com/en-us/magazine/cc163356.aspx</a></p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb" />
      </body>
      <title>.NET 3.5 Framework - some low level big bits, sockets and peer to peer evolutions</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/05/06/NET35FrameworkSomeLowLevelBigBitsSocketsAndPeerToPeerEvolutions.aspx</link>
      <pubDate>Tue, 06 May 2008 07:05:16 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks,
&lt;/p&gt;
&lt;p&gt;
While freezing in NZ (this week) I came across this this great MSDN article discussing
some of the lower level implementation details around .NET 3.5 Framework.
&lt;/p&gt;
&lt;p&gt;
The part that interests me is the Presence information (right at the end of the article)
where once a connection is setup, you can get presence information about the other
party - right from the .NET 3.5 framework.&lt;br&gt;
&lt;br&gt;
If you've ever had to try and develop for that other ways i.e. by talking straight
to communicator, or messenger or... etc.&lt;br&gt;
&lt;br&gt;
You'll realise that they each have a slightly different API set, (some accept SIP,
some don't, some require it, some don't...) and it's opening up trouble - cause on
the target deployment machine...can you imagine the production guys when you say "hang
on, I've just got to go and download Messenger (from Live)...."
&lt;/p&gt;
&lt;p&gt;
Anyway - here's the article.
&lt;/p&gt;
&lt;p&gt;
Enjoy - &lt;a title="http://msdn.microsoft.com/en-us/magazine/cc163356.aspx" href="http://msdn.microsoft.com/en-us/magazine/cc163356.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc163356.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,a05ee6c7-08f5-4fcd-8bc7-7a3720b0c4cb.aspx</comments>
      <category>.NET Developer</category>
      <category>General</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Fellow MVP Thomas has provided a sample
that delves into the dark depths of BizTalk Server and its Adapter configurations.<br /><br /><a href="http://www.winterdom.com/weblog/2007/10/23/CustomPropPageInR2Sample.aspx"><img src="http://www.winterdom.com/weblog/content/binary/WindowsLiveWriter/CustomPropPageinR2Sample_7D6A/Adapter4_thumb.png" /></a><br /><br />
Check out his <a href="http://www.winterdom.com/weblog/2007/10/23/CustomPropPageInR2Sample.aspx">Custom
Prop Page Sample</a><br /><br />
Thanks Thomas!<br /><p></p><img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80" /></body>
      <title>A good sample at creating a Custom Dialogue for a Custom BizTalk Adapter</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/02/25/AGoodSampleAtCreatingACustomDialogueForACustomBizTalkAdapter.aspx</link>
      <pubDate>Mon, 25 Feb 2008 05:40:29 GMT</pubDate>
      <description>Fellow MVP Thomas has provided a sample that delves into the dark depths of BizTalk Server and its Adapter configurations.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.winterdom.com/weblog/2007/10/23/CustomPropPageInR2Sample.aspx"&gt;&lt;img src="http://www.winterdom.com/weblog/content/binary/WindowsLiveWriter/CustomPropPageinR2Sample_7D6A/Adapter4_thumb.png"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Check out his &lt;a href="http://www.winterdom.com/weblog/2007/10/23/CustomPropPageInR2Sample.aspx"&gt;Custom
Prop Page Sample&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Thanks Thomas!&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,4f9552e6-b7a1-4bdc-b7dc-76e0afd50c80.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
      <category>Tips</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=d010f720-031d-4b80-b88c-aa521c3ca972</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,d010f720-031d-4b80-b88c-aa521c3ca972.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,d010f720-031d-4b80-b88c-aa521c3ca972.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=d010f720-031d-4b80-b88c-aa521c3ca972</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">The new 'Adapter Framework' (in BizTalk
speak - this would be the Adapter V2.0 Framework) is now available.<br /><br />
This new WCF based Adapter Framework allows developers to build, deploy and execute
standalone Adapters - <b>whether BizTalk Server is present or not. </b><br /><br />
The framework is designed very much for standalone application (&amp; can be 'plugged'
into BizTalk R2 if desired), and as a .NET developer you can consider this as an additional
.NET library that provides the abilility to allow you to build standalone adapters
for your .NET applications (e.g. console app, or Word)<br /><br />
p.s. The BizTalk Adapter Pack is built ontop of this framework. :-)<br /><br />
Grab SP1 below:<br /><br /><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0F8007D7-F0C9-4169-8B9C-BA55F8F4C153&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=0F8007D7-F0C9-4169-8B9C-BA55F8F4C153&amp;displaylang=en</a><br /><br /><p></p><img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d010f720-031d-4b80-b88c-aa521c3ca972" /></body>
      <title>WCF LOB Adapter SDK SP1 Available</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,d010f720-031d-4b80-b88c-aa521c3ca972.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2008/02/25/WCFLOBAdapterSDKSP1Available.aspx</link>
      <pubDate>Mon, 25 Feb 2008 04:01:22 GMT</pubDate>
      <description>The new 'Adapter Framework' (in BizTalk speak - this would be the Adapter V2.0 Framework) is now available.&lt;br&gt;
&lt;br&gt;
This new WCF based Adapter Framework allows developers to build, deploy and execute
standalone Adapters - &lt;b&gt;whether BizTalk Server is present or not. &lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
The framework is designed very much for standalone application (&amp;amp; can be 'plugged'
into BizTalk R2 if desired), and as a .NET developer you can consider this as an additional
.NET library that provides the abilility to allow you to build standalone adapters
for your .NET applications (e.g. console app, or Word)&lt;br&gt;
&lt;br&gt;
p.s. The BizTalk Adapter Pack is built ontop of this framework. :-)&lt;br&gt;
&lt;br&gt;
Grab SP1 below:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0F8007D7-F0C9-4169-8B9C-BA55F8F4C153&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=0F8007D7-F0C9-4169-8B9C-BA55F8F4C153&amp;amp;displaylang=en&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=d010f720-031d-4b80-b88c-aa521c3ca972" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,d010f720-031d-4b80-b88c-aa521c3ca972.aspx</comments>
      <category>.NET Developer</category>
      <category>BizTalk</category>
      <category>BizTalk/Insights</category>
    </item>
  </channel>
</rss>