<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Clemens Vasters, Bldg 42 : BizTalk Services</title><link>http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx</link><description>Tags: BizTalk Services</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Announcing the Microsoft Code-Name "BizTalk Services" R12 Release </title><link>http://blogs.msdn.com/clemensv/archive/2008/07/15/announcing-the-microsoft-code-name-biztalk-services-r12-release.aspx</link><pubDate>Tue, 15 Jul 2008 18:30:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8736333</guid><dc:creator>clemensv</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/clemensv/comments/8736333.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clemensv/commentrss.aspx?PostID=8736333</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clemensv/rsscomments.aspx?PostID=8736333</wfw:comment><description>&lt;P&gt;We’re thrilled to announce that the BizTalk Services “R12” Community Technology Preview (CTP) is now available for general use. &lt;/P&gt;
&lt;P&gt;“BizTalk Services” is the code-name for a platform-in-the-cloud offering from Microsoft.&amp;nbsp; Currently in active development, BizTalk Services provides Messaging, Workflow, and Identity functionality to enable disparate applications to connect quickly and easily. &lt;BR&gt;Combined together in an integrated offering, these capabilities deliver a Service Bus architectural pattern that is immediately usable by applications that need to connect across the Internet.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Many enterprises employ the ‘Enterprise Service Bus’ pattern to interconnect disparate systems within an organizational domain. Built on Microsoft platform technology, an ESB might include building blocks such as Windows Server, Active Directory, BizTalk Server, as well as the Windows Communication Foundation and Windows Workflow Foundation technologies included in the .NET Framework.&amp;nbsp; “BizTalk Services” extends the concept of an ESB to truly exploit the Internet, for instance by exposing individual service endpoints in a secure fashion or by selectively federating elements of distinct identity systems to facilitate cross-company collaboration. &lt;BR&gt;&amp;nbsp; &lt;BR&gt;For ISVs and Solution Providers creating specialized business solutions that enable collaboration and information exchange across increasingly mobile and distributed work-forces, “BizTalk Services” provides the cloud-based platform building blocks to create sophisticated (Internet-) Service Bus solutions with broad reach that could otherwise only be realized by operating dedicated Data Centers of significant complexity – which is often out of reach for both, ISVs and their customers. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Major Changes &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With the release of BizTalk Services “R12”, developers must update all clients and SDK installations to the new release.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;New in R12 - Workflow &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The most exciting new capability we’ve added in the “R12” CTP is Workflow. These new cloud-based Workflow capabilities enable ‘service orchestration’ from the cloud.&amp;nbsp; This specialized cloud-based, or hosted, Windows Workflow Foundation runtime can orchestrate services that connect to systems in your enterprise, or to systems running anywhere on the Internet via Web services messages.&amp;nbsp; This new power and capability will enable an entirely new set of application scenarios, and we’re very excited to see what people will do with it. &lt;/P&gt;
&lt;P&gt;In the SDK you will find&amp;nbsp; samples showing how to create and control Workflow instances hosted on the BizTalk Services cloud, including a sample Workflow implementation that monitors the availability of a website and fires multicast events into the service bus indicating the state. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;New in R12 - Identity&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For R12, the BizTalk Services Identity Service has been expanded and enhanced to enable more flexibility for scenarios demanded by our customers.&amp;nbsp; R12 introduces a new approach for creating, viewing, and managing access control rules. This approach relies on a few key principles outlined below:&lt;/P&gt;
&lt;P&gt;•&amp;nbsp;Every Identity Service account owns a Security Token Service (STS). &lt;BR&gt;•&amp;nbsp;An STS is composed of one or more scopes. &lt;BR&gt;•&amp;nbsp;A scope contains zero or more access control rules.&lt;BR&gt;•&amp;nbsp;An STS owner can grant another Identity Service account permission to edit the access control rules in a scope&lt;/P&gt;
&lt;P&gt;A practical illustration to clarify:. The Messaging Service owns an STS whose root scope is &lt;A href="http://connect.biztalk.net/services/"&gt;http://connect.biztalk.net/services/&lt;/A&gt;. When you create a new account (newaccount) in the Identity Service, the messaging service creates a new scope &lt;A href="http://connect.biztalk.net/services/newaccount"&gt;http://connect.biztalk.net/services/newaccount&lt;/A&gt;. The Messaging Service then grants (newaccount) the permission to create access control rules in that scope. Any communication endpoints hosted there can thus be secured by the owner of the scope.&amp;nbsp; Rules from R11 accounts have been migrated to the “root” scope of the new account.&lt;/P&gt;
&lt;P&gt;On the protocols front, we’ve added several new capabilities for ‘REST’ services. We now support integration with Windows Live ID and have added RFC2617 Basic and HTTPS/Client Certificate support for acquiring security tokens using simple HTTP GET requests. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;New in R12 - Messaging &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Connectivity Modes&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The most fundamental new feature area in the Messaging service are the new ‘connectivity mode’ settings on the RelayBinding. Before this release, BizTalk Services clients and listeners always required outbound TCP ports 808 and 818 to be available for connecting to the BizTalk Services cloud for all connection modes except the clients of a listener running with ConnectionMode.RelayedHttp.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In this release we are introducing three different connectivity modes: Tcp, Http, and AutoDetect. The connectivity mode can be set on a static property of the RelayBinding. The Communication\ExploringFeatures\ConnectionModes\Multicast sample shows how. For clarity: ‘Connection Mode’ defines the type of end-to-end connection that is to be established through the Relay. ‘Connectivity Mode’ defines how a particular endpoint connects up to the Relay. &lt;/P&gt;
&lt;P&gt;The ‘Tcp’ connectivity mode is the most efficient one and works as in previous releases. The ‘Http’ mode is new. It creates a volatile FIFO buffer for messages in the BizTalk Services cloud and polls for messages using HTTP ‘parked requests’.&amp;nbsp; The Http model exhibits delivery latency characteristics similar to Tcp mode, albeit with slightly higher bandwidth consumption on idle connections. The ‘AutoDetect’ mode will check whether TCP connectivity is available and will choose ‘Tcp’ if that’s the case and ‘Http’ otherwise. &lt;/P&gt;
&lt;P&gt;The new HTTP-based connectivity option is only effective for the RelayedOneway, RelayedMulticast and RelayedDuplex connection modes. RelayedDuplexSession, HybridDuplexSession, and RelayedHttp (listener only) still require TCP connectivity at this time.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Transport Credentials and Unauthenticated Access&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Also, in the “R12” release, the model for specifying the client credentials for the Relay has now been closely aligned with the standard WCF client credentials model. Instead of picking and instantiating token providers, there is now a TransportClientEndpointBehavior that holds all credential information and credential types. The samples in the Communication\ExploringFeatures\RelayAuthentication of the SDK download clarify the use of this new behavior.&lt;/P&gt;
&lt;P&gt;We have added a pair of ‘WebNoAuth’ samples which introduce a new capability that we had a lot of requests for: Unauthenticated client access. When registering a service listener you can now explicitly waive the authentication requirement for clients connecting to your service. This is very useful in Web scenarios where you want to enable any HTTP client to connect to your service and don’t want them to authenticate in any way. For the time being we suggest that you always use this new&amp;nbsp; unauthenticated access mode for RelayedHttp services until we release the update for the ‘Web’ client authentication capability. &lt;/P&gt;
&lt;P&gt;For R12, we have omitted the ‘Web’ (REST) samples for Relay authentication since that area is undergoing some substantial protocol changes.&amp;nbsp; The update for this will be released soon. In the interim, existing applications that were built on a prior release of the BizTalk Services SDK to use the authentication technique shown in the R11 ‘Web’ sample must be modified to use unauthenticated access as shown in the new ‘WebNoAuth’ sample.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Give it a try&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The new BizTalk Services “R12” CTP is online and available now for your use.&amp;nbsp; The SDK is available at &lt;A href="http://labs.biztalk.net"&gt;http://labs.biztalk.net&lt;/A&gt;. If you already have an account for BizTalk Services, your accounts and settings have been migrated to the new environment. If you don’t have an account yet, just sign up, download the SDK, and get started creating the new generation of connected applications.&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;/P&gt;&lt;img width="0" height="0" src="http://vasters.com/clemensv/cptrk.ashx?id=9dcf76ad-b6e6-47c7-aa81-60970dc6a166"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8736333" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx">BizTalk Services</category></item><item><title>BizTalk Services R11/R12 upgrade in progress</title><link>http://blogs.msdn.com/clemensv/archive/2008/07/15/biztalk-services-r11-r12-upgrade-in-progress.aspx</link><pubDate>Tue, 15 Jul 2008 14:32:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8734983</guid><dc:creator>clemensv</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clemensv/comments/8734983.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clemensv/commentrss.aspx?PostID=8734983</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clemensv/rsscomments.aspx?PostID=8734983</wfw:comment><description>&lt;P&gt;The BizTalk Services CTP &lt;A href="http://vasters.com/clemensv/PermaLink,guid,69b9b1d9-5429-4338-882d-990c32979374.aspx"&gt;will be switched&lt;/A&gt; from the "R11" to the "R12" release starting in about 30 minutes and we expect to have a 2 hour time window (1400h-1600h PT/2300h-0100h UTC) where existing service accounts are being rolled over to the new release. We're expecting to be&amp;nbsp;done with the migration by&amp;nbsp;1600h. Once the migration is done we'll give you an update on what's new in R12.&lt;/P&gt;&lt;img width="0" height="0" src="http://vasters.com/clemensv/cptrk.ashx?id=68edc2ef-85a6-4c42-adf5-ab983766a70c"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8734983" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx">BizTalk Services</category></item><item><title>BizTalk Services: Update to the services (and SDK) scheduled</title><link>http://blogs.msdn.com/clemensv/archive/2008/07/12/biztalk-services-update-to-the-services-and-sdk-scheduled.aspx</link><pubDate>Sat, 12 Jul 2008 14:02:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8724986</guid><dc:creator>clemensv</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clemensv/comments/8724986.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clemensv/commentrss.aspx?PostID=8724986</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clemensv/rsscomments.aspx?PostID=8724986</wfw:comment><description>&lt;P&gt;&lt;STRONG&gt;Heads up:&amp;nbsp; &lt;/STRONG&gt;If things go as planned, the &lt;A href="http://labs.biztalk.net"&gt;BizTalk Services&lt;/A&gt; cloud will be unavailable for a few hours during the day on Tuesday 7/15&amp;nbsp;(U.S. Pacific Time) since we're doing an update to the services and to the SDK.&amp;nbsp;I will post an update with the exact time window&amp;nbsp;some time on Monday. Once we're back up and have verified that everything is working as intended we'll&amp;nbsp;let you know about it and tell you what's new.&lt;/P&gt;
&lt;P&gt;Applications built on&amp;nbsp;the R11 release (the release currently running in the data center) will have to be recompiled (and in some instances slightly changed) against the new R12 release's assemblies to run with R12. We've done some protocol adjustments in&amp;nbsp;R12 that make this necessary - mind that we're still in "experimentation-only preview" mode here. Theory suggests that some compiled R11 applications will work against the R12 cloud, but it's not a combination we're explicitly testing as of yet.&amp;nbsp;We obviously have that sort of backwards compatibility on the radar (it's SOA, should be easy, right?) but&amp;nbsp;it'll likely take us a couple more revisions&amp;nbsp;before we're happy enough with the baseline protocols. &lt;/P&gt;
&lt;P&gt;[&lt;STRONG&gt;Update:&lt;/STRONG&gt; The switch to R12 will happen between 1400-1600 PT/2300-0100 UTC. More later]&lt;/P&gt;&lt;img width="0" height="0" src="http://vasters.com/clemensv/cptrk.ashx?id=69b9b1d9-5429-4338-882d-990c32979374"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8724986" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx">BizTalk Services</category></item><item><title>Federated Identity with BizTalk Services</title><link>http://blogs.msdn.com/clemensv/archive/2008/03/31/federated-identity-with-biztalk-services.aspx</link><pubDate>Mon, 31 Mar 2008 13:08:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8346184</guid><dc:creator>clemensv</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clemensv/comments/8346184.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clemensv/commentrss.aspx?PostID=8346184</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clemensv/rsscomments.aspx?PostID=8346184</wfw:comment><description>&lt;P&gt;I highly recommend reading &lt;A href="http://blogs.msdn.com/vbertocci/archive/2008/03/31/using-federatedidentity-net-managed-cards-with-biztalk-services-sdk.aspx"&gt;Vittorio's most excellent and illuminating blog entry&lt;/A&gt; for how to use the new&amp;nbsp;features we've added to BizTalk Identity Services for allowing you to use 3rd Party Managed Cards. &lt;/P&gt;&lt;img width="0" height="0" src="http://vasters.com/clemensv/cptrk.ashx?id=3d060e11-9ec3-4cd9-a095-86651c0d5dac"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8346184" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx">BizTalk Services</category></item><item><title>BizTalk Services "R11" CTP Comes with a Surprise</title><link>http://blogs.msdn.com/clemensv/archive/2008/03/31/biztalk-services-r11-ctp-comes-with-a-surprise.aspx</link><pubDate>Mon, 31 Mar 2008 11:56:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8346018</guid><dc:creator>clemensv</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clemensv/comments/8346018.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clemensv/commentrss.aspx?PostID=8346018</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clemensv/rsscomments.aspx?PostID=8346018</wfw:comment><description>&lt;P align=justify&gt;A flock of pigs has been doing aerobatics high up over Microsoft Campus in Redmond in the past three weeks. Neither City of Redmond nor Microsoft spokespeople returned calls requesting comments in time for this article. An Microsoft worker who requested anonymity and has seen the pigs flying overhead commented that "they are as good as the Blue Angels at Seafair, just funnier" and "they seem to circle over building 42 a lot, but I wouldn't know why". &lt;/P&gt;
&lt;P&gt;In related news ... &lt;/P&gt;
&lt;P align=justify&gt;We wrapped up the BizTalk Services "R11" CTP this last Thursday and put the latest SDK release up on &lt;A href="http://labs.biztalk.net/"&gt;http://labs.biztalk.net/&lt;/A&gt;. As you may or may not know, "BizTalk Services" is the codename for Microsoft's cloud-based Identity and Connectivity services - with a significant set of further services in the pipeline. The R11 release is a major milestone for the data center side of BizTalk Services, but we've also added several new client-facing features, especially on the Identity services. You can now authenticate using a certificate in addition to username and CardSpace authentication, we have enabled support for 3rd party managed CardSpace cards, and there is extended support for claims based authorization. &lt;/P&gt;
&lt;P&gt;Now the surprising bit:&lt;/P&gt;
&lt;P align=justify&gt;Only about an hour before we locked down the SDK on Thursday, we checked a sample into the samples tree that has a rather unusual set of prerequisites for something coming out of Microsoft: &lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P align=justify&gt;Runtime: &lt;A href="http://java.sun.com/javaee/"&gt;Java EE 5&lt;/A&gt; on &lt;A href="https://glassfish.dev.java.net/"&gt;Sun Glassfish v2&lt;/A&gt; + &lt;A href="https://metro.dev.java.net/"&gt;Sun WSIT/Metro&lt;/A&gt; (JAX-WS extensions), Tool: &lt;A href="http://netbeans.org"&gt;Netbeans 6.0 IDE&lt;/A&gt;. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P align=justify&gt;The sample shows how to use the BizTalk Services Identity Security Token Service (STS) to secure the communication between a Java client and a Java service providing federated authentication and claims-based authorization.&lt;/P&gt;
&lt;P align=justify&gt;The sample, which you can find in &lt;EM&gt;./Samples/OtherPlatforms/StandaloneAccessControl/JavaEE5&lt;/EM&gt; once you installed the SDK, is a pure Java sample not requiring any of our bits on either the service or client side. The interaction with our services is purely happening on the wire. &lt;/P&gt;
&lt;P align=justify&gt;If you are a "Javahead", it might seem odd that we're shipping this sample inside a Windows-only MSI installer and I will agree that that's odd. It's simply a function of timing and the point in time when we knew that we could get it done (some more on that below). For the next BizTalk Services SDK release I expect there to be an additional .jar file for the Java samples.&lt;/P&gt;
&lt;P align=justify&gt;It's important to note that this isn't just a thing we did as a one-time thing and because we could. We have done a significant amount of work on the backend protocol implementations to start opening up a very broad set of scenarios on the BizTalk Services Connectivity services for platforms other than .NET. We already have a set of additional Java EE samples lined up for when we enable that functionality on the backend. However, since getting security and identity working is a prerequisite for making all other services work, that's where we started. There'll be more and there'll be more platform and language choice than Java down the road. &lt;/P&gt;
&lt;P align=justify&gt;Just to be perfectly clear: Around here we strongly believe that .NET and the Windows Communication Foundation in particular is the most advanced platform to build services, irrespective of whether they are of the WS-* or REST variety. If you care about my personal opinion, I'll say that several months of research into the capabilities of other platforms has only reaffirmed that belief for me and I don't even need to put a Microsoft hat on to say that. &lt;/P&gt;
&lt;P align=justify&gt;But we recognize and respect that there are a great variety of individual reasons why people might not be using .NET and WCF. The obvious one is "platform". If you run on Linux or Unix and/or if your deployment target is a Java Application Server, then your platform is very likely not .NET. It's something else.&amp;nbsp;If that's your world, we still think that our services are something that's useful for your applications and we want to show you why. And it is absolutely not enough for us to say "here is the wire protocol documentation; go party!". Only Code is Truth.&lt;/P&gt;
&lt;P align=justify&gt;I'm also writing "Only Code is Truth" also because we've found - perhaps not too surprisingly - that there is a significant difference between reading and implementing the WS-* specs and having things actually work. And here I get to the point where a round of public "Thank You" is due:&lt;/P&gt;
&lt;P align=justify&gt;The Metro team over at Sun Microsystems has made a very significant contribution to making this all work. Before we started making changes to accommodate Java, there would have been&amp;nbsp;very little&amp;nbsp;hope for anyone to get this seemingly simple scenario to work. We had to make quite a few changes even though our service did follow the specs. &lt;/P&gt;
&lt;P align=justify&gt;While we were adjusting our backend STS accordingly, the Sun Metro team worked on a set of issues that we identified on their end (with fantastic turnaround times) and worked those into their public nightly builds. The Sun team also 'promoted' a nightly build of Metro 1.2 to a semi-permanent &lt;A href="https://metro.dev.java.net/servlets/ProjectDocumentList?folderID=8958&amp;amp;expandFolder=8958&amp;amp;folderID=7636"&gt;download location&lt;/A&gt; (the first 1.2 build that got that treatment), because it is the build tested to successfully interop with our SDK release, even though that build is known to have some regressions for some of their other test scenarios. As they work towards wrapping up their 1.2 release and fix those other bugs, we’ll continue to test and talk to help that the interop scenarios keep working. &lt;/P&gt;
&lt;P align=justify&gt;As a result of this collaboration, Metro 1.2 is going to be a better and more interoperable release for the Sun's customers and the greater Java community and BizTalk Services as well as our future identity products will be better and more interoperable, too. Win-Win. Thank you, Sun.&lt;/P&gt;
&lt;P align=justify&gt;As a goodie, I put some code into the Java sample that might be useful even if you don't even care about our services. Since configuring the Java certificate stores for standalone applications can be really painful, I added some simple code that's using a week-old feature of the latest Metro 1.2 bits that allows configuring the Truststores/Keystores dynamically and pull the stores from the client's .jar at runtime. The code also has an authorization utility class that shows how to get and evaluate claims on the service side by pulling the SAML token out of the context and pulling the correct attributes from the token.&lt;/P&gt;
&lt;P&gt;Have fun.&lt;/P&gt;
&lt;P&gt;[By the way, this is not an April Fool's joke, in case you were wondering]&lt;BR&gt;&lt;/P&gt;&lt;img width="0" height="0" src="http://vasters.com/clemensv/cptrk.ashx?id=798bbf5b-f9f9-45b9-87ba-f6a30c359af9"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8346018" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx">BizTalk Services</category></item><item><title>[WebGet] BizTalk</title><link>http://blogs.msdn.com/clemensv/archive/2007/05/08/webget-biztalk.aspx</link><pubDate>Tue, 08 May 2007 02:00:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2471270</guid><dc:creator>clemensv</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clemensv/comments/2471270.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clemensv/commentrss.aspx?PostID=2471270</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clemensv/rsscomments.aspx?PostID=2471270</wfw:comment><description>&lt;P&gt;&lt;A href="http://hyperthink.net/blog/2007/05/05/Programmable+Web+Features+In+The+BizTalk+Services+SDK.aspx"&gt;Steve Maine explains&lt;/A&gt; what's in the newest revision of the BizTalk Services SDK, including quite a few (standalone-) surprises for WCF and WF developers. In case you haven't noticed, we've dropped a new and substantially expanded build of the SDK just a week after we published the first SDK. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Stop.&lt;/STRONG&gt; &lt;STRONG&gt;Don't leave yet.&lt;/STRONG&gt; Before you say "What do I care about&amp;nbsp;BizTalk?", you should know that&amp;nbsp;while&amp;nbsp;BizTalk&amp;nbsp;has been&amp;nbsp;more or less&amp;nbsp;associated with the BizTalk Server 200x product line in the past few years,&amp;nbsp;(Codename-) BizTalk Services is a complementary set of functionality that's not only interesting to BizTalk Server customers, but really to all .NET developers. &lt;/P&gt;
&lt;P&gt;Weird? Flip flopping? Confusing? No. The fact that &lt;EM&gt;BizTalk&lt;/EM&gt; is not&amp;nbsp;only BizTalk Server isn't really new. When BizTalk came out back in 2000 and I was &lt;A href="http://www.amazon.com/BizTalk-Server-2000-Beginners-Guide/dp/0072190116"&gt;very closely looking at what's going on&lt;/A&gt;&amp;nbsp;(get it used for $2), the definition read like this in the &lt;A href="http://www.microsoft.com/presspass/press/2000/Jun00/Framework2PR.mspx"&gt;press release&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;The BizTalk Initiative represents the collective set of investments that Microsoft is making to facilitate business process integration within and between organizations using Internet-standard protocols and formats. It includes the BizTalk Framework, the BizTalk.org community and business document library, as well as BizTalk Server 2000, a business process orchestration server and tools for developing, executing and managing distributed business processes. These investments are being made in conjunction with industry standards groups, technology and service providers, as well as key global organizations. &lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;While the envisioned schema exchange BizTalk.org fell flat since industry-wide message-level-schema standardization for "everything" more or less didn't happen in the way people initially expected, what came out of this&amp;nbsp;initiative as a significant element was that the set of specifications then known as the BizTalk Framework 2.0 that acted as a foundation for quite a few of the WS-* specifications and the BizTalk Server product which evolved into a&amp;nbsp;very successful and leading SOA/BPM suite that's soon seeing its next release,&amp;nbsp;&lt;A href="http://www.microsoft.com/biztalk/default.mspx"&gt;BizTalk Server 2006 R2&lt;/A&gt;. Fast forward, read Steven Martin's &lt;A href="http://blogs.msdn.com/stevemar/archive/2007/04/24/have-services-got-feedback.aspx"&gt;blog entry&lt;/A&gt; where he writes:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;[...] We see BizTalk Services as a complement to "traditional" BizTalk Server uses on premise. As you need to coordinate SOA on a broader scale beyond the organization, we see the introduction of hosted services as one way to help support federation of business process, messaging, and identity across boundaries. Over time, we want to ensure that BizTalk Server customers will be able to easily use the cloud services in conjunction with their premise technology. [...]&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So all in all,&amp;nbsp;a very sane way to think about BizTalk is that the software and services we&amp;nbsp;publish under that name are providing&amp;nbsp;functionality for messaging, process management&amp;nbsp;and&amp;nbsp;connectivity that go beyond the capability of the core .NET Framework.&lt;/P&gt;&lt;img width="0" height="0" src="http://friends.newtelligence.net/clemensv/cptrk.ashx?id=2bde249b-5996-4676-9d60-a0b44c7e33fb"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2471270" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx">BizTalk Services</category></item><item><title>Some fun with the BizTalk Services ISB</title><link>http://blogs.msdn.com/clemensv/archive/2007/05/07/some-fun-with-the-biztalk-services-isb.aspx</link><pubDate>Tue, 08 May 2007 00:00:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2468494</guid><dc:creator>clemensv</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clemensv/comments/2468494.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clemensv/commentrss.aspx?PostID=2468494</wfw:commentRss><wfw:comment>http://blogs.msdn.com/clemensv/rsscomments.aspx?PostID=2468494</wfw:comment><description>&lt;P&gt;I wrote a slightly Twitter-inspired, fun app over the weekend that's using the BizTalk Services Connectivity service and relay. In the spirit of Software+Services I'm going to give you half of it [for now] ;-)&amp;nbsp;&amp;nbsp; You must have the &lt;A href="http://labs.biztalk.net/downloads.aspx"&gt;BizTalk Services SDK&lt;/A&gt; installed to run the sample.&lt;/P&gt;
&lt;P&gt;The server app, which I'm keeping&amp;nbsp;to myself for the next few days as part of the experiment,&amp;nbsp;is an extension (add-in) to Windows Live Messenger.&amp;nbsp;The Messenger add-in monitors all chats&amp;nbsp;with&amp;nbsp;&lt;A href="mailto:tweetiebot@hotmail.com"&gt;tweetiebot@hotmail.com&lt;/A&gt;&amp;nbsp;and keeps circular buffer with the last 40 incoming messages. Using the client (which is in the attached archive), you can get a list of "Tweets" and add a new one (same as chatting)&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;ServiceContract&lt;/FONT&gt;(Name = &lt;FONT color=#a31515&gt;"TweetieBot"&lt;/FONT&gt;, Namespace = &lt;FONT color=#a31515&gt;&lt;A href="http://samples.vasters.com/2007/05/tweetiebot"&gt;http://samples.vasters.com/2007/05/tweetiebot&lt;/A&gt;&lt;/FONT&gt;)]&lt;BR&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;interface&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;ITweetieBot&lt;BR&gt;&lt;/FONT&gt;{&lt;BR&gt;&amp;nbsp; [&lt;FONT color=#2b91af&gt;OperationContract&lt;/FONT&gt;]&lt;BR&gt;&lt;FONT color=#2b91af&gt;&amp;nbsp; IList&lt;/FONT&gt;&amp;lt;&lt;FONT color=#2b91af&gt;Tweet&lt;/FONT&gt;&amp;gt; GetTweets(&lt;FONT color=#2b91af&gt;DateTime&lt;/FONT&gt;? since);&lt;BR&gt;&amp;nbsp; [&lt;FONT color=#2b91af&gt;OperationContract&lt;/FONT&gt;]&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; void&lt;/FONT&gt; Tweet(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; nickname, &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; text);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;or you can subscribe to new tweets and get them as they arrive&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;ServiceContract&lt;/FONT&gt;(Name = &lt;FONT color=#a31515&gt;"TweetieEvents"&lt;/FONT&gt;, Namespace = &lt;FONT color=#a31515&gt;&lt;A href="http://samples.vasters.com/2007/05/tweetiebot"&gt;http://samples.vasters.com/2007/05/tweetiebot&lt;/A&gt;&lt;/FONT&gt;)]&lt;BR&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;interface&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;ITweetieEvents&lt;BR&gt;&lt;/FONT&gt;{&lt;BR&gt;&amp;nbsp; [&lt;FONT color=#2b91af&gt;OperationContract&lt;/FONT&gt;(IsOneWay=&lt;FONT color=#0000ff&gt;true&lt;/FONT&gt;)]&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; void&lt;/FONT&gt; OnTweet(&lt;FONT color=#2b91af&gt;Tweet&lt;/FONT&gt; tweet);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;The client application hooks up to the client (that lives right on my desktop machine) through the BizTalk Services ISB and the&amp;nbsp;server fires events back through the ISB relay into the client as new tweets arrive. So when you run the attached client app, you'll find that it starts with a dump of the current log of the bot and then keeps spitting out events as they arrive. &lt;/P&gt;
&lt;P&gt;The client is actually pretty simple. The &lt;EM&gt;EventsClient&lt;/EM&gt; is the subscriber for the pub/sub service (ConnectionMode.RelayMulticast) that writes out the received events to the console.&amp;nbsp;The rest all happens in &lt;EM&gt;Main&lt;/EM&gt; (parsing an validating the command line argument) and in &lt;EM&gt;Run&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 12pt; COLOR: blue; FONT-FAMILY: Courier New; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Courier New; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&lt;FONT size=2&gt;Program&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;EventsClient&lt;/SPAN&gt;&lt;FONT color=#000000&gt; : &lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&lt;FONT size=2&gt;ITweetieEvents&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; OnTweet(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Tweet&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; tweet)&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.WriteLine(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"[{0}] {1}:{2}"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;, tweet.Time, tweet.User, tweet.Text);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; Main(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;[] args)&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; usageMessage = &lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"Usage: IMBotClient &amp;lt;messenger-email-address&amp;gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; (args.Length == 0)&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;.WriteLine(usageMessage);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT size=2&gt;else&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (!&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Regex&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.IsMatch(args[0], &lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;@"^([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))$"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;))&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;.WriteLine(usageMessage);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.WriteLine(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"'{0}' is not a valid email address"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT size=2&gt;else&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Run(args[0]);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; Run(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; emailAddress)&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;EndpointAddress&lt;/SPAN&gt;&lt;FONT color=#000000&gt; serviceAddress = &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;EndpointAddress&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"sb://{0}/services/tweetiebot/{1}/service"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;,&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RelayBinding&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.DefaultRelayHostName, &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Uri&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;.EscapeDataString(emailAddress))));&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;EndpointAddress&lt;/SPAN&gt;&lt;FONT color=#000000&gt; eventsAddress = &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;EndpointAddress&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"sb://{0}/services/tweetiebot/{1}/events"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RelayBinding&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.DefaultRelayHostName, &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Uri&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;.EscapeDataString(emailAddress))));&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT face=Verdana color=#003300&gt;The URI scheme for services that hook into the ISB is "sb:" and the default address of the relay is encoded in the SDK assemblies. We set up two endpoints here. One for the client channel to fetch the initial list and one for the event subscriber.&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Courier New; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RelayBinding&lt;/SPAN&gt;&lt;FONT color=#000000&gt; relayBinding = &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RelayBinding&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;();&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ServiceHost&lt;/SPAN&gt;&lt;FONT color=#000000&gt; eventsHost = &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ServiceHost&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;EventsClient&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;));&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RelayBinding&lt;/SPAN&gt;&lt;FONT color=#000000&gt; eventBinding = &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RelayBinding&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;RelayConnectionMode&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;.RelayedMulticast);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;eventsHost.AddServiceEndpoint(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ITweetieEvents&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;), eventBinding, eventsAddress.ToString());&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;eventsHost.Open();&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ChannelFactory&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&amp;lt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TweetieBotChannel&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&amp;gt; channelFactory = &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ChannelFactory&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&amp;lt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TweetieBotChannel&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&amp;gt;(relayBinding, serviceAddress);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TweetieBotChannel&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; channel = channelFactory.CreateChannel();&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;channel.Open();&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT face=Verdana color=#003300&gt;The two *.Open() calls will each prompt for a CardSpace authentication, so you will have to be &lt;A href="https://identity.biztalk.net/MemberRegister.aspx"&gt;registered&lt;/A&gt; to run the sample.&amp;nbsp;Once&amp;nbsp;you have&amp;nbsp;opened the channels (and my service is running), you'll be able to pull the list of current tweets.&amp;nbsp;Meanwhile, whenever a new event pops up, the &lt;EM&gt;EventsClient&lt;/EM&gt; above will write out a new line.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Courier New; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;IList&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&amp;lt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Tweet&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&amp;gt; tweets = channel.GetTweets(lastTime);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Tweet&lt;/SPAN&gt;&lt;FONT color=#000000&gt; tweet &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; tweets)&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.WriteLine(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"[{0}] {1}:{2}"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;, tweet.Time, tweet.User, tweet.Text);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.WriteLine(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"Press ENTER to quit at any time"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;);&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;.ReadLine();&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;eventsHost.Close();&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;channel.Close();&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;channelFactory.Close();&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Courier New; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt;&lt;FONT color=#000000 size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT face=Verdana color=#003300&gt;So when you run the app, you can chat (anyone can, you don't need to be a buddy) &lt;A href="mailto:tweetiebot@hotmail.com"&gt;tweetiebot@hotmail.com&lt;/A&gt; through Live Messenger and you'll see your chat lines (and potentially others') popping out as events from the service bus. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT face=Verdana color=#003300&gt;To run the sample with my bot, you need to call the client with "IMBotClient tweetiebot@hotmail.com" and select your BizTalk Services Information Card twice as you are prompted.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT face=Verdana color=#003300&gt;&lt;STRONG&gt;Privacy notice&lt;/STRONG&gt;: I'm anonymizing the name of the contact only insofar as I'm clipping anything&amp;nbsp;including and following&amp;nbsp;the "at" sign of the user that chats the bot. So whatever you say is published as "&lt;EM&gt;emailname&lt;/EM&gt;: text line"&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;A href="http://friends.newtelligence.net/clemensv/content/binary/IMBotClient.zip"&gt;IMBotClient.zip (3.61 KB)&lt;/A&gt;&lt;img width="0" height="0" src="http://friends.newtelligence.net/clemensv/cptrk.ashx?id=603e2393-c8de-40dd-b2e9-88f504b44149"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2468494" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clemensv/archive/tags/BizTalk+Services/default.aspx">BizTalk Services</category></item></channel></rss>