<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>SOA</title>
        <link>http://geekswithblogs.net/hinshelm/category/5330.aspx</link>
        <description>Service-orientation is a design paradigm that specifies the creation of automation logic in the form of services. It is applied as a strategic goal in developing a service-oriented architecture (SOA). Like other design paradigms, service-orientation provides a means of achieving a separation of concerns.
Service-oriented architecture describes an architecture that uses loosely coupled services to support the requirements of business processes and users. Resources on a network[1] in a SOA environment are made available as independent services that can be accessed without knowledge of their underlying platform implementation.[2] These concepts can be applied to business, software and other types of producer/consumer systems.</description>
        <language>en-GB</language>
        <copyright>Martin Hinshelwood (SSW)</copyright>
        <managingEditor>martin@hinshelwood.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
        <item>
            <title>TFS Event Handler CTP 2 Released</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2008/01/28/tfs-event-handler-ctp-2-released.aspx</link>
            <description>&lt;p&gt;I have just uploaded &lt;a href="http://www.codeplex.com/TFSEventHandler/Release/ProjectReleases.aspx" target="_blank"&gt;CTP 2&lt;/a&gt; of the &lt;a href="http://www.codeplex.com/TFSEventHandler" target="_blank"&gt;TFS Event Handler&lt;/a&gt;.This is a fully functional version of the application and I will be releasing documentation for this in due course, but all configuration of team servers and events is handled through the &lt;a title="Team Foundation Server" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx" target="_blank"&gt;TFS&lt;/a&gt; Event Handler Explorer, but all Event Handlers are setup manually.  &lt;/p&gt;&lt;p&gt;I have attached two executables:  &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;strong&gt;TFSEventHandlerServerSetup&lt;/strong&gt; - This file includes the system service as well as the client for running on the same computer.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;TFSEventHandlerExplorerSetup&lt;/strong&gt; - This contains only the Explorer client that can be installed on any computer for managing any TFS Event Handler deployment. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;v0.2.0 (CTP2)&lt;/strong&gt; - All of the source for this version.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;  &lt;/p&gt;&lt;p&gt;You will require Team Explorer 2008 for all variations as well as .NET 3.5 &lt;/p&gt;&lt;p&gt;I know that there was a long time between the &lt;a href="http://www.codeplex.com/TFSEventHandler/Release/ProjectReleases.aspx?ReleaseId=5057" target="_blank"&gt;Prototype&lt;/a&gt; and &lt;a href="http://www.codeplex.com/TFSEventHandler/Release/ProjectReleases.aspx?ReleaseId=3910" target="_blank"&gt;CTP1&lt;/a&gt;, but for quite a while I did not have access to a Team Server. Now I am in a big push, but &lt;a href="http://www.codeplex.com/TFSEventHandler/Release/ProjectReleases.aspx?ReleaseId=10253" target="_blank"&gt;CTP3&lt;/a&gt; may be a while in coming. There are major changes between &lt;a href="http://www.codeplex.com/TFSEventHandler/Release/ProjectReleases.aspx?ReleaseId=3910" target="_blank"&gt;CTP1&lt;/a&gt; and &lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=TFSEventHandler&amp;amp;ReleaseId=3926" target="_blank"&gt;CTP2&lt;/a&gt;, but I will be bug fixing and updating &lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=TFSEventHandler&amp;amp;ReleaseId=3926" target="_blank"&gt;CTP2&lt;/a&gt; for a while. &lt;/p&gt;&lt;p&gt;Now I have the engine relatively stable I want to concentrate on building some Event Handlers. Over the coming weeks I will be using the latest version in a production environment and testing it to the limits. I am pretty positive that I will find problems, but I would be gratefully for feedback on what I have so far. There were nearly 200 downloads of my prototype version, yet little or know feedback... I don't know if that is because it was rubbish or if it was so good there was no need for feedback or bug reports &lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif" /&gt;. I will assume the latter... &lt;/p&gt;&lt;p&gt;You can report &lt;a href="http://www.codeplex.com/TFSEventHandler/WorkItem/List.aspx" target="_blank"&gt;issues&lt;/a&gt; and enter into &lt;a href="http://www.codeplex.com/TFSEventHandler/Thread/List.aspx" target="_blank"&gt;discussions&lt;/a&gt; on the &lt;a title="CodePlex" href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt; site for the project. &lt;/p&gt;&lt;p&gt; &lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e0c88f70-a3ed-42bb-befa-331c71eb9783" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS%20Event%20Handler" rel="tag"&gt;TFS Event Handler&lt;/a&gt;, &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Team%20System" rel="tag"&gt;Team System&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Visual%20Studio%202008%20Team%20Foundation%20Server" rel="tag"&gt;Visual Studio 2008 Team Foundation Server&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Team%20Foundation%20Server" rel="tag"&gt;Team Foundation Server&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Visual%20Studio%20Team%20System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;, &lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118997"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118997" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/118997.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2008/01/28/tfs-event-handler-ctp-2-released.aspx</guid>
            <pubDate>Mon, 28 Jan 2008 17:00:06 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2008/01/28/tfs-event-handler-ctp-2-released.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/118997.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/118997.aspx</trackback:ping>
        </item>
        <item>
            <title>TFS Event Handler in .NET 3.5 Part 2</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/09/07/TFS-Event-Handler-in-.NET-3.5-Part-2---HandlingAgain.aspx</link>
            <description>&lt;p&gt;I have decided to have a little go at creating a Team Foundation Server Event Handler in .NET 3.5 that is resilient and scaleable. I will be using as many of the features of Team Suit as I can, but bear with me as there are a few things that are new to me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title="Team Foundation Server" target="_blank" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx"&gt;TFS&lt;/a&gt; Event Handler in .NET 3.5 Articles&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a target="_blank" rel="tag" href="http://www.multidimensionalfreethinking.co.uk/archive/2007/08/21/TFS-Event-Handler-in-NET-3-5-Part-1-The-Architecture.aspx"&gt;TFS Event Handler in .NET 3.5 Part 1 - The Architecture&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" rel="tag" href="http://www.multidimensionalfreethinking.co.uk/archive/2007/09/07/TFS-Event-Handler-in-NET-3-5-Part-2-Handling-Team-Foundation-Server-Events.aspx"&gt;TFS Event Handler in .NET 3.5 Part 2 - Handling Team Foundation Server Events&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;TFS Event Handler in .NET 3.5 Part 3 - Passing the events over a Windows Communication Foundation MSMQ (Coming soon) &lt;/li&gt;
    &lt;li&gt;TFS Event Handler in .NET 3.5 Part 4 - Workflow (Coming soon)  &lt;/li&gt;
&lt;/ol&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:f9103aef-5139-4e5b-8bcb-55e675afbdc8" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Visual%20Studio%20Team%20System"&gt;Visual Studio Team System&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Visual%20Studio%202008"&gt;Visual Studio 2008&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Team%20Edition%20for%20Architects"&gt;Team Edition for Architects&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/TFSEventHandler"&gt;TFSEventHandler&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Microsoft%20.NET%20Framework"&gt;Microsoft .NET Framework&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Software%20Industrial%20Revolution"&gt;Software Industrial Revolution&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/TFS%20Event%20Handler"&gt;TFS Event Handler&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115193"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115193" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/115193.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/09/07/TFS-Event-Handler-in-.NET-3.5-Part-2---HandlingAgain.aspx</guid>
            <pubDate>Fri, 07 Sep 2007 00:05:47 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/09/07/TFS-Event-Handler-in-.NET-3.5-Part-2---HandlingAgain.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/115193.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/115193.aspx</trackback:ping>
        </item>
        <item>
            <title>Developing Peer-To-Peer Applications With WCF</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/09/06/Developing-Peer-To-Peer-Applications-With-WCF.aspx</link>
            <description>&lt;p&gt;I recently had the need to create and deliver a presentation on &lt;a target="_blank" href="http://presentations.multidimensionalfreethinking.co.uk/Developing%20Peer-To-Peer%20Applications%20With%20WCF.pptx"&gt;Developing Peer-To-Peer Applications With WCF&lt;/a&gt;. Although the technical content was good, my delivery was not. I got stage fright...&lt;/p&gt;
&lt;p&gt;As I approached the room to give the presentation in which I expected to see a couple of people, I was horrified to hear a clamor of voices, no, a venerable din of idle conversation coming from the room. &lt;em&gt;Not that room, please...&lt;/em&gt; but that was indeed the room, and I had to give my presentation to more than 25 highly technical people...It was fortunate at least that I had a copy of all of my notes, as my mind (what little was left after a day of traveling) dribbled slowly out of my ears...&lt;/p&gt;
&lt;p&gt;I had previously &lt;a target="_blank" href="http://skydrive.multidimensionalfreethinking.co.uk/self.aspx/Public/Visual%20Studio%20Team%20System/VSTS%20Presentation.ppt"&gt;presented on VSTS&lt;/a&gt;, but that was to a room of coworkers that somehow seamed less threatening. In addition I knew the content back to front and did not have any notes anyway. The 45 minute &lt;a title="Visual Studio Team System" target="_blank" href="http://msdn2.microsoft.com/en-us/teamsystem/default.aspx"&gt;Visual Studio Team System&lt;/a&gt; presentation ended up taking 3 hours.&lt;/p&gt;
&lt;p&gt;So, needless to say, I ended up having to almost totally read from my notes. Not the best way to do a presentation...&lt;/p&gt;
&lt;p&gt;Anyway, here it is...&lt;/p&gt;
&lt;p&gt;&lt;a title="http://presentations.multidimensionalfreethinking.co.uk/Developing%20Peer-To-Peer%20Applications%20With%20WCF.pptx" href="http://presentations.multidimensionalfreethinking.co.uk/Developing%20Peer-To-Peer%20Applications%20With%20WCF.pptx"&gt;http://presentations.multidimensionalfreethinking.co.uk/Developing%20Peer-To-Peer%20Applications%20With%20WCF.pptx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I owe a lot of thanks to the authors of &lt;a target="_blank" href="http://www.amazon.co.uk/Pro-WCF-Practical-Microsoft-Implementation/dp/1590597028"&gt;Pro WCF: Practical Microsoft SOA Implementation&lt;/a&gt; without which I would not have been able to put the presentation together in three days at all.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:e839153d-22f0-4110-ae11-0e43c4901401" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Microsoft%20.NET%20Framework"&gt;Microsoft .NET Framework&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Peer-To-Peer"&gt;Peer-To-Peer&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/P2P"&gt;P2P&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115172"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115172" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/115172.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/09/06/Developing-Peer-To-Peer-Applications-With-WCF.aspx</guid>
            <pubDate>Wed, 05 Sep 2007 23:27:57 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/09/06/Developing-Peer-To-Peer-Applications-With-WCF.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/115172.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/115172.aspx</trackback:ping>
        </item>
        <item>
            <title>TFS Event Handler in .NET 3.5</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/08/21/tfs-event-handler-in-.net-3.5.aspx</link>
            <description>&lt;p&gt;I have decided to have a little go at creating a Team Foundation Server Event Handler in .NET 3.5 that is resilient and scaleable. I will be using as many of the features of Team Suit as I can, but bear with me as there are a few things that are new to me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title="Team Foundation Server" target="_blank" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx"&gt;TFS&lt;/a&gt; Event Handler in .NET 3.5 Articles&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a rel="tag" target="_blank" href="http://www.multidimensionalfreethinking.co.uk/archive/2007/08/21/TFS-Event-Handler-in-NET-3-5-Part-1-The-Architecture.aspx"&gt;TFS Event Handler in .NET 3.5 Part 1 - The Architecture&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a rel="tag" target="_blank" href="http://www.multidimensionalfreethinking.co.uk/archive/2007/09/07/TFS-Event-Handler-in-NET-3-5-Part-2-Handling-Team-Foundation-Server-Events.aspx"&gt;TFS Event Handler in .NET 3.5 Part 2 - Handling Team Foundation Server Events&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;TFS Event Handler in .NET 3.5 Part 3 - Passing the events over a &lt;a title="Windows Communication Foundation" target="_blank" href="http://wcf.netfx3.com"&gt;Windows Communication Foundation&lt;/a&gt; MSMQ (Coming soon) &lt;/li&gt;
    &lt;li&gt;TFS Event Handler in .NET 3.5 Part 4 - Workflow (Coming soon)  &lt;/li&gt;
&lt;/ol&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="0767317B-992E-4b12-91E0-4F059A8CECA8:f9103aef-5139-4e5b-8bcb-55e675afbdc8" class="wlWriterSmartContent" contenteditable="false"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Visual%20Studio%20Team%20System"&gt;Visual Studio Team System&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Visual%20Studio%202008"&gt;Visual Studio 2008&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Team%20Edition%20for%20Architects"&gt;Team Edition for Architects&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/TFSEventHandler"&gt;TFSEventHandler&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Microsoft%20.NET%20Framework"&gt;Microsoft .NET Framework&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Software%20Industrial%20Revolution"&gt;Software Industrial Revolution&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/TFS%20Event%20Handler"&gt;TFS Event Handler&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114840"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114840" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/114840.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/08/21/tfs-event-handler-in-.net-3.5.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 13:26:29 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/08/21/tfs-event-handler-in-.net-3.5.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/114840.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/114840.aspx</trackback:ping>
        </item>
        <item>
            <title>Creating a custom proxy class</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/08/20/Creating-a-custom-proxy-class.aspx</link>
            <description>&lt;p&gt;Instead of using the proxy generation features of Visual Studio you can create a custom proxy in .NET 3.0 to handle all of your needs in a more maintainable manor and with less code. This method works best when you have access to the interfaces that created the service.&lt;/p&gt; &lt;p&gt;Here is an example:&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="code"&gt;&lt;font size="1"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Namespace&lt;/span&gt; TeamFoundation.Proxies

    &lt;span style="color: rgb(0,0,255)"&gt;Public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Class&lt;/span&gt; TeamServersClient
        &lt;span style="color: rgb(0,0,255)"&gt;Inherits&lt;/span&gt; System.ServiceModel.DuplexClientBase(&lt;span style="color: rgb(0,0,255)"&gt;Of&lt;/span&gt; Services.Contracts.ITeamServers)
        &lt;span style="color: rgb(0,0,255)"&gt;Implements&lt;/span&gt; &lt;a title="RDdotNet - Reality Dysfunction .NET" href="http://www.rddotnet.com" target="_blank"&gt;RDdotNet&lt;/a&gt;.Proxies.IClientProxy
        &lt;span style="color: rgb(0,0,255)"&gt;Implements&lt;/span&gt; Services.Contracts.ITeamServers

        &lt;span style="color: rgb(0,0,255)"&gt;Public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;New&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; callbackInstance &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; System.ServiceModel.InstanceContext, &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; binding &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; System.ServiceModel.Channels.Binding, &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; remoteAddress &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; System.ServiceModel.EndpointAddress)
            &lt;span style="color: rgb(0,0,255)"&gt;MyBase&lt;/span&gt;.New(callbackInstance, binding, remoteAddress)
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Sub

&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; AddServer(&lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; TeamServerName &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; TeamServerUri &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt;) &lt;span style="color: rgb(0,0,255)"&gt;Implements&lt;/span&gt; Services.Contracts.ITeamServers.AddServer
            &lt;span style="color: rgb(0,0,255)"&gt;MyBase&lt;/span&gt;.Channel.AddServer(TeamServerName, TeamServerUri)
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Sub

&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Function&lt;/span&gt; GetServers() &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt;() &lt;span style="color: rgb(0,0,255)"&gt;Implements&lt;/span&gt; Services.Contracts.ITeamServers.GetServers
            &lt;span style="color: rgb(0,0,255)"&gt;Return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;MyBase&lt;/span&gt;.Channel.GetServers
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Function

&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Sub&lt;/span&gt; RemoveServer(&lt;span style="color: rgb(0,0,255)"&gt;ByVal&lt;/span&gt; TeamServerName &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;String&lt;/span&gt;) &lt;span style="color: rgb(0,0,255)"&gt;Implements&lt;/span&gt; Services.Contracts.ITeamServers.RemoveServer
            &lt;span style="color: rgb(0,0,255)"&gt;MyBase&lt;/span&gt;.Channel.RemoveServer(TeamServerName)
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Sub

&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;Public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Function&lt;/span&gt; ServceUrl() &lt;span style="color: rgb(0,0,255)"&gt;As&lt;/span&gt; System.Uri &lt;span style="color: rgb(0,0,255)"&gt;Implements&lt;/span&gt; Services.Contracts.ITeamServers.ServceUrl
            &lt;span style="color: rgb(0,0,255)"&gt;Return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;MyBase&lt;/span&gt;.Channel.ServceUrl()
        &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Function

&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: rgb(0,0,255)"&gt;Class

End&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;Namespace&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Because your classes implements the service's interface when that interface changes you will be notified in Visual Studio that this has happened. This is a boon during development as changes can happen often.&lt;/p&gt;
&lt;p&gt;This particular class is a duplex proxy, so communication can go both ways. You can download the source code for this from &lt;a href="http://www.codeplex.com/TFSEventHandler/SourceControl/DownloadSourceCode.aspx?changeSetId=8644" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0ceb168d-78fa-418d-bff7-0b7227aba0a2" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Service%20Orientation" rel="tag"&gt;Service Orientation&lt;/a&gt;, &lt;a href="http://technorati.com/tags/SOA" rel="tag"&gt;SOA&lt;/a&gt;, &lt;a href="http://technorati.com/tags/.NET%20Framework" rel="tag"&gt;.NET Framework&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114804"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114804" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/114804.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/08/20/Creating-a-custom-proxy-class.aspx</guid>
            <pubDate>Mon, 20 Aug 2007 16:20:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/08/20/Creating-a-custom-proxy-class.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/114804.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/114804.aspx</trackback:ping>
        </item>
        <item>
            <title>Social and Business Networking</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/07/25/Social-and-Business-Networking.aspx</link>
            <description>&lt;p&gt;In the modern era networking is not just the preview of business men. There have been many sites created over the last few years but they only seam to implement one or maybe two if the strategies for providing either a community or business networking site. A &lt;a title="list of social networking sites" target="_blank" rel="tag" href="http://en.wikipedia.org/wiki/List_of_social_networking_websites"&gt;list of social networking sites&lt;/a&gt; can be found on Wikipedia.&lt;/p&gt;
&lt;p&gt;The problem with the current &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Social_network"&gt;social networks&lt;/a&gt; is that you need to set all of them up separately, and although they provide ways to import your contacts it is time consuming and is prone to error if your contact details are out of date.&lt;/p&gt;
&lt;p&gt;What we need is a central contact, connection and linking system that all of these sites can communicate with to update their details. Such a system would, of course, require to be secure and have the ability to partition the data so that it only pulled information on people who are registered for the calling site.&lt;/p&gt;
&lt;p&gt;If it used CardSpace (or similar) to authenticate users then users could be identified whatever community site they were using. To add to security the core service could provide components, or a client infrastructure that could pull back data and present it without the community site being able to skim it, allowing users to invite their friends from other networks to other specialist networks. This way if a user updates their email address on one service it is updated on them all.&lt;/p&gt;
&lt;p&gt;I have started a &lt;a target="_blank" href="http://www.codeplex.com/RDdotNet/Wiki/View.aspx?title=Community%20Foundation&amp;amp;referringTitle=Home"&gt;Community Foundation&lt;/a&gt; to provide this but it is still in the early stages, and honestly, the amount I have learned in the last few years, would require a sever refractor.&lt;/p&gt;
&lt;p&gt;If I coupled this with some of the more recent features I have been working on a service could be created that would provide a hosted community service that would provide a Framework for any community site (all right, only the ones in .NET).&lt;/p&gt;
&lt;p&gt;In this way some of the more complicated, but usefully services provided by social networking sites would be much easier to implement for fledgling services.&lt;/p&gt;
&lt;p&gt;I will need to think of some sort of pricing model tough... Hmm, maybe &lt;a title="Paul Slater's Blog" target="_blank" rel="tag" href="http://geekswithblogs.net/MMaI/"&gt;Paul Slater&lt;/a&gt; can help; if he ever posts to his blog!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A possible pricing model:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;A service access charge  +&lt;/em&gt; &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Per user cost: with the cost per user being divided between all the services that a particular user uses +&lt;/em&gt; &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Per transaction charge for communicating with the service&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;This model may be complicated but would be fairer to smaller sites, while still charging more for small sites that have a high number of transactions.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:409347a2-b4b6-4998-9a39-7c3b1a4ba8f0" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Linked%20Network"&gt;Linked Network&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Tagging"&gt;Tagging&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Connected%20Network"&gt;Connected Network&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Shortest%20Path%20formula"&gt;Shortest Path formula&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Segmented%20Network"&gt;Segmented Network&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Geographical%20Network"&gt;Geographical Network&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/RDdotNet"&gt;RDdotNet&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Social%20Networks"&gt;Social Networks&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Service%20orientation"&gt;Service orientation&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Software%20Factories"&gt;Software Factories&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Software%20Industrial%20Revolution"&gt;Software Industrial Revolution&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114164"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114164" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/114164.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/07/25/Social-and-Business-Networking.aspx</guid>
            <pubDate>Wed, 25 Jul 2007 13:01:38 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/07/25/Social-and-Business-Networking.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/114164.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/114164.aspx</trackback:ping>
        </item>
        <item>
            <title>The future of software development</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/07/14/The-future-of-development.aspx</link>
            <description>&lt;p&gt;I have been thinking a lot recently about the future of software development and where I see it going. I have worked for seven companies since leaving university (two design studios, two software studios, one community startup, one Internet bank and one investment bank), and my conclusion is that all of that SSADM (Structured Systems Analysis and Design Methodologies), or Development Lifecycle, that I learned in university does not work in the real world. Yes, if you can charge your customers two million for an intranet that you will deliver over two years you can do what you like, but these days your customers business moves too quickly for this to work. A solution that you started last year, or the year before in my current company, is obsolete and you have to bin it and start again. Or if the business has had its fingers in your specification from the get-go and if they have no idea what "signed-off" means you will get only one result; you will never finish and what you do finish will not meet the business need (80% syndrome).&lt;/p&gt;
&lt;p&gt;&lt;a title="The future of software development" target="_blank" rel="tag" href="http://geekswithblogs.net/hinshelm/articles/The-future-of-software-development.aspx"&gt;View full article...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113932"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113932" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/113932.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/07/14/The-future-of-development.aspx</guid>
            <pubDate>Sat, 14 Jul 2007 18:03:24 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/07/14/The-future-of-development.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/113932.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/113932.aspx</trackback:ping>
        </item>
        <item>
            <title>Creating a managed service factory</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/06/19/Creating-a-managed-service-factory.aspx</link>
            <description>&lt;p&gt;I had a plan. I wanted to create a way of accessing services in multiple locations from any location. Each location could have one or more services which may be duplications or different. That is a really abstract way of thing about it, but I eventually came up with a solution.&lt;/p&gt;
&lt;p&gt;After using Reflector to view the Team Foundation Server source code, which gave ma many pointers for which I would like to thank the TFS Team At Microsoft, I came up with the following solution...&lt;/p&gt;
&lt;p&gt;&lt;a target="_self" href="http://geekswithblogs.net/hinshelm/archive/2007/06/19/Creating-a-managed-service-factory-Article.aspx"&gt;Read More...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113307"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113307" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/113307.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/06/19/Creating-a-managed-service-factory.aspx</guid>
            <pubDate>Tue, 19 Jun 2007 12:28:07 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/06/19/Creating-a-managed-service-factory.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/113307.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/113307.aspx</trackback:ping>
        </item>
        <item>
            <title>NetIDme</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/06/15/NetIDme.aspx</link>
            <description>&lt;p&gt;I have just been made aware of a &lt;a title="netidme" target="_blank" href="http://www.netidme.net/"&gt;new ('ish) service.&lt;/a&gt; It allows you to verify the identity of those users you interact with online. This is a very usefully service for any online site or community where users are under 18, but is there any value for those of us that are not?&lt;/p&gt;
&lt;p&gt;Would more people interact with me if they could verify my identity? I am not sure.&lt;/p&gt;
&lt;p&gt;The service support a number of interfaces that includes &lt;a title="NetIDme Cardspace" target="_blank" rel="tag" href="http://netidme-cardspace.com/blog/?p=3"&gt;NetIDme Cardspace&lt;/a&gt; and &lt;a title="NetIDme ChatShield" target="_blank" href="http://www.netidme.net/chatshield.htm"&gt;NetIDme ChatShield&lt;/a&gt; (for MSN Messenger), although they do not say if they support Windows Live Messenger I would assume they do if they are looking ant new technologies like CardSpace.&lt;/p&gt;
&lt;p&gt;In the future could a combination of &lt;a target="_blank" href="http://cardspace.netfx3.com/"&gt;CardSpace&lt;/a&gt; and an &lt;a target="_blank" href="https://www.netidme.com/netidme.aspx"&gt;Internet identity verification&lt;/a&gt; replace active directory in an ever online world.&lt;/p&gt;
&lt;p&gt;In that envisioned world, all online / hosted services could come together with local services to provide a seamlessly integrated and interactive world where I can log into &lt;a target="_blank" href="http://www.microsoft.com/sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt;, &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx"&gt;Team Foundation Server&lt;/a&gt;, &lt;a target="_blank" href="http://www.google.co.uk"&gt;Google&lt;/a&gt;, &lt;a target="_blank" href="http://get.live.com/betas/home"&gt;Live&lt;/a&gt;, &lt;a target="_blank" href="http://www.microsoft.com/exchange/default.mspx"&gt;Exchange Server&lt;/a&gt;, &lt;a target="_blank" href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/activedirectory/default.mspx"&gt;Active Directory&lt;/a&gt; and windows using a single login with full security and authentication! This sort of service could tie all Single-Sign-On services together with a single &lt;strong&gt;Identity&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Hmm, the future is bright...&lt;/p&gt;
&lt;p&gt;You &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113253"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113253" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/113253.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/06/15/NetIDme.aspx</guid>
            <pubDate>Fri, 15 Jun 2007 15:23:20 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/06/15/NetIDme.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/113253.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/113253.aspx</trackback:ping>
        </item>
        <item>
            <title>Creating WCF Service Host Programmatically</title>
            <link>http://geekswithblogs.net/hinshelm/archive/2007/05/30/creating-wcf-service-host-programmatically.aspx</link>
            <description>&lt;p&gt;If you want to create a &lt;a title="Windows Communication Foundation" href="http://wcf.netfx3.com" target="_blank"&gt;Windows Communication Foundation&lt;/a&gt; Service Host on the fly then you will need to first create a base address. I would recommend using the DNS host entry instead of the My.Computer.Name as I had many problems on the corporate network with [computername] not working with our proxy settings.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;pre class="brush: vb;"&gt;Dim baseAddresses() As Uri = {New Uri(String.Format("http://{0}:{1}/TFSEventHandler/Queuer", System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).HostName, Port))}&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Then you need to create the service host itself.&lt;/p&gt;

&lt;pre class="brush: vb;"&gt;Dim sh As New System.ServiceModel.ServiceHost(GetType(Services.QueuerService), baseAddresses)&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Then set the service meta and debug behaviors so that you can both enable the MEX and remote exception handling.&lt;/p&gt;

&lt;pre class="brush: vb;"&gt;' Set service meta behavior 
Dim smb As ServiceMetadataBehavior = sh.Description.Behaviors.Find(Of ServiceMetadataBehavior)() 
If smb Is Nothing Then 
  smb = New ServiceMetadataBehavior() 
  smb.HttpGetEnabled = True 
  sh.Description.Behaviors.Add(smb) 
Else 
  smb.HttpGetEnabled = True 
End If 
' Set Service Debug Behavior 
Dim sdb As ServiceDebugBehavior = sh.Description.Behaviors.Find(Of ServiceDebugBehavior)() 
If sdb Is Nothing Then 
  sdb = New ServiceDebugBehavior() 
  sdb.IncludeExceptionDetailInFaults = True 
  sh.Description.Behaviors.Add(sdb) 
Else 
  sdb.IncludeExceptionDetailInFaults = True 
End If&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Then comes the easy bit, adding the Endpoints. I have chosen to use a Secure wsHttpBinding as I am using Active Directory authentication and I want another level of security. Here I am creating a number of static end points, but also an endpoint for each of the Team Foundation Server SOAP Events, which uses the same code to handle each one, but you can determine the incoming URL for the event type.&lt;/p&gt;

&lt;pre class="brush: vb;"&gt;sh.Description.Endpoints.Clear() 
For Each EventType As Events.EventTypes In [Enum].GetValues(GetType(Events.EventTypes)) 
    sh.AddServiceEndpoint(GetType(Services.Contracts.INotification), GetSecureWSHttpBinding, "Notification/" &amp;amp; EventType.ToString) 
Next 
sh.AddServiceEndpoint(GetType(Services.Contracts.ISubscriptions), GetSecureWSDualHttpBinding, "Subscriptions") 
sh.AddServiceEndpoint(GetType(Services.Contracts.ITeamServers), GetSecureWSDualHttpBinding, "TeamServers") 
sh.AddServiceEndpoint(GetType(Description.IMetadataExchange), GetSecureWSHttpBinding, "mex")&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;You will need to create the binding programmatically as well (see the GetSecureDualWSHttpBinding method referenced above) and you may need to set some specialist options. I needed to increase the size of some of the payloads to implement my service. I have chosen to use the same method to create the service on both the client and the server so I have included the ClientBaseAddress property to get around the problem on Windows of a "http://+:80 error if you have IIS installed.&lt;/p&gt;

&lt;pre class="brush: vb;"&gt;Dim Binding As New WSDualHttpBinding(WSDualHttpSecurityMode.Message) 
Binding.MaxReceivedMessageSize = 655360 
Binding.ReaderQuotas.MaxStringContentLength = 655360 
Binding.ReaderQuotas.MaxArrayLength = 655360 
Binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows 
Binding.Security.Message.NegotiateServiceCredential = True 
Binding.ClientBaseAddress = New System.Uri("http://" &amp;amp; System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).HostName &amp;amp; ":660") 
Binding.BypassProxyOnLocal = True &lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Using this in conjunction with the custom proxy creation will allow you to build versatile integrated services on the .NET platform.&lt;/p&gt;

&lt;p&gt;You can find all of the code listed above @ &lt;a href="http://www.codeplex.com/TFSEventHandler"&gt;http://www.codeplex.com/TFSEventHandler&lt;/a&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:0767317B-992E-4b12-91E0-4F059A8CECA8:05a4ec65-bccd-4659-bdfa-a3b1ad302c45" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFSEventHandler" rel="tag"&gt;TFSEventHandler&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+Event+Handler" rel="tag"&gt;TFS Event Handler&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=112828"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=112828" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/hinshelm/aggbug/112828.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid>http://geekswithblogs.net/hinshelm/archive/2007/05/30/creating-wcf-service-host-programmatically.aspx</guid>
            <pubDate>Tue, 29 May 2007 23:23:24 GMT</pubDate>
            <comments>http://geekswithblogs.net/hinshelm/archive/2007/05/30/creating-wcf-service-host-programmatically.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/hinshelm/comments/commentRss/112828.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/hinshelm/services/trackbacks/112828.aspx</trackback:ping>
        </item>
    </channel>
</rss>