<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/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>Ido Flatow&amp;#39;s Blog&lt;h3&gt;Veni Vidi Scripsi&lt;/h3&gt;</title><link>http://blogs.microsoft.co.il/blogs/idof/</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Wrapping up October’s conferences</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2013/10/14/wrapping-up-october-s-conferences.aspx</link><pubDate>Mon, 14 Oct 2013 12:02:05 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2717378</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=2717378</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2013/10/14/wrapping-up-october-s-conferences.aspx#comments</comments><description>&lt;p&gt;It’s mid-October and I’m already warn down after two weeks of conferences. My October began in Las Vegas with &lt;a href="http://www.devconnections.com"&gt;DevConnections&lt;/a&gt; where I had a workshop and four sessions, continued with a 72-hour stop back home in Israel for some father-son time (with my son of course, not with my father), and then another week in London with &lt;a href="http://software-architect.co.uk/"&gt;Software Architect&lt;/a&gt; where I had a workshop and a session. Now I’m back home, relaxing, working, and preparing for my next conference in December, this time in Israel at the SDP (&lt;a href="http://www.seladeveloperpractice.com/"&gt;Sela Developer Practice&lt;/a&gt;) conference.&lt;/p&gt;  &lt;p&gt;In case you didn’t attend my sessions, no worries, I have links to both the slides and the code samples right here:&lt;/p&gt;  &lt;h3&gt;&lt;a title="ASP.NET Web API and HTTP Fundamentals" href="https://www.slideshare.net/idof/aspnet-web-api-and-http" target="_blank"&gt;ASP.NET Web API and HTTP Fundamentals&lt;/a&gt; workshop (code is available &lt;a href="http://sdrv.ms/1eKAsRd"&gt;here&lt;/a&gt;)&lt;/h3&gt; &lt;iframe style="margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/27166448" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt;   &lt;h3&gt;&lt;strong&gt;&lt;a title="Automating Windows Azure" href="https://www.slideshare.net/idof/automating-windows-azure" target="_blank"&gt;Automating Windows Azure&lt;/a&gt; (code is available &lt;a href="http://sdrv.ms/13HplxU"&gt;here&lt;/a&gt;)&lt;/strong&gt;&lt;/h3&gt; &lt;iframe style="margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/26811092" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt;   &lt;h3&gt;&lt;a title="Caching in Windows Azure" href="https://www.slideshare.net/idof/caching-in-windows-azure" target="_blank"&gt;Caching in Windows Azure&lt;/a&gt; (code is available &lt;a href="http://sdrv.ms/17s8osK"&gt;here&lt;/a&gt;)&lt;/h3&gt; &lt;iframe style="margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/26811137" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt;   &lt;h3&gt;&lt;a title="Debugging with Fiddler" href="https://www.slideshare.net/idof/debugging-with-fiddler" target="_blank"&gt;Debugging with Fiddler&lt;/a&gt; (code is available &lt;a href="http://sdrv.ms/13mgEP9"&gt;here&lt;/a&gt;)&lt;/h3&gt;  &lt;p&gt;&lt;iframe style="margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/26811182" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt; &lt;/p&gt;  &lt;p&gt;If you’ve been to my session, enjoy your new Fiddler T-shirts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2013-09-29-13.07.09_3B343135.jpg"&gt;&lt;img title="2013-09-29 13.07.09" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2013-09-29 13.07.09" src="http://blogs.microsoft.co.il/blogs/idof/2013-09-29-13.07.09_thumb_5E14313E.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;&lt;a title="IIS for Developers" href="https://www.slideshare.net/idof/iis-for-developers" target="_blank"&gt;IIS for Developers&lt;/a&gt; (code is available &lt;a href="http://sdrv.ms/15QPJke"&gt;here&lt;/a&gt;)&lt;/h3&gt; &lt;iframe style="margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/26811247" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt;   &lt;h3&gt;&lt;strong&gt;&lt;a title="Advanced WCF Workshop" href="https://www.slideshare.net/idof/advanced-wcf-workshop" target="_blank"&gt;Advanced WCF Workshop&lt;/a&gt; (code is available &lt;a href="http://sdrv.ms/1a6RyB5"&gt;here&lt;/a&gt;)&lt;/strong&gt;&lt;/h3&gt; &lt;iframe style="margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/27130729" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt;   &lt;h3&gt;&lt;a title="What&amp;#39;s New in WCF 4.5" href="https://www.slideshare.net/idof/whats-new-in-wcf-45" target="_blank"&gt;What&amp;#39;s New in WCF 4.5&lt;/a&gt; (code is available &lt;a href="http://sdrv.ms/1b94Zmb"&gt;here&lt;/a&gt;)&lt;/h3&gt; &lt;iframe style="margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/27130711" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt;       &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2717378" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/fiddler/default.aspx">fiddler</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Web+API/default.aspx">Web API</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>Speaking at DevConnections 2013</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/26/speaking-at-devconnections-2013.aspx</link><pubDate>Mon, 26 Aug 2013 07:13:11 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2491163</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=2491163</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/26/speaking-at-devconnections-2013.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_70377FA2.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_301D9DC3.png" width="644" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you’ve read &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/20/fixing-iis-advanced-logging-performance-counters-errors.aspx"&gt;my post&lt;/a&gt; from last week, you know that I went off the grid for 8 months, mostly because I was working on authoring yet another course for Microsoft (&lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/23/hot-off-the-shelf-moc-20487b-developing-windows-azure-and-web-services.aspx"&gt;20487 – Developing Windows Azure and Web Services&lt;/a&gt;), but also partially because of my new baby boy, who made sure my laptop stays closed when I’m at home. Now that my baby is a couple of months old, I can start my conference rotation for 2013, starting with &lt;a href="http://www.devconnections.com"&gt;DevConnections&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Speaking at DevConnections is going to be a great experience for me, for several reasons:&lt;/p&gt;  &lt;p&gt;1. It’s my first out-of-the-country conference for 2013.&lt;/p&gt;  &lt;p&gt;2. It’s my first time speaking in DevConnections.&lt;/p&gt;  &lt;p&gt;3. I’m going to have four (!!) sessions and a workshop, which makes me the most-often appearing speaker at the conference. How’s that for stressful?&lt;/p&gt;  &lt;p&gt;4. It’s the first time I’ll be doing a workshop in such a conference (don’t get me wrong on this, I’ve trained courses for several years in Israel and abroad, and had workshops in local conferences in Israel, but still, doing a 1-day workshop in a big conference in the US is a bit challenging).&lt;/p&gt;  &lt;p&gt;So what will you learn if you attend my sessions? Let’s see.&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.devconnections.com/dev13/public/SessionDetails.aspx?FromPage=Calendar.aspx&amp;amp;SessionID=1008787"&gt;ASP.NET Web API and HTTP Fundamentals&lt;/a&gt; (Pre-conference workshop, Monday)&lt;/h3&gt;  &lt;p&gt;The purpose of this workshop is twofold: going over the fundamentals of HTTP, and learning how to apply these concepts with ASP.NET Web API. &lt;/p&gt;  &lt;p&gt;Isn’t HTTP something every developer knows of? You have request and response, GET and POST, what else is there to know? Well, you’ll be surprised: status codes, verbs, content negotiation, caching, compression, concurrency, security, streaming, and connectivity. We’ll also learn how Windows handles HTTP communication, how you can configure HTTP with IIS, and how to debug your HTTP communication with Fiddler.&lt;/p&gt;  &lt;p&gt;As I mentioned, the purpose of the workshop is twofold – and the best way to learn about HTTP is to implement HTTP-based services with ASP.NET Web API. During the workshop we’ll learn how to use ASP.NET Web API to create services, how to configure routing templates, how to handle response headers, content negotiation with Media Type Formatters, validation and exception handling with action filters, request manipulation and security with delegating handlers, and more. We’ll also learn how to create OData services to better handle our data, and how to consume services from .NET applications and JavaScript, using jQuery.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Why should you attend this workshop&lt;/u&gt;? because I believe you cannot learn how to use ASP.NET Web API without first understanding the capabilities of HTTP.&lt;/p&gt;  &lt;p&gt;If you need to convince your boss why you should attend this workshop, maybe these two facts can come in handy:&lt;/p&gt;  &lt;p&gt;1. Registering to the workshop is cheaper than a 3-day ASP.NET Web API course, but you’ll get all your essentials and more in this 1-day workshop.&lt;/p&gt;  &lt;p&gt;2. The workshop is delivered by a Microsoft MVP, the author of Microsoft’s official ASP.NET Web API course (20487B - developing Windows Azure and Web Services).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.devconnections.com/dev13/public/SessionDetails.aspx?FromPage=Calendar.aspx&amp;amp;SessionID=1008696"&gt;Automating Windows Azure from the Command Line&lt;/a&gt; (75-minute session. Tuesday, 10:00 AM)&lt;/h3&gt;  &lt;p&gt;I have nothing against the Windows Azure Management Portal, it has a slick UI, it’s easy to use, informative, and enables you to do most of what you need. But let’s face it - when you need to create a virtual network with five VMs, configure each VM, deploy your application to it, and repeat this for each of your customers, you don’t use the portal.&lt;/p&gt;  &lt;p&gt;Luckily, the Windows Azure Service Management has various HTTP APIs for you to use, and even better than that, those APIs are accessible through PowerShell cmdlets, and cross-platform CLI (Command-Line Interface) tools you can use on Linux, Mac, and Windows.&lt;/p&gt;  &lt;p&gt;In this session, we will understand the process of automating Windows Azure operations, and see how to use the PowerShell cmdlets and the Windows Azure CLI to accomplish automation tasks, such as creating virtual networks, virtual machines, web sites, and cloud services.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Why should you come to this session&lt;/u&gt;? Simple, you’ll get lots of script examples you can take back to the office.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.devconnections.com/dev13/public/Calendar.aspx?ID=1050243&amp;amp;SuperTrackId=&amp;amp;TrackId=1000308,1000314&amp;amp;AssociationId=&amp;amp;DateId=1000564,1000565,1000566&amp;amp;FormatId=&amp;amp;DurationId=&amp;amp;SpeakerId=&amp;amp;AbilityLevelId=&amp;amp;SessionTypeId=&amp;amp;SubExpoId=&amp;amp;Keyword=&amp;amp;&amp;amp;SearchEvent=&amp;amp;View=Calendar&amp;amp;sortMenu=102003#"&gt;Debugging the Web with Fiddler&lt;/a&gt; (75-minute session. Tuesday, 2:30PM)&lt;/h3&gt;  &lt;p&gt;Well, where should I begin?! Answer this simple question – do you develop Web applications? Web services (ASMX/WCF/WebAPI)? Desktop apps that consume services over HTTP? If you answered yes to one or more questions, then you need to know how to use Fiddler.&lt;/p&gt;  &lt;p&gt;Most people think of Fiddler as an HTTP sniffing tool, but the truth is that fiddler is a lot more than that. Fiddler is a Web debugging tool. We use it to debug both our client-side and server-side code, to better test our application, to improve the performance of our code, and support our customers when they face network errors.&lt;/p&gt;  &lt;p&gt;In this session, we will learn how to use the different features of Fiddler to accomplish those tasks. If everyone leave this session wanting to install Fiddler, it means I did my part.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Why should you come to this session&lt;/u&gt;? If you don’t know what Fiddler is, or only heard of it, you have no other choice. If you do know how to use Fiddler, come to the session, maybe (probably) you’ll learn something new. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.devconnections.com/dev13/public/SessionDetails.aspx?FromPage=Calendar.aspx&amp;amp;SessionID=1008697"&gt;Caching in Azure: There’s More to That Than Azure Caching&lt;/a&gt; (75-minute session. Tuesday, 4:15PM)&lt;/h3&gt;  &lt;p&gt;Caching, especially distributed caching, is part of every scalable application architecture. You can’t build large applications today without taking some of the load off your database, and placing your common and intermediate data in the cache. &lt;/p&gt;  &lt;p&gt;So which cache solution to use? NCache? Memcached? Redis? there seems to be so many solutions for on-premises environments. But what about the cloud? it seems that Windows Azure only has Windows Azure Caching, or does it?&lt;/p&gt;  &lt;p&gt;The fact is you can use almost any caching solution in Windows Azure, you just need to know how to deploy it, and the meaning of running it in a cloud environment.&lt;/p&gt;  &lt;p&gt;In this session, we will see how to use the built-in caching services offered by Windows Azure, as well as some other known caching solutions, such as Memcached and Couchbase. We will discuss the pros and cons of each solution and understand the caveats of hosting a cache in the cloud.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Why should you come to this session&lt;/u&gt;? where else would you get a feature comparison, performance benchmark, and specific deployment instructions for various caching solutions, which you can take back to your boss? Did I mention I’m also providing the code samples and deployment scripts?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.devconnections.com/dev13/public/SessionDetails.aspx?FromPage=Calendar.aspx&amp;amp;SessionID=1008699"&gt;IIS For Developers&lt;/a&gt; (75-minute session. Wednesday, 2:30PM)&lt;/h3&gt;  &lt;p&gt;This is my last session in the conference, but it’s also one of my favorites. I’ve been training developers and IT Pros on IIS for several years now, and I came to realize that many developers see IIS as a black box – you put your application in it, and it just works. Not many people actually know how IIS works, and how you can use it to better host and debug your Web applications.&lt;/p&gt;  &lt;p&gt;In this session, we will go over the IIS Integrated pipeline to understand how it works, check some of the features of IIS , such as caching, URL rewrite, and application initialization, and go over the applications pool settings to better understand how those settings can help us cope with buggy web apps. We will also check the logging and tracing features of IIS, which can help us debug and analyze our applications.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;So why should you come to this session&lt;/u&gt;? because purchasing a ticket to the conference, flying to Vegas, and sitting awake in my session after a big lunch, is a whole lot easier than asking your IT to teach you all those stuff about IIS &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_78871B2D.png" /&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;If you haven’t registered to the conference yet, hurry up and register at &lt;a href="http://www.devconnections.com/register"&gt;http://www.devconnections.com/register&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;See you at the conference!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2491163" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/fiddler/default.aspx">fiddler</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DevConnections/default.aspx">DevConnections</category></item><item><title>Hot off the shelf – MOC 20487B: Developing Windows Azure and Web Services</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/23/hot-off-the-shelf-moc-20487b-developing-windows-azure-and-web-services.aspx</link><pubDate>Fri, 23 Aug 2013 16:47:47 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2474408</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=2474408</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/23/hot-off-the-shelf-moc-20487b-developing-windows-azure-and-web-services.aspx#comments</comments><description>&lt;p&gt;A couple of days ago I &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/20/fixing-iis-advanced-logging-performance-counters-errors.aspx"&gt;published&lt;/a&gt; my first post after an absence of 8 months, where I promised to tell you about the course I worked on for the past couple of months.&lt;/p&gt;  &lt;p&gt;The 20487B course is an &lt;a href="http://www.microsoft.com/learning/en-us/course.aspx?id=20487b"&gt;official Microsoft course&lt;/a&gt;, which myself and several other experts from Sela have been working on for the past 8 months.&lt;/p&gt;  &lt;p&gt;As with the previous course I wrote for Microsoft (&lt;a href="http://www.microsoft.com/learning/en-us/course.aspx?id=10263a"&gt;10263&lt;/a&gt; – developing WCF services), this course also took a lot of time to develop because it involved creating an elaborated lab scenario, 14 course modules, and a whole lot of writing (688 pages in total, not including PowerPoint slides).&lt;/p&gt;  &lt;p&gt;As the name implies, this course is about Web services and Windows Azure, but in fact, it covers a whole lot more. The purpose of this course is to teach developers how to create server-side distributed applications, using the Microsoft .NET stack. In this course, we cover the following topics:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Entity Framework&lt;/strong&gt; – creating code-first models, working with DbContext, using LINQ to entities, Entity SQL, and more.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;ASP.NET Web API&lt;/strong&gt; – creating HTTP-based services and extending the Web API pipeline (message handlers, media type formatters, etc.). The modules also cover dependency injection, OData, and Web API security (basic stuff).&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;WCF&lt;/strong&gt; – creating WCF services, hosting, message patterns, async operations, transactional services, and WCF security (the patterns, async, transactions, and security were originally part of the 20487A course, but in the new version, 20487B, we decided to make these as optional modules to free more time to other content).&lt;/li&gt;    &lt;li&gt;Windows Azure&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt; – this course mainly focuses on Web Sites and Cloud Services. Due to time limitations, we do not cover virtual machines.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt; – using blobs, tables, and queues from .NET. The module also covers securing storage access with shared access signatures and policies.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Service bus&lt;/strong&gt; – relays, queues, and topics. We might be adding material on notification hubs in the future.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Diagnostics&lt;/strong&gt; – configuring and collecting diagnostics data from deployed cloud services.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;ACS&lt;/strong&gt; – securing Web API services and service bus using ACS.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Cache &lt;/strong&gt;– deploying Windows Azure Caching solutions and using them from .NET applications.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Other stuff&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Cloud computing &lt;/strong&gt;– concepts and considerations.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Hosting and deployment&amp;#160; &lt;/strong&gt;- IIS, MSDeploy, GIT/TFS integration.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Scalability &lt;/strong&gt;– architectural design and concepts, pitfalls, CDN, and traffic manager.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;This course covers several topics which are still being updated (aside maybe for WCF which is only updated on newer version of the .NET Framework). Therefore, for the first time, Microsoft has decided that this course will be frequently updated to reflect changes to APIs, and new added features to the technologies (new Windows Azure services, EF6 changes such as async methods and connection resiliency, and new features of Web API, such as attribute-based routing).&lt;/p&gt;  &lt;p&gt;Heads up to any MCT who is going to deliver this course:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The virtual machines we used for the course have the Windows Azure SDK 2.0 installed on them. Because of new SDKs and updated NuGet packages, labs may get broken, if newer versions of Windows Azure NuGet packages require newer versions of the SDK. &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;For such cases, we included in the labs the required steps for installing the old versions of NuGet packages, instead of the new ones. If students reports issues running the code, mainly exceptions about missing assemblies, you should instruct them to use the uninstall the current version and install the older version, which is specified in the lab notes. As part of supporting the course, we will be trying to identify NuGet package issues and inform MCTs about them. &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;u&gt;Currently, I know of an issue with the Caching lab (module 12), because the new Windows Azure Caching NuGet package requires SDK 2.1. For this lab, please install version 2.0.0.0 of the package, as specified in the lab notes.&lt;/u&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you are an MCT and have any questions about the course, the content, or how to deliver parts of it, feel free to &lt;a href="http://blogs.microsoft.co.il/blogs/idof/contact.aspx"&gt;send&lt;/a&gt; me a message.&lt;/p&gt;  &lt;p&gt;I’d also like to mention the other team members from Sela, who took part in authoring this course:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Authors – &lt;a href="http://blogs.microsoft.co.il/blogs/roadan"&gt;Yaniv Rodenski&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/applisec"&gt;Manu Cohen-Yashar&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/ofirmakmal"&gt;Ofir Makmal&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/yuvmaz"&gt;Yuval Mazor&lt;/a&gt;, and &lt;a href="http://blogs.microsoft.co.il/blogs/sasha"&gt;Sasha Goldshtein&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Project Management team – &lt;a href="http://il.linkedin.com/in/ishairam"&gt;Ishai Ram&lt;/a&gt;, &lt;a href="http://www.linkedin.com/profile/view?id=35801901"&gt;Baruch Toledano&lt;/a&gt;, and &lt;a href="http://www.linkedin.com/profile/view?id=224161210"&gt;Gal Tfilin&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Lab development, technical writers, testing, and IT - Israel Olcha, Roman Bryansker, Roee Moshe, Alex Lipov, Gil Blumberg, Morin Rodenski, Ernan Maisels, Lee Narkis, Meital Valenci, Daniel Sterman, Amith Vincent, Kavitha Ravipati, and Anuradha Sridhar.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Many thanks to the MSL team who was in charge of this course and to &lt;a href="http://geekswithblogs.net/michelotti"&gt;Steve Michelotti&lt;/a&gt;, our technical reviewer.&lt;/p&gt;  &lt;p&gt;Also, congratulations for the Sela client team for releasing courses &lt;a href="http://www.microsoft.com/learning/en-us/course.aspx?id=20481b"&gt;20481&lt;/a&gt;, &lt;a href="http://www.microsoft.com/learning/en-us/course.aspx?id=20482b"&gt;20482&lt;/a&gt;, &lt;a href="http://www.microsoft.com/learning/en-us/course.aspx?id=20484b"&gt;20484&lt;/a&gt;, and &lt;a href="http://www.microsoft.com/learning/en-us/course.aspx?id=20485b"&gt;20485&lt;/a&gt; (The Windows 8 Essentials and Advanced courses for C# and JavaScript).&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2474408" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/MOC/default.aspx">MOC</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Developing+Windows+Azure+and+Web+Services/default.aspx">Developing Windows Azure and Web Services</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/20487A/default.aspx">20487A</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Authoring/default.aspx">Authoring</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/20487B/default.aspx">20487B</category></item><item><title>Fixing IIS Advanced Logging Performance Counters Errors</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/20/fixing-iis-advanced-logging-performance-counters-errors.aspx</link><pubDate>Tue, 20 Aug 2013 16:43:59 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:2451363</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=2451363</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2013/08/20/fixing-iis-advanced-logging-performance-counters-errors.aspx#comments</comments><description>&lt;p&gt;Last time I posted on my blog was 10 months ago, wow! Time sure goes by fast when you have a new baby and a new course to write (I’ll blog about this later, the course, not the baby).&lt;/p&gt;  &lt;p&gt;Enough with the chitchat, let’s get to business.&lt;/p&gt;  &lt;p&gt;If you’ve ever used IIS, you’ve probably realized at some point that the IIS log files are useful to a point. You can’t log specific HTTP headers from the request/response, you can’t log machine parameters, such as performance counters, and you can’t filter the logs before they are written (for that we use log parser).&lt;/p&gt;  &lt;p&gt;A couple of years ago, Microsoft released the &lt;a href="http://www.iis.net/downloads/microsoft/advanced-logging"&gt;Advanced Logging&lt;/a&gt; module, which can run in IIS 7/7.5/8 (haven’t tested on 8.5 yet, but part of it is already built-in to IIS 8.5). This new module adds many useful fields, real-time logging, and log filters.&lt;/p&gt;  &lt;p&gt;One of the problem people stumbled upon when using this great module is, if you choose to log performance counters, you end up having two problems:&lt;/p&gt;  &lt;p&gt;1. The counters data is not actually logged. If you open the log file, the columns appear, but without data.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_4771A594.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_153A2F7D.png" width="644" height="48" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. If you open the Windows event logs, you’ll find errors for each configured performance counter. The errors are logged each time you recycle an application pool.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_6EB80097.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_404E551D.png" width="644" height="395" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: event logs appear for each performance counter in the fields list, whether you choose to log it or not.&lt;/p&gt;  &lt;p&gt;Most of the answers I found online for this issue (such as &lt;a href="http://forums.iis.net/t/1171984.aspx/1"&gt;here&lt;/a&gt;) were to remove the performance counter fields from the list of fields, which basically will prevent you from logging performance counters. I didn’t really like these answers, as they didn’t actually resolve this issue, only worked around it.&lt;/p&gt;  &lt;p&gt;After a short investigation, new evidence appeared that shed light on the problem – the issue with the performance counters appear only in web applications that use an application pool set to the &lt;strong&gt;ApplicationPoolIdentity&lt;/strong&gt; identity. If the application pool uses Network/Local Service, there is no problem.&lt;/p&gt;  &lt;p&gt;From here, the solution is simple:&lt;/p&gt;  &lt;p&gt;1. Open the &lt;strong&gt;Local Users and Groups&lt;/strong&gt; node in the &lt;strong&gt;Computer Management&lt;/strong&gt; MMC. &lt;/p&gt;  &lt;p&gt;2. Open the &lt;strong&gt;Performance Monitor Users &lt;/strong&gt;group, and add the application pool identity you are using. For example, if your application pool is named &lt;strong&gt;DefaultAppPool&lt;/strong&gt;, then add the user “&lt;strong&gt;iis apppool\defaultapppool&lt;/strong&gt;”, without the quotes (“iis apppool” is a special prefix for application pool identities).&lt;/p&gt;  &lt;p&gt;3. Reset your server for the changes to take affect.&lt;/p&gt;  &lt;p&gt;After you reset the server and the application pool loads, you should start seeing the counter data in the log, and the errors in the Windows event logs will no longer appear.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_7D6EBE4A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_7CE23FBB.png" width="644" height="50" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hope this helps someone out there.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=2451363" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/performance+counters/default.aspx">performance counters</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Advanced+Logging/default.aspx">Advanced Logging</category></item><item><title>Wrapping up SDP Nov. 2012</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/29/wrapping-up-sdp-nov-2012.aspx</link><pubDate>Thu, 29 Nov 2012 09:04:27 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1494041</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1494041</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/29/wrapping-up-sdp-nov-2012.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/logo_77292D19.png"&gt;&lt;img title="logo" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="logo" src="http://blogs.microsoft.co.il/blogs/idof/logo_thumb_69B2F446.png" width="644" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Wow, a conference that lasts 8 days, that a first. So here’s the gist of what I taught in 5 of these days:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt; What’s new in WCF 4.5&lt;/strong&gt;      &lt;br /&gt;In this 1-hour session I covered some of the important new features of WCF 4.5, such as Intellisense for configuration, UDP and WebSockets bindings, and improved support for streaming and compression.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Debugging the Web with Fiddler       &lt;br /&gt;&lt;/strong&gt;In this 1-day tutorial we saw how to use Fiddler to debug, test, and improve Web application. We saw how to work with the session list, use various inspectors, understand the meaning of statistics and timeline, manipulate messages with replays, breakpoints, and auto responder. We also saw how to create traffic with composer and how to create custom inspectors.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Building an App with Windows 8, Windows Azure and Visual Studio 2012 &lt;/strong&gt;(with &lt;a href="http://blogs.microsoft.co.il/blogs/michaelh/"&gt;Michael Haberman&lt;/a&gt;)      &lt;br /&gt;The purpose of this 1-day tutorial was to show an end-to-end development of a distributed application that has a Windows 8 client-side, Entity Framework for database access, ASP.NET Wep API for server-side services, and hosting the entire server-side in Windows Azure (including SQL Database).      &lt;br /&gt;This tutorial day was not intended to be a deep dive into each technology, but rather show how the technologies work and fit together, and to discuss some best practices.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;HTTP Fundamentals and ASP.NET Web API&lt;/strong&gt; (with &lt;a href="http://blogs.microsoft.co.il/blogs/roadan/"&gt;Yaniv Rodenski&lt;/a&gt;)      &lt;br /&gt;You wanted a deep-dive? you got it. This 1-day tutorial, which we taught twice during the conference, covers a whole lot of HTTP and its implementation with ASP.NET Web API. We talked about the HTTP requests and responses, verbs, URIs, and mapping it to Web API routing, controllers, and actions. We talked about Web API binders, action filters, and message handlers. We talked about HTTP concepts, such as caching, streaming, compression, and persistent connections. We talked about security, IIS hosting, the HTTP.SYS listener, WebSockets, and about so much more.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All the slide decks and demo code from these days is available online at &lt;a title="http://sdrv.ms/WhqCfT" href="http://sdrv.ms/WhqCfT"&gt;http://sdrv.ms/WhqCfT&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you in the next SDP.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1494041" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/SDP/default.aspx">SDP</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/fiddler/default.aspx">fiddler</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Web+API/default.aspx">Web API</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Conferences/default.aspx">Conferences</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>BUILD 2012 – Day 4 Overview</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/03/build-2012-day-4-overview.aspx</link><pubDate>Sun, 04 Nov 2012 03:39:33 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1408291</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1408291</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/03/build-2012-day-4-overview.aspx#comments</comments><description>&lt;p&gt;First session of Day 4 was about &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-025"&gt;advanced cloud service development&lt;/a&gt;. I came in a bit late so I missed the introduction, but the part about diagnostics and IIS 8 was nice – IIS 8 and Windows Server 2012 offer new stuff such as .NET 4.5 on web/worker roles, SignalR, and Websocket support. CDN and traffic manager cover was shallow, but the Service Bus part was nice where he showed service bus topics.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-08.52.27_5545D221.jpg"&gt;&lt;img title="2012-11-02 08.52.27" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-11-02 08.52.27" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-08.52.27_thumb_509FA19A.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Session number 2 was about &lt;a href="http://channel9.msdn.com/Events/Build/2012/4-004"&gt;Windows Azure Storage&lt;/a&gt;. There are a couple of new things coming to Azure Storage, and new stuff that will be available in a couple of weeks/months (see images).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-10.04.37_3D4EC52E.jpg"&gt;&lt;img title="2012-11-02 10.04.37" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-11-02 10.04.37" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-10.04.37_thumb_626C0F9A.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-10.31.33_4C35F448.jpg"&gt;&lt;img title="2012-11-02 10.31.33" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-11-02 10.31.33" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-10.31.33_thumb_6629B46A.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-11.15.26-1_3DAAD256.jpg"&gt;&lt;img title="2012-11-02 11.15.26-1" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-11-02 11.15.26-1" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-11.15.26-1_thumb_2708840F.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Session number 3 was about &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-033"&gt;Windows Azure Service Bus&lt;/a&gt;. When the session began it seemed like an introduction session so I bailed. I understand that at the end of the session he mentioned that Service Bus now supports AMQP (advanced message queue protocol).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-12.44.45_00C62AB7.jpg"&gt;&lt;img title="2012-11-02 12.44.45" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-11-02 12.44.45" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-12.44.45_thumb_57DB15AD.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Last session of the day/conference was about &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-028"&gt;ASP.NET and VS 2012&lt;/a&gt; by Scott Hanselman and John Galloway. Great session with great interaction between Scott and John, really worth watching. The new stuff which were introduced were the new features of ASP.NET which is going to be released soon – new Web API features, new templates for single-page web apps, SignalR as part of the Microsoft stack for ASP.NET, VS 2012 improvements, and on.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-14.30.17_246F2C84.jpg"&gt;&lt;img title="2012-11-02 14.30.17" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-11-02 14.30.17" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-02-14.30.17_thumb_22BE60B0.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;So that’s it for Build. Continuing to the Windows Azure Insiders post-con where I learning new stuff that I can’t talk about &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_2179C7D1.png" /&gt;. You’ll find out about it soon…&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1408291" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Build2012/default.aspx">Build2012</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>BUILD 2012 – Day 3 Overview</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/02/build-2012-overview-day-3.aspx</link><pubDate>Fri, 02 Nov 2012 05:10:52 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1401483</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1401483</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/02/build-2012-overview-day-3.aspx#comments</comments><description>&lt;p&gt;Day 3 began with a great &lt;strike&gt;keynote&lt;/strike&gt; &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-027"&gt;session&lt;/a&gt; by Scott Hanselman, one hour that recapped my entire webdev history (being doing this stuff for the past 15 years). &lt;/p&gt;  &lt;p&gt;The bottom line of the session was – remember that you also have a very powerful machine on your desk (or legs if it’s a laptop), so don’t just throw everything on the server, try to also use javascript to do stuff.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-01-08.30.14_30275D63.jpg"&gt;&lt;img title="2012-11-01 08.30.14" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="2012-11-01 08.30.14" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-01-08.30.14_thumb_0E5B84D2.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After Scott’s session I stayed in the hall for the &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-012"&gt;TypeScript session&lt;/a&gt;. Writing JavaScript with JavaScript – well, as long as it doesn’t like feel I’m writing JavaScript, it’s great (I don’t like JavaScript that much). I’m having a hard time finding thinking of a similar concept from previous technologies where you created a new language to hide syntax difficulties of another language (or in this case, use the same language for both), but the idea is nice, I’ll give it a couple of months to see if it catches up. Anyway, using TypeScript to create JavaScript code for Node.js is nice.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(Sorry, no photo)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I then moved on to a &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-058"&gt;Windows Azure Internals session&lt;/a&gt; by Mark Russinovich. It’s the same session he had in TechEd 2012, but it was nice hearing it again. For server guys, looking at the internal of Windows Azure is what looking into the internals of Windows 8 is for client devs. In the session he also covered how they handled the famous 29-Feb (leap year) bug they had this year (note to self: don’t do nextyear = date.Year + 1 – it doesn’t work with leap years, duh!).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-01-12.00.45_7ACE2530.jpg"&gt;&lt;img title="2012-11-01 12.00.45" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="2012-11-01 12.00.45" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-01-12.00.45_thumb_2FCA6465.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This was actually my last session for the day, as I had lots of work piling up which had to be handled.&lt;/p&gt;  &lt;p&gt;See you in tomorrows post about day 4.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-11-01-14.10.53_650350FD.jpg"&gt;&lt;img title="2012-11-01 14.10.53" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="2012-11-01 14.10.53" src="http://blogs.microsoft.co.il/blogs/idof/2012-11-01-14.10.53_thumb_34F8FF7C.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1401483" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Build2012/default.aspx">Build2012</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>BUILD 2012 – Day 2 Overview</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/01/build-2012-day-2-overview.aspx</link><pubDate>Thu, 01 Nov 2012 10:13:05 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1398928</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1398928</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/01/build-2012-day-2-overview.aspx#comments</comments><description>&lt;p&gt;So day 2 started with a keynote that had “Windows Azure” written all over the stage, so that was promising (see &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/01/build-2012-day-1-overview.aspx"&gt;overview&lt;/a&gt; of day 1).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-10.21.56_0BAC6C47.jpg"&gt;&lt;img title="2012-10-31 10.21.56" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-10-31 10.21.56" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-10.21.56_thumb_68B7469B.jpg" width="1028" height="772" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;By the way, if you’ll compare the stage to yesterday’s keynote you’ll see the stage is empty – that is because all the demos are in the cloud &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_35A76A9A.png" /&gt;&lt;/p&gt;  &lt;p&gt;Some of the stuff shown in the &lt;a href="http://channel9.msdn.com/Events/Build/2012/1-002"&gt;keynote&lt;/a&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Mobile Services&lt;/strong&gt;.       &lt;br /&gt;this feature was rolled out in August, but the demo was very good and managed to show the highlights of Mobile Services in a couple of minutes. Really great demo, I recommend you watch it.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Web API and SignalR.&lt;/strong&gt;       &lt;br /&gt;Most of these stuff are already known for a couple of months, but the release of SignalR in ASP.NET 4.5 is a bit new.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Media Services.&lt;/strong&gt;       &lt;br /&gt;A not so used feature of Windows Azure (at least by me), but sounds cool for people wanting to publish media through Windows Azure.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;TFS.        &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://tfs.visualstudio.com/"&gt;Team Foundation Services&lt;/a&gt; (not to be confused with the other TFS – Team Foundation &lt;strong&gt;Server&lt;/strong&gt;) has been released. If you have a team of under 5 people the service is free, for bigger groups, it is currently free, but next year prices will be announced (free for MSDN subscribers).&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Hadoop and HDInsight.        &lt;br /&gt;&lt;/strong&gt;There is a new SDK and HIVE is also queryable now with LINQ.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Some other announcements:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Caching &lt;/strong&gt;– The Windows Azure Caching is out of preview and is now GA (general availability)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SDK 1.8&lt;/strong&gt; – The &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35448"&gt;October SDK&lt;/a&gt; is out with some new stuff&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;.NET 4.5 in Cloud Services &lt;/strong&gt;– Last week it was announced that Web Sites support .NET 4.5, and now Cloud Services (Worker/Web roles) also support it. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After this very long but cool keynote I went on to pick my sessions. Had to skip the first set of sessions because they were mostly introduction-level. After lunch I went on to see Mark Russinovich’s session about &lt;a href="http://channel9.msdn.com/Events/Build/2012/2-011"&gt;IaaS in Windows Azure&lt;/a&gt; (Virtual Machines and Virtual Networks). I’m familiar with some of this stuff, but hearing Mark is always much fun, and you also get to see some of the inner tools that are used by the Windows Azure team.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-14.50.32_1BD3346B.jpg"&gt;&lt;img title="2012-10-31 14.50.32" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-10-31 14.50.32" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-14.50.32_thumb_39A0D0F8.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My next session was the &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-026"&gt;Advanced IaaS&lt;/a&gt; session. It was a lot more technical than the introductory session (duh). Using PowerShell and other Command-Line tools to control Virtual Machines in Azure.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-16.31.04_5E2238AF.jpg"&gt;&lt;img title="2012-10-31 16.31.04" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-10-31 16.31.04" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-16.31.04_thumb_30047490.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sorry for the lousy picture, I sat in the back. Also for the odd slide, I missed the photo-op of the summary slide.&lt;/p&gt;  &lt;p&gt;My last session for the day was about building &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-030"&gt;highly available solutions in Windows Azure&lt;/a&gt; (part II). The session was nice, showing some tips for properly using retry policies for SQL Databases and Windows Azure Caching. There was also some tips about diagnostics in Windows Azure Web apps, nice content.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-18.15.34_09926B78.jpg"&gt;&lt;img title="2012-10-31 18.15.34" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2012-10-31 18.15.34" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-31-18.15.34_thumb_2379EF9D.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Waiting for day 3 for more Windows Azure sessions, and for our Windows Azure Insiders Post-Conference.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1398928" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Build2012/default.aspx">Build2012</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>BUILD 2012 – Day 1 Overview</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/01/build-2012-day-1-overview.aspx</link><pubDate>Thu, 01 Nov 2012 04:50:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1398219</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1398219</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/11/01/build-2012-day-1-overview.aspx#comments</comments><description>&lt;p&gt;Ok, first, just in case you aren’t familiar with my work – I’m a server/web/cloud guy, not a client guy, so all the hype about Windows 8 and Phone 8 sounds to me like “bla bla bla”. I’m into servers and Windows Azure, so day 2 and on is more to my like than Day 1.&lt;/p&gt;  &lt;p&gt;So day 1 began with the &lt;a href="http://channel9.msdn.com/Events/Build/2012/1-001"&gt;keynote&lt;/a&gt; where Steve Ballmer did his “shopping channel” appearance, showing the various hardware running Windows 8.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.34.28_59ED5635.jpg"&gt;&lt;img width="644" height="484" title="2012-10-30 09.34.28" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.34.28" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.34.28_thumb_6D2E0CD4.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.09.48_56F7F182.jpg"&gt;&lt;img width="644" height="484" title="2012-10-30 09.09.48" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.09.48" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.09.48_thumb_707F7EAF.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.50.51_532A26E5.jpg"&gt;&lt;img width="244" height="184" title="2012-10-30 09.50.51" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.50.51" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.50.51_thumb_6D1DE707.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.33.36_5753FEAA.jpg"&gt;&lt;img width="244" height="184" title="2012-10-30 09.33.36" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.33.36" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.33.36_thumb_15D94C51.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.37.54_22D32C62.jpg"&gt;&lt;img width="244" height="184" title="2012-10-30 09.37.54" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.37.54" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.37.54_thumb_47F076CE.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.41.09_120B81B4.jpg"&gt;&lt;img width="244" height="184" title="2012-10-30 09.41.09" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.41.09" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.41.09_thumb_5743D8DD.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.44.40_35E43341.jpg"&gt;&lt;img width="244" height="184" title="2012-10-30 09.44.40" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.44.40" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.44.40_thumb_41997A73.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.47.00_40C11489.jpg"&gt;&lt;img width="244" height="184" title="2012-10-30 09.47.00" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.47.00" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.47.00_thumb_5F2B5572.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;BTW, in the first photo, on the left, you can notice an 82” surface &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_45571F43.png" /&gt;.&lt;/p&gt;  &lt;p&gt;Then the keynote continued to showing off the new Windows Phone 8, and the announcement that the SDK has been released, yey (as mentioned, I’m not a client guy).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.36.27_1DB0A319.jpg"&gt;&lt;img width="644" height="484" title="2012-10-30 09.36.27" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 09.36.27" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-09.36.27_thumb_5516B447.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;The rest of the day was mostly Windows 8 / Phone 8 sessions, so I looked for the one session that was about .NET stuff, and found the &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-031"&gt;Entity Framework&lt;/a&gt; session which was cool, since at the end of it we saw some of the new features of Entity Framework 6 which was released today in Alpha.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-15.03.11_65AEAF35.jpg"&gt;&lt;img width="644" height="484" title="2012-10-30 15.03.11" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 15.03.11" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-15.03.11_thumb_03ACBD2A.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-15.04.17_08AEFAD9.jpg"&gt;&lt;img width="644" height="484" title="2012-10-30 15.04.17" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 15.04.17" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-15.04.17_thumb_66E32247.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I really like some of the new features, especially the conventions that will make life easier for developers that have to deal with DBAs that are strict about database conventions.&lt;/p&gt;  &lt;p&gt;The rest of the day was spent on talking to people about Windows Azure, and checking out our (Sasha Goldstein, Dima Zurbalev, and yours truly) new “Pro .NET Performance” book in the Microsoft Store (4th from the right):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-16.57.21_45837CAB.jpg"&gt;&lt;img width="1028" height="772" title="2012-10-30 16.57.21" style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="2012-10-30 16.57.21" src="http://blogs.microsoft.co.il/blogs/idof/2012-10-30-16.57.21_thumb_116EDD58.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Oh, and we also got some SWAG – a new Windows 8 surface and a Windows 8 phone.&lt;/p&gt;  &lt;p&gt;Day 2 and on is server and Azure, so good stuff to come…&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1398219" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Build2012/default.aspx">Build2012</category></item><item><title>Two months speaking spree</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/10/05/two-months-speaking-spree.aspx</link><pubDate>Fri, 05 Oct 2012 22:03:46 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1330430</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1330430</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/10/05/two-months-speaking-spree.aspx#comments</comments><description>&lt;p&gt;If you’ve been checking my blog in the last couple of weeks, you might have noticed I haven’t been posting much. In the past two months I have been traveling around the world, speaking in conferences and local user groups.&lt;/p&gt;  &lt;p&gt;So to sum up this intensive, fun times, here’s a list of all conferences I visited and links to all the material I showed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_thumb12_thumb_639A7B28.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image_thumb12_thumb" border="0" alt="image_thumb12_thumb" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb12_thumb_thumb_3BB77BC9.png" width="790" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;What’s new in WCF 4.5&lt;/li&gt;    &lt;li&gt;Building scalable, low-latency web apps with Windows Azure&lt;/li&gt;    &lt;li&gt;Embracing HTTP with the ASP.NET Web API&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can download the slides and code samples from &lt;a href="https://skydrive.live.com/?cid=5ef5be1ab30a6056&amp;amp;id=5EF5BE1AB30A6056%211781"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/10-5-2012-6-52-54-PM_395EBB72.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="10-5-2012 6-52-54 PM" border="0" alt="10-5-2012 6-52-54 PM" src="http://blogs.microsoft.co.il/blogs/idof/10-5-2012-6-52-54-PM_thumb_422EC3BE.png" width="604" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Debugging the web with Fiddler&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img src="http://www.web-developer-conference.de/var/ezwebin_site/storage/images/media/header/web-developer-conference/24655-6-ger-DE/Web-Developer-Conference.jpg" width="790" height="197" alt="" /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Building scalable, low-latency web apps with Windows Azure&lt;/li&gt;    &lt;li&gt;Debugging the web with Fiddler&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can download the slides and code samples from &lt;a href="https://skydrive.live.com/?cid=5ef5be1ab30a6056&amp;amp;id=5EF5BE1AB30A6056%211975"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_7239153F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_0DBE1743.png" width="604" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Embracing HTTP with the ASP.NET Web API&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img src="http://gotocon.com/dl/goto-aarhus-2012/Web/GOTO_header_forside_2012_960x175.png" width="790" height="144" alt="" /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Building scalable, low-latency web apps with Windows Azure&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can download the slides and code samples from &lt;a href="https://skydrive.live.com/?cid=5ef5be1ab30a6056&amp;amp;id=5EF5BE1AB30A6056%211990"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_1B70D34B.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_4B7B24CC.png" width="604" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Building scalable, low-latency web apps with Windows Azure&lt;/li&gt;    &lt;li&gt;The new face of ASP.NET: ASP.NET MVC, Razor, and jQuery&lt;/li&gt;    &lt;li&gt;Embracing HTTP with the ASP.NET Web API&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can download the slides and code samples from &lt;a href="https://skydrive.live.com/?cid=5ef5be1ab30a6056&amp;amp;id=5EF5BE1AB30A6056%211994"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As for future conferences, I’m going to have a couple of sessions and tutorials in the &lt;a href="http://www.sela.co.il/s/sdp2012_july/index.html"&gt;SDP&lt;/a&gt; (Sela Developer Practice) conference which will be in November in Israel. I will have a 1-hour session about the &lt;a href="http://www.sela.co.il/s/sdp2012_july/index.html#v8"&gt;new features of WCF 4.5&lt;/a&gt;, and the following three tutorial days:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.sela.co.il/s/sdp2012_july/index.html#v22"&gt;Debugging the web with Fiddler&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sela.co.il/s/sdp2012_july/index.html#v25"&gt;Building an App with Windows Phone, Windows Azure, and Visual Studio 2012&lt;/a&gt; (this tutorial will be with &lt;a href="http://beta.blogs.microsoft.co.il/blogs/michaelh/"&gt;Michael Haberman&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/roadan/"&gt;Yaniv Rodesnki&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sela.co.il/s/sdp2012_july/index.html#v30"&gt;HTTP fundamentals and ASP.NET Web API&lt;/a&gt; (this tutorial will be with &lt;a href="http://blogs.microsoft.co.il/blogs/roadan/"&gt;Yaniv Rodesnki&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_5FE0EA57.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_3791B803.png" width="604" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;So to sum up this bunch of conferences and the &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/23/hi-my-name-is-ido-flatow-and-in-this-session-we-will-talk-about.aspx"&gt;previous one&lt;/a&gt;:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;1 year, 3 continents, 7 countries, 9 conferences, 24 sessions. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;That’s it for 2012 conferences.&lt;/font&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/10/05/two-months-speaking-spree.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/10/05/two-months-speaking-spree.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/10/05/two-months-speaking-spree.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/10/05/two-months-speaking-spree.aspx" style="border:0px;" /&gt;&lt;/a&gt; 			  &lt;div class="addthis_toolbox addthis_default_style "&gt; &lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt; &lt;a class="addthis_button_compact"&gt;&lt;/a&gt; &lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt; &lt;/div&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1330430" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/.NET+4/default.aspx">.NET 4</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/fiddler/default.aspx">fiddler</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASP.NET+MVC+3/default.aspx">ASP.NET MVC 3</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Web+API/default.aspx">Web API</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Conferences/default.aspx">Conferences</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/2012/default.aspx">2012</category></item><item><title>Slides and demo from my Azure UG session</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/07/26/slides-and-demo-from-my-azure-ug-session.aspx</link><pubDate>Thu, 26 Jul 2012 21:22:30 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1172090</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1172090</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/07/26/slides-and-demo-from-my-azure-ug-session.aspx#comments</comments><description>&lt;p&gt;Early this week I had a session about building scalable, low-latency, secured web applications with Windows Azure.&lt;/p&gt;  &lt;p&gt;During the session, and despite all the network problems we had, I showed how to migrate an ASP.NET 4 MVC app to Windows Azure and incorporate the following features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Cloud services (compute)&lt;/li&gt;    &lt;li&gt;Storage&lt;/li&gt;    &lt;li&gt;CDNs&lt;/li&gt;    &lt;li&gt;Full IIS support&lt;/li&gt;    &lt;li&gt;Diagnostics&lt;/li&gt;    &lt;li&gt;ACS and claim-based identities with WIF&lt;/li&gt;    &lt;li&gt;SQL Azure&lt;/li&gt;    &lt;li&gt;Caching worker roles&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The demo code and the few slides I shown are available online at: &lt;a href="http://sdrv.ms/OmSA2n"&gt;http://sdrv.ms/OmSA2n&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m going to have this session three more times during the next couple of months in the US, Germany, and Denmark, so if you happen to attend one of these places, come and say hi.&lt;/p&gt;  &lt;p&gt;Also, if anyone wish to have me speak at their local user group while I’m attending these conferences, let me know via email or Twitter (@IdoFlatow).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_thumb12_514DEABD.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image_thumb12" border="0" alt="image_thumb12" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb12_thumb_72313797.png" width="790" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.web-developer-conference.de/var/ezwebin_site/storage/images/media/header/web-developer-conference/24655-6-ger-DE/Web-Developer-Conference.jpg" width="790" height="197" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://gotocon.com/dl/goto-aarhus-2012/Web/GOTO_header_forside_2012_960x175.png" width="790" height="144" alt="" /&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/07/26/slides-and-demo-from-my-azure-ug-session.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/07/26/slides-and-demo-from-my-azure-ug-session.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/07/26/slides-and-demo-from-my-azure-ug-session.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/07/26/slides-and-demo-from-my-azure-ug-session.aspx" style="border:0px;" /&gt;&lt;/a&gt; 			  &lt;div class="addthis_toolbox addthis_default_style "&gt; &lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt; &lt;a class="addthis_button_compact"&gt;&lt;/a&gt; &lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt; &lt;/div&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1172090" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/webdev/default.aspx">webdev</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Conferences/default.aspx">Conferences</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Cloud/default.aspx">Cloud</category></item><item><title>Fixing issues with IIS Express 8 after installing Windows Azure SDK 1.7</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/06/24/fixing-issues-with-iis-express-8-after-installing-windows-azure-sdk-1-7.aspx</link><pubDate>Sun, 24 Jun 2012 22:35:21 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1130322</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1130322</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/06/24/fixing-issues-with-iis-express-8-after-installing-windows-azure-sdk-1-7.aspx#comments</comments><description>&lt;p&gt;If you are having problems using IIS Express 8 to host local Azure deployments after installing the Windows Azure SDK 1.7, you should probably continue reading this…&lt;/p&gt;  &lt;p&gt;One of the new features of the Azure SDK 1.7 is the &lt;a href="http://msmvps.com/blogs/nunogodinho/archive/2012/06/07/iis-express-support-for-local-development-in-windows-azure-sdk-1-7.aspx"&gt;support&lt;/a&gt; for running local emulator with IIS Express 8 instead of the full IIS. This is supported for both Windows 7 and Windows 8.&lt;/p&gt;  &lt;p&gt;At first when I tried this feature it simply didn’t wok. I previously had IIS Express 7.5 on my machine, and after installing the new SDK, I created a new web role, and when trying to run it locally, IIS Express did not fire up, and the browser opened showing it is unable to locate the requested address.&lt;/p&gt;  &lt;p&gt;I then uninstalled the SDK, followed by uninstalling IIS Express. After making sure I don’t have any IIS Express “leftovers” in my machine, I reinstalled the Azure 1.7 SDK, making sure it also installed the new version of IIS Express.&lt;/p&gt;  &lt;p&gt;Next, I opened the previously created project, and this time when I tried to run it, the following message appeared:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“The Windows Azure Emulator could not start the web server. The properties for this project specify that it should run on IIS Express, but no compatible version of IIS Express was found. To run this project, either install IIS Express 8 or higher, or change the ‘Use web server’ property for this project to ‘Local IIS web server’. See output window for more information.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Since IIS Express 8 was successfully installed and it did work (VS 2010 SP1 was able to run web sites on it), it was time for the big guns – using reflector to find out what csrun.exe does. It seems that one of the first things csrun does is to create a COM object called Microsoft.IIS.VersionManager to check which version of IIS is installed on the machine. After opening the registry and finding the key, I discovered that I don’t have permission to read the key. Eureka!&lt;/p&gt;  &lt;p&gt;Following &lt;a href="http://forums.iis.net/t/1174687.aspx"&gt;this&lt;/a&gt; forum thread, I was able to add permissions to the key. After setting the permissions, I returned to Visual Studio, and this time I had no problem getting the emulator to use IIS Express 8 to host my web site. Problem solved!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you need to look for the registry key, it is located under HKEY_LOCAL_MACHINE\Software\Microsoft\Classes\Microsoft.IIS.VersionManager (make sure you also check permission on the second key, Microsoft.IIS.VersionManager.1)&lt;/p&gt;  &lt;p&gt;Until the next bug…&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/06/24/fixing-issues-with-iis-express-8-after-installing-windows-azure-sdk-1-7.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/06/24/fixing-issues-with-iis-express-8-after-installing-windows-azure-sdk-1-7.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/06/24/fixing-issues-with-iis-express-8-after-installing-windows-azure-sdk-1-7.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/06/24/fixing-issues-with-iis-express-8-after-installing-windows-azure-sdk-1-7.aspx" style="border:0px;" /&gt;&lt;/a&gt; 			  &lt;div class="addthis_toolbox addthis_default_style "&gt; &lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt; &lt;a class="addthis_button_compact"&gt;&lt;/a&gt; &lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt; &lt;/div&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1130322" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Registry/default.aspx">Registry</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Azure+SDK+1.7/default.aspx">Azure SDK 1.7</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/IIS+Express+8/default.aspx">IIS Express 8</category></item><item><title>Hi, my name is Ido Flatow, and in this session we will talk about…</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/23/hi-my-name-is-ido-flatow-and-in-this-session-we-will-talk-about.aspx</link><pubDate>Fri, 23 Mar 2012 04:23:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1040404</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1040404</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/23/hi-my-name-is-ido-flatow-and-in-this-session-we-will-talk-about.aspx#comments</comments><description>&lt;p&gt;In the next couple of months, I’m going to say that phrase many times. &lt;/p&gt;
&lt;p&gt;My &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/02/the-month-of-october-bears-good-news.aspx"&gt;speaking&lt;/a&gt; engagements last year at VSLive in &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/20/my-mvc-jquery-razor-nuget-iis-express-session-at-vs-live-2011-redmond.aspx"&gt;Redmond&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/12/07/slide-decks-and-demo-code-from-my-visual-studio-live-2011-orlando-sessions.aspx"&gt;Orlando&lt;/a&gt;, and in the North-American MCT Summit in San-Francisco marked my first steps into the world of becoming an international speaker. Until that time, most of my speaker experience came from speaking back home in Israel in courses and conferences, and here and there teaching a course abroad in Sela’s &lt;a href="http://sela.co.il/?CategoryID=464"&gt;branches&lt;/a&gt; in the world. Speaking in a conference is somewhat similar to a course, only 10x times the size of the audience, and more pressure since you only have one hour to make a good impression instead of an entire week.&lt;/p&gt;
&lt;p&gt;And now it’s time for the 2012 conferences. These next couple of months are going to be quite hectic, with conferences worldwide, and me skipping from one continent to the other. So here is my appearance list, just in case you are one of my groupies and wish to attend each of my sessions &lt;img style="BORDER-BOTTOM-STYLE:none;BORDER-LEFT-STYLE:none;BORDER-TOP-STYLE:none;BORDER-RIGHT-STYLE:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_3A9971BD.png" /&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_27784511.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-BOTTOM:0px;BORDER-LEFT:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_1851406A.png" width="769" height="209" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;March 25-29 – &lt;a href="http://www.sela.co.il/s/SDP2012/index.html"&gt;Sela Developer Practice&lt;/a&gt; (SDP). Sela, Israel.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In our annual conference I will deliver two workshops:&lt;/p&gt;
&lt;p&gt;1. &lt;strong&gt;Advanced WCF&lt;/strong&gt; – In this 1-day workshop I will show monitoring techniques for WCF, discuss about WCF performance, demonstrate various WCF security concepts, and show some useful tips for accessing WCF from client applications. In addition, I will demonstrate how to extend WCF by creating custom behaviors.&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;Debugging the web with Fiddler&lt;/strong&gt; – In this 1-day workshop I will show you how to use Fiddler from bottom to top: how to inspect sessions, filter requests and responses, check statistics and timeline, use the composer and auto-responder, and how to create your own inspector and custom handler for Fiddler.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/gids_346E1123.jpg"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-BOTTOM:0px;BORDER-LEFT:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;PADDING-TOP:0px;" title="gids" border="0" alt="gids" src="http://blogs.microsoft.co.il/blogs/idof/gids_thumb_63704CFA.jpg" width="769" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;April 17-20 - &lt;a href="http://www.developermarch.com/developersummit/"&gt;Great Indian Developer Summit&lt;/a&gt; (GIDS). Bangalore, India.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This will be my first appearance in GIDS, and my first time to India, so I’m twice as happy to speak at the conference. In GIDS I will have four sessions:&lt;/p&gt;
&lt;p&gt;1. &lt;strong&gt;What’s new in WCF 4&lt;/strong&gt; – simplified configuration, better IIS hosting, routing and discovery services and more. Many groups are still in the process of migrating from previous versions of .NET (1.1, 2, 3.5) to .NET 4, so if you are migrating to WCF 4, or already using it and want to learn more about it, this session is for you.&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;What’s new in WCF 4.5&lt;/strong&gt; – UDP transport, WebSocket support, configuration Intellisense, streaming improvements, etc.. If you want to learn about the new features which will be available late this year in .NET 4.5 you should definitely come (or at the least start by &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx"&gt;reading&lt;/a&gt; my posts about it).&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;ASP.NET MVC Razor And jQuery: The New Face Of ASP.NET&lt;/strong&gt; – so many new frameworks and concept that will make every web developer’s head spin. Unfortunately this is only a 1-hour session, so we won’t be able to touch ground on all the technologies, but at least we will have enough time to talk about MVC, jQuery, and Razor, as the new way for building web applications.&lt;/p&gt;
&lt;p&gt;4. &lt;strong&gt;Introducing The Windows Azure HPC Scheduler – &lt;/strong&gt;doing HPC using Windows HPC Server? with the new release of the Windows Azure HPC Scheduler, you can migrate your entire solution to the cloud without using any local cluster, and use the Windows Azure cloud elasticity to increase/reduce resources as needed. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_0DFC080B.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-BOTTOM:0px;BORDER-LEFT:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_0EA4BE35.png" width="676" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;May 14-17 – &lt;a href="http://vslive.com/Events/New-York-2012/Home.aspx"&gt;Visual Studio Live&lt;/a&gt; (VSLive). New York, USA.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This will be my third appearance at VSLive, but I’m as excited as ever, as I will be presenting three sessions, back-to-back, all of them about WCF:&lt;/p&gt;
&lt;p&gt;1. &lt;strong&gt;What&amp;#39;s new in WCF 4 &lt;/strong&gt;– as mentioned before, a very useful session if you are currently migrating to .NET 4.&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;What’s new in WCF 4.5&lt;/strong&gt; – just imagine being in a conference room and listening to 2 hours of new WCF features (4 &amp;amp; 4.5). If I were you, I would just wait to get back to the office to try it out.&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;Monitoring and troubleshooting WCF services – &lt;/strong&gt;trace files, message logs, ETW, WMI, performance counters, AppFabric monitoring … Come and see all the ways for monitoring your WCF services. In addition we will discuss various aspects of instance modes and concurrency in WCF, and go over many of the settings in WCF that can affect the performance of your services.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/NDC_logo_date_2012_260F4C99.jpg"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-BOTTOM:0px;BORDER-LEFT:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;PADDING-TOP:0px;" title="NDC_logo_date_2012" border="0" alt="NDC_logo_date_2012" src="http://blogs.microsoft.co.il/blogs/idof/NDC_logo_date_2012_thumb_473F4275.jpg" width="464" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;June 6-8 – &lt;a href="http://www.ndcoslo.com/"&gt;Norwegian Developers Conference&lt;/a&gt; (NDC). Oslo, Norway.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First time to NDC, but this time I will not fly alone. My colleague, &lt;a href="http://blogs.microsoft.co.il/blogs/roadan"&gt;Yaniv Rodenski&lt;/a&gt;, is also a speaker at NDC where he will have a session on Hadoop on Windows Azure. As for me, I will only have one session this time, so I’ll have more time to visit Oslo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debugging the Web with Fiddler&lt;/strong&gt; – learn to use Fiddler, the famous Web debugger, to inspect requests and response, catch message as they pass and alter them, create responses without ever reaching the server, and write your own extensions to Fiddler. I recommend you install &lt;a href="http://www.fiddler2.com/fiddler2/version.asp"&gt;Fiddler&lt;/a&gt; on your laptop prior to the session so you can try it out during my talk.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_72A3636F.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-BOTTOM:0px;BORDER-LEFT:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_1B121FB7.png" width="790" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;August 6-10 – &lt;a href="http://vslive.com/Events/Redmond-2012/Home.aspx"&gt;Visual Studio Live&lt;/a&gt; (VSLive). Redmond, WA, USA.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Back again to the Microsoft campus on Redmond, this will be my fourth VSLive conference, and second time as a speaker in the Redmond event. Luckily for me, I will not have to endure the 16 hours of flight (not including layovers) alone, since I will be accompanied by &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/"&gt;Gil Fink&lt;/a&gt;, another one of my colleagues, who is also speaking at VSLive on HTML5 and Entity Framework. As for me, my sessions are:&lt;/p&gt;
&lt;p&gt;1. &lt;strong&gt;Building secured, scalable, low-latency web applications with the Windows Azure Platform – &lt;/strong&gt;in the past years, whenever you saw a session about Web apps in Windows Azure, you always got a lot of slides, and a bit of demo code. Well no more! this is a 1-hour code only session where I will show how to create a Web application for Windows Azure that utilizes everything Azure has to offer – compute, storage, CDN, ACS, AppFabric Cache, SQL Azure, Full IIS, WCF worker roles and more. &lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;Embracing HTTP with ASP.NET Web APIs – &lt;/strong&gt;although I’ve always been the “WCF guy”, I’m in the business of Web technologies, and you can’t build proper Web apps without harnessing the full power of the HTTP protocol. In this session I will show you what the new ASP.NET Web API is all about, and how you can use it to build HTTP services.&lt;/p&gt;
&lt;p&gt;That’s the agenda for now, and I guess that there will be more updates in the next couple of weeks. My calendar for September-December is still opened, so if you want to book me for a conference, let me know.&lt;/p&gt;
&lt;p&gt;I will also tweet with live updates from the conferences, so don’t forget to follow me @IdoFlatow&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/23/hi-my-name-is-ido-flatow-and-in-this-sessions-we-will-talk-about.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/23/hi-my-name-is-ido-flatow-and-in-this-sessions-we-will-talk-about.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/23/hi-my-name-is-ido-flatow-and-in-this-sessions-we-will-talk-about.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/23/hi-my-name-is-ido-flatow-and-in-this-sessions-we-will-talk-about.aspx" /&gt;&lt;/a&gt; 
&lt;div class="addthis_toolbox addthis_default_style "&gt;&lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt;&lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt;&lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt;&lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt;&lt;a class="addthis_button_compact"&gt;&lt;/a&gt;&lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt;
&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1040404" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/SDP/default.aspx">SDP</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Speaker/default.aspx">Speaker</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/GIDS/default.aspx">GIDS</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/NDC/default.aspx">NDC</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/VSLive/default.aspx">VSLive</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>What’s new in WCF 4.5? WebSocket support (Part 2 of 2)</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/06/what-s-new-in-wcf-4-5-websocket-support-part-2-of-2.aspx</link><pubDate>Tue, 06 Mar 2012 20:57:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1027907</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>153</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1027907</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/06/what-s-new-in-wcf-4-5-websocket-support-part-2-of-2.aspx#comments</comments><description>&lt;p&gt;It’s time for post No. 12 in the WCF 4.5 series. Part 1 of 2 was about WebSocket support with SOAP-based messages. Part 2 is about WebSocket support with plain text messages that enables the interaction between web browsers and WCF.&lt;/p&gt;  &lt;p&gt;Previous posts:&lt;/p&gt;  &lt;p&gt;1. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/16/what-s-new-in-wcf-4-5-let-s-start-with-wcf-configuration.aspx"&gt;What’s new in WCF 4.5? let’s start with WCF configuration&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/17/what-s-new-in-wcf-4-5-a-single-wsdl-file.aspx"&gt;What’s new in WCF 4.5? a single WSDL file&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/19/what-s-new-in-wcf-4-5-configuration-tooltips-and-intellisense-in-config-files.aspx"&gt;What’s new in WCF 4.5? Configuration tooltips and intellisense in config files&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-configuration-validations.aspx"&gt;What’s new in WCF 4.5? Configuration validations&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/09/25/what-s-new-in-wcf-4-5-multiple-authentication-support-on-a-single-endpoint-in-iis.aspx"&gt;What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx"&gt;What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/10/what-s-new-in-wcf-4-5-basichttpsbinding.aspx"&gt;What’s new in WCF 4.5? BasicHttpsBinding&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/31/what-s-new-in-wcf-4-5-changed-default-for-asp-net-compatibility-mode.aspx"&gt;What’s new in WCF 4.5? Changed default for ASP.NET compatibility mode&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;9. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2012/01/17/what-s-new-in-wcf-4-5-improved-streaming-in-iis-hosting.aspx"&gt;What’s new in WCF 4.5? Improved streaming in IIS hosting&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;10. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2012/02/15/what-s-new-in-wcf-4-5-udp-transport-support.aspx"&gt;What’s new in WCF 4.5? UDP transport support&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;11. &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/01/what-s-new-in-wcf-4-5-websocket-support-part-1-of-2.aspx"&gt;What’s new in WCF 4.5? WebSocket support (Part 1 of 2)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you haven’t read &lt;a href="http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/01/what-s-new-in-wcf-4-5-websocket-support-part-1-of-2.aspx"&gt;part 1&lt;/a&gt;, please go over it first so you can get the gist about WebSockets, NetHttpBinding, and how it is used in WCF.&lt;/p&gt;  &lt;p&gt;In part 1 I demonstrated how to create both binary encoded SOAP bindings and text encoded SOAP bindings with WebSockets. Problem is that in JavaScript it can get difficult to create and parse SOAP messages - this is why we tend to use XML/JSON based bindings (such as WebHttpBinding) instead of SOAP-based bindings (BasicHttpBinding/WsHttpBinding) when calling WCF services from JavaScript.&lt;/p&gt;  &lt;p&gt;Creating a duplex service with WebSockets, NetHttpBinding, and plain text messages, is just like creating any other WCF service:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Define the contract and callback contract &lt;/li&gt;    &lt;li&gt;Implement the service &lt;/li&gt;    &lt;li&gt;Configure the host &lt;/li&gt;    &lt;li&gt;Consume the service from a client app &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;First we will create our contract. Since we need to receive and send messages, we will create a duplex contract, each contract with a single method which we will mark with &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.action.aspx"&gt;action=”*”&lt;/a&gt;:&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:facbda8f-f54c-4f54-b436-105ea3b11442" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;Contracts&lt;/div&gt; &lt;div style="overflow:auto;max-height:300px;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;ServiceContract&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;interface&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IWebSocketEchoCallback&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;OperationContract&lt;/span&gt;&lt;span&gt;(IsOneWay = &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;, Action = &lt;/span&gt;&lt;span&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span&gt;)]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; Send(&lt;/span&gt;&lt;span&gt;Message&lt;/span&gt;&lt;span&gt; message);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;ServiceContract&lt;/span&gt;&lt;span&gt;(CallbackContract = &lt;/span&gt;&lt;span&gt;typeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;IWebSocketEchoCallback&lt;/span&gt;&lt;span&gt;))]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;interface&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IWebSocketEcho&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;OperationContract&lt;/span&gt;&lt;span&gt;(IsOneWay = &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;, Action = &lt;/span&gt;&lt;span&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span&gt;)]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; Receive(&lt;/span&gt;&lt;span&gt;Message&lt;/span&gt;&lt;span&gt; message);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;The echo service itself is a simple implementation that receives the message and sends it back to the client:&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2adb4134-f483-4804-aa6b-575eac755b7a" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;EchoService&lt;/div&gt; &lt;div style="overflow:auto;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EchoService&lt;/span&gt;&lt;span&gt; : &lt;/span&gt;&lt;span&gt;IWebSocketEcho&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;IWebSocketEchoCallback&lt;/span&gt;&lt;span&gt; _callback = &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; EchoService()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;_callback =&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;OperationContext&lt;/span&gt;&lt;span&gt;.Current.GetCallbackChannel&amp;lt;&lt;/span&gt;&lt;span&gt;IWebSocketEchoCallback&lt;/span&gt;&lt;span&gt;&amp;gt;();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; Receive(&lt;/span&gt;&lt;span&gt;Message&lt;/span&gt;&lt;span&gt; message)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (message == &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;throw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ArgumentNullException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;message&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;WebSocketMessageProperty&lt;/span&gt;&lt;span&gt; property = &lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;WebSocketMessageProperty&lt;/span&gt;&lt;span&gt;)message.Properties[&lt;/span&gt;&lt;span&gt;&amp;quot;WebSocketMessageProperty&amp;quot;&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;WebSocketContext&lt;/span&gt;&lt;span&gt; context = property.WebSocketContext;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; queryParameters = &lt;/span&gt;&lt;span&gt;HttpUtility&lt;/span&gt;&lt;span&gt;.ParseQueryString(context.RequestUri.Query);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; content = &lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;.Empty;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (!message.IsEmpty)&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;[] body = message.GetBody&amp;lt;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;[]&amp;gt;();&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;content = &lt;/span&gt;&lt;span&gt;Encoding&lt;/span&gt;&lt;span&gt;.UTF8.GetString(body);&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;/li&gt; &lt;li&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;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;// Do something with the content/queryParams&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;// ...&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; str = &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;.IsNullOrEmpty(content)) &lt;/span&gt;&lt;span&gt;// Connection open message&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;str = &lt;/span&gt;&lt;span&gt;&amp;quot;Opening connection from user &amp;quot;&lt;/span&gt;&lt;span&gt; + &lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;queryParameters[&lt;/span&gt;&lt;span&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;&lt;span&gt;].ToString();&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;/li&gt; &lt;li&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;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;// Message received from client&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;str = &lt;/span&gt;&lt;span&gt;&amp;quot;Received message: &amp;quot;&lt;/span&gt;&lt;span&gt; + content;&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;/li&gt; &lt;li&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;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;_callback.Send(CreateMessage(str));&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;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Message&lt;/span&gt;&lt;span&gt; CreateMessage(&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; content)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Message&lt;/span&gt;&lt;span&gt; message = &lt;/span&gt;&lt;span&gt;ByteStreamMessage&lt;/span&gt;&lt;span&gt;.CreateMessage(&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ArraySegment&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt;&amp;gt;(&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Encoding&lt;/span&gt;&lt;span&gt;.UTF8.GetBytes(content)));&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;message.Properties[&lt;/span&gt;&lt;span&gt;&amp;quot;WebSocketMessageProperty&amp;quot;&lt;/span&gt;&lt;span&gt;] =&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WebSocketMessageProperty&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;{ MessageType = &lt;/span&gt;&lt;span&gt;WebSocketMessageType&lt;/span&gt;&lt;span&gt;.Text };&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; message;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;The &lt;strong&gt;Receive &lt;/strong&gt;method handles two types of calls:&lt;/p&gt;  &lt;p&gt;1. The first “connection upgrade” message – when the client first connects to the service and tries to upgrade the connection from HTTP to WebSocket. In this call the request is sent using HTTP GET, and therefore there is no body, but we can access the URL’s query string.&lt;/p&gt;  &lt;p&gt;2. The second message and on are the messages being sent by the client over the WebSocket transport – these messages contain a message body, with no special query string.&lt;/p&gt;  &lt;p&gt;Line 5-9 shows how to create a standard duplex service by storing the callback channel in a local variable. The callback channel will be used later on in the code in order to send messages back to the client. The service uses the default instancing mode which is PerSession, so a new instance will be created for each client, and the local variable will point to a different callback channel in each service instance.&lt;/p&gt;  &lt;p&gt;Lines 17-27 demonstrates the technique of parsing the message – either by checking its query string or by reading the byte array from the message and transforming it to a string.&lt;/p&gt;  &lt;p&gt;Lines 32-43 checks which type of message is being handled, the first connection request, or a consequent message from the client. In each case the service responds by echoing the message back to the client.&lt;/p&gt;  &lt;p&gt;Line 46-56 demonstrates how to create a Message object with a simple string content when using the byte stream encoding.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: to use the &lt;strong&gt;ByteStreamMessage &lt;/strong&gt;type, add a reference to the &lt;strong&gt;System.ServiceModel.Channels&lt;/strong&gt; assembly.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: WebSocket messages can be either text or binary, so if you are planning on using binary messages you will need to change the code to work with byte arrays instead of strings.&lt;/p&gt;  &lt;p&gt;Now that we have the contracts and the service, we need to define our host and endpoint. In this example I will use IIS as the host and I will use the routing mechanism of ASP.NET to create a service URL address that doesn’t contain the annoying “.svc” extension. The following global.asax code shows how to do that:&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a7dabbd6-e54f-4812-9f2d-50147332dc56" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;Global.Asax&lt;/div&gt; &lt;div style="overflow:auto;max-height:300px;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Global&lt;/span&gt;&lt;span&gt; : System.Web.&lt;/span&gt;&lt;span&gt;HttpApplication&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;protected&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; Application_Start(&lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt; sender, &lt;/span&gt;&lt;span&gt;EventArgs&lt;/span&gt;&lt;span&gt; e)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;RouteTable&lt;/span&gt;&lt;span&gt;.Routes.Add(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ServiceRoute&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;echo&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ServiceHostFactory&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;typeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;EchoService&lt;/span&gt;&lt;span&gt;)));&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;And now for the endpoint configuration. Since NetHttpBinding uses SOAP messages, and there is no “WebSocketHttpBinding” for passing plain byte streams, we need to create a custom binding that will allow us to receive messages over WebSocket where the message can either be a text message or a binary message (the WebSocket API supports both types).&lt;/p&gt;  &lt;p&gt;The standard encodings of WCF - text, binary, and MTOM, will not enable us to receive non-SOAP byte streams, that is why we need to use a new encoding which was introduced in WCF 4 – the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.bytestreammessageencodingbindingelement.aspx"&gt;ByteStreamMessageEncoding&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The following endpoint and binding configuration will allow us to open a WebSocket listener that receives simple byte streams:&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:137d57bc-f4a5-4838-9de4-223ab6db75bf" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;Service Configuration&lt;/div&gt; &lt;div style="overflow:auto;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt; &amp;lt;&lt;/span&gt;&lt;span&gt;system.serviceModel&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;serviceHostingEnvironment&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;aspNetCompatibilityEnabled&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;multipleSiteBindingsEnabled&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;services&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;UsingWebSockets.EchoService&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;endpoint&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;address&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;binding&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;customBinding&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;bindingConfiguration&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;webSocket&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;contract&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;UsingWebSockets.IWebSocketEcho&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;service&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;services&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;bindings&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;customBinding&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;binding&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;webSocket&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;byteStreamMessageEncoding&lt;/span&gt;&lt;span&gt;/&amp;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;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;httpTransport&lt;/span&gt;&lt;span&gt;&amp;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;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;webSocketSettings&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;transportUsage&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;Always&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;createNotificationOnConnection&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;httpTransport&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;binding&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;customBinding&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;bindings&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;system.serviceModel&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;The important part in the configuration is lines 13-21:&lt;/p&gt;  &lt;p&gt;1. We set the &lt;strong&gt;transportUsage &lt;/strong&gt;to &lt;strong&gt;Always &lt;/strong&gt;to force the usage of WebSocket rather than HTTP.&lt;/p&gt;  &lt;p&gt;2. We set the &lt;strong&gt;createNotificationOnConnection&lt;/strong&gt; to &lt;strong&gt;true&lt;/strong&gt; to allow our Receive method to be invoked for the connection request message (the first GET request which is sent to the service).&lt;/p&gt;  &lt;p&gt;3. We use the &lt;strong&gt;byteStreamMessageEncoding&lt;/strong&gt; which allows the service to receive simple byte streams as input instead of complex SOAP structures.&lt;/p&gt;  &lt;p&gt;To test our code we can add an HTML page to our project. The following code is based on the StockTicker demo from the HTML5 Labs &lt;a href="http://html5labs.interoperabilitybridges.com/prototypes/websockets/websockets/info"&gt;website&lt;/a&gt;:&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d186c6f8-332f-4049-a5a4-b65694fda42a" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;Echo Client&lt;/div&gt; &lt;div style="overflow:auto;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xmlns&lt;/span&gt;&lt;span&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Echo Demo&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=&amp;quot;Scripts/jquery-1.4.1.js&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;$(document).ready(&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (!window.WebSocket &amp;amp;&amp;amp; window.MozWebSocket) {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;window.WebSocket = window.MozWebSocket;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;#39;#echoForm&amp;#39;&lt;/span&gt;&lt;span&gt;).submit(&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; (event) {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;#39;#echoForm&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;.add(&lt;/span&gt;&lt;span&gt;&amp;#39;#echoForm &amp;gt; *&amp;#39;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;.attr(&lt;/span&gt;&lt;span&gt;&amp;#39;disabled&amp;#39;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;#39;disabled&amp;#39;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; uri = &lt;/span&gt;&lt;span&gt;&amp;#39;ws://&amp;#39;&lt;/span&gt;&lt;span&gt; + window.location.hostname +&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;window.location.pathname.replace(&lt;/span&gt;&lt;span&gt;&amp;#39;EchoDemo.html&amp;#39;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;#39;echo&amp;#39;&lt;/span&gt;&lt;span&gt;) +&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;#39;?Name=&amp;#39;&lt;/span&gt;&lt;span&gt; + $(&lt;/span&gt;&lt;span&gt;&amp;quot;#name&amp;quot;&lt;/span&gt;&lt;span&gt;).val();&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;connect(uri);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;event.preventDefault();&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;});&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;});&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; connect(uri) {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;#39;#messages&amp;#39;&lt;/span&gt;&lt;span&gt;).prepend(&lt;/span&gt;&lt;span&gt;&amp;#39;&amp;lt;div&amp;gt;Connecting...&amp;lt;/div&amp;gt;&amp;#39;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; websocket = &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; WebSocket(uri);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;websocket.onopen = &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;window.focus();&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;#39;#echoForm&amp;#39;&lt;/span&gt;&lt;span&gt;).hide();&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;#39;#outputArea&amp;#39;&lt;/span&gt;&lt;span&gt;).show();&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;window.setInterval(&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&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;websocket.send(&lt;/span&gt;&lt;span&gt;&amp;quot;the time is &amp;quot;&lt;/span&gt;&lt;span&gt; + &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; Date());&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;}, 1000);&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;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;#39;#messages&amp;#39;&lt;/span&gt;&lt;span&gt;).html(&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;#39;&amp;lt;div&amp;gt;Connected. Waiting for messages...&amp;lt;/div&amp;gt;&amp;#39;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;};&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;websocket.onclose = &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (document.readyState == &lt;/span&gt;&lt;span&gt;&amp;quot;complete&amp;quot;&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; warn = $(&lt;/span&gt;&lt;span&gt;&amp;#39;&amp;lt;div&amp;gt;&amp;#39;&lt;/span&gt;&lt;span&gt;).html(&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;#39;Connection lost. Refresh the page to start again.&amp;#39;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;css(&lt;/span&gt;&lt;span&gt;&amp;#39;color&amp;#39;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;#39;red&amp;#39;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;#39;#messages&amp;#39;&lt;/span&gt;&lt;span&gt;).append(warn);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;};&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;websocket.onmessage = &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; (event) {&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;quot;#messages&amp;quot;&lt;/span&gt;&lt;span&gt;).append(event.data + &lt;/span&gt;&lt;span&gt;&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;};&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;};&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;form&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&amp;quot;echoForm&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;action&lt;/span&gt;&lt;span&gt;=&amp;quot;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;placeholder&lt;/span&gt;&lt;span&gt;=&amp;quot;type your name&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;form&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&amp;quot;outputArea&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&amp;quot;&lt;/span&gt;&lt;span&gt;display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;none&amp;quot;&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&amp;quot;messages&amp;quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&amp;quot;&lt;/span&gt;&lt;span&gt;height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;80%&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;overflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;hidden&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Most of the above code is jQuery stuff to handle the incoming message, so let’s point out the important parts:&lt;/p&gt;  &lt;p&gt;Lines 18-20 – In these lines we create the URI of the service. Note the use of the ws:// scheme – this is the scheme of WebSocket, but it works just fine even when our service base address is set to HTTP.&lt;/p&gt;  &lt;p&gt;Lines 27-56 – the &lt;strong&gt;connect&lt;/strong&gt; function basically does all the rest. The WebSocket functions are based on the &lt;a href="http://dev.w3.org/html5/websockets/"&gt;WebSocket API&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Line 30 – create the WebSocket object &lt;/li&gt;    &lt;li&gt;Lines 32-42 – open the connection &lt;/li&gt;    &lt;li&gt;Lines 36-49 – run a function every 1 second that sends the current time to the service &lt;/li&gt;    &lt;li&gt;Lines 44-51 – handle the WebSocket channel closing &lt;/li&gt;    &lt;li&gt;Lines 53-55 – handle a received message (a message sent from the service to the client) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Running the client will show the following output:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/idof/image_22337674.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/idof/image_thumb_109365DC.png" width="464" height="261" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To conclude, in order to create a service that can receive and send message to browsers using WebSockets we need to do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create the duplex contract which contains a simple Receive and Send methods (or any other names you like). &lt;/li&gt;    &lt;li&gt;Implement the contract in a service like you’ll implement any other duplex service. The only thing you need to take care of is how to read and write the message. &lt;/li&gt;    &lt;li&gt;Create an endpoint which uses a custom binding which supports WebSockets and simple byte-stream encoding. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Although the above works quite well, there is another way to create this type of service – by creating a service class that inherits from the &lt;strong&gt;Microsoft.WebSockets.WebSocketService&lt;/strong&gt; type. The Microsoft.WebSockets &lt;a href="http://nuget.org/packages/Microsoft.WebSockets/0.2"&gt;package&lt;/a&gt;, available from NuGet, enables the creation of WebSocket-based services. Once inheriting your service from &lt;strong&gt;WebSocketService&lt;/strong&gt;, you can override methods such as &lt;strong&gt;OnMessage&lt;/strong&gt;, &lt;strong&gt;OnOpen&lt;/strong&gt;, &lt;strong&gt;OnClose&lt;/strong&gt;, and &lt;strong&gt;OnError&lt;/strong&gt;. Working with these methods is quite easy, as demonstrated in the following code:&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1bcd6442-2779-4eb1-a715-885571ccfc01" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;EchoService2&lt;/div&gt; &lt;div style="overflow:auto;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EchoService2&lt;/span&gt;&lt;span&gt; : &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Microsoft.ServiceModel.WebSockets.&lt;/span&gt;&lt;span&gt;WebSocketService&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; OnMessage(&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; message)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; str = &lt;/span&gt;&lt;span&gt;&amp;quot;Received message: &amp;quot;&lt;/span&gt;&lt;span&gt; + message;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Send(str);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; OnOpen()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; queryParameters = &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.QueryParameters;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; str = &lt;/span&gt;&lt;span&gt;&amp;quot;Opening connection from user &amp;quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;queryParameters[&lt;/span&gt;&lt;span&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;&lt;span&gt;].ToString();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Send(str);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;protected&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; OnClose()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;base&lt;/span&gt;&lt;span&gt;.OnClose();&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;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;protected&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; OnError()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;base&lt;/span&gt;&lt;span&gt;.OnError();&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;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;As you can see, in this case you don’t have to work directly with byte arrays. In order to host this service you also don’t need to define a special endpoint configuration, as this package includes a &lt;strong&gt;WebSocketHost&lt;/strong&gt; class that automatically creates and configures a WebSocket endpoint. To create a WebSocketHost and provide it to IIS, we need to create a class that inherits from ServiceHostFactory, as demonstrated in the following code :&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b0326016-ebdb-440c-9870-49a91d3cbc4c" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;WebSocketServiceHostFactory&lt;/div&gt; &lt;div style="overflow:auto;max-height:300px;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WebSocketServiceHostFactory&lt;/span&gt;&lt;span&gt; : &lt;/span&gt;&lt;span&gt;ServiceHostFactory&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;protected&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ServiceHost&lt;/span&gt;&lt;span&gt; CreateServiceHost(&lt;/span&gt;&lt;span&gt;Type&lt;/span&gt;&lt;span&gt; serviceType, &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Uri&lt;/span&gt;&lt;span&gt;[] baseAddresses)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; host = &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WebSocketHost&lt;/span&gt;&lt;span&gt;(serviceType, baseAddresses);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;host.AddWebSocketEndpoint();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; host;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: the ServiceHostFactory is declared in the &lt;strong&gt;System.ServiceModel.Activation&lt;/strong&gt; assembly, so don’t forget to add a reference to it.&lt;/p&gt;  &lt;p&gt;Once we have the new factory, we can register it with the routing mechanism (lines 5-7):&lt;/p&gt;  &lt;div style="margin:0px;padding:0px;float:none;display:inline;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ebdbe2b5-625a-48c5-a4dd-9fce6a7f0774" class="wlWriterSmartContent"&gt; &lt;div style="font-size:10pt;"&gt; &lt;div style="padding:2px 5px;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;"&gt;Global.Asax&lt;/div&gt; &lt;div style="overflow:auto;"&gt; &lt;ol style="margin:0px 0px 0px 2.5em;padding:0px 0px 0px 5px;"&gt; &lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Global&lt;/span&gt;&lt;span&gt; : System.Web.&lt;/span&gt;&lt;span&gt;HttpApplication&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;protected&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; Application_Start(&lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt; sender, &lt;/span&gt;&lt;span&gt;EventArgs&lt;/span&gt;&lt;span&gt; e)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;RouteTable&lt;/span&gt;&lt;span&gt;.Routes.Add(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ServiceRoute&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;echo2&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WebSocketServiceHostFactory&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;typeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;EchoService2&lt;/span&gt;&lt;span&gt;)));&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;span&gt;RouteTable&lt;/span&gt;&lt;span&gt;.Routes.Add(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ServiceRoute&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;echo&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ServiceHostFactory&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/li&gt; &lt;li&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;&lt;span&gt;&lt;/span&gt;&lt;span&gt;typeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;EchoService&lt;/span&gt;&lt;span&gt;)));&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;All is left is to change the client HTML code in line 19 to call the ‘echo2’ service instead of ‘echo’.&lt;/p&gt;  &lt;p&gt;You can see more examples on how to use this package in Paul Batum’s &lt;a href="http://www.paulbatum.com/2011/09/getting-started-with-websockets-in.html"&gt;blog post&lt;/a&gt;, and in his //BUILD &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-807T"&gt;session&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So as you can see, it is quite easy to create a WCF service that can receive messages from a browser and push messages to a browser by using WebSockets. Farewell long polling, I hope we never meet again &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/idof/wlEmoticon-smile_58B0FBEB.png" /&gt;&lt;/p&gt;  &lt;p&gt;You can download the above code (both versions) from my &lt;a href="http://sdrv.ms/UAroRt"&gt;SkyDrive&lt;/a&gt;. The source code also includes a sample self-hosted WebSocket service and an HTML page that uses it instead of the IIS-hosted service.&lt;/p&gt;&lt;div style="margin:0px;padding:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/06/what-s-new-in-wcf-4-5-websocket-support-part-2-of-2.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/06/what-s-new-in-wcf-4-5-websocket-support-part-2-of-2.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/06/what-s-new-in-wcf-4-5-websocket-support-part-2-of-2.aspx"&gt;&lt;img style="border:0px currentColor;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/06/what-s-new-in-wcf-4-5-websocket-support-part-2-of-2.aspx" /&gt;&lt;/a&gt; 			  &lt;div class="addthis_toolbox addthis_default_style "&gt; &lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt; &lt;a class="addthis_button_compact"&gt;&lt;/a&gt; &lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt; &lt;/div&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt; &lt;a style="display:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1027907" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/What_2700_s+new/default.aspx">What's new</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF+4.5/default.aspx">WCF 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/websocket/default.aspx">websocket</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/browser/default.aspx">browser</category></item><item><title>WCF or ASP.NET Web APIs? My two cents on the subject</title><link>http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx</link><pubDate>Mon, 05 Mar 2012 18:39:12 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1027021</guid><dc:creator>Ido Flatow</dc:creator><slash:comments>64</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/idof/rsscomments.aspx?PostID=1027021</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx#comments</comments><description>&lt;p&gt;A couple of weeks ago (around Feb. 16) the WCF WebAPIs - a framework for building RESTful/Hypermedia/HTTP services, which was in development over the past 1.5 years as a side-project on &lt;a href="http://wcf.codeplex.com/"&gt;CodePlex&lt;/a&gt;, has been formally &lt;a href="http://wcf.codeplex.com/wikipage?title=WCF%20Web%20API%20is%20now%20ASP.NET%20Web%20API"&gt;integrated&lt;/a&gt; into ASP.NET and its name changed to the ASP.NET Web API.&lt;/p&gt;  &lt;p&gt;These past two weeks, there has been a lot of questions among WCF developers: What does it mean that the Web APIs are no longer a part of WCF – is WCF dead? Has SOAP gone bankrupted? is HTTP the new way to go for interoperability? &lt;/p&gt;  &lt;p&gt;To get a better understanding of what happened and what is the way to go, we need to answer a couple of questions:&lt;/p&gt;  &lt;p&gt;1. What is the purpose of the WebAPIs?&lt;/p&gt;  &lt;p&gt;2. Why do we need &lt;strike&gt;REST&lt;/strike&gt; HTTP services? What’s wrong with SOAP-over-HTTP? &lt;/p&gt;  &lt;p&gt;3. Why did the WebAPIs move from WCF to ASP.NET MVC?&lt;/p&gt;  &lt;p&gt;4. Is there still a use for WCF? When should I choose Web APIs over WCF?&lt;/p&gt;  &lt;p&gt;&lt;u&gt;What is the purpose of the WebAPIs?&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;When WCF was conceived back in its Indigo and .NET 3 days, the main goal was to support SOAP + WS-* over a wide variety of transports. However, over time it became clear that although SOAP is wide spread and supported on many platforms, it is not the only way to go when creating services. There is also a need to also support non-SOAP services, especially over HTTP, where you can harness the power of the HTTP protocol to create HTTP services: services that are activated by simple GET requests, or by passing plain XML over POST, and respond with non-SOAP content such as plain XML, a JSON string, or any other content that can be used by the consumer. Support for non-SOAP services was very much needed in WCF back then, mostly because some clients, such as web browsers, were not that suitable to handle SOAP messages (plenty of XML parsing and DOM manipulation).&lt;/p&gt;  &lt;p&gt;So in WCF 3.5 we got the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.webhttpbinding.aspx"&gt;WebHttpBinding&lt;/a&gt; – a new binding that helped us create this kind of non-SOAP service over HTTP, better known as a RESTful service.&lt;/p&gt;  &lt;p&gt;The WebHttpBinding was not enough, and after WCF 3.5 was released, a new set of tools was created – the &lt;a href="http://msdn.microsoft.com/en-us/library/ee391967.aspx"&gt;WCF REST Starter Kit&lt;/a&gt;. The REST starter kit was an attempt to enrich the support of WCF 3.5 for HTTP services – add better client-side support for .NET apps, extend the server side support for other content types, enable response and request caching, inspection of messages and so forth. Unfortunately, this great toolkit was never officially released and ended its product cycle as “Preview 2”, although it’s still being used today in some of Microsoft’s products that are built with .NET 3.5.&lt;/p&gt;  &lt;p&gt;Although not released, some of the service-side features of the REST starter kit were &lt;a href="http://blogs.msdn.com/b/endpoint/archive/2010/01/06/introducing-wcf-webhttp-services-in-net-4.aspx"&gt;integrated into WCF 4&lt;/a&gt; – we didn’t get any of the client-side libraries, but we did get most of the service-side features (excluding the new inspectors). Some were well-integrated into WCF while others required the use of ASP.NET (by turning on the ASP.NET compatibility mode).&lt;/p&gt;  &lt;p&gt;So with WCF 4 we had some support for “Web” HTTP services, but it wasn’t that perfect – to get some of the features you needed IIS hosting and ASP.NET, not all types of requests were supported easily (ever tried posting HTML form data to a WCF HTTP service?), the overuse of CLR attributes to define the POST/GET/PUT/DELETE was tedious, not to mention the configuration required to create this type of services with all of the endpoint behavior. And even after all of that we didn’t actually get full control over the HTTP messages.&lt;/p&gt;  &lt;p&gt;That was the main goal of the Web APIs, known back then as the WCF Web APIs: to stop looking at HTTP through the eyes of WCF - as just a transport protocol to pass requests. Rather, it allows us to look at it as the real application-level protocol it is – a rich, interoperable, resource-oriented protocol. The purpose of the Web APIs was to properly use URIs, HTTP headers, and body to create HTTP services for the web, and for everyone else that wished to embrace HTTP as its protocol and lifelong friend.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Why do we need &lt;strike&gt;REST&lt;/strike&gt; HTTP services? What’s wrong with SOAP-over-HTTP? &lt;/u&gt;&lt;/p&gt;  &lt;p&gt;The world of SOAP and the world of HTTP services are very different. SOAP allows us to place all the knowledge required by our service in the message itself, disregarding its transport protocol, whether it is TCP, HTTP, UDP, PGM, Named Pipes… But unlike TCP, UDP and the other &lt;a href="http://en.wikipedia.org/wiki/OSI_model"&gt;level 4-5&lt;/a&gt; protocols, HTTP is an application-level protocol, and as such it offers a wide variety of features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It supports verbs that define the action - query information using GET, place new information and update existing using POST or PUT, remove information using DELETE etc. &lt;/li&gt;    &lt;li&gt;It contains message headers that are very meaningful and descriptive - headers that suggest the content type of the message’s body, headers that explain how to cache information, how to secure it etc. &lt;/li&gt;    &lt;li&gt;It contains a body that can be used for any type of content, not just XML content as SOAP enforces (and if you want something else – encode it to base64 strings and place it in the SOAP’s XML content). The body of HTTP messages can be anything you want – HTML, plain XML, JSON, binary files (images, videos, documents…) … &lt;/li&gt;    &lt;li&gt;It uses URIs for identifying both information paths (resources) and actions – the &lt;a href="http://tools.ietf.org/html/draft-gregorio-uritemplate-08"&gt;URI templates&lt;/a&gt; initiative is catching on and is rapidly becoming the standard way of representing requests for resources and &lt;a href="http://codebetter.com/glennblock/2011/05/09/hypermedia-and-forms/"&gt;hypermedia&lt;/a&gt; URIs. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The use of HTTP has evolved over the years. Application-level protocol architectural styles such as &lt;strike&gt;REST&lt;/strike&gt; &lt;a href="http://blog.steveklabnik.com/posts/2012-02-23-rest-is-over"&gt;Hypermedia APIs&lt;/a&gt; have emerged on top of HTTP. These, in turn, harness the power of HTTP to create resource-oriented services, and better define the stateless interaction between clients and services.&lt;/p&gt;  &lt;p&gt;The Web APIs therefore were intended to allow all of these approaches – you can use it to create HTTP services that only use the standard HTTP concepts (URIs and verbs), and to to create services that use more advanced HTTP features – request/response headers, hypermedia concepts etc.&lt;/p&gt;  &lt;p&gt;So HTTP is a lot more than a transport protocol. It is an application-level protocol, and the fact is that although many platforms know how to use SOAP, many more platforms know how to use HTTP! among the HTTP supporting platforms which do not support SOAP that well are the browsers – probably the most important platforms for web developers (and users). And if you don’t believe me that REST and hypermedia are useful, maybe Martin Fowler can &lt;a href="http://martinfowler.com/articles/richardsonMaturityModel.html"&gt;convince you&lt;/a&gt; better than me.&lt;/p&gt;  &lt;p&gt;This, of course, does not mean that SOAP is redundant – SOAP is still useful for building messages when you don’t have an alternative application-level protocol at your disposal, or when you want to use SOAP across the board while considering HTTP as no more than another way to pass messages (for example, use HTTP because it can cross firewalls more easily than TCP).&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Why did the WebAPIs move from WCF to ASP.NET MVC?&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Back to the story of WCF and the WCF Web APIs (we are still before the merger). Another goal of the WCF Web APIs was to incorporate known concepts that would help developers to overcome some of the drawbacks they faced with WCF, such as huge configurations, overuse of attributes, and the WCF infrastructure that did not support testing well. Thus the Web APIs used IoC, enabled convention-over-configuration, and tried to offer simpler configuration environment.&lt;/p&gt;  &lt;p&gt;The problem was that at that point in time there were several approaches for constructing HTTP services:&lt;/p&gt;  &lt;p&gt;1. WCF with the WebHttp binding and REST support.&lt;/p&gt;  &lt;p&gt;2. The new WCF Web APIs, soon to be ASP.NET Web APIs.&lt;/p&gt;  &lt;p&gt;3. A not-so-new framework, ASP.NET MVC, which took a break from being HTML-oriented (getting requests from HTML pages and returning HTML/JSON) to being &lt;a href="http://iwantmymvc.com/rest-service-mvc3"&gt;Resource-oriented&lt;/a&gt; – people started realizing that they can consider controllers as services and use the MVC infrastructure to define the control requests, responses, and better control the HTTP message.&lt;/p&gt;  &lt;p&gt;4. Open source frameworks such as &lt;a href="http://serialseb.blogspot.com/2008/12/openrasta-is-available.html"&gt;OpenRasta&lt;/a&gt; and &lt;a href="https://github.com/ServiceStack/ServiceStack"&gt;ServiceStack&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In addition to that, as time passed, the WCF Web APIs had a lot of trouble adapting WCF to the “native” HTTP world. As WCF was primarily designed for SOAP-based XML messages, and the “open-heart” surgery that was required to make the Web API work as part of WCF was a bit too much (or so I understand from people who were involved in creating the Web APIs). On the other hand, the ASP.NET MVC infrastructure with its elegant handling of HTTP requests and responses, and its support of easy-to-create controllers seemed like the proper way to go for creating this new type of services.&lt;/p&gt;  &lt;p&gt;So the fact was we had too many options and therefore too much confusion. What were we to do? We merge teams! (Kind of reminds us of the time of LINQ-to-SQL and Entity Framework, WCF and Ado.Net Data Services and other such examples). So the WCF team and the ASP.NET team joined forces and created a new framework focused on the world of REST/Hypermedia/HTTP services for the web world and thus came out the ASP.NET Web APIs.&lt;/p&gt;  &lt;p&gt;I’m still not so sure about the choice of names, as the new Web APIs can also work outside of ASP.NET with the use of WCF, but I guess that the name “WCF ASP.NET Web API” was a bit long. Maybe “WASP Web API”? “WAWAPI” (Wcf Aspnet Web API)? Or maybe simply call it “Hypermedia Web API”?&lt;/p&gt;  &lt;p&gt;So this merger is intended to reduce confusion, not induce it. I guess that if it was explained at that time, it might have caused less confusion over time (see the &lt;a href="http://blogs.msdn.com/b/silverlight/archive/2010/11/01/pdc-and-silverlight.aspx"&gt;Silverlight is dead&lt;/a&gt; slip of PDC 2010). Does Microsoft need a new DevDiv PR team?&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Is there still use for WCF? when should I choose Web APIs over WCF?&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Recall my points from before - HTTP is a lot more than a transport protocol; use SOAP across the board and consider HTTP as no more than another way to pass messages.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If your intention is to create services that support special scenarios – one way messaging, message queues, duplex communication etc, then you’re better of picking WCF &lt;/li&gt;    &lt;li&gt;If you want to create services that can use fast transport channels when available, such as TCP, Named Pipes, or maybe even UDP (in WCF 4.5), and you also want to support HTTP when all other transports are unavailable, then you’re better off with WCF and using both SOAP-based bindings and the WebHttp binding. &lt;/li&gt;    &lt;li&gt;If you want to create resource-oriented services over HTTP that can use the full features of HTTP – define cache control for browsers, versioning and concurrency using ETags, pass various content types such as images, documents, HTML pages etc., use URI templates to include Task URIs in your responses, then the new Web APIs are the best choice for you. &lt;/li&gt;    &lt;li&gt;If you want to create a multi-target service that can be used as both resource-oriented service over HTTP and as RPC-style SOAP service over TCP – talk to me first, so I’ll give you some pointers. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I hope this helped you removing some of the confusion over this topic.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx" style="border:0px;" /&gt;&lt;/a&gt; 			  &lt;div class="addthis_toolbox addthis_default_style "&gt; &lt;a class="addthis_button_preferred_1"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_2"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_3"&gt;&lt;/a&gt; &lt;a class="addthis_button_preferred_4"&gt;&lt;/a&gt; &lt;a class="addthis_button_compact"&gt;&lt;/a&gt; &lt;a class="addthis_counter addthis_bubble_style"&gt;&lt;/a&gt; &lt;/div&gt; &lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f27f7864794397c"&gt;&lt;/script&gt; &lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=2199681" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1027021" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Hypermedia/default.aspx">Hypermedia</category><category domain="http://blogs.microsoft.co.il/blogs/idof/archive/tags/Web+API/default.aspx">Web API</category></item></channel></rss>