<?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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Brian Noyes' Blog - WinFx</title>
    <link>http://briannoyes.net/</link>
    <description>.NET Ramblings</description>
    <language>en-us</language>
    <copyright>Brian Noyes</copyright>
    <lastBuildDate>Fri, 13 Oct 2006 03:36:01 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.12105.0</generator>
    <managingEditor>brian.noyes@gmail.com</managingEditor>
    <webMaster>brian.noyes@gmail.com</webMaster>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=72371a75-34ef-475a-bb9d-99f1025437ff</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,72371a75-34ef-475a-bb9d-99f1025437ff.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,72371a75-34ef-475a-bb9d-99f1025437ff.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=72371a75-34ef-475a-bb9d-99f1025437ff</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This week and next my colleagues Juval Lowy and Michele Leroux Bustamante (<a href="http://dasblonde.com">http://dasblonde.com</a>)
and I are conducting a two day seminar on .NET 3.0 development as a roadshow in 6
cities across the country (LA, San Jose, Chicago, DC, New York, and Boston). We have
completed LA and San Jose with great feedback from the crowd and are in the middle
of the Chicago show.
</p>
        <p>
You can grab the slides and demos for my WF and WPF sessions here:   Slides   
Demos<br /><a href="http://www.softinsight.com/downloads/NET30RoadShow/Slides.zip">http://www.softinsight.com/downloads/NET30RoadShow/Slides.zip</a><br /><a href="http://www.softinsight.com/downloads/NET30RoadShow/democode.zip">http://www.softinsight.com/downloads/NET30RoadShow/democode.zip</a></p>
        <p>
In the WPF talk, I demonstrated several apps others have written that do a good job
of displaying some of the awesome graphics capabilities of WPF. Those apps can be
found through the links below. I also mentioned a great document for getting up to
speed on WPF when you know Windows Forms 2.0 capabilities well. That link is below
as well.
</p>
        <p>
Enjoy!
</p>
        <p>
Cine.View: A WPF viewing application that exposes the NetFlix catalog and ordering
capabilities created by the thirteen23 company. They also have a great viewer for
Flickr.<br /><a href="http://www.thirteen23.com/">http://www.thirteen23.com/</a></p>
        <p>
New York Times Reader: A WPF content application that provides a rich browsing and
reading experience for the paper's news content online in a Windows application.<br /><a href="http://firstlook.nytimes.com">http://firstlook.nytimes.com</a><br />
 <br />
Karen Corby's Woodgrove Finance application: This is a WPF XAML Browser application
that provides rich visualization of stock market data in a multi-paned WPF app that
runs in the browser.<br /><a href="http://scorbs.com/">http://scorbs.com/</a></p>
        <p>
Keep an eye on <a href="http://wpf.netfx3.com">http://wpf.netfx3.com</a> for some
more upcoming samples that will wow your eyes.
</p>
        <p>
The WPF for Windows Developers document from Mark Boulter and Jessica Fosler can be
found on Jessica Fosler's blog:<br /><a href="http://blogs.msdn.com/jfoscoding/articles/765135.aspx">http://blogs.msdn.com/jfoscoding/articles/765135.aspx</a><br /></p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=72371a75-34ef-475a-bb9d-99f1025437ff" />
      </body>
      <title>.NET 3.0 Roadshow Slides, Demos, and Links</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,72371a75-34ef-475a-bb9d-99f1025437ff.aspx</guid>
      <link>http://briannoyes.net/2006/10/13/NET30RoadshowSlidesDemosAndLinks.aspx</link>
      <pubDate>Fri, 13 Oct 2006 03:36:01 GMT</pubDate>
      <description>&lt;p&gt;
This week and next my colleagues Juval Lowy and Michele Leroux Bustamante (&lt;a href="http://dasblonde.com"&gt;http://dasblonde.com&lt;/a&gt;)
and I are conducting a two day seminar on .NET 3.0 development as a roadshow in 6
cities across the country (LA, San Jose, Chicago, DC, New York, and Boston). We have
completed LA and San Jose with great feedback from the crowd and are in the middle
of the Chicago show.
&lt;/p&gt;
&lt;p&gt;
You can grab the slides and demos for my WF and WPF sessions here:&amp;nbsp;&amp;nbsp; Slides&amp;nbsp;&amp;nbsp;&amp;nbsp;
Demos&lt;br&gt;
&lt;a href="http://www.softinsight.com/downloads/NET30RoadShow/Slides.zip"&gt;http://www.softinsight.com/downloads/NET30RoadShow/Slides.zip&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.softinsight.com/downloads/NET30RoadShow/democode.zip"&gt;http://www.softinsight.com/downloads/NET30RoadShow/democode.zip&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In the WPF talk, I demonstrated several apps others have written that do a good job
of displaying some of the awesome graphics capabilities of WPF. Those apps can be
found through the links below. I also mentioned a great document for getting up to
speed on WPF when you know Windows Forms 2.0 capabilities well. That link is below
as well.
&lt;/p&gt;
&lt;p&gt;
Enjoy!
&lt;/p&gt;
&lt;p&gt;
Cine.View: A WPF viewing application that exposes the NetFlix catalog and ordering
capabilities created by the thirteen23 company. They also have a great viewer for
Flickr.&lt;br&gt;
&lt;a href="http://www.thirteen23.com/"&gt;http://www.thirteen23.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
New York Times Reader: A WPF content application that provides a rich browsing and
reading experience for the paper's news content online in a Windows application.&lt;br&gt;
&lt;a href="http://firstlook.nytimes.com"&gt;http://firstlook.nytimes.com&lt;/a&gt;
&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Karen Corby's Woodgrove Finance application: This is a WPF XAML Browser application
that provides rich visualization of stock market data in a multi-paned WPF app that
runs in the browser.&lt;br&gt;
&lt;a href="http://scorbs.com/"&gt;http://scorbs.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Keep an eye on &lt;a href="http://wpf.netfx3.com"&gt;http://wpf.netfx3.com&lt;/a&gt; for some
more upcoming samples that will wow your eyes.
&lt;/p&gt;
&lt;p&gt;
The WPF for Windows Developers document from Mark Boulter and Jessica Fosler can be
found on Jessica Fosler's blog:&lt;br&gt;
&lt;a href="http://blogs.msdn.com/jfoscoding/articles/765135.aspx"&gt;http://blogs.msdn.com/jfoscoding/articles/765135.aspx&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=72371a75-34ef-475a-bb9d-99f1025437ff" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,72371a75-34ef-475a-bb9d-99f1025437ff.aspx</comments>
      <category>.NET</category>
      <category>.NET 3.0</category>
      <category>Speaking</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=c83e681f-9c1a-46ce-99f1-1c91ed9e7784</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,c83e681f-9c1a-46ce-99f1-1c91ed9e7784.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,c83e681f-9c1a-46ce-99f1-1c91ed9e7784.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=c83e681f-9c1a-46ce-99f1-1c91ed9e7784</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For the students from my 3 day WCF course and 2 Day WF course this week, or for anyone
else who wants the code with out the supporting delivery, here you go.
</p>
        <p>
For those who attended, it was good working with you this week!
</p>
        <p>
          <a href="http://www.softinsight.com/downloads/Classes/WCF3DayCourseMaterials.zip">WCF
Course Demos and Lab Code</a>
        </p>
        <p>
          <a href="http://www.softinsight.com/downloads/Classes/WF2DayCourseMaterials.zip">WF
Course Demos and Lab Code</a>
        </p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=c83e681f-9c1a-46ce-99f1-1c91ed9e7784" />
      </body>
      <title>WCF and WF Course Materials</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,c83e681f-9c1a-46ce-99f1-1c91ed9e7784.aspx</guid>
      <link>http://briannoyes.net/2006/06/09/WCFAndWFCourseMaterials.aspx</link>
      <pubDate>Fri, 09 Jun 2006 21:57:19 GMT</pubDate>
      <description>&lt;p&gt;
For the students from my 3 day WCF course and 2 Day WF course this week, or for anyone
else who wants the code with out the supporting delivery, here you go.
&lt;/p&gt;
&lt;p&gt;
For those who attended, it was good working with you this week!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.softinsight.com/downloads/Classes/WCF3DayCourseMaterials.zip"&gt;WCF
Course Demos and Lab Code&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.softinsight.com/downloads/Classes/WF2DayCourseMaterials.zip"&gt;WF
Course Demos and Lab Code&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=c83e681f-9c1a-46ce-99f1-1c91ed9e7784" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,c83e681f-9c1a-46ce-99f1-1c91ed9e7784.aspx</comments>
      <category>.NET</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=1cc44b29-d3fd-40b7-b571-9b54f2fb5408</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,1cc44b29-d3fd-40b7-b571-9b54f2fb5408.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,1cc44b29-d3fd-40b7-b571-9b54f2fb5408.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1cc44b29-d3fd-40b7-b571-9b54f2fb5408</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you haven't stumbled on the top link on the MSDN homepage in the last 24 hours...
WinFX Beta 2 is out. Finally some fresh bits that are synced up between WCF, WPF,
and WF.
</p>
        <p>
There is also a Go-Live license associated with all the bits, so you can get the jump
on the competition by putting apps into production right away with WinFX capabilities.
If you haven't started looking at WinFX capabilities yet, now is definitely the time.
One good way to do so is to attend our WCF Master Class. You can find more details
at <a href="http://www.idesign.net/">http://www.idesign.net/</a>.
</p>
        <p>
You can get all the download bits for WinFX Beta 2 here: <a href="http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/">http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/</a></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=1cc44b29-d3fd-40b7-b571-9b54f2fb5408" />
      </body>
      <title>I love the smell of fresh hot bits in the morning...</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,1cc44b29-d3fd-40b7-b571-9b54f2fb5408.aspx</guid>
      <link>http://briannoyes.net/2006/05/24/ILoveTheSmellOfFreshHotBitsInTheMorning.aspx</link>
      <pubDate>Wed, 24 May 2006 12:42:01 GMT</pubDate>
      <description>&lt;p&gt;
If you haven't stumbled on the top link on the MSDN homepage in the last 24 hours...
WinFX Beta 2 is out. Finally some fresh bits that are synced up between WCF, WPF,
and WF.
&lt;/p&gt;
&lt;p&gt;
There is also a Go-Live license associated with all the bits, so you can get the jump
on the competition by putting apps into production right away with WinFX capabilities.
If you haven't started looking at WinFX capabilities yet, now is definitely the time.
One good way to do so is to attend our WCF Master Class. You can find more details
at &lt;a href="http://www.idesign.net/"&gt;http://www.idesign.net/&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
You can get all the download bits for WinFX Beta 2 here: &lt;a href="http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/"&gt;http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=1cc44b29-d3fd-40b7-b571-9b54f2fb5408" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,1cc44b29-d3fd-40b7-b571-9b54f2fb5408.aspx</comments>
      <category>.NET</category>
      <category>Languages and Tools</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=f64c802d-ca2c-4514-bbac-a023eea45cd5</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,f64c802d-ca2c-4514-bbac-a023eea45cd5.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,f64c802d-ca2c-4514-bbac-a023eea45cd5.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=f64c802d-ca2c-4514-bbac-a023eea45cd5</wfw:commentRss>
      <title>Great new WCF demos available on the IDesign web site</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,f64c802d-ca2c-4514-bbac-a023eea45cd5.aspx</guid>
      <link>http://briannoyes.net/2006/04/11/GreatNewWCFDemosAvailableOnTheIDesignWebSite.aspx</link>
      <pubDate>Tue, 11 Apr 2006 14:29:14 GMT</pubDate>
      <description>&lt;p&gt;
If you are starting to get your hands dirty with Windows Communication Foundation
(WCF), you can get some great samples to help you get started from our website at &lt;a href="http://www.idesign.net/"&gt;http://www.idesign.net/&lt;/a&gt; on
the downloads tab.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;a title=http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;amp;tabid=11 href="http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;amp;tabid=11"&gt;http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;amp;tabid=11&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=f64c802d-ca2c-4514-bbac-a023eea45cd5" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,f64c802d-ca2c-4514-bbac-a023eea45cd5.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Languages and Tools</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=51b0482d-e598-426a-8047-948950af8b8e</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,51b0482d-e598-426a-8047-948950af8b8e.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,51b0482d-e598-426a-8047-948950af8b8e.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=51b0482d-e598-426a-8047-948950af8b8e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave a talk on Connecting Smart Clients at the Microsoft Integration and Connected
Systems User Group (MICSUG) last night. I discussed and demoed the basics of using
Windows Communication Foundation (WCF) to connect applications, using the newly released
Feb CTP.
</p>
        <p>
You can get the slides and demos here:  <a href="http://www.softinsight.com/downloads/INETA/ConnectSmartClientsWithWCF_Feb06.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/INETA/ConnectingSmartClientsWithWCFDemos_Feb06.zip">Demos</a></p>
        <p>
In jumping through the hoops yesterday to get my demos running on the Feb CTP, there
were a number of changes that I had to get used to compared to previous builds.
</p>
        <p>
The biggest is that if you run svcutil against a service that uses wsHttpBinding to
generate a proxy, you get a proxy service contract that uses custom message contracts
to wrap the parameters and return values from each operation contract. XXXRequest
and XXXResponse classes are defined in the proxy file for each operation, along with
an XXXBody class that actually contains the raw parameter/DataContract types. 
</p>
        <p>
If you program against the service contract interface like so:
</p>
        <p>
IAccountsManager mgrProxy = new AccountsManagerProxy();
</p>
        <p>
You will have to create the XXXRequest message contract types to wrap all the
parameters you pass into the methods, and unwrap any return values from the XXXResponse
types. However, they also expose a public method on the proxy class directly that
encapsulates these details so that you can deal directly with the underlying parameters
and return values. 
</p>
        <p>
So instead of calling IAccountsManager.GetAllAccounts for example, you will have an
easier time calling AccountsManagerProxy.GetAllAccounts.
</p>
        <p>
This is true for wsHttpBinding because of the message level security involved in the
default binding. If you use basicHttpBinding, or turn down the security on the wsHttpBinding,
then you will get more straightforward service contract interface definitions on the
client side proxy.
</p>
        <p>
The resulting proxy and service contract look like the following:
</p>
        <font size="4">
          <p>
          </p>
        </font>
        <font size="3">
          <font face="Courier New">[System.CodeDom.Compiler.GeneratedCodeAttribute(</font>
          <font face="Courier New">
            <font color="#800000">"System.ServiceModel"</font>, <font color="#800000">"3.0.0.0"</font></font>
          <font face="Courier New">)]</font>
        </font>
        <p>
          <font face="Courier New" size="3">[System.ServiceModel.ServiceContractAttribute()]</font>
        </p>
        <font color="#0000ff">
          <p>
            <font face="Courier New" size="3">public</font>
          </p>
        </font>
        <font size="3">
          <font face="Courier New">
            <font color="#000000">
            </font>
            <font color="#0000ff">interface</font>
          </font>
          <font face="Courier New" color="#000000"> IAccountsManager</font>
        </font>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font color="#008000">
            <font face="Courier New" size="3">// CODEGEN: Generating message
contract since message part accountNo requires protection.</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">[System.ServiceModel.OperationContractAttribute(Action=</font>
            <font face="Courier New">
              <font color="#800000">"http://tempuri.org/IAccountsManager/CreateAccount"</font>,
ReplyAction=<font color="#800000">"http://tempuri.org/IAccountsManager/CreateAccountResponse"</font></font>
            <font face="Courier New">)]</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">CreateAccountResponse CreateAccount(CreateAccountRequest
request);</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font color="#008000">
            <font face="Courier New" size="3">// CODEGEN: Generating message
contract since message part GetAllAccountsResult requires protection.</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">[System.ServiceModel.OperationContractAttribute(Action=</font>
            <font face="Courier New">
              <font color="#800000">"http://tempuri.org/IAccountsManager/GetAllAccounts"</font>,
ReplyAction=<font color="#800000">"http://tempuri.org/IAccountsManager/GetAllAccountsResponse"</font></font>
            <font face="Courier New">)]</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">GetAllAccountsResponse GetAllAccounts(GetAllAccountsRequest
request);</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font color="#008000">
            <font face="Courier New" size="3">// CODEGEN: Generating message
contract since message part fromAccountNo requires protection.</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">[System.ServiceModel.OperationContractAttribute(Action=</font>
            <font face="Courier New">
              <font color="#800000">"http://tempuri.org/IAccountsManager/Transfer"</font>,
ReplyAction=<font color="#800000">"http://tempuri.org/IAccountsManager/TransferResponse"</font></font>
            <font face="Courier New">)]</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">TransferResponse Transfer(TransferRequest request);</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">[System.CodeDom.Compiler.GeneratedCodeAttribute(</font>
            <font face="Courier New">
              <font color="#800000">"System.ServiceModel"</font>, <font color="#800000">"3.0.0.0"</font>)]
</font>
          </font>
        </p>
        <font color="#0000ff">
          <p>
            <font face="Courier New" size="3">public</font>
          </p>
        </font>
        <font size="3">
          <font face="Courier New">
            <font color="#000000">
            </font>
            <font color="#0000ff">interface</font>
          </font>
          <font face="Courier New" color="#000000"> IAccountsManagerChannel
: IAccountsManager, System.ServiceModel.IClientChannel</font>
        </font>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">[System.CodeDom.Compiler.GeneratedCodeAttribute(</font>
            <font face="Courier New">
              <font color="#800000">"System.ServiceModel"</font>, <font color="#800000">"3.0.0.0"</font>)]
</font>
          </font>
        </p>
        <font color="#0000ff">
          <p>
            <font face="Courier New" size="3">public</font>
          </p>
        </font>
        <font size="3">
          <font face="Courier New">
            <font color="#000000">
            </font>
            <font color="#0000ff">partial</font>
            <font color="#000000">
            </font>
            <font color="#0000ff">class</font>
          </font>
          <font face="Courier New" color="#000000"> AccountsManagerProxy
: System.ServiceModel.ClientBase&lt;IAccountsManager&gt;, IAccountsManager</font>
        </font>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">public</font>
            <font face="Courier New"> AccountsManagerProxy()</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">public</font> AccountsManagerProxy(<font color="#0000ff">string</font></font>
            <font face="Courier New"> endpointConfigurationName)
: </font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">base</font>
            <font face="Courier New">(endpointConfigurationName)</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">public</font> AccountsManagerProxy(<font color="#0000ff">string</font> endpointConfigurationName, <font color="#0000ff">string</font></font>
            <font face="Courier New"> remoteAddress)
: </font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">base</font>
            <font face="Courier New">(endpointConfigurationName,
remoteAddress)</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">public</font> AccountsManagerProxy(<font color="#0000ff">string</font></font>
            <font face="Courier New"> endpointConfigurationName,
System.ServiceModel.EndpointAddress remoteAddress) : </font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">base</font>
            <font face="Courier New">(endpointConfigurationName,
remoteAddress)</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">public</font>
            <font face="Courier New"> AccountsManagerProxy(System.ServiceModel.Channels.Binding
binding, System.ServiceModel.EndpointAddress remoteAddress) : </font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">base</font>
            <font face="Courier New">(binding,
remoteAddress)</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">CreateAccountResponse IAccountsManager.CreateAccount(CreateAccountRequest
request)</font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">return</font>
              <font color="#0000ff">base</font>
            </font>
            <font face="Courier New">.InnerProxy.CreateAccount(request);</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">public</font>
              <font color="#0000ff">void</font> CreateAccount(<font color="#0000ff">int</font> accountNo, <font color="#0000ff">string</font> name, <font color="#0000ff">decimal</font></font>
            <font face="Courier New"> initialBalance)</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">CreateAccountRequest inValue = </font>
            <font face="Courier New" color="#0000ff">new</font>
            <font face="Courier New"> CreateAccountRequest();</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">inValue.Body = </font>
            <font face="Courier New" color="#0000ff">new</font>
            <font face="Courier New"> CreateAccountRequestBody();</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">inValue.Body.accountNo = accountNo;</font>
        </p>
        <p>
          <font face="Courier New" size="3">inValue.Body.name = name;</font>
        </p>
        <p>
          <font face="Courier New" size="3">inValue.Body.initialBalance = initialBalance;</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">CreateAccountResponse retVal = ((IAccountsManager)(</font>
            <font face="Courier New" color="#0000ff">this</font>
            <font face="Courier New">)).CreateAccount(inValue);</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">GetAllAccountsResponse IAccountsManager.GetAllAccounts(GetAllAccountsRequest
request)</font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">return</font>
              <font color="#0000ff">base</font>
            </font>
            <font face="Courier New">.InnerProxy.GetAllAccounts(request);</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">public</font>
            <font face="Courier New"> BankingBusinessLayer.Account[]
GetAllAccounts()</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">GetAllAccountsRequest inValue = </font>
            <font face="Courier New" color="#0000ff">new</font>
            <font face="Courier New"> GetAllAccountsRequest();</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">inValue.Body = </font>
            <font face="Courier New" color="#0000ff">new</font>
            <font face="Courier New"> GetAllAccountsRequestBody();</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">GetAllAccountsResponse retVal = ((IAccountsManager)(</font>
            <font face="Courier New" color="#0000ff">this</font>
            <font face="Courier New">)).GetAllAccounts(inValue);</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New" color="#0000ff">return</font>
            <font face="Courier New"> retVal.Body.GetAllAccountsResult;</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">TransferResponse IAccountsManager.Transfer(TransferRequest
request)</font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">return</font>
              <font color="#0000ff">base</font>
            </font>
            <font face="Courier New">.InnerProxy.Transfer(request);</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">
              <font color="#0000ff">public</font>
              <font color="#0000ff">void</font> Transfer(<font color="#0000ff">int</font> fromAccountNo, <font color="#0000ff">int</font> toAccountNo, <font color="#0000ff">decimal</font></font>
            <font face="Courier New"> amount)</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">{</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">TransferRequest inValue = </font>
            <font face="Courier New" color="#0000ff">new</font>
            <font face="Courier New"> TransferRequest();</font>
          </font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">inValue.Body = </font>
            <font face="Courier New" color="#0000ff">new</font>
            <font face="Courier New"> TransferRequestBody();</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">inValue.Body.fromAccountNo = fromAccountNo;</font>
        </p>
        <p>
          <font face="Courier New" size="3">inValue.Body.toAccountNo = toAccountNo;</font>
        </p>
        <p>
          <font face="Courier New" size="3">inValue.Body.amount = amount;</font>
        </p>
        <p>
          <font size="3">
            <font face="Courier New">TransferResponse retVal = ((IAccountsManager)(</font>
            <font face="Courier New" color="#0000ff">this</font>
            <font face="Courier New">)).Transfer(inValue);</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
        </p>
        <p>
          <font face="Courier New" size="3">}</font>
          <font size="4">
          </font>
        </p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=51b0482d-e598-426a-8047-948950af8b8e" />
      </body>
      <title>Slides and Demos from Connecting Smart Clients with WCF talk last night - Feb CTP lessons learned</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,51b0482d-e598-426a-8047-948950af8b8e.aspx</guid>
      <link>http://briannoyes.net/2006/02/24/SlidesAndDemosFromConnectingSmartClientsWithWCFTalkLastNightFebCTPLessonsLearned.aspx</link>
      <pubDate>Fri, 24 Feb 2006 15:04:57 GMT</pubDate>
      <description>&lt;p&gt;
I gave a talk on Connecting Smart Clients at the Microsoft Integration and Connected
Systems User Group (MICSUG) last night. I discussed and demoed the basics of using
Windows Communication Foundation (WCF) to connect applications, using the newly released
Feb CTP.
&lt;/p&gt;
&lt;p&gt;
You can get the slides and demos here:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/ConnectSmartClientsWithWCF_Feb06.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.softinsight.com/downloads/INETA/ConnectingSmartClientsWithWCFDemos_Feb06.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In jumping through the hoops yesterday to get my demos running on the Feb CTP, there
were a number of changes that I had to get used to compared to previous builds.
&lt;/p&gt;
&lt;p&gt;
The biggest is that if you run svcutil against a service that uses wsHttpBinding to
generate a proxy, you get a proxy service contract that uses custom message contracts
to wrap the parameters and return values from each operation contract. XXXRequest
and XXXResponse classes are defined in the proxy file for each operation, along with
an XXXBody class that actually contains the raw parameter/DataContract types. 
&lt;/p&gt;
&lt;p&gt;
If you program against the&amp;nbsp;service contract interface like so:
&lt;/p&gt;
&lt;p&gt;
IAccountsManager mgrProxy = new AccountsManagerProxy();
&lt;/p&gt;
&lt;p&gt;
You will have to create the XXXRequest&amp;nbsp;message contract types to wrap all the
parameters you pass into the methods, and unwrap any return values from the XXXResponse
types. However, they also expose a public method on the proxy class directly that
encapsulates these details so that you can deal directly with the underlying parameters
and return values. 
&lt;/p&gt;
&lt;p&gt;
So instead of calling IAccountsManager.GetAllAccounts for example, you will have an
easier time calling AccountsManagerProxy.GetAllAccounts.
&lt;/p&gt;
&lt;p&gt;
This is true for wsHttpBinding because of the message level security involved in the
default binding. If you use basicHttpBinding, or turn down the security on the wsHttpBinding,
then you will get more straightforward service contract interface definitions on the
client side proxy.
&lt;/p&gt;
&lt;p&gt;
The resulting proxy and service contract look like the following:
&lt;/p&gt;
&lt;font size=4&gt; 
&lt;p&gt;
&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt;[System.CodeDom.Compiler.GeneratedCodeAttribute(&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#800000&gt;"System.ServiceModel"&lt;/font&gt;, &lt;font color=#800000&gt;"3.0.0.0"&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;)]&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;[System.ServiceModel.ServiceContractAttribute()]&lt;/font&gt;
&lt;/p&gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;public&lt;/font&gt;
&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#0000ff&gt;interface&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color=#000000&gt; IAccountsManager&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#008000&gt;&lt;font face="Courier New" size=3&gt;// CODEGEN: Generating message
contract since message part accountNo requires protection.&lt;/font&gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;[System.ServiceModel.OperationContractAttribute(Action=&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#800000&gt;"http://tempuri.org/IAccountsManager/CreateAccount"&lt;/font&gt;,
ReplyAction=&lt;font color=#800000&gt;"http://tempuri.org/IAccountsManager/CreateAccountResponse"&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;)]&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;CreateAccountResponse CreateAccount(CreateAccountRequest
request);&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#008000&gt;&lt;font face="Courier New" size=3&gt;// CODEGEN: Generating message
contract since message part GetAllAccountsResult requires protection.&lt;/font&gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;[System.ServiceModel.OperationContractAttribute(Action=&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#800000&gt;"http://tempuri.org/IAccountsManager/GetAllAccounts"&lt;/font&gt;,
ReplyAction=&lt;font color=#800000&gt;"http://tempuri.org/IAccountsManager/GetAllAccountsResponse"&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;)]&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;GetAllAccountsResponse GetAllAccounts(GetAllAccountsRequest
request);&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#008000&gt;&lt;font face="Courier New" size=3&gt;// CODEGEN: Generating message
contract since message part fromAccountNo requires protection.&lt;/font&gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;[System.ServiceModel.OperationContractAttribute(Action=&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#800000&gt;"http://tempuri.org/IAccountsManager/Transfer"&lt;/font&gt;,
ReplyAction=&lt;font color=#800000&gt;"http://tempuri.org/IAccountsManager/TransferResponse"&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;)]&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;TransferResponse Transfer(TransferRequest request);&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;[System.CodeDom.Compiler.GeneratedCodeAttribute(&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#800000&gt;"System.ServiceModel"&lt;/font&gt;, &lt;font color=#800000&gt;"3.0.0.0"&lt;/font&gt;)]
&lt;/p&gt;
&gt;&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;public&lt;/font&gt;
&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#0000ff&gt;interface&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color=#000000&gt; IAccountsManagerChannel
: IAccountsManager, System.ServiceModel.IClientChannel&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;[System.CodeDom.Compiler.GeneratedCodeAttribute(&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#800000&gt;"System.ServiceModel"&lt;/font&gt;, &lt;font color=#800000&gt;"3.0.0.0"&lt;/font&gt;)]
&lt;/p&gt;
&gt;&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;public&lt;/font&gt;
&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#0000ff&gt;partial&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#0000ff&gt;class&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color=#000000&gt; AccountsManagerProxy
: System.ServiceModel.ClientBase&amp;lt;IAccountsManager&amp;gt;, IAccountsManager&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;public&lt;/font&gt;&lt;font face="Courier New"&gt; AccountsManagerProxy()&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;public&lt;/font&gt; AccountsManagerProxy(&lt;font color=#0000ff&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; endpointConfigurationName)
: &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;base&lt;/font&gt;&lt;font face="Courier New"&gt;(endpointConfigurationName)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;public&lt;/font&gt; AccountsManagerProxy(&lt;font color=#0000ff&gt;string&lt;/font&gt; endpointConfigurationName, &lt;font color=#0000ff&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; remoteAddress)
: &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;base&lt;/font&gt;&lt;font face="Courier New"&gt;(endpointConfigurationName,
remoteAddress)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;public&lt;/font&gt; AccountsManagerProxy(&lt;font color=#0000ff&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; endpointConfigurationName,
System.ServiceModel.EndpointAddress remoteAddress) : &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;base&lt;/font&gt;&lt;font face="Courier New"&gt;(endpointConfigurationName,
remoteAddress)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;public&lt;/font&gt;&lt;font face="Courier New"&gt; AccountsManagerProxy(System.ServiceModel.Channels.Binding
binding, System.ServiceModel.EndpointAddress remoteAddress) : &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;base&lt;/font&gt;&lt;font face="Courier New"&gt;(binding,
remoteAddress)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;CreateAccountResponse IAccountsManager.CreateAccount(CreateAccountRequest
request)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;return&lt;/font&gt; &lt;font color=#0000ff&gt;base&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;.InnerProxy.CreateAccount(request);&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;public&lt;/font&gt; &lt;font color=#0000ff&gt;void&lt;/font&gt; CreateAccount(&lt;font color=#0000ff&gt;int&lt;/font&gt; accountNo, &lt;font color=#0000ff&gt;string&lt;/font&gt; name, &lt;font color=#0000ff&gt;decimal&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; initialBalance)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;CreateAccountRequest inValue = &lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;new&lt;/font&gt;&lt;font face="Courier New"&gt; CreateAccountRequest();&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;inValue.Body = &lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;new&lt;/font&gt;&lt;font face="Courier New"&gt; CreateAccountRequestBody();&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;inValue.Body.accountNo = accountNo;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;inValue.Body.name = name;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;inValue.Body.initialBalance = initialBalance;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;CreateAccountResponse retVal = ((IAccountsManager)(&lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;this&lt;/font&gt;&lt;font face="Courier New"&gt;)).CreateAccount(inValue);&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;GetAllAccountsResponse IAccountsManager.GetAllAccounts(GetAllAccountsRequest
request)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;return&lt;/font&gt; &lt;font color=#0000ff&gt;base&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;.InnerProxy.GetAllAccounts(request);&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;public&lt;/font&gt;&lt;font face="Courier New"&gt; BankingBusinessLayer.Account[]
GetAllAccounts()&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;GetAllAccountsRequest inValue = &lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;new&lt;/font&gt;&lt;font face="Courier New"&gt; GetAllAccountsRequest();&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;inValue.Body = &lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;new&lt;/font&gt;&lt;font face="Courier New"&gt; GetAllAccountsRequestBody();&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;GetAllAccountsResponse retVal = ((IAccountsManager)(&lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;this&lt;/font&gt;&lt;font face="Courier New"&gt;)).GetAllAccounts(inValue);&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New" color=#0000ff&gt;return&lt;/font&gt;&lt;font face="Courier New"&gt; retVal.Body.GetAllAccountsResult;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;TransferResponse IAccountsManager.Transfer(TransferRequest
request)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;return&lt;/font&gt; &lt;font color=#0000ff&gt;base&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;.InnerProxy.Transfer(request);&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;public&lt;/font&gt; &lt;font color=#0000ff&gt;void&lt;/font&gt; Transfer(&lt;font color=#0000ff&gt;int&lt;/font&gt; fromAccountNo, &lt;font color=#0000ff&gt;int&lt;/font&gt; toAccountNo, &lt;font color=#0000ff&gt;decimal&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; amount)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;{&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;TransferRequest inValue = &lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;new&lt;/font&gt;&lt;font face="Courier New"&gt; TransferRequest();&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;inValue.Body = &lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;new&lt;/font&gt;&lt;font face="Courier New"&gt; TransferRequestBody();&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;inValue.Body.fromAccountNo = fromAccountNo;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;inValue.Body.toAccountNo = toAccountNo;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;inValue.Body.amount = amount;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;font face="Courier New"&gt;TransferResponse retVal = ((IAccountsManager)(&lt;/font&gt;&lt;font face="Courier New" color=#0000ff&gt;this&lt;/font&gt;&lt;font face="Courier New"&gt;)).Transfer(inValue);&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size=3&gt;}&lt;/font&gt;&lt;font size=4&gt;
&lt;/p&gt;
&gt;&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=51b0482d-e598-426a-8047-948950af8b8e" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,51b0482d-e598-426a-8047-948950af8b8e.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=e9db2e05-a57e-4604-b29c-fb5d4c5495c0</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,e9db2e05-a57e-4604-b29c-fb5d4c5495c0.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,e9db2e05-a57e-4604-b29c-fb5d4c5495c0.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e9db2e05-a57e-4604-b29c-fb5d4c5495c0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Come on out for the inaugural meeting of the <a href="http://groups.msn.com/micsug">Microsoft
Integration and Connected Systems User Group (MICSUG) </a>at the Microsoft Reston
offices tomorrow night at 7 pm. I'll be giving a presentation on using WCF to connect
smart clients in a distributed environment.
</p>
        <p>
Should be a great time!
</p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=e9db2e05-a57e-4604-b29c-fb5d4c5495c0" />
      </body>
      <title>Connecting Smart Clients with WCF - MICSUG talk tomorrow night</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,e9db2e05-a57e-4604-b29c-fb5d4c5495c0.aspx</guid>
      <link>http://briannoyes.net/2006/02/22/ConnectingSmartClientsWithWCFMICSUGTalkTomorrowNight.aspx</link>
      <pubDate>Wed, 22 Feb 2006 13:56:36 GMT</pubDate>
      <description>&lt;p&gt;
Come on out for the inaugural meeting of the &lt;a href="http://groups.msn.com/micsug"&gt;Microsoft
Integration and Connected Systems User Group (MICSUG) &lt;/a&gt;at the Microsoft Reston
offices tomorrow night at 7 pm. I'll be giving a presentation on using WCF to connect
smart clients in a distributed environment.
&lt;/p&gt;
&lt;p&gt;
Should be a great time!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=e9db2e05-a57e-4604-b29c-fb5d4c5495c0" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,e9db2e05-a57e-4604-b29c-fb5d4c5495c0.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Speaking</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=59671788-f800-4ee0-bd98-e756ac198db6</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,59671788-f800-4ee0-bd98-e756ac198db6.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,59671788-f800-4ee0-bd98-e756ac198db6.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=59671788-f800-4ee0-bd98-e756ac198db6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave a presentation on WPF last night in Orlando to ONETUG. Great group, lots of
good questions, had a lot of fun. 
</p>
        <p>
Here are the slides and demos:  <a href="http://www.softinsight.com/downloads/INETA/FundamentalsofWPF.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/INETA/FundamentalsofWPFDemos.zip">Demos</a></p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=59671788-f800-4ee0-bd98-e756ac198db6" />
      </body>
      <title>Fundamentals of Windows Presentation Foundation talk at ONETUG last night</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,59671788-f800-4ee0-bd98-e756ac198db6.aspx</guid>
      <link>http://briannoyes.net/2006/01/19/FundamentalsOfWindowsPresentationFoundationTalkAtONETUGLastNight.aspx</link>
      <pubDate>Thu, 19 Jan 2006 14:08:05 GMT</pubDate>
      <description>&lt;p&gt;
I gave a presentation on WPF last night in Orlando to ONETUG. Great group, lots of
good questions, had a lot of fun. 
&lt;/p&gt;
&lt;p&gt;
Here are the slides and demos:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/FundamentalsofWPF.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/FundamentalsofWPFDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=59671788-f800-4ee0-bd98-e756ac198db6" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,59671788-f800-4ee0-bd98-e756ac198db6.aspx</comments>
      <category>.NET</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=37ad9ecc-7661-4f0b-8cc7-42e11b18c514</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,37ad9ecc-7661-4f0b-8cc7-42e11b18c514.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,37ad9ecc-7661-4f0b-8cc7-42e11b18c514.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=37ad9ecc-7661-4f0b-8cc7-42e11b18c514</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In previous builds of WCF (Indigo), you had to have a particular namespace included
in your config file. Specifically, instead of the default root element of:
</p>
        <p>
&lt;configuration&gt;<br />
&lt;!-- The rest of your config settings --&gt;<br />
&lt;/configuration&gt;
</p>
        <p>
You needed to have:
</p>
        <p>
&lt;configuration xmlns="<a href="http://schemas.microsoft.com/.NetConfiguration/v2.0">http://schemas.microsoft.com/.NetConfiguration/v2.0</a>"&gt;<br />
&lt;!-- The rest of your config settings --&gt;<br />
&lt;/configuration&gt;
</p>
        <p>
By doing that in previous builds, you got intellisense for the schema elements and
attributes of the &lt;system.serviceModel&gt; element, letting you discover the
right entries to get features like transactions, security, bindings and so on correctly
configured.
</p>
        <p>
When I installed the Nov CTP, I was immediately lost because my intellisense seemed
to have gone away. If you add a WinFx Service from the Web Site templates, the web.config
still has the namespace shown in the second config snippet above. But the trick is
that it is no longer needed, and in fact confuses VS on what schema elements to expose
through intellisense. The system.serviceModel schema elements are now merged with
the C:\Program Files\Microsoft Visual Studio 8\Xml\Schemas\DotNetConfig.xsd schema
as part of the VS extenstions install, so they are there by default now in the config
file intellisense.
</p>
        <p>
Thanks to my colleague Juval Lowy for discovering this fact and giving me back my
intellicrack!
</p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=37ad9ecc-7661-4f0b-8cc7-42e11b18c514" />
      </body>
      <title>WCF Config file intellisense... why hath thou forsake me?</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,37ad9ecc-7661-4f0b-8cc7-42e11b18c514.aspx</guid>
      <link>http://briannoyes.net/2005/11/29/WCFConfigFileIntellisenseWhyHathThouForsakeMe.aspx</link>
      <pubDate>Tue, 29 Nov 2005 20:02:24 GMT</pubDate>
      <description>&lt;p&gt;
In previous builds of WCF (Indigo), you had to have a particular namespace included
in your config file. Specifically, instead of the default root element of:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;configuration&amp;gt;&lt;br&gt;
&amp;lt;!-- The rest of your config settings --&amp;gt;&lt;br&gt;
&amp;lt;/configuration&amp;gt;
&lt;/p&gt;
&lt;p&gt;
You needed to have:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;configuration xmlns="&lt;a href="http://schemas.microsoft.com/.NetConfiguration/v2.0"&gt;http://schemas.microsoft.com/.NetConfiguration/v2.0&lt;/a&gt;"&amp;gt;&lt;br&gt;
&amp;lt;!-- The rest of your config settings --&amp;gt;&lt;br&gt;
&amp;lt;/configuration&amp;gt;
&lt;/p&gt;
&lt;p&gt;
By doing that in previous builds, you got intellisense for the schema elements and
attributes&amp;nbsp;of the &amp;lt;system.serviceModel&amp;gt; element, letting you discover the
right entries to get features like transactions, security, bindings and so on correctly
configured.
&lt;/p&gt;
&lt;p&gt;
When I installed the Nov CTP, I was immediately lost because my intellisense seemed
to have gone away. If you add a WinFx Service from the Web Site templates, the web.config
still has the namespace shown in the second config snippet above. But the trick is
that it is no longer needed, and in fact confuses VS on what schema elements to expose
through intellisense. The system.serviceModel schema elements are now merged with
the C:\Program Files\Microsoft Visual Studio 8\Xml\Schemas\DotNetConfig.xsd schema
as part of the VS extenstions install, so they are there by default now in the config
file intellisense.
&lt;/p&gt;
&lt;p&gt;
Thanks to my colleague Juval Lowy for discovering this fact and giving me back my
intellicrack!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=37ad9ecc-7661-4f0b-8cc7-42e11b18c514" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,37ad9ecc-7661-4f0b-8cc7-42e11b18c514.aspx</comments>
      <category>.NET</category>
      <category>Languages and Tools</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=48ae99d3-42bc-4678-9f2b-44ef6314c6fe</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,48ae99d3-42bc-4678-9f2b-44ef6314c6fe.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,48ae99d3-42bc-4678-9f2b-44ef6314c6fe.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=48ae99d3-42bc-4678-9f2b-44ef6314c6fe</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave a talk on connecting smart clients with WCF on Tuesday at Boulder .NET. Had
a good turnout desipte the proximity to the holiday and had a good time.
</p>
        <p>
The talk covered the fundamentals of connecting applications with WCF since most of
the people there had never seen anything on WCF. Then I moved into some of the specific
client concerns when using WCF, similar to my talk at VSConnections.
</p>
        <p>
You can get the slides and demos here:  <a href="http://www.softinsight.com/downloads/INETA/ConnectSmartClientApplicationswithWCF.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/INETA/ConnectingSmartClientsWithWCF.zip">Demos</a></p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=48ae99d3-42bc-4678-9f2b-44ef6314c6fe" />
      </body>
      <title>Slides and demos from Boulder .NET</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,48ae99d3-42bc-4678-9f2b-44ef6314c6fe.aspx</guid>
      <link>http://briannoyes.net/2005/11/24/SlidesAndDemosFromBoulderNET.aspx</link>
      <pubDate>Thu, 24 Nov 2005 15:24:32 GMT</pubDate>
      <description>&lt;p&gt;
I gave a talk on connecting smart clients with WCF on Tuesday at Boulder .NET. Had
a good turnout desipte the proximity to the holiday and had a good time.
&lt;/p&gt;
&lt;p&gt;
The talk covered the fundamentals of connecting applications with WCF since most of
the people there had never seen anything on WCF. Then I moved into some of the specific
client concerns when using WCF, similar to my talk at VSConnections.
&lt;/p&gt;
&lt;p&gt;
You can get the slides and demos here:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/ConnectSmartClientApplicationswithWCF.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/ConnectingSmartClientsWithWCF.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=48ae99d3-42bc-4678-9f2b-44ef6314c6fe" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,48ae99d3-42bc-4678-9f2b-44ef6314c6fe.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
      <category>WinFx</category>
    </item>
    <item>
      <trackback:ping>http://briannoyes.net/Trackback.aspx?guid=0a11df39-72f7-47fb-a0a8-7222e0c8d19c</trackback:ping>
      <pingback:server>http://briannoyes.net/pingback.aspx</pingback:server>
      <pingback:target>http://briannoyes.net/PermaLink,guid,0a11df39-72f7-47fb-a0a8-7222e0c8d19c.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://briannoyes.net/CommentView,guid,0a11df39-72f7-47fb-a0a8-7222e0c8d19c.aspx</wfw:comment>
      <wfw:commentRss>http://briannoyes.net/SyndicationService.asmx/GetEntryCommentsRss?guid=0a11df39-72f7-47fb-a0a8-7222e0c8d19c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm catching a flight early tomorrow morning to Vegas for <a href="http://www.vsconnections.com">VS
Connections </a>and am really looking forward to it. VS Connections in particular,
and <a href="http://www.devconnections.com">DevConnections</a> in general (the overall
conference event) is well run, in great locations, and always has a lot of great content
that I can benefit from as well.
</p>
        <p>
I've been spending most of my recent prep time fine tuning the demos for my two WCF
sessions, Build Event Driven Applications with Indigo and Connecting Smart Client
Applications with Indigo. The more I work with Windows Communications Foundation (aka
"Indigo"), I am struck by a number of things:
</p>
        <ul>
          <li>
I am impressed by how capable Indigo is. 
</li>
          <li>
I am awed by how elegant and simple solutions are to complex aspects like security,
transactions, queuing, callbacks, and so on. 
</li>
          <li>
I am dumbfounded by how hard it is to figure out how to get to those elegant and simple
solutions.</li>
        </ul>
        <p>
The last bullet is not really a criticism of what they have come up with, it is just
the nature of the beast. I would draw on an analogy <a href="http://www.softinsight.com/LifeBeforeProgramming.aspx">from
my flying days </a>to explain why this is so. Imagine the cockpit of a WW I fighter
aircraft. You probably have half a dozen or less simple dials and gauges, and a stick
and throttle. Imagine trying to use that set of controls on an aircraft that can fly
at high subsonic speeds at high altitude carrying hundreds of passengers for 12 hour
transoceanic flights. Not going to work too well. This is basically where you were
at with past technologies to build complex, distributed, heterogenous, connected enterprise
systems. It could be done, but the end result was not going to be pretty and it was
going to take you a long time to get there.
</p>
        <p>
Now with WCF, it is more like climbing into the <a href="http://www.militaryfactory.com/cockpits/777_cockpit.asp">cockpit
of a 777</a>. There is a technological elegance to everything that is there. But there
are still hundreds (if not thousands) of individual switches, controls, displays,
electronic gages and dials, menu driven control panels, etc. A great deal of human
engineering has gone into everything that is in there so that for any given common
task, there are only a couple of relevant controls that you have to touch and put
into place to get the job done. The challenge is in knowing which one of those hundreds
of knobs and dials to tweak.
</p>
        <p>
The same is true for WCF. Microsoft has created an incredibly powerful and technologically
advanced platform that is well adapted to building large distributed enterprise systems.
In order to do that, there needs to be hundreds of switches and knobs that you can
throw to address different scenarios. The downside to that is bullet number three
above - you have to learn which switches and knobs are relevant for a given task,
and in what order to throw them.
</p>
        <p>
This is somewhat aggravated right now in that we are only at Beta 1 of WinFx (and
its parts WCF, WPF, and WinWF), and the names, shapes, and locations of all the knobs
and switches is constantly changing as they work on that human engineering task of
trying to make it easier to use. Meanwhile the documentation and samples are seriously
lagging, so working with it right now is a little like stepping into that 777 cockpit
without any labels on the controls. When you say to yourself, "I just need transactions
and certificate based security", it is kind of like saying "I just need to call the
flight attendant at the second aft flight station". Simple to describe, but God help
you in figuring out which switches and knobs to throw. At least there are not really
any destructive ones that you can throw by accident. If you get it wrong, your app
may not work, but you would have to go out of your way to write some code that would
do bad things when WCF fails to let you communicate.
</p>
        <p>
I'm looking forward to continuing to work with this technology and learn what all
those knobs and buttons are for. Learning all the controls of the aft cockpit of the
F-14 to run the weapons system, navigation systems, communications systems, and other
tasks was one of the funnest things I have done in my life. The fact that we got to
do that while strapped to a couple of 50K lb + of thrust zorching through the sky
pulling G's and landing on the carrier certainly helped make it interesting. Sitting
at a computer leaves a little to be desired in that department, but the learning challenge
is still just as fun.
</p>
        <img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=0a11df39-72f7-47fb-a0a8-7222e0c8d19c" />
      </body>
      <title>Las Vegas Bound - Impressions of WCF</title>
      <guid isPermaLink="false">http://briannoyes.net/PermaLink,guid,0a11df39-72f7-47fb-a0a8-7222e0c8d19c.aspx</guid>
      <link>http://briannoyes.net/2005/11/08/LasVegasBoundImpressionsOfWCF.aspx</link>
      <pubDate>Tue, 08 Nov 2005 07:13:55 GMT</pubDate>
      <description>&lt;p&gt;
I'm catching a flight early tomorrow morning to Vegas for &lt;a href="http://www.vsconnections.com"&gt;VS
Connections &lt;/a&gt;and am really looking forward to it. VS Connections in particular,
and &lt;a href="http://www.devconnections.com"&gt;DevConnections&lt;/a&gt; in general (the overall
conference event) is well run, in great locations, and always has a lot of great content
that I can benefit from as well.
&lt;/p&gt;
&lt;p&gt;
I've been spending most of my recent prep time fine tuning the demos for my two WCF
sessions, Build Event Driven Applications with Indigo and Connecting Smart Client
Applications with Indigo. The more I work with Windows Communications Foundation (aka
"Indigo"), I am struck by a number of things:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
I am impressed by how capable Indigo is. 
&lt;li&gt;
I am awed by how elegant and simple solutions are to complex aspects like security,
transactions, queuing, callbacks, and so on. 
&lt;li&gt;
I am dumbfounded by how hard it is to figure out how to get to those elegant and simple
solutions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The last bullet is not really a criticism of what they have come up with, it is just
the nature of the beast. I would draw on an analogy &lt;a href="http://www.softinsight.com/LifeBeforeProgramming.aspx"&gt;from
my flying days &lt;/a&gt;to explain why this is so. Imagine the cockpit of a WW I fighter
aircraft. You probably have half a dozen or less simple dials and gauges, and a stick
and throttle. Imagine trying to use that set of controls on an aircraft that can fly
at high subsonic speeds at high altitude carrying hundreds of passengers for 12 hour
transoceanic flights. Not going to work too well. This is basically where you were
at with past technologies to build complex, distributed, heterogenous, connected&amp;nbsp;enterprise
systems. It could be done, but the end result was not going to be pretty and it was
going to take you a long time to get there.
&lt;/p&gt;
&lt;p&gt;
Now with WCF, it is more like climbing into the &lt;a href="http://www.militaryfactory.com/cockpits/777_cockpit.asp"&gt;cockpit
of a 777&lt;/a&gt;. There is a technological elegance to everything that is there. But there
are still hundreds (if not thousands) of individual switches, controls, displays,
electronic gages and dials, menu driven control panels, etc. A great deal of human
engineering has gone into everything that is in there so that for any given common
task, there are only a couple of relevant controls that you have to touch and put
into place to get the job done. The challenge is in knowing which one of those hundreds
of knobs and dials to tweak.
&lt;/p&gt;
&lt;p&gt;
The same is true for WCF. Microsoft has created an incredibly powerful and technologically
advanced platform that is well adapted to building large distributed enterprise systems.
In order to do that, there needs to be hundreds of switches and knobs that you can
throw to address different scenarios. The downside to that is bullet number three
above - you have to learn which switches and knobs are relevant for a given task,
and in what order to throw them.
&lt;/p&gt;
&lt;p&gt;
This is somewhat aggravated right now in that we are only at Beta 1 of WinFx (and
its parts WCF, WPF, and WinWF), and the names, shapes, and locations of all the knobs
and switches is constantly changing as they work on that human engineering task of
trying to make it easier to use. Meanwhile the documentation and samples are seriously
lagging, so working with it right now is a little like stepping into that 777 cockpit
without any labels on the controls. When you say to yourself, "I just need transactions
and certificate based security", it is kind of like saying "I just need to call the
flight attendant at the second aft flight station". Simple to describe, but God help
you in figuring out which switches and knobs to throw. At least there are not really
any destructive ones that you can throw by accident. If you get it wrong, your app
may not work, but you would have to go out of your way to write some code that would
do bad things when WCF fails to let you communicate.
&lt;/p&gt;
&lt;p&gt;
I'm looking forward to continuing to work with this technology and learn what all
those knobs and buttons are for. Learning all the controls of the aft cockpit of the
F-14 to run the weapons system, navigation systems, communications systems, and other
tasks was one of the funnest things I have done in my life. The fact that we got to
do that while strapped to a couple of 50K lb + of thrust zorching through the sky
pulling G's and landing on the carrier certainly helped make it interesting. Sitting
at a computer leaves a little to be desired in that department, but the learning challenge
is still just as fun.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://briannoyes.net/aggbug.ashx?id=0a11df39-72f7-47fb-a0a8-7222e0c8d19c" /&gt;</description>
      <comments>http://briannoyes.net/CommentView,guid,0a11df39-72f7-47fb-a0a8-7222e0c8d19c.aspx</comments>
      <category>.NET</category>
      <category>Architecture</category>
      <category>DevConnections</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
      <category>Travel</category>
      <category>WinFx</category>
    </item>
  </channel>
</rss>