<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://developers.de/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>Search results matching tag 'Core.Net WCF'</title><link>http://developers.de/search/SearchResults.aspx?o=DateDescending&amp;tag=Core.Net+WCF&amp;orTags=0</link><description>Search results matching tag 'Core.Net WCF'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Agenda for MSNetwork Web vNext Session</title><link>http://developers.de/blogs/damir_dobric/archive/2013/03/31/agenda-for-msnetwork-web-vnext-session.aspx</link><pubDate>Sun, 31 Mar 2013 12:49:16 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:523169</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;Here is the preliminary agenda for &lt;a href="http://www.msnetwork.ba/"&gt;MSNetwork&lt;/a&gt; upcoming session next week. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_0C892791.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_6C01E7DE.png" width="692" height="489" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt; There are few important things which will unfortunately not be covered in this session.  &lt;br /&gt;But if you really want to dive deeper behind Steaming and Push technologies, I would recommend you to read &lt;a href="http://developers.de/blogs/damir_dobric/archive/2012/08/20/how-to-implement-implement-async-push-stream-with-asp-net-handler.aspx"&gt;this&lt;/a&gt; post.</description></item><item><title>How to activate WCF on IIS8 and Windows 8?</title><link>http://developers.de/blogs/damir_dobric/archive/2012/09/24/how-to-activate-wcf-on-iis8-and-windows-8.aspx</link><pubDate>Mon, 24 Sep 2012 15:03:18 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:329730</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;When you start working with WCF on Windows 8 and IIS8, you might run into following problem.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;HTTP Error 404.3 - Not Found&lt;/em&gt;&lt;/p&gt;  &lt;h6&gt;&lt;em&gt;The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.&lt;/em&gt;&lt;/h6&gt;  &lt;p&gt;To make this working you have enable (install/activate) Advanced .NET 4.5 Features, which are mostly related to WCF:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_13E0A8FE.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_0197E23C.png" width="857" height="544" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>WinDays 2012 KeyNote Demo Step Through</title><link>http://developers.de/blogs/damir_dobric/archive/2012/05/12/windays-2012-keynote-demo-step-through.aspx</link><pubDate>Sat, 12 May 2012 11:54:46 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:302562</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;   &lt;br /&gt;Few days ago I showed the Demo at &lt;a href="http://www.windays.hr/hr/naslovna/"&gt;WinDays&lt;/a&gt; 2012 keynote under the name “SharePoint Ralay”. The idea of the keynote was to show some important features which never have been shown or documented in the way as of very one common industry scenario. To keep things simple we didn’t go to deep into details of SharePoint and ServiceBus. We wanted to to build a demo which will show how to build few complex and enterprise relevant scenarios, but to be in the same time interesting for most developers in audience and even for journalists who have been attending the key note.     &lt;br /&gt;So I decided to target three common industrial issues which daenet has been asked to solve multiple times during 2011:&lt;/p&gt;  &lt;p&gt;1. How to get (or put) SharePoint data out of enterprise without changing of infrastructure?    &lt;br /&gt;2. How to build dynamic WCF contract?     &lt;br /&gt;3. How to build Failover cluster in 48 Seconds?&lt;/p&gt;  &lt;h4&gt;1. How to get/put data out of SPS without changing of infrastructure?&lt;/h4&gt;  &lt;p&gt;Most SharePoint Developers live in their collaborative context which mostly does not require such scenarios. But when building SharePoint solutions you will figure out that SharePoint isn’t application platform in term how one solution or enterprise architect expect to be. Today, complex systems are systems which consist of usually distributed and hybrid hybrid applications.Distributed means they at least do not run in one process and hybrid means they can be build on top of different technologies.    &lt;br /&gt;So, imagine now one application which is build in .NET 4.5 which should run in SharePoint. To make it more simpler image a JAVA application which runs at different machine on different geographic location. Now put it in SharePoint and let talk to each other. Application Platform is the platform which enables to do such things. Any other application platform like SharePoint, CRM, BizTalk or anything else is a platform of their own definition with huge limitations. Because of that be careful, when you say platform. “&lt;em&gt;One can be a boss in his village, but just some little peace in the global world”&lt;/em&gt;. The part of Microsoft which build such platforms is called Business Platform Division.     &lt;br /&gt;    &lt;br /&gt;So, let’s get now some data out of SharePoint in context of&amp;#160; distributed application scenario. First of all in the world of distributed thinking, you should never allow external parties get in touch with your platform directly. To illustrate this constraint, think on giving the public access to your database. You will probably never allow somebody to send you DB-commands which will be executed against your DB (SQL Injections etc..). If you do it it is wrong and please think change it.. By following the same rule you shouldn’t let anybody to dig in your SharePoint platform for the same reason. You even should not share the secret, that you platform is SPS.     &lt;br /&gt;    &lt;br /&gt;The easiest way is to provide some kind of intermediary component which will abstract the business scenario over secret platform which is running in the background. The technology which does exactly this job is WCF. We will put WCF service between SPS and external party. At some point of time when you have lot of such services, you can start to talk about Middle-Ware. This is a fine solution, but there is a still one practical problem.     &lt;br /&gt;    &lt;br /&gt;The service contract could look in our case as shown below:     &lt;br /&gt;    &lt;br /&gt;    &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;[ServiceContract(Name = &amp;quot;EchoContract&amp;quot;, Namespace = &amp;quot;&lt;a href="http://samples.microsoft.com/ServiceModel/Relay/&amp;quot;)]"&gt;http://samples.microsoft.com/ServiceModel/Relay/&amp;quot;)]&lt;/a&gt;               &lt;br /&gt;&amp;#160; public interface ISpsRelayService               &lt;br /&gt;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [OperationContract]               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;MyEntity&amp;gt; Query(QueryEntity query);               &lt;br /&gt;&amp;#160; } &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;You should define the QueryEntity which somehow describes what you want. SPS developer would like to to see here probably SPS- “ClientObjects”. Unfortinatelly they have never been designed for such scenarios. They can only be used by explicit helper libraries. Such libraries do not work out of SharePoint and their dependent entities are not serializable.     &lt;br /&gt;But never mind, define your entities like your business needs them (see service contract above).     &lt;br /&gt;    &lt;br /&gt;The service implementation (see code below) will read the QueryEntity instance and build appropriate SPS-query (not shown in the demo below).     &lt;br /&gt;After all we will call SPS WebService hosted internally in our enterprise at &lt;a title="http://yourhost:44445" href="http://yourhost:44445"&gt;http://yourhost:44445&lt;/a&gt; and finally build response as collection of &lt;em&gt;MyEntity&lt;/em&gt; instances.     &lt;br /&gt;This service decouples the SPS from external parties and provides very simple and business related contract as usual in the SOA world.     &lt;br /&gt;Following code snippet shows how to implement the service which gets documents from some SharePOint library and returns them as collection to the external party. In fact this is nothing very complicated (not yet)..&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;br /&gt;            &lt;p&gt;public List&amp;lt;MyEntitity&amp;gt; Query(QueryEntity query)              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ClientContext clientContext = new ClientContext(&amp;quot;&lt;a href="http://yourhost:44445&amp;quot;);"&gt;http://yourhost:44445&amp;quot;);&lt;/a&gt;&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Web oWebsite = clientContext.Web;              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var files = oWebsite.GetFolderByServerRelativeUrl(&amp;quot;/Shared%20Documents&amp;quot;).Files;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clientContext.Load(files);               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clientContext.ExecuteQuery();&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;MyEntitity&amp;gt; items = new List&amp;lt;MyEntitity&amp;gt;();&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (var doc in files)              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dynamic o = new MyEntitity();               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; o.Name = doc.Name;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; o.Something = DateTime.Now.Ticks;               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; o.Version = doc.UIVersionLabel;&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; items.Add(o);              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return items;              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;To make it available in the internet this service needs to have a public endpoint accessible by the external party. And exactly this is the change demand in infrastructure which is very, very often an organizational issue or even “No go”. First somebody hast to give you an public IP address, then you need to configure NAT and DNS&amp;#160; for it, then Security, port mapping from probably 80 to 4445 etc., etc..    &lt;br /&gt;I want to build some kind of VPN between my WCF (talking to SPS) and external caller, but without changing any piece of infrastructure. The next picture shows this scenario. Windows Azure provides a platform service called “&lt;a href="http://www.windowsazure.com/en-us/home/features/service-bus/"&gt;Service Bus&lt;/a&gt;”. This one provides a feature called relying. Relaying can connect two participants directly thorough firewall. Two participants are connected through Service Bus intermediary by using bidirectional TCP connection, which remains open after once is established.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_52E91BC8.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_37DC5E88.png" width="856" height="561" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Following code shows how to start-up the service which will listen on Service-Bus packets and relay SharePoint to external caller.&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;static void Main(string[] args)              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ServicePointManager.ServerCertificateValidationCallback = validateServerCert;&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create the service URI based on the service namespace which you will obtain when creating the              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // service bus namespace.               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Uri address = ServiceBusEnvironment.CreateServiceUri(&amp;quot;https&amp;quot;, serviceNamespaceDomain, &amp;quot;SpsRelayService/DocumentLibrary&amp;quot;);&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create the credential object for the endpoint              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TransportClientEndpointBehavior sharedSecretServiceBusCredential = new TransportClientEndpointBehavior();               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sharedSecretServiceBusCredential.TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(issuerName, issuerSecret);&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create the service host reading the configuration              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ServiceHost host = new ServiceHost(typeof(SpsRelayService), address);&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create the ServiceRegistrySettings behavior for the endpoint              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IEndpointBehavior serviceRegistrySettings = new ServiceRegistrySettings()               &lt;br /&gt;{ DisplayName = &amp;quot;Sharepoint Relay Document Library Service&amp;quot;, DiscoveryMode = DiscoveryType.Public };               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (ServiceEndpoint endpoint in host.Description.Endpoints)               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // add the Service Bus credentials to all endpoints specified in configuration               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; endpoint.Behaviors.Add(sharedSecretServiceBusCredential);               &lt;br /&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Optionally you can add the URI in the registry.               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; endpoint.Behaviors.Add(serviceRegistrySettings);               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Open the service              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; host.Open();&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.ForegroundColor = ConsoleColor.Cyan;&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(&amp;quot;Service address: &amp;quot; + address);              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(&amp;quot;Press [Enter] to exit&amp;quot;);               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.ReadLine();&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // close the service              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; host.Close();               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }               &lt;br /&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Similarly, external party will also establish the connection as shown in the next snippet:    &lt;br /&gt;    &lt;br /&gt;    &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;static void Main(string[] args)              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ServicePointManager.ServerCertificateValidationCallback = validateServerCert;&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create the service URI based on the service namespace              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Uri address = ServiceBusEnvironment.CreateServiceUri(&amp;quot;https&amp;quot;, serviceNamespaceDomain, &amp;quot;SpsRelayService/DocumentLibrary&amp;quot;);&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create the credential object for the endpoint              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TransportClientEndpointBehavior sharedSecretServiceBusCredential = new TransportClientEndpointBehavior();               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sharedSecretServiceBusCredential.TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(issuerName, issuerSecret);&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create the channel factory loading the configuration              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ChannelFactory&amp;lt;ISpsRelayService&amp;gt; channelFactory = new ChannelFactory&amp;lt;ISpsRelayService&amp;gt;(&amp;quot;RelayEndpoint&amp;quot;, new EndpointAddress(address));&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // apply the Service Bus credentials              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; channelFactory.Endpoint.Behaviors.Add(/*swtBehavior*/sharedSecretServiceBusCredential);&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // create and open the client channel              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ISpsRelayService channel = channelFactory.CreateChannel();               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ((ICommunicationObject)channel).Open();&lt;/p&gt;            &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(&amp;quot;Enter text to echo (or [Enter] to exit):&amp;quot;);              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string input = Console.ReadLine();               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;MyEntity&amp;gt; res = channel.Query(new QueryEntity(){…});               &lt;br /&gt;              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ((ICommunicationObject)channel).Close();               &lt;br /&gt;              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; channelFactory.Close();               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }               &lt;br /&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;If you ever worked with WCF there is not much more to say. The code shown above contains a bit sugar around standard WCF.Everything else is a matter of channel which is hidden behind RelayBinding. For more information about ports in use take a look &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee732535.aspx"&gt;here&lt;/a&gt;.     &lt;br /&gt;Following binding must be configured in both service and client.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&amp;lt;bindings&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;basicHttpRelayBinding&amp;gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;binding name=&amp;quot;myBinding&amp;quot;&amp;gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;security mode=&amp;quot;Transport&amp;quot;/&amp;gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/binding&amp;gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/basicHttpRelayBinding&amp;gt;             &lt;br /&gt;&amp;#160; &amp;lt;/bindings&amp;gt;             &lt;br /&gt;&amp;#160;&amp;#160; &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;After you start service and then client,the client will send the request to service through firewall. The service will get data out of SPS and relay it back to the client.&lt;/p&gt;  &lt;h4&gt;2. How to build dynamic WCF contract? &lt;/h4&gt;  &lt;p&gt;In the world of SOA you always should build a clear contract between two boundaries. That means contracts like following one are not well designed:    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Message Operation(Message msg);        &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;    &lt;br /&gt;I have also seen in some projects following variant of the similar contract, which is semantically the same one as previous one:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;string Operation(string msg);&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;By using such contract the client has no way to know how to serialize the message. Even after the service version is changed, there is no way to communicate this to anybody instead of verbal human communication which is time intensive and error prone. Compare it with “add service reference” to create the proxy. The client and service must in such cases implement code which serializes/deserializes respectively the message (string).    &lt;br /&gt;In other words, using service contracted this way is called “&lt;strong&gt;&lt;em&gt;Anti-Pattern&lt;/em&gt;&lt;/strong&gt;”, which should not be used in the SOA world.     &lt;br /&gt;    &lt;br /&gt;Many developers think they can build SOA solution if they are just able to build WCF based service. This is a mistake. When you use WCF it doesn’t mean at all that you are by default SOAP capable.&amp;#160; In our scenario I will use out this fact as my advantage. Connecting external party to our relay service is not SOA focused scenario. It is more about classical EAI and not SOA. Such kind of connecting system is known as interface with point-to-point connection. This is also not the best pattern in the world of SOA (I mean point2point interface).&amp;#160; and it should b e avoided when building middle-wares. But this is another story.     &lt;br /&gt;&amp;#160; &lt;br /&gt;In other words, If you are connecting two systems as point2poin it might be valid to apply SOA anti-pattern.This is in context of SOA an anti-pattern, but not an anti-pattern in universe of possible solutions. If you have two parties talking to each other then you can often change the contract between them without of too much organizational difficulties.If you are changing often the contract (in our case &lt;em&gt;MyEntity&lt;/em&gt; and &lt;em&gt;MyQuery&lt;/em&gt;) it is easier to make it dynamic. In this case you can build it once without need to change it in the future, because it is dynamic one. Following example shows how to use &lt;strong&gt;&lt;em&gt;ExpandoObject&lt;/em&gt;&lt;/strong&gt; to build dynamic WCF contract. If you don’t know what this is take a look on &lt;a href="http://blogs.msdn.com/b/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the-expandoobject.aspx"&gt;Alexandra’s&lt;/a&gt;&amp;#160; and &lt;a href="http://www.west-wind.com/weblog/posts/2012/Feb/08/Creating-a-dynamic-extensible-C-Expando-Object"&gt;Rick’&lt;/a&gt;s posts.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;ServiceContract(Name = &amp;quot;SpsRelayContract&amp;quot;, Namespace = &amp;quot;&lt;a href="http://daenet.deServiceModel/Relay/&amp;quot;)]"&gt;http://daenet.deServiceModel/Relay/&amp;quot;)]&lt;/a&gt;             &lt;br /&gt;&amp;#160; public interface ISpsRelayService             &lt;br /&gt;&amp;#160; {             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [OperationContract]             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;&lt;font color="#0000ff"&gt;ExpandoObject&lt;/font&gt;&amp;gt; Query(&lt;font color="#0000ff"&gt;ExpandoObject&lt;/font&gt; expression);             &lt;br /&gt;&amp;#160; } &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;The good thing on Expando-contract is that you can do something like this:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;dynamic&lt;/font&gt; o = new &lt;font color="#0000ff"&gt;ExpandoObject&lt;/font&gt;();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; o.Name = “bla bla”;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; o.Something = DateTime.Now.Ticks;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; o.Method= new SomeDelegate(someMethod);     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;You can set on this object whatever property you want (more or less). But&amp;#160; note in a case of WCF the method instance as property wouldn’t make a sense, because that instance will not exist on some other process and some other machine. However all other properties can be set as you like. And WCF will serialize them automatically for you. In other words, if you have a new property you don’t have to change contract. You just set it like:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;o.NewPropery = 17;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The consumer of this value just hast to know that is there (because,. remember, there is not clear contract, Add-Reference or SVCUTIL). &lt;/p&gt;  &lt;p&gt;As a recap, note that ExpandoObject provides a dynamic contract. Build your Service on top of this entity and you will not have to change the contract when new properties are added in the business scenario, which service implements. Remember that this is not a SOA capable solution, but it is valid to build Point-To-Point scenarios when one party is connecting to another one.&lt;/p&gt;  &lt;h3&gt;3. How to build Failover cluster in 48 Seconds?&lt;/h3&gt;  &lt;p&gt;Last but not least I there is an issue which has been mostly forgotten in almost all our discussion when building relaying scenarios. I every project you will reach a point when the solution has to be deployed in the production. Then you will ask yourself how to build redundancy based on relying? This means, you want to provide a fail-over instance of you WCF relaying service which will be used when the first one is not reachable. The picture shown bellow illustrates this requirement.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_2B661361.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="image" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_2B161807.png" width="540" height="441" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To make this working you really do not have to change any peace of infrastructure. Just start the another instance of the service on another machine. That’s all. This will work by using both protocols TCP and HTTP. There are currently few undocumented differences in routing when using different protocols, nut in general both will provide you the stable and reliable fail-over mechanism.&lt;/p&gt;  &lt;p&gt;Remark: If you are demoing this scenario with both WCF-instances on one machine, the basicHttpRelayBinding will not work with out-of-the-box configuration, because both instances will try to start listening for contract sharing at the same address. In a case of netTcpRelayBindig this will not happen. So, the latter one can be started multiple timas at one box.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thanks to &lt;strong&gt;Tomislav Tipuric&lt;/strong&gt; director of WinDays technical track who has visionary recognized the industry need for this scenario.&lt;/p&gt;</description></item><item><title>WCF Duplex via WebSocket</title><link>http://developers.de/blogs/damir_dobric/archive/2011/11/26/wcf-duplex-via-websocket.aspx</link><pubDate>Sat, 26 Nov 2011 16:36:45 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:220715</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;Long time ago WCF has introduced DUPLEX channels (bindings). A duplex service, can send messages back to the client endpoint, providing event-like behavior. Duplex communication is established when one client connects to a service and provides the service with a channel on which the service can send messages back to the client. The idea behind duplex is very nice and promising. Unfortunately there are few limitations which prevents this pattern to be widely used in almost all scenarios.    &lt;br /&gt;For example, duplex works on top of the session which is established between client and the service. If this session is broken the callbacks cannot be invoked etc., etc..     &lt;br /&gt;Moreover, if the client is invoking the service operation from internet location which is hidden by firewall NAT, the service will not be able to reach the client.     &lt;br /&gt;In fact, Duplex has infrastructural and pattern driven limitations.&lt;/p&gt;  &lt;p&gt;This should be slightly changed in WCF 4.5. The WCF 4.5 introduces new binding &lt;em&gt;NetHttpBinding&lt;/em&gt;, which establishes the duplex-session on top of WebSocket protocol. This protocol allows calling back operation event if the client is behind the firewall.     &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;How does this can work?&lt;/h4&gt;  &lt;p&gt;On the beginning of the session client sends the typical HTTP request to service. This request contains a few more header like Upgrade-, Sec-WebSocket-Version-, Sec-WebSocket-Key header etc. After that Binding can use polling or it can open the permanent TCP connection between client and service (ConnectionMode= Upgrade/Allowed).    &lt;br /&gt;Today we expect that TCP connection which is basically TCP- streaming between client and service established after first HTTP-request. This is very powerful mechanism to establish real time communication are real evening. Remember Duplex was as a pattern the simulation of evening. If the connection is not upgraded the polling will still be just a simulation of evening. However what ever the connection mode is used, the NAT issue is behind us. It will just work.     &lt;br /&gt;    &lt;br /&gt;Please do not&amp;#160; be confused with other implementations of WebSockets. At the moment there are four implementations.Not all of them provide the same thing.     &lt;br /&gt;For example, following four libraries provides the functionality around WebSocket specification. They all are compatible with each other. Note that .NET implementation of the client functionality is missing and as I know it is unfortunately currently not at Microsoft Agenda. That means, if you want to use WebSockets as a .NET client you will have to use WinRT &lt;em&gt;Windows.Networking.Sockets.Dll.&lt;/em&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Microsoft.ServiceModel.WebSockets&lt;/strong&gt;     &lt;br /&gt;Provides the native WebSocket&amp;#160; Server implementation which can be hosted on top of WCF. (See WebSocketService)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Microsoft.Web.WebSockets&lt;/strong&gt;     &lt;br /&gt;Provides the native WebSocket Server implementation of WebSockets handlers in ASP.NET and ASP.NET MVC. (See WebSocketHandler)     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;WIndows.Networking.Sockets&lt;/strong&gt;     &lt;br /&gt;WinRT implementation of WebSocket client functionality .&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Java Script&lt;/strong&gt;     &lt;br /&gt;Browser imlementation of client functionality, curentlly suported on IE10 only (in the Windows world)     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Last but not least, the namespace System.ServiceModel contains the Duplex implementation based of WebSockets. You cannot use this one in combination with any of libraries listed above. This post is related to this namespace only! Don’t get confused.    &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;Let’s build one sample    &lt;br /&gt;&lt;/h4&gt;  &lt;h5&gt;Service&lt;/h5&gt;  &lt;p&gt;Following code-snipet shows the service contract related to CallBack-&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;font color="#000000"&gt;ISampleServiceCallback&lt;/font&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;namespace&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt; Service&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;[ServiceContract(Namespace=&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;http://daenet.com/orderservice&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;CallbackContract = &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;(ISampleServiceCallback))]                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;interface&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#2b91af"&gt;ISampleService                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;[OperationContract]                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;bool&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; CreateOrder(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;long&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; productId, &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; amount, &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;long&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; customerId);                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;br /&gt;  &lt;br /&gt;An this is how the callback contract is designed:   &lt;br /&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;namespace&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt; Service                  &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;{                  &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;[ServiceContract]                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;interface&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#2b91af"&gt;ISampleServiceCallback                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;{                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;[OperationContract(IsOneWay=&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;)]                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; OrderPurchased(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;long&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; orderId, &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; comment);                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160; &lt;/span&gt;[OperationContract(IsOneWay = &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;)]                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; OrderCanceled(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; reason);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;"&gt;}                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;}                  &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;An here is the the service implementation:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;namespace&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt; Service                  &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;{                  &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;SampleService&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; : ISampleService                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;{                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;static&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Dictionary&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;lt;&lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;, ISampleServiceCallback&amp;gt; m_CallbackChannels =&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Dictionary&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;lt;&lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;, ISampleServiceCallback&amp;gt;();                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;bool&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; CreateOrder(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;long&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; productId, &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; amount, &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;long&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; customerId)                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;{                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; ctxId = &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;.NewGuid();                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;m_CallbackChannels.Add(ctxId,&lt;span style="mso-spacerun:yes;"&gt;&amp;#160; &lt;/span&gt;OperationContext.Current.GetCallbackChannel&amp;lt;ISampleServiceCallback&amp;gt;());                     &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Thread&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;ThreadStart&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;delegate&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;()&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;{                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Thread&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;.Sleep(5000);                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; (amount &amp;gt; 10)                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;m_CallbackChannels[ctxId].OrderCanceled(&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Not in store&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;);                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;else                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;m_CallbackChannels[ctxId].OrderPurchased(&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Random&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;().Next(10000), &lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Purchased successfully&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;);                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;"&gt;})).Start();                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;;                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;}                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;}                    &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;" color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;To make this working we will need a peace of configuration. This is a part of web.config file. That means I used IIS8 to host the web socket. This is important, because to host WebSockets you need to enable WebSocket protocol which is at the moment specifically on Windows 8 only. As already mentioned, I used IIS8, but self-hosted service will work too, as long you are running it on Windows 8. To make WebSockets working Microsoft has slightly changed few things in the http.sys and IIS pipeline implementation. This is why IIS Express does not support WebSockets at the moment (not yet).    &lt;br /&gt;    &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;bindings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;netHttpBinding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;binding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;webSocketSettings&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#ff0000"&gt;connectionMode&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;Allowed&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;subProtocol&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;orders&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;security&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#ff0000"&gt;mode&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;None&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;binding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;netHttpBinding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;bindings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;As you see I used here NetHttpBinding.    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h5&gt;Client&lt;/h5&gt;  &lt;p&gt;Now let’s implement the Client. Create the console or any other application and add the service reference to running service. This is automatically generated.&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;customBinding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;binding&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;NetHttpBinding_ISampleService&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;binaryMessageEncoding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt; /&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;httpTransport&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;webSocketSettings&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#ff0000"&gt;connectionMode&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;Allowed&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;subProtocol&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;orders&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt; /&amp;gt;                      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;httpTransport&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;binding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;customBinding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;            &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Generated binding looks a strange, but it works. In fact NetHttpBinding is CustomBinding implementation which use http-transport and binary message encoder.&lt;/p&gt;  &lt;p&gt;You can do the same thing by using NetHttpBinding instead of CustomBinding:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p style="line-height:normal;list-style-type:disc;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;bindings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;netHttpBinding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;binding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;webSocketSettings&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#ff0000"&gt;connectionMode&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;Allowed&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;subProtocol&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;orders&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt; /&amp;gt;                      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;security&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#ff0000"&gt;mode&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;None&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt; /&amp;gt;                      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;binding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;netHttpBinding&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;                    &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font color="#a31515"&gt;bindings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-ansi-language:en-us;"&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt;&lt;/p&gt;</description></item><item><title>Meeting Prof. Dr. Dan Reed</title><link>http://developers.de/blogs/damir_dobric/archive/2010/10/31/meeting-prof-dr-dan-reed.aspx</link><pubDate>Sun, 31 Oct 2010 20:28:01 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:28052</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;&lt;em&gt;Frankfurt am Main – Germany, October 28 – 29, 2010&lt;img style="display:inline;margin-left:0px;margin-right:0px;" alt="" align="left" src="http://www.isc-cloud.com/2010/var/cloud/storage/images/media/images/reed_95x98px/5152-1-eng-GB/Reed_95x98px.jpg" /&gt;      &lt;br /&gt;&lt;/em&gt;International Supercomputing Conference 2010 has been hosted this year in Frankfurt am Main - Germany. ISC Cloud&amp;#39;10 is a conference that focuses on massive data processing and large application simulations in the Cloud.This inaugural Cloud program is organized by an &lt;a href="http://news.supercomp.de/goto.php?l=14t37s.jokcea,u=aa6114e08e3ce4f14aba2041ea94f389,n=12k09.ocfemh,art_id=12k09.ocfemh"&gt;international committee of recognized experts&lt;/a&gt; in areas such as cloud computing, high performance computing, and data-and compute-intensive applications in the cloud, in industry and in research. &lt;/p&gt;  &lt;p&gt;The number of internationally recognized speakers have been invited this year to give an overview of the state of research in this area. For example &lt;a href="http://news.supercomp.de/goto.php?l=14t37h.28hsnnr,u=aa6114e08e3ce4f14aba2041ea94f389,n=12k09.ocfemh,art_id=12k09.ocfemh"&gt;Dan Reed&lt;/a&gt; from Microsoft with a keynote talk on &lt;a href="http://news.supercomp.de/goto.php?l=14t37i.3rh9r7,u=aa6114e08e3ce4f14aba2041ea94f389,n=12k09.ocfemh,art_id=12k09.ocfemh"&gt;Technical Clouds: Seeding Discovery&lt;/a&gt; and &lt;a href="http://news.supercomp.de/goto.php?l=14t37j.2j4tp5p,u=aa6114e08e3ce4f14aba2041ea94f389,n=12k09.ocfemh,art_id=12k09.ocfemh"&gt;Kathy Yelick&lt;/a&gt; from Lawrence Berkeley Laboratory with her keynote on &lt;a href="http://news.supercomp.de/goto.php?l=14t37k.d7g4tg,u=aa6114e08e3ce4f14aba2041ea94f389,n=12k09.ocfemh,art_id=12k09.ocfemh"&gt;Science in the Clouds: A View from Berkeley&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I had a pleasure to meet in person Prof.Dr. Dan Reed who practically started the conference with a great keynote. Dan is by the way Microsoft Corporate Vice President, Technology Strategy and Policy &amp;amp; Extreme Computing Group, Microsoft, USA.    &lt;br /&gt;He is working on many interesting projects, which could possible change the future of information technology or even already has changed it.I have tried to recap our conversation in few major topics.&lt;/p&gt;  &lt;h3&gt;The Society, new technologies and the Cloud&lt;/h3&gt;  &lt;p&gt;At the moment, I’m disappointed about how we (people in Germany) are ready to adopt new ideas. For example Google-Street View. Too many people are too scared. Are we getting too old that fast? because of this, I asked following question:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Dan, what is easier? To develop a new technology or to adopt it by society?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Dan thinks that we are at the moment just renaming more or less already existing terms and technologies. For example, many years ago we started to talk about “hosted services”. Isn’t that somehow SasS?   &lt;br /&gt;It seems to be just a question of time when things like Windows Azure will be totally adopted. In research space people work with high performance computing. In application development space people use more domain specific tools and do not need raw parallel computing.&lt;/p&gt;  &lt;p&gt;When things like massive scale in Windows Azure will be adopted is also a measure of hardware and performance. For example, do I need to calculate my Excel sheets on my single machine or to span it across multiple machines in the cloud?   &lt;br /&gt;    &lt;br /&gt;In third, consumers space, the cloud has already begun by integrating of client devices, laptops, mobile phones etc.     &lt;br /&gt;    &lt;br /&gt;It will take a time, by the cloud is adopting by society step by step.&lt;/p&gt;  &lt;h3&gt;Security consideration as “Made in Germany”&lt;/h3&gt;  &lt;p&gt;Because I have a feeling that society in Germany seems to be surprisingly sometimes very conservative and in some points often even destructive, when new technologies need be adopted. My colleges in US are adopting the cloud more quickly than my colleges in Germany.   &lt;br /&gt;I asked why:     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;Dan&lt;/em&gt;&lt;/strong&gt;, &lt;em&gt;&lt;strong&gt;What is more safe? My credit card in the pocked or my data in the cloud?       &lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;    &lt;br /&gt;Dan found this question very, amusing. :)&lt;/p&gt;  &lt;p&gt;He answered shortly: ”&lt;em&gt;The security is a perception”. It is some kind of&amp;#160; social trust to some person&lt;/em&gt;”. Dan thinks, that perception of security in the cloud can be achieved by adopting of common international policy. It is a conflict between economy and technology. One of major problems are different cultural expectations and policies. We need to look for commonalities.    &lt;br /&gt;In technology we need approvable chain of trust, which would involve different penetrations. We will also need a trusted platform models with cryptographic support. This kind of security should enable external users to verify that what they expect to see.    &lt;br /&gt;One of very important researching in this context is for example “searchable encryption”. Soon we will need to run computation on encrypted data in general.    &lt;br /&gt;Such kind of technology will definitely have an impact on perception of security and trust in the cloud.&lt;/p&gt;  &lt;h3&gt;Cooperation between Extreme Computing research and Windows Azure Team&lt;/h3&gt;  &lt;p&gt;Because I have often a feeling that some research projects sometimes are a bit disconnected from real industry needs, I just had to ask this question:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Dan, how tightly do you work with Windows Azure team?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Dan says, that lot of research work is already consisted part of Windows Azure.    &lt;br /&gt;I find also few next statements very interesting for community.    &lt;br /&gt;At the moment Dan’s group is working on the next generation of hardware for cloud. For example, they are trying to build the processor, computer etc. to spent as less energy as possible.&lt;/p&gt;  &lt;h3&gt;About the next big thing&lt;/h3&gt;  &lt;p&gt;Because I’m working in highly innovative software company (&lt;a&gt;daenet&lt;/a&gt;) I just have to know what his group is doing right now?    &lt;br /&gt;&lt;strong&gt;&lt;em&gt;       &lt;br /&gt;Dan, What is your most exciting project at the moment which is not under NDA?        &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;    &lt;br /&gt;Again, he found my question funny.    &lt;br /&gt;As I understood, the major requirement in his group is at the moment to build the hardware which is able&amp;#160; reuse energy like solar and wind energy sources . The structure and concepts of such hardware will have a strong impact on infrastructure and implicitly also on and programming model and applications itself . In this concept things like power grids,&amp;#160; solar and wind energy play a very important role.    &lt;br /&gt;It is lot of about eco-friendly and much more smaller datacenters. More efficient cooling, by complete redesign of hardware. And, it is not all about technology. Much more other things come into play. For example energy cost or even geological and political stability.&lt;/p&gt;  &lt;p&gt;In this context I also asked following question:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Is there some even more exciting project, which is a top secret one?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Dan laughed again and answered “I couldn&amp;#39;t’ tell you that”. :)&lt;/p&gt;  &lt;h3&gt;The message for developers&lt;/h3&gt;  &lt;p&gt;I was interested to know when we developers need to move to Windows Azure programming model?   &lt;br /&gt;He thinks that we all are today in a division of the future. In fact, we need to build software as usual today. But, the Cloud is inside of Microsoft truly more than just a marketing story. Microsoft is committed to Cloud.     &lt;br /&gt;I asked him to define more precisely the time when we will no more build any other than cloud capable software. (please all of you who is reading this,&amp;#160; do not understand this absolutely). I wanted to know does this point of time falls in this decade?    &lt;br /&gt;He said, “&lt;em&gt;Definitely.It is sooner as we think”&lt;/em&gt;.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.isc-cloud.com/2010"&gt;&lt;img title="ISC &amp;#39;11" alt="ISC &amp;#39;11" src="http://www.isc-cloud.com/2010/var/cloud/storage/images/design/isc-cloud-10/172-7-eng-GB/ISC-Cloud-10.png" width="341" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dan, thank you for your time.&lt;/p&gt;  &lt;p&gt;Damir&lt;/p&gt;</description></item><item><title>WCF Analytic Trace Messages</title><link>http://developers.de/blogs/damir_dobric/archive/2010/10/23/wcf-analytic-trace-messages.aspx</link><pubDate>Sat, 23 Oct 2010 11:50:10 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:27931</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;Some of you may know that windows provides by default Event Trace Session called “&lt;em&gt;EventLog-Microsoft-Windows-Application Server-Applications-Analytic&lt;/em&gt;”. session. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_6F6D88BB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_0DD7C9A5.png" width="752" height="237" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This session can be enabled by enabling of Analytic-Event log:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_2D1A7078.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_45AA0DC8.png" width="592" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Assuming that your service has following diagnostic configuration and both, client and service are running on the same machine the trace will produce messages shown below:&lt;/p&gt;  &lt;p&gt;&amp;lt;diagnostics &amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;strong&gt;endToEndTracing&lt;/strong&gt; propagateActivity=&amp;quot;true&amp;quot; messageFlowTracing=&amp;quot;true&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;lt;/diagnostics&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;1. The Dispatcher invoked &lt;strong&gt;&amp;#39;BeforeSendRequest&amp;#39;&lt;/strong&gt; on a ClientMessageInspector of type&amp;#160; &amp;#39;Microsoft.VisualStudio.Diagnostics.ServiceModelSink.StubClientEventSink&amp;#39;.       &lt;br /&gt;      &lt;br /&gt;2. The Client is executing Action &amp;#39;&lt;/font&gt;&lt;a href="http://tempuri.org/ICalculator/Add&amp;#39;"&gt;&lt;font color="#0000ff"&gt;http://tempuri.org/ICalculator/Add&amp;#39;&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; associated with the &amp;#39;ICalculator&amp;#39; contract. The message will be sent to &amp;#39;http://localhost/MyService/Calculator.svc&amp;#39;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;3. The transport sent a message to &amp;#39;http://localhost/MyService/Calculator.svc&amp;#39;.      &lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;&lt;font color="#ff0000"&gt;4. ServiceHost started: &amp;#39;Microsoft.Samples.MyService.Calculator&amp;#39;.      &lt;br /&gt;      &lt;br /&gt;5. The transport received a message from &amp;#39;http://localhost/MyService/Calculator.svc&amp;#39;.       &lt;br /&gt;      &lt;br /&gt;6. The Dispatcher received a message from the transport. Correlation ID == &amp;#39;{00000000-0000-0000-0000-000000000000}&amp;#39;.       &lt;br /&gt;      &lt;br /&gt;7. The Dispatcher invoked &lt;strong&gt;&lt;strike&gt;&amp;#39;AfterReceiveReply&amp;#39;&lt;/strike&gt;(&lt;/strong&gt;&lt;em&gt;means AfterReceiveRequest&lt;/em&gt;&lt;strong&gt;)&lt;/strong&gt; on a MessageInspector of type &amp;#39;Microsoft.VisualStudio.Diagnostics.ServiceModelSink.StubServerEventSink&amp;#39;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;8. An OperationInvoker invoked the &amp;#39;Add&amp;#39; method. Caller information: &amp;#39;::1:10376&amp;#39;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;9.&amp;#160; Custom Message (if exist)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name:&amp;#39;DidAddLogic&amp;#39;, Reference:&amp;#39;Default Web Site/MySevicetor.svc|Calculator&amp;#39;, Payload:1+7=8       &lt;br /&gt;      &lt;br /&gt;10. An OperationInvoker completed the call to the &amp;#39;Add&amp;#39; method.&amp;#160; The method call duration was &amp;#39;3&amp;#39; ms.       &lt;br /&gt;      &lt;br /&gt;11. The Dispatcher invoked &lt;strong&gt;&lt;strike&gt;&amp;#39;BeforeSendRequest&amp;#39;&lt;/strike&gt;&lt;/strong&gt; (&lt;em&gt;means BeforeSendReply&lt;/em&gt;) on a MessageInspector of type &amp;#39;Microsoft.VisualStudio.Diagnostics.ServiceModelSink.StubServerEventSink&amp;#39;.       &lt;br /&gt;      &lt;br /&gt;12. The Dispatcher sent a message to the transport. Correlation ID == &amp;#39;{00000000-0000-0000-0000-000000000000}&amp;#39;.       &lt;br /&gt;      &lt;br /&gt;13. The transport sent a message to &amp;#39;http://localhost/MyService/Calculator.svc&amp;#39;.       &lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;&lt;font color="#0000ff"&gt;14. The transport received a message from &amp;#39;http://localhost/MyService/Calculator.svc&amp;#39;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;15. The Client completed executing Action &amp;#39;&lt;/font&gt;&lt;a href="http://tempuri.org/ICalculator/Add&amp;#39;"&gt;&lt;font color="#0000ff"&gt;http://tempuri.org/ICalculator/Add&amp;#39;&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; associated with the &amp;#39;ICalculator&amp;#39; contract. The message was sent to &amp;#39;http://localhost/MyService/Calculator.svc&amp;#39;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;17. The Dispatcher invoked &lt;strong&gt;&amp;#39;AfterReceiveReply&amp;#39;&lt;/strong&gt; on a ClientMessageInspector of type &amp;#39;Microsoft.VisualStudio.Diagnostics.ServiceModelSink.StubClientEventSink&amp;#39;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Here is the explanation. The blue trace-messages are client trace-messages and red messages are produced by service.    &lt;br /&gt;Client implements usually &lt;strong&gt;IClientMessageInspector&lt;/strong&gt; ans Service implements &lt;strong&gt;IDispatchMessageInpsector&lt;/strong&gt;. &lt;/p&gt;  &lt;pre&gt;public interface &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Dispatcher.IClientMessageInspector"&gt;IClientMessageInspector&lt;/a&gt;&lt;/b&gt;
{
    // Methods
    &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Void"&gt;void&lt;/a&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Dispatcher.IClientMessageInspector/AfterReceiveReply(System.ServiceModel.Channels.Message&amp;amp;,Object)"&gt;AfterReceiveReply&lt;/a&gt;&lt;/b&gt;(ref &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Channels.Message"&gt;Message&lt;/a&gt; reply, &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Object"&gt;object&lt;/a&gt; correlationState);
    &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Object"&gt;object&lt;/a&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Dispatcher.IClientMessageInspector/BeforeSendRequest(System.ServiceModel.Channels.Message&amp;amp;,System.ServiceModel.IClientChannel):Object"&gt;BeforeSendRequest&lt;/a&gt;&lt;/b&gt;(ref &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Channels.Message"&gt;Message&lt;/a&gt; request, &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.IClientChannel"&gt;IClientChannel&lt;/a&gt; channel);
}&lt;/pre&gt;

&lt;pre&gt;public interface &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Dispatcher.IDispatchMessageInspector"&gt;IDispatchMessageInspector&lt;/a&gt;&lt;/b&gt;
{
    // Methods
    &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Object"&gt;object&lt;/a&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Dispatcher.IDispatchMessageInspector/AfterReceiveRequest(System.ServiceModel.Channels.Message&amp;amp;,System.ServiceModel.IClientChannel,System.ServiceModel.InstanceContext):Object"&gt;AfterReceiveRequest&lt;/a&gt;&lt;/b&gt;(ref &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Channels.Message"&gt;Message&lt;/a&gt; request, &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.IClientChannel"&gt;IClientChannel&lt;/a&gt; channel, &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.InstanceContext"&gt;InstanceContext&lt;/a&gt; instanceContext);
    &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Void"&gt;void&lt;/a&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Dispatcher.IDispatchMessageInspector/BeforeSendReply(System.ServiceModel.Channels.Message&amp;amp;,Object)"&gt;BeforeSendReply&lt;/a&gt;&lt;/b&gt;(ref &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.ServiceModel:4.0.0.0:b77a5c561934e089/System.ServiceModel.Channels.Message"&gt;Message&lt;/a&gt; reply, &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Object"&gt;object&lt;/a&gt; correlationState);
}&lt;/pre&gt;

&lt;p&gt;
  &lt;br /&gt;Mesages 7 and 11 seem to have invalid description, but the sequence is correct. Messages 4 to 13 are traced out if the service is started in debugger. If the service is not started in debugger only messages traced out.Nate that under some circumvents last statement is not always valid. 

  &lt;/p&gt;</description></item><item><title>Attach Debugger Security Warning</title><link>http://developers.de/blogs/damir_dobric/archive/2009/11/13/attach-debugger-security-warning.aspx</link><pubDate>Fri, 13 Nov 2009 17:12:55 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:9042</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;While debugging you WCF-Service or ASP.NET application within UnitTest you may get following warning when stepping into the service code.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;“Attaching to this process can potentially harm your computer…”&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;For example, this can happen when you have the UnitTest which invokes the Service via generate Proxy instance. When you start the UnitTest method in debugger the Visual Studio will attach VsTest.exe process. However, if you want to step into the service code (by pressing “F11”) the Visual Studio will first have to attach to the process which hosts the service. This might be Cassini or IIS. At this moment you may get following warning:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_45FB9C94.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_49B94164.png" width="433" height="248" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you have been doing this for a while you might be surprised that this message sometimes appears and sometimes not. If you have this feeling you are right.   &lt;br /&gt;This message will appear if the attaching process which hosts the service is hosted by user which has no debugging permissions. Mostly this just mean it is not the local admin. More precisely, if the host is a process started by IIS (w3wp.exe) the host identity is defined by identity of the pool of the web application which hosts the service.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So, if the pool’s identity has no permission for debugging the message shown above will be popped up. Please be also aware that when working in team you will sometimes be forced to create (next picture) the local directory. In this case IIS will automatically setup the application to default pool, which by default (NETWORK_SERVICE) has no debugging permission.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_7CE55500.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_166CE22E.png" width="736" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Authenticode verification with signtool.exe</title><link>http://developers.de/blogs/damir_dobric/archive/2009/05/02/authenticode-verification-with-signtool-exe.aspx</link><pubDate>Sat, 02 May 2009 14:37:05 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:5198</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;This post shows two examples which shows how to verify signature of an application based on Authenticode policy. First example will fail, because the application is signed with the key, whose root certificate is not trusted.&lt;/p&gt;  &lt;h4&gt;Example 1 (it will fail)&lt;/h4&gt;  &lt;p&gt;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin&amp;gt;signtool verify /v /pa c:\temp   &lt;br /&gt;\SampleApplication.exe &lt;/p&gt;  &lt;p&gt;Verifying: c:\temp\SampleApplication.exe   &lt;br /&gt;SHA1 hash of file: 99CE8EA6C1096C7CF9CD96C4A2E707A096CA1E76    &lt;br /&gt;SignTool Error: WinVerifyTrust returned error: 0x800B010D    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The certification path terminates with the test root which is not truste    &lt;br /&gt;d with the current policy settings.    &lt;br /&gt;Signing Certificate Chain:    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Issued to: Root Agency    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Issued by: Root Agency    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Expires:&amp;#160;&amp;#160; 01.01.2040 01:59:59    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SHA1 hash: FEE449EE0E3965A5246F000E87FDE2A065FD89D4 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Issued to: daenetauthenticode   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Issued by: Root Agency    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Expires:&amp;#160;&amp;#160; 01.01.2040 01:59:59    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SHA1 hash: 79FBF8FAE05640808B8B488BD5728B59B19D0766 &lt;/p&gt;  &lt;p&gt;File is not timestamped.   &lt;br /&gt;SignTool Error: File not valid: c:\temp\SampleApplication.exe &lt;/p&gt;  &lt;p&gt;Number of files successfully Verified: 0   &lt;br /&gt;Number of warnings: 0    &lt;br /&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Number of errors: 1&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Example 2 (it will succeed)&lt;/p&gt;  &lt;p&gt;Now after the root certificate is installed under trusted publishers, the same verification will pass successfully.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_6A1A2FF7.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://developers.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damir_5F00_dobric/image_5F00_thumb_5F00_2258A710.png" width="1088" height="195" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin&amp;gt;signtool verify /v /pa c:\temp   &lt;br /&gt;\SampleApplication.exe &lt;/p&gt;  &lt;p&gt;Verifying: c:\temp\SampleApplication.exe   &lt;br /&gt;SHA1 hash of file: 99CE8EA6C1096C7CF9CD96C4A2E707A096CA1E76    &lt;br /&gt;Signing Certificate Chain:    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Issued to: Root Agency    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Issued by: Root Agency    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Expires:&amp;#160;&amp;#160; 01.01.2040 01:59:59    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SHA1 hash: FEE449EE0E3965A5246F000E87FDE2A065FD89D4 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Issued to: daenetauthenticode   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Issued by: Root Agency    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Expires:&amp;#160;&amp;#160; 01.01.2040 01:59:59    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SHA1 hash: 79FBF8FAE05640808B8B488BD5728B59B19D0766 &lt;/p&gt;  &lt;p&gt;File is not timestamped.   &lt;br /&gt;Successfully verified: c:\temp\SampleApplication.exe &lt;/p&gt;  &lt;p&gt;Number of files successfully Verified: 1   &lt;br /&gt;Number of warnings: 0    &lt;br /&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Number of errors: 0&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Manipulating of Message Header in Silverlight</title><link>http://developers.de/blogs/damir_dobric/archive/2009/02/19/manipulating-of-message-header-in-silverlight.aspx</link><pubDate>Thu, 19 Feb 2009 22:43:56 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:4061</guid><dc:creator>ddobric</dc:creator><description>&lt;p&gt;Almost two years ago I have posted in &amp;quot;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2006/10/20/980.aspx" target="_blank"&gt;Hacking of WCF&amp;#39;s OperationContext&lt;/a&gt;&amp;quot; about manipulating of header of the message in WCF. The same feature is also provided in Silverlight since RTW 2 BETA2. Here is an example:&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:de;mso-fareast-language:de;mso-bidi-language:ar-sa;"&gt;&lt;/p&gt; &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#ffff99;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-border-alt:solid #1f497d .5pt;mso-border-themecolor:text2;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:.5pt solid #1f497d;mso-border-insideh-themecolor:text2;mso-border-insidev:.5pt solid #1f497d;mso-border-insidev-themecolor:text2;" cellspacing="0" cellpadding="0"&gt;  &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt; &lt;td style="border-right:#1f497d 1pt solid;padding-right:5.4pt;border-top:#1f497d 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:#1f497d 1pt solid;width:460.6pt;padding-top:0cm;border-bottom:#1f497d 1pt solid;mso-border-alt:solid #1f497d .5pt;mso-border-themecolor:text2;"&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:#2b91af;"&gt;Service&lt;/span&gt; proxy = &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:#2b91af;"&gt;Service();&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy.OnOperationCompleted += &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;DoWorkCompletedEventArgs&lt;/span&gt;&amp;gt;(onCompleted);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;OperationContextScope&lt;/span&gt; ctx= &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;OperationContextScope&lt;/span&gt;(proxy.InnerChannel))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:#2b91af;font-family:&amp;#39;Courier New&amp;#39;;"&gt;OperationContext&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;.Current.OutgoingMessageHeaders.Add &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;span style="color:#2b91af;"&gt;MessageHeader&lt;/span&gt;.CreateHeader(&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;font color="#ff0000"&gt;SomeHeader&lt;/font&gt;&amp;quot;&lt;/span&gt;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#a31515;"&gt;&amp;quot;&lt;a href="http://daenet.eu"&gt;http://daenet.eu&lt;/a&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;...&amp;quot;&lt;/span&gt;));&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:green;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy.OperationkAsync(&lt;span style="color:#a31515;"&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:de;mso-fareast-language:de;mso-bidi-language:ar-sa;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Next example shows how to obtain the header value:&lt;/p&gt; &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#ffff99;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-border-alt:solid #1f497d .5pt;mso-border-themecolor:text2;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:.5pt solid #1f497d;mso-border-insideh-themecolor:text2;mso-border-insidev:.5pt solid #1f497d;mso-border-insidev-themecolor:text2;" cellspacing="0" cellpadding="0"&gt;  &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt; &lt;td style="border-right:#1f497d 1pt solid;padding-right:5.4pt;border-top:#1f497d 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:#1f497d 1pt solid;width:460.6pt;padding-top:0cm;border-bottom:#1f497d 1pt solid;mso-border-alt:solid #1f497d .5pt;mso-border-themecolor:text2;"&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; onCompleted(&lt;span style="color:#2b91af;"&gt;IAsyncResult&lt;/span&gt; result)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Service&lt;/span&gt; proxy = (&lt;span style="color:#2b91af;"&gt;Service1&lt;/span&gt;)result.AsyncState;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; (&lt;span style="color:#2b91af;"&gt;OperationContextScope&lt;/span&gt; ocs = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;OperationContextScope&lt;/span&gt;(((&lt;span style="color:#2b91af;"&gt;Service1Client&lt;/span&gt;)proxy).InnerChannel)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; res = proxy.EndDoWork(result);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;string&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; header=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;OperationContext&lt;/span&gt;.Current.IncomingMessageHeaders.GetHeader&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:#a31515;"&gt;&lt;font color="#ff0000"&gt;SomeHeader&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;&lt;a href="http://daenet.eu"&gt;http://daenet.eu&lt;/a&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br style="mso-special-character:line-break;" /&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:de;mso-fareast-language:de;mso-bidi-language:ar-sa;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;/span&gt;</description></item></channel></rss>