{"id":2643,"date":"2007-03-16T16:47:07","date_gmt":"2007-03-16T16:47:07","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/buckh\/2007\/03\/16\/orcas-team-build-wcf-web-services-replace-net-remoting\/"},"modified":"2007-03-16T16:47:07","modified_gmt":"2007-03-16T16:47:07","slug":"orcas-team-build-wcf-web-services-replace-net-remoting","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/buckh\/orcas-team-build-wcf-web-services-replace-net-remoting\/","title":{"rendered":"Orcas Team Build:  WCF web services replace .NET remoting"},"content":{"rendered":"<p>In Visual Studio Team Foundation Server 2005 (v1), the communication from the application tier (AT)&nbsp;to the build computer used .NET remoting.&nbsp; This was the only component in Team Foundation Server that used .NET remoting, as all other communication used web services (see <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms252473(VS.80).aspx\">Team Foundation Server Security Architecture<\/a>).<\/p>\n<p>As part of the .NET 3.0 framework that shipped in the Vista timeframe (the Orcas framework is .NET 3.5 while VS 2005 shipped .NET 2.0, if you are trying to keep the version numbers straight), Windows Communication Foundation (WCF) introduced the ability to create web services that run without IIS being installed.&nbsp; This is great because the build computer is a case where we&#8217;d like to use web services, but we didn&#8217;t want to require IIS on the build computer.<\/p>\n<p>Moving to web services means that the communication from the AT to the build computer is now SOAP\/XML over HTTP rather than a binary .NET protocol.&nbsp; It also helped us improve our error handling, which is cleaner and easier with web services and can work the way it does in the rest of the product.&nbsp; Going forward, it should help with versioning (the version of the service is based on the URL to the web service).<\/p>\n<p>Moving beyond Orcas, we have bigger plans for the build agent (an Orcas&nbsp;build agent&nbsp;is a build computer running the build Windows service listening on a particular port &#8212; basically, a computer name and port pair).&nbsp; Using WCF fits much better into those plans.<\/p>\n<p>For a whole lot other reasons, a v1 build computer cannot be used with an Orcas (v2) Team Foundation Server (AT).&nbsp; You must use an Orcas build&nbsp;agent&nbsp;with an Orcas AT.&nbsp; Starting with the first beta of Orcas (it&#8217;s not in the March CTP), the build report will tell you if the build agent you specified is not an Orcas build agent.<\/p>\n<p>If you want to manually determine whether a particular service on a build computer is using .NET remoting or WCF web services, you can simply telnet to it, type some random characters, and hit Enter twice.&nbsp; The output is different and is shown below.&nbsp; The first one shows v1 and the second v2.<\/p>\n<blockquote><p> <font face=\"Courier New\"><strong>c:\\&gt; telnet whidbey-buildcomputer 9191<\/strong><\/font><\/p>\n<p><font face=\"Courier New\">.NET&#9786;&#9787;&#9787;&hearts;&#9786;&hearts;&#9786;&#9786;hServer encountered an internal error. To get more info turn on<br>customErrors in the server&#8217;s config file. <\/font><\/p>\n<p><font face=\"Courier New\">Connection to host lost.<\/font> <\/p>\n<p><font face=\"Courier New\"><strong>c:\\&gt; telnet orcas-buildagent 9191<\/strong><\/font> <\/p>\n<p><font face=\"Courier New\">HTTP\/1.1 400 Bad Request<br>Content-Type: text\/html<br>Date: Fri, 16 Mar 2007 20:23:18 GMT<br>Connection: close<br>Content-Length: 35 <\/font> <\/p>\n<p><font face=\"Courier New\">&lt;h1&gt;Bad Request (Invalid Verb)&lt;\/h1&gt; <\/font> <\/p>\n<p><font face=\"Courier New\">Connection to host lost.<\/font><\/p>\n<\/blockquote>\n<p><div class=\"wlWriterSmartContent\" id=\"0767317B-992E-4b12-91E0-4F059A8CECA8:1687cd25-5752-48fb-9697-28d1e1f2782d\" style=\"padding-right: 0px;padding-left: 0px;padding-bottom: 0px;margin: 0px;padding-top: 0px\">Technorati tags: <a href=\"http:\/\/technorati.com\/tags\/tfs\" rel=\"tag\">tfs<\/a>, <a href=\"http:\/\/technorati.com\/tags\/team%20foundation\" rel=\"tag\">team foundation<\/a>, <a href=\"http:\/\/technorati.com\/tags\/team%20build\" rel=\"tag\">team build<\/a>, <a href=\"http:\/\/technorati.com\/tags\/orcas\" rel=\"tag\">orcas<\/a>, <a href=\"http:\/\/technorati.com\/tags\/wcf\" rel=\"tag\">wcf<\/a>, <a href=\"http:\/\/technorati.com\/tags\/vsts\" rel=\"tag\">vsts<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Visual Studio Team Foundation Server 2005 (v1), the communication from the application tier (AT)&nbsp;to the build computer used .NET remoting.&nbsp; This was the only component in Team Foundation Server that used .NET remoting, as all other communication used web services (see Team Foundation Server Security Architecture). As part of the .NET 3.0 framework that [&hellip;]<\/p>\n","protected":false},"author":94,"featured_media":10268,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[7,8],"class_list":["post-2643","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-team-build","tag-team-foundation"],"acf":[],"blog_post_summary":"<p>In Visual Studio Team Foundation Server 2005 (v1), the communication from the application tier (AT)&nbsp;to the build computer used .NET remoting.&nbsp; This was the only component in Team Foundation Server that used .NET remoting, as all other communication used web services (see Team Foundation Server Security Architecture). As part of the .NET 3.0 framework that [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts\/2643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/users\/94"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/comments?post=2643"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/posts\/2643\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/media\/10268"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/media?parent=2643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/categories?post=2643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/buckh\/wp-json\/wp\/v2\/tags?post=2643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}