<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>rxx Wiki Rss Feed</title><link>http://rxx.codeplex.com/</link><description>rxx Wiki Rss Description</description><item><title>Updated Wiki: Either</title><link>http://rxx.codeplex.com/wikipage?title=Either&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Either&amp;lt;TLeft, TRight&amp;gt;&lt;/h1&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; .NET 4.0 &lt;/th&gt;&lt;th&gt; Silverlight 4 &lt;/th&gt;&lt;th&gt; Silverlight 5 &lt;/th&gt;&lt;th&gt; Phone 7.0 &lt;/th&gt;&lt;th&gt; Phone 7.1 &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=524106" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=524106" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=524106" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=524106" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=524106" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h2&gt;See &lt;a href="http://rxx.codeplex.com/discussions/401272"&gt;this discussion&lt;/a&gt; for an overview.&lt;br /&gt;&lt;br /&gt;(TODO)&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 30 Oct 2012 17:44:02 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Either 20121030054402P</guid></item><item><title>Updated Wiki: Either</title><link>http://rxx.codeplex.com/wikipage?title=Either&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Either&amp;lt;TLeft, TRight&amp;gt;&lt;/h1&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; .NET 4.0 &lt;/th&gt;&lt;th&gt; Silverlight 4 &lt;/th&gt;&lt;th&gt; Silverlight 5 &lt;/th&gt;&lt;th&gt; Phone 7.0 &lt;/th&gt;&lt;th&gt; Phone 7.1 &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt; &lt;/td&gt;&lt;td&gt; &lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt; &lt;/td&gt;&lt;td&gt; &lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt; &lt;/td&gt;&lt;td&gt; &lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt; &lt;/td&gt;&lt;td&gt; &lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h2&gt;See &lt;a href="http://rxx.codeplex.com/discussions/401272"&gt;this discussion&lt;/a&gt; for an overview.&lt;br /&gt;&lt;br /&gt;(TODO)&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 30 Oct 2012 17:43:00 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Either 20121030054300P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://rxx.codeplex.com/documentation?version=36</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Rxx Documentation&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Release%20Notes&amp;referringTitle=Documentation"&gt;Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Getting%20Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Getting%20Started%20with%20Rx%20Code%20Contracts&amp;referringTitle=Documentation"&gt;Getting Started with Rx Code Contracts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Labs&amp;referringTitle=Documentation"&gt;Hands-on Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Contributions&amp;referringTitle=Documentation"&gt;Making Contributions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=Documentation"&gt;How To Build the Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=TCP%20Qbservable%20Provider&amp;referringTitle=Documentation"&gt;TCP Qbservable Provider&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h1&gt;Rxx Features &lt;a name="Features"&gt;&lt;/a&gt;&lt;/h1&gt;The following table shows all of the features that Rxx offers and the differences between the multi-targeted versions of Rxx.dll.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; = Fully supported&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; = Partially supported&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Feature																									&lt;/th&gt;&lt;th&gt; .NET 4.0			&lt;/th&gt;&lt;th&gt; Silverlight 4/5 &lt;/th&gt;&lt;th&gt; Phone 7.0		 &lt;/th&gt;&lt;th&gt; Phone 7.1		 &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Parsers&amp;referringTitle=Documentation"&gt;Parsers&lt;/a&gt; &lt;b&gt;*Updated*&lt;/b&gt;																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt;		 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Trace&amp;referringTitle=Documentation"&gt;Trace&lt;/a&gt; extensions																				&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;WebRequest&lt;/a&gt; extensions																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableWebClient&lt;/a&gt; &lt;b&gt;*Updated*&lt;/b&gt;												&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableSocket&lt;/a&gt; &lt;b&gt;*Updated*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableHttpListener&lt;/a&gt;																		&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableTcpListener&lt;/a&gt; &lt;b&gt;*New*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableSmtpClient&lt;/a&gt;																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableDns&lt;/a&gt;																							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservablePing&lt;/a&gt;																						&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableNewtworkChange&lt;/a&gt;																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableSyndication&lt;/a&gt;																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=FromPropertyChangedPattern&amp;referringTitle=Documentation"&gt;FromPropertyChangedPattern&lt;/a&gt; extension										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; FromEventBasedAsyncPattern extension											&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Zip and CombineLatest extensions &lt;b&gt;*New*&lt;/b&gt;							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; TimeShift and related extensions													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; OrderBy, ThenBy and descending extensions &lt;b&gt;*New*&lt;/b&gt;			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;WCF&lt;/a&gt; extensions &lt;b&gt;*New*&lt;/b&gt;																&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; UI extensions																							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; CommandSubject and ICommand extensions										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=OnError&amp;referringTitle=Documentation"&gt;Catch, Retry and OnErrorResumeNext&lt;/a&gt; extensions							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Cursor types and extensions																&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;Serve&lt;/a&gt; extension																						&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Introspect and Introspective extensions										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Prime and StartPrimed extensions													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Multicast extension																				&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Pair and IObservable&amp;lt;Either&amp;gt; extensions										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Either&amp;referringTitle=Documentation"&gt;Either&amp;#60;TLeft, TRight&amp;#62;&lt;/a&gt;																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Maybe&amp;lt;T&amp;gt; (type and extension)															&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Scalar&amp;lt;T&amp;gt;																									&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=IO&amp;referringTitle=Documentation"&gt;I&amp;#47;O&lt;/a&gt; extensions																						&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;SqlCommand&lt;/a&gt; extensions &lt;b&gt;*New*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; User Data extensions &lt;b&gt;*New*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt;								&lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Consume extension																					&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; ListSubject, DictionarySubject extensions &lt;b&gt;*Updated*&lt;/b&gt;	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Operational classes and extensions												&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=ObservableDynamicObject&amp;referringTitle=Documentation"&gt;ObservableDynamicObject&lt;/a&gt;																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; SerialDisposable extensions																&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Expression extensions																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; PropertyDescriptor extensions															&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; ApplicationSettingsBase extensions												&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; IEnumerable&amp;lt;T&amp;gt; extensions																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 30 Oct 2012 17:39:14 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20121030053914P</guid></item><item><title>Updated Wiki: Home</title><link>http://rxx.codeplex.com/wikipage?version=14</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Welcome&lt;/h1&gt;Rxx is a library of unofficial reactive LINQ extensions supplementary to Microsoft&amp;#39;s Reactive Extensions for .NET &amp;#40;Rx&amp;#41;.  Rxx is developed entirely in C# and targets the .NET Framework 4.0, Silverlight 4.0/5.0 and Windows Phone 7.0/7.1.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://rxx.codeplex.com/documentation?referringTitle=Home"&gt;Documentation&lt;/a&gt; tab shows the complete list of extensions and features.
&lt;h1&gt;Goals&lt;/h1&gt;&lt;ol&gt;&lt;li&gt;The Rxx project is designed to provide LINQ extensions that we (the contributors) believe are useful in real-world applications and are not currently present in the Microsoft Reactive Extensions for .NET (Rx) libraries.&lt;/li&gt;
&lt;li&gt;Rxx is NOT meant to supersede Rx, but to supplement it.  We&amp;#39;d prefer for our extensions to be included in Rx and will remove any duplication from our library as they evolve.&lt;/li&gt;
&lt;li&gt;Rxx is currently packaged as a single class library to make distribution and integration into your applications easier.
&lt;ol&gt;&lt;li&gt;We offer stable and experimental releases for 3 different platforms: .NET 4.0, Silverlight 4/5 and Windows Phone 7.0/7.1.&lt;/li&gt;
&lt;li&gt;You can also download &lt;a href="http://nuget.org/List/Packages/Rxx"&gt;Rxx on NuGet&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Community feedback and contributions will help guide the evolution of Rxx.&lt;/li&gt;&lt;/ol&gt;

&lt;h1&gt;Getting Started&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;See our &lt;a href="http://rxx.codeplex.com/wikipage?title=Release%20Notes&amp;referringTitle=Home"&gt;Release Notes&lt;/a&gt; and &lt;a href="http://rxx.codeplex.com/wikipage?title=Getting%20Started&amp;referringTitle=Home"&gt;Getting Started&lt;/a&gt; topics.&lt;/li&gt;
&lt;li&gt;Before experimenting with Rxx, read about our &lt;a href="http://rxx.codeplex.com/wikipage?title=Labs&amp;referringTitle=Home"&gt;Hands-on Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;If you&amp;#39;re looking to contribute, then please see our &lt;a href="http://rxx.codeplex.com/wikipage?title=Contributions&amp;referringTitle=Home"&gt;Contributions&lt;/a&gt; topic.&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;See Also&lt;/h1&gt;You can find more information about Microsoft&amp;#39;s Reactive Extensions for .NET (Rx) at the following locations: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/gg577609"&gt;MSDN Data Developer Center: Reactive Extensions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;DevLabs: Reactive Extensions for .NET (Rx)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/rxteam/"&gt;Reactive Extensions Team Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/rx/threads"&gt;Reactive Extensions for .NET (Rx) Forum&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 15 Aug 2012 17:49:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120815054918P</guid></item><item><title>New Comment on "Documentation"</title><link>http://rxx.codeplex.com/documentation?&amp;ANCHOR#C24660</link><description>Please ask questions in the Discussions area in the future.  I don&amp;#39;t get notified about new comments.&amp;#10;&amp;#10;To answer your question, the MSDN-style library reference documentation is available in the Downloads area.  Look for &amp;#34;Rxx Doc&amp;#34; for your desired platform&amp;#40;s&amp;#41;.</description><author>davedev</author><pubDate>Thu, 09 Aug 2012 00:23:42 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation" 20120809122342A</guid></item><item><title>New Comment on "Documentation"</title><link>http://rxx.codeplex.com/documentation?&amp;ANCHOR#C23882</link><description>Where&amp;#39;s the MSDN-style library reference documentation&amp;#63;</description><author>mattme</author><pubDate>Wed, 30 May 2012 13:25:12 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation" 20120530012512P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=12</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples"&gt;Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;br /&gt;For more in-depth information, see &lt;a href="http://davesexton.com/blog/page/TCP-Qbservable-Provider-Series.aspx"&gt;this series of blog posts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.
&lt;h5&gt;Server&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.
&lt;h5&gt;Client&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  The server will start as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  You can run several client console applications at the same time.&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Sat, 05 May 2012 21:10:15 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120505091015P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=11</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples"&gt;Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;br /&gt;For more in-depth information, see &lt;a href="http://davesexton.com/blog/post/LINQ-to-Cloud-IQbservable-Over-the-Wire.aspx"&gt;this blog post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.
&lt;h5&gt;Server&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.
&lt;h5&gt;Client&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  The server will start as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  You can run several client console applications at the same time.&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 02 May 2012 11:42:33 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120502114233A</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=10</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples"&gt;Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;br /&gt;For more in-depth information, see &lt;a href="http://davesexton.com/blog/post/LINQ-to-Cloud-IQbservable-Over-the-Wire.aspx"&gt;this blog post&lt;/a&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.
&lt;h5&gt;Server&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.
&lt;h5&gt;Client&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  The server will start as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  You can run several client console applications at the same time.&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 25 Apr 2012 16:54:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120425045410P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=9</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples"&gt;Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;For more in-depth information, see &lt;a href="http://davesexton.com/blog/post/LINQ-to-Cloud-IQbservable-Over-the-Wire.aspx"&gt;this blog post&lt;/a&gt;.
&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.
&lt;h5&gt;Server&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.
&lt;h5&gt;Client&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  The server will start as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  You can run several client console applications at the same time.&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Wed, 25 Apr 2012 16:53:09 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120425045309P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://rxx.codeplex.com/documentation?version=35</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Rxx Documentation&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Release%20Notes&amp;referringTitle=Documentation"&gt;Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Getting%20Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Getting%20Started%20with%20Rx%20Code%20Contracts&amp;referringTitle=Documentation"&gt;Getting Started with Rx Code Contracts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Labs&amp;referringTitle=Documentation"&gt;Hands-on Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Contributions&amp;referringTitle=Documentation"&gt;Making Contributions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=Documentation"&gt;How To Build the Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rxx.codeplex.com/wikipage?title=TCP%20Qbservable%20Provider&amp;referringTitle=Documentation"&gt;TCP Qbservable Provider&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h1&gt;Rxx Features &lt;a name="Features"&gt;&lt;/a&gt;&lt;/h1&gt;The following table shows all of the features that Rxx offers and the differences between the multi-targeted versions of Rxx.dll.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; = Fully supported&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; = Partially supported&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Feature																									&lt;/th&gt;&lt;th&gt; .NET 4.0			&lt;/th&gt;&lt;th&gt; Silverlight 4/5 &lt;/th&gt;&lt;th&gt; Phone 7.0		 &lt;/th&gt;&lt;th&gt; Phone 7.1		 &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Parsers&amp;referringTitle=Documentation"&gt;Parsers&lt;/a&gt; &lt;b&gt;*Updated*&lt;/b&gt;																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt;		 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Trace&amp;referringTitle=Documentation"&gt;Trace&lt;/a&gt; extensions																				&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;WebRequest&lt;/a&gt; extensions																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableWebClient&lt;/a&gt; &lt;b&gt;*Updated*&lt;/b&gt;												&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableSocket&lt;/a&gt; &lt;b&gt;*Updated*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableHttpListener&lt;/a&gt;																		&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableTcpListener&lt;/a&gt; &lt;b&gt;*New*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableSmtpClient&lt;/a&gt;																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableDns&lt;/a&gt;																							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservablePing&lt;/a&gt;																						&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableNewtworkChange&lt;/a&gt;																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;ObservableSyndication&lt;/a&gt;																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=FromPropertyChangedPattern&amp;referringTitle=Documentation"&gt;FromPropertyChangedPattern&lt;/a&gt; extension										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; FromEventBasedAsyncPattern extension											&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Zip and CombineLatest extensions &lt;b&gt;*New*&lt;/b&gt;							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; TimeShift and related extensions													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; OrderBy, ThenBy and descending extensions &lt;b&gt;*New*&lt;/b&gt;			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;WCF&lt;/a&gt; extensions &lt;b&gt;*New*&lt;/b&gt;																&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; UI extensions																							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; CommandSubject and ICommand extensions										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=OnError&amp;referringTitle=Documentation"&gt;Catch, Retry and OnErrorResumeNext&lt;/a&gt; extensions							&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Cursor types and extensions																&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;Serve&lt;/a&gt; extension																						&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Introspect and Introspective extensions										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Prime and StartPrimed extensions													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Multicast extension																				&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Pair and IObservable&amp;lt;Either&amp;gt; extensions										&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Either&amp;lt;TLeft, TRight&amp;gt;																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Maybe&amp;lt;T&amp;gt; (type and extension)															&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Scalar&amp;lt;T&amp;gt;																									&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=IO&amp;referringTitle=Documentation"&gt;I&amp;#47;O&lt;/a&gt; extensions																						&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=Networking&amp;referringTitle=Documentation"&gt;SqlCommand&lt;/a&gt; extensions &lt;b&gt;*New*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; User Data extensions &lt;b&gt;*New*&lt;/b&gt;													&lt;/td&gt;&lt;td&gt;								&lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Consume extension																					&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; ListSubject, DictionarySubject extensions &lt;b&gt;*Updated*&lt;/b&gt;	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352569" alt="P.png" title="P.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Operational classes and extensions												&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://rxx.codeplex.com/wikipage?title=ObservableDynamicObject&amp;referringTitle=Documentation"&gt;ObservableDynamicObject&lt;/a&gt;																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; SerialDisposable extensions																&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Expression extensions																			&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; PropertyDescriptor extensions															&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; ApplicationSettingsBase extensions												&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt;									 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;td&gt;							 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; IEnumerable&amp;lt;T&amp;gt; extensions																	&lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; 	 &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;td&gt; &lt;img src="http://i3.codeplex.com/Download?ProjectName=rxx&amp;DownloadId=352568" alt="S.png" title="S.png" /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:54:39 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120424065439P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=8</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples"&gt;Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.
&lt;h5&gt;Server&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.
&lt;h5&gt;Client&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  The server will start as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;/li&gt;
&lt;li&gt;Build and run.  You can run several client console applications at the same time.&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:48:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424064847P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=7</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples"&gt;Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.
&lt;h5&gt;Server&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.
&lt;h5&gt;Client&lt;/h5&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;&lt;/ol&gt;
3. Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;br /&gt;4. Build and run.  The server will start as soon as the console application begins.&lt;br /&gt;5. Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;br /&gt;6. Build and run.  You can run several client console applications at the same time.&lt;br /&gt;7. When the client console application starts, press any key to connect to the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:45:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424064553P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples"&gt;Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;&lt;/ol&gt;
3. Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;br /&gt;4. Build and run.  The server will start as soon as the console application begins.&lt;br /&gt;5. Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;br /&gt;6. Build and run.  You can run several client console applications at the same time.&lt;br /&gt;7. When the client console application starts, press any key to connect to the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:44:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424064432P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Examples|Simple Examples"&gt;Examples|Simple Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Simple Examples&lt;a name="Examples"&gt;&lt;/a&gt;&lt;/h3&gt;The following example creates a &lt;i&gt;cold&lt;/i&gt; observable sequence that generates a new notification every second and exposes it as an &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service over TCP port 3205 on the local computer.&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
IObservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; source = Observable.Interval(TimeSpan.FromSeconds(1));

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = source.ServeQbservableTcp(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (service.SubscribeEither(
	client =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client shutdown.&amp;quot;&lt;/span&gt;),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Fatal error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;This will never be printed because a service host never completes.&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;The following example creates a LINQ query over the &lt;span class="codeInline"&gt;IQbservable&amp;lt;long&amp;gt;&lt;/span&gt; service that is created by the previous example.  Subscribing to the query on the client causes the query to be serialized to the server and executed there.  In other words, the &lt;span class="codeInline"&gt;where&lt;/span&gt; clause is actually executed on the server so that the client only receives the data that it requested without having to do any filtering itself.  The client will receive the first six values, one per second.  The server then filters out the next 2 values - it does not send them to the client.  Finally, the remaining values are sent to the client until either the client or the server disposes of the subscription.&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; client = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; QbservableTcpClient&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt;(&lt;span style="color:Blue;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 3205));

IQbservable&amp;lt;&lt;span style="color:Blue;"&gt;long&lt;/span&gt;&amp;gt; query =
	&lt;span style="color:Blue;"&gt;from&lt;/span&gt; value &lt;span style="color:Blue;"&gt;in&lt;/span&gt; client.Query()
	&lt;span style="color:Blue;"&gt;where&lt;/span&gt; value &amp;lt;= 5 || value &amp;gt;= 8
	&lt;span style="color:Blue;"&gt;select&lt;/span&gt; value;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; (query.Subscribe(
	value =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Client observed: &amp;quot;&lt;/span&gt; + value),
	ex =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;, ex.Message),
	() =&amp;gt; Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;)))
{
	Console.ReadKey();
}
&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;All of the assemblies that you need to build your own applications are located in the &lt;i&gt;bin&lt;/i&gt; folder.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To run the examples:&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h5&gt;To build the source code:&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;&lt;/ol&gt;
3. Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;br /&gt;4. Build and run.  The server will start as soon as the console application begins.&lt;br /&gt;5. Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;br /&gt;6. Build and run.  You can run several client console applications at the same time.&lt;br /&gt;7. When the client console application starts, press any key to connect to the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:44:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424064413P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#Overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#GettingStarted"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#SourceCode"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#Planning"&gt;Planning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;a name="Overview"&gt;&lt;/a&gt;&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;a name="Features"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Getting Started&lt;a name="GettingStarted"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h4&gt;Source Code&lt;a name="SourceCode"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=Building&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;How To Build the Source Code&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;&lt;/ol&gt;
3. Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;br /&gt;4. Build and run.  The server will start as soon as the console application begins.&lt;br /&gt;5. Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;br /&gt;6. Build and run.  You can run several client console applications at the same time.&lt;br /&gt;7. When the client console application starts, press any key to connect to the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;a name="Planning"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:23:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424062318P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All Qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Getting Started&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key at any time will stop the server.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableClient.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;You can run several client console applications at the same time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;When the client console application starts, press any key to connect to the server.  The client will begin running the first example.&lt;/li&gt;
&lt;li&gt;Press any key to stop the current example and start the following example.&lt;/li&gt;&lt;/ol&gt;
&lt;h4&gt;Source Code&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Download the source code from the &lt;b&gt;Source Code&lt;/b&gt; tab.
&lt;ol&gt;&lt;li&gt;The solution is located under the &lt;b&gt;QbservableProvider&lt;/b&gt; directory, but it depends upon the relative path to the &lt;b&gt;Main&lt;/b&gt; branch.  Make sure that both paths exist.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;You must build the Rxx 2.0 Beta project in the &lt;b&gt;Main&lt;/b&gt; branch in &lt;i&gt;Debug&lt;/i&gt; mode.  See &lt;a href="http://rxx.codeplex.com/wikipage?title=How%20To%20Build%20the%20Source%20Code&amp;referringTitle=TCP%20Qbservable%20Provider"&gt;Building&lt;/a&gt; for instructions.&lt;/li&gt;
&lt;li&gt;Open the &lt;b&gt;QbservableProvider&lt;/b&gt; solution in VS 11 Beta.&lt;/li&gt;&lt;/ol&gt;
3. Set the &lt;b&gt;QbservableServer&lt;/b&gt; project as the startup project.&lt;br /&gt;4. Build and run.  The server will start as soon as the console application begins.&lt;br /&gt;5. Set the &lt;b&gt;QbservableClient&lt;/b&gt; project as the startup project.&lt;br /&gt;6. Build and run.  You can run several client console applications at the same time.&lt;br /&gt;7. When the client console application starts, press any key to connect to the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:15:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424061528P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service (&lt;i&gt;hot&lt;/i&gt; or &lt;i&gt;cold&lt;/i&gt;).&lt;/li&gt;
&lt;li&gt;Supports hosting any &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; query as a TCP service.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.
&lt;ul&gt;&lt;li&gt;You must only specify the end point address and the expected return type.  The result is an &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; that you can query and &lt;span class="codeInline"&gt;Subscribe&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;All qbservable Rx operators are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Getting Started&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key will stop the server at any time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;
# 
&lt;ol&gt;&lt;li&gt;You can run several client console applications, if you&amp;#39;d like.
&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;li&gt;When the client console application starts, follow the on-screen instructions.&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:06:02 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424060602P</guid></item><item><title>Updated Wiki: TCP Qbservable Provider</title><link>http://rxx.codeplex.com/wikipage?title=TCP Qbservable Provider&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TCP Qbservable Provider&lt;/h2&gt;&lt;h3&gt;1.0 Alpha&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Targets the .NET Framework 4.5 Beta.&lt;/li&gt;
&lt;li&gt;Written entirely in C# 5 and VS 11 Beta.&lt;/li&gt;
&lt;li&gt;Depends on Rx 2.0 Beta and Rxx 2.0 Beta, both of which are included in the &lt;a href="http://rxx.codeplex.com/releases/view/86611"&gt;download&lt;/a&gt;.
&lt;ul&gt;&lt;li&gt;(Note that Rxx 2.0 Beta is not yet officially released and will most likely change).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Overview&lt;/h3&gt;The TCP Qbservable Provider library enables you to easily expose &lt;span class="codeInline"&gt;IQbservable&amp;lt;T&amp;gt;&lt;/span&gt; services over TCP.  When a client subscribes, its query is serialized to the server as an expression tree and then executed on the server.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Warning:&lt;/b&gt; &lt;b&gt;This provider allows clients to execute arbitrary code on your server.&lt;/b&gt; &lt;/blockquote&gt;&lt;blockquote&gt;This is only an alpha release, so security hasn&amp;#39;t been fully considered.  Do not expose a Qbservable TCP service on a public server or client without taking the necessary precautions to secure them first.&lt;/blockquote&gt;&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Simple server factory methods for hosting a Qbservable TCP service.&lt;/li&gt;&lt;/ul&gt;
** 
&lt;ul&gt;&lt;li&gt;Simple client factory methods for acquiring a Qbservable TCP service.&lt;/li&gt;&lt;/ul&gt;
** 
&lt;ul&gt;&lt;li&gt;Automatically serialized Expression trees.
&lt;ul&gt;&lt;li&gt;Dynamic expressions and debug info expressions are not supported.  All other types of expressions are supported.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Automatically serialized anonymous types.&lt;/li&gt;
&lt;li&gt;Immediate evaluation of local members and closures (optional; default behavior)
&lt;ul&gt;&lt;li&gt;Compiler-generated methods are executed locally and replaced with their return values before the expression is transmitted to the server.  This includes iterator blocks, which are serialized as List&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Evaluation assumes that local methods are never executed for their side-effects.  Actions (void-returning methods) cause an exception.  Do not depend upon the order in which members are invoked.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Full duplex communication (optional; default behavior for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures)
&lt;ul&gt;&lt;li&gt;Must opt-in on server.&lt;/li&gt;
&lt;li&gt;May opt-in on client for full duplex communication of all local members; automatic for &lt;span class="codeInline"&gt;IObservable&amp;lt;T&amp;gt;&lt;/span&gt; closures.&lt;/li&gt;
&lt;li&gt;Duplex communication automatically supports iterator blocks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Designed with extensibility in mind; e.g., supports custom Qbservable service providers, protocols and sinks&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Getting Started&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the latest release and unzip it.&lt;/li&gt;
&lt;li&gt;Run &lt;i&gt;QbservableServer.exe&lt;/i&gt;.
&lt;ol&gt;&lt;li&gt;The server will start hosting example Qbservable services as soon as the console application begins.&lt;/li&gt;
&lt;li&gt;Pressing a key will stop the server at any time.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;
# 
&lt;ol&gt;&lt;li&gt;You can run several client console applications, if you&amp;#39;d like.
&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;li&gt;When the client console application starts, follow the on-screen instructions.&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; To see the original and rewritten expression trees, run the client application with the debugger attached and look at the &lt;i&gt;Output&lt;/i&gt; window.&lt;/blockquote&gt;&lt;h3&gt;Planning&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Research building on top of WCF to support advanced configuration, customization, extensibility, standardization and additional transports such as WebSockets over HTTP.&lt;/li&gt;
&lt;li&gt;Improve expression tree serialization; e.g., fix bugs and write unit tests.&lt;/li&gt;
&lt;li&gt;Consider security.&lt;/li&gt;
&lt;li&gt;Consider memory/performance.&lt;/li&gt;
&lt;li&gt;Support querying from Silverlight 5 and Windows Phone 7.5 apps.  (This may require WebSockets though.)&lt;/li&gt;
&lt;li&gt;Support querying from RxJS clients.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Tue, 24 Apr 2012 18:03:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TCP Qbservable Provider 20120424060310P</guid></item><item><title>Updated Wiki: Release Notes</title><link>http://rxx.codeplex.com/wikipage?title=Release Notes&amp;version=24</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Release Notes&lt;/h1&gt;See also: &lt;a href="http://rxx.codeplex.com/wikipage?title=Getting%20Started&amp;referringTitle=Release%20Notes"&gt;Getting Started&lt;/a&gt; and &lt;a href="http://rxx.codeplex.com/wikipage?title=Contributions&amp;referringTitle=Release%20Notes"&gt;Contributions&lt;/a&gt;
&lt;hr /&gt;
&lt;h3&gt;Rxx 1.3&lt;/h3&gt;&lt;h4&gt;Dependencies &lt;a name="Dependencies"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28568" class="externalLink"&gt;Reactive Extensions (Rx)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.0.11226.2 (Official stable version, SP1)
&lt;ul&gt;&lt;li&gt;This is only required when using the stable Rxx build.&lt;/li&gt;
&lt;li&gt;Rxx does not redistribute Rx, so you must download and install it yourself.  If you&amp;#39;ve installed Rxx via NuGet, then Rx is automatically downloaded for you.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28018" class="externalLink"&gt;Reactive Extensions (Rx)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.1.11111.0 (Experimental)
&lt;ul&gt;&lt;li&gt;This is only required when using the experimental Rxx build.  These downloads are clearly marked with an &lt;i&gt;Experimental&lt;/i&gt; suffix.&lt;/li&gt;
&lt;li&gt;Rxx does not redistribute Rx, so you must download and install it yourself.  If you&amp;#39;ve installed Rxx_Experimental via NuGet, then Rx_Experimental is automatically downloaded for you.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;System.Windows.Interactivity.dll&lt;/b&gt; for Silverlight 4
&lt;ul&gt;&lt;li&gt;Rxx for Silverlight 4 requires that you add a reference to &lt;i&gt;System.Windows.Interactivity.dll&lt;/i&gt; in your Silverlight application when using the &lt;span class="codeInline"&gt;EventSubscription&lt;/span&gt; class.  If you&amp;#39;re not using that class, then you don&amp;#39;t need to add a reference to this assembly.&lt;/li&gt;
&lt;li&gt;This assembly is included in the download package on CodePlex and NuGet; however, the NuGet package does not automatically add a reference in your project.  You must add a reference manually by navigating to the &lt;i&gt;packages&lt;/i&gt; folder.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Microsoft.Contracts.dll&lt;/b&gt; for Windows Phone
&lt;ul&gt;&lt;li&gt;Rxx for Windows Phone requires that you add a reference to &lt;i&gt;Microsoft.Contracts.dll&lt;/i&gt; in your Windows Phone application.&lt;/li&gt;
&lt;li&gt;This assembly is included in the download package on CodePlex and NuGet; however, the NuGet package does not automatically add a reference in your project.  You must add a reference manually by navigating to the &lt;i&gt;packages&lt;/i&gt; folder.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Known Issues&lt;/h4&gt;There are currently no known issues.  To check for the latest known issues, use the &lt;a href="http://rxx.codeplex.com/workitem/list/advanced" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.
&lt;h4&gt;What&amp;#39;s New?&lt;/h4&gt;Rxx 1.3 contains bug fixes and several new features.  See the &lt;a href="http://rxx.codeplex.com/documentation?referringTitle=Release%20Notes"&gt;Documentation&lt;/a&gt; tab for a complete list of the features in Rxx.
&lt;ul&gt;&lt;li&gt;Upgraded to the latest Rx stable and experimental releases.&lt;/li&gt;
&lt;li&gt;Added support for Silverlight 5 and Windows Phone 7.1, including labs.&lt;/li&gt;
&lt;li&gt;Fixed a bug in ObservableWebClient that caused web exceptions to be unhandled.&lt;/li&gt;
&lt;li&gt;Fixed a thread-safety bug in the Introspect (pairwise) operator that caused potentially concurrent notifications.&lt;/li&gt;
&lt;li&gt;Major performance improvements for cursors and parsers, especially the SelectMany, And, All and Exactly operators.&lt;/li&gt;
&lt;li&gt;Fixed various parser operators to avoid stack overflows; e.g., And, All and Exactly.&lt;/li&gt;
&lt;li&gt;Renamed ParserExtensions class to Parser and ObservableParserExtensions class to ObservableParser (a naming convention similar to System.Linq.Enumerable and System.Reactive.Linq.Observable).&lt;/li&gt;
&lt;li&gt;Renamed the ParserExtensions.Parse and ObservableParserExtensions.Parse static factory methods to Create.&lt;/li&gt;
&lt;li&gt;Fixed Exactly(0) so it doesn&amp;#39;t behave like None and instead returns success with length=0.&lt;/li&gt;
&lt;li&gt;Fixed a bug in Ix parsers that prevented the source sequence&amp;#39;s enumerators from being disposed.&lt;/li&gt;
&lt;li&gt;Fixed reactive parsers so they propagate look-ahead notifications for NonGreedy quantifiers.&lt;/li&gt;
&lt;li&gt;Fixed the reactive OnFailure parser operator so that it calls OnError and OnCompleted.&lt;/li&gt;
&lt;li&gt;Refactored the IParserCursor interface and modified the ParserTraceExecutionContext class slightly to support one of the aforementioned optimizations.&lt;/li&gt;
&lt;li&gt;Added support for disabling cursor buffer truncations while the cursor has branches.  (This feature supports one of the aforementioned optimizations for parsers.)&lt;/li&gt;
&lt;li&gt;Added BinaryParser and BinaryObservableParser classes, related types, a ParseBinary extension method (Ix and Rx) and related labs.&lt;/li&gt;
&lt;li&gt;Added an AtEndOfSequence parser operator (Ix and Rx).&lt;/li&gt;
&lt;li&gt;Added Stream.ToEnumerable extension methods.&lt;/li&gt;
&lt;li&gt;Added TcpClientExtensions, TcpListenerExtensions and ObservableTcpListener, including a corresponding lab.&lt;/li&gt;
&lt;li&gt;Renamed RxxLab to BaseConsoleLab and RxxUILab to BaseLab for parity with the Labs Framework templates.&lt;/li&gt;
&lt;li&gt;Excluded Zip and CombineLatest extensions (N-ary IE&amp;lt;IO&amp;lt;&amp;gt;&amp;gt; and Tuple-returning) from experimental builds since they are defined in Rx Experimental.  They may be removed entirely in a subsequent release.&lt;/li&gt;
&lt;li&gt;Added socket extensions for Windows Phone 7.1.  Also added a corresponding socket lab for WP7.1, Silverlight 4 and 5.&lt;/li&gt;
&lt;li&gt;Added ObservableDns for WP7.1 and a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added ObservableNetworkChange.NetworkAddress for WP7.1 and improved ObservableNetworkChange.NetworkAvailability.&lt;/li&gt;
&lt;li&gt;Added ObservableUserData, ContactsExtensions and AppointmentsExtensions classes for WP 7.1, with a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added Socket extensions for EBAP and refactored some existing extensions to use EBAP internally, where appropriate.&lt;/li&gt;
&lt;li&gt;Added SqlCommand extensions.&lt;/li&gt;
&lt;li&gt;Implemented Either.ToString.&lt;/li&gt;
&lt;li&gt;Deleted IPairedObservable and related types (though all IObservable&amp;lt;Either&amp;lt;&amp;gt;&amp;gt; extensions are still available).&lt;/li&gt;
&lt;li&gt;Deleted PairedObservable class and merged extensions into Observable2.  Renamed Create methods to CreateEither.  Renamed ForEachPair to ForEach.&lt;/li&gt;
&lt;li&gt;Renamed PairedObservableExtensions class to ObservableExtensions2.  Renamed SubscribePair methods to SubscribeEither.&lt;/li&gt;
&lt;li&gt;Renamed PairedObserver class to Observer2.  Renamed Create methods to CreateEither.&lt;/li&gt;
&lt;li&gt;Added value-based and time-based OrderBy, OrderByDescending, ThenBy and ThenByDescending extensions for IObservable&amp;lt;T&amp;gt;.  Includes a lab and unit tests.&lt;/li&gt;
&lt;li&gt;Added ObservableServiceAttribute and ObservableOperationAttribute, which support defining WCF service operations that return IObservable&amp;lt;T&amp;gt;.  Includes a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added ICommunicationObject extensions.&lt;/li&gt;
&lt;li&gt;Added INotifyCollectionChanged extensions for converting to CollectionNotification&amp;lt;T&amp;gt; and CollectionModification&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Renamed ToNotification and ToModification extensions to ToNotifications and ToModifications, respectively.  They now return lists.&lt;/li&gt;
&lt;li&gt;Changed the Value property to Values on CollectionModification&amp;lt;T&amp;gt; so that the Add and Remove kinds can model AddRange and RemoveRange.  This is an optimization.&lt;/li&gt;
&lt;li&gt;Added an ExistingValues property that is used instead of the Value property on CollectionNotification objects of the &amp;quot;Exists&amp;quot; kind.  This is an optimization.&lt;/li&gt;
&lt;li&gt;Changed the behavior of the IListSubject.Subscribe and IDictionarySubject.Subscribe methods to include an initial &amp;quot;Exists&amp;quot; notification containing a snapshot of the entire collection.&lt;/li&gt;
&lt;li&gt;Added &amp;quot;Changes&amp;quot; method to IListSubject and IDictionarySubject.  This method returns an observable that does not include any &amp;quot;Exists&amp;quot; notifications but otherwise behaves just like Subscribe.&lt;/li&gt;
&lt;li&gt;Deleted the IListSubject.View and IDictionarySubject.View methods.&lt;/li&gt;
&lt;li&gt;Changed the Accept methods on CollectionNotification&amp;lt;T&amp;gt; so that the exists parameter takes a list as input and the onReplaced parameter takes two inputs (old value and new value).&lt;/li&gt;
&lt;li&gt;Changed the Accept methods on CollectionModification&amp;lt;T&amp;gt; so that the add and remove parameters take lists as input.&lt;/li&gt;
&lt;li&gt;Added RaiseCanExecuteChanged method and a new constructor to AnonymousCommand, which does not require an anonymous event to be specified and instead uses an auto-generated event.&lt;/li&gt;
&lt;li&gt;Added the Scalar&amp;lt;T&amp;gt; type and a corresponding Scalar class with static factory methods.&lt;/li&gt;
&lt;li&gt;Added SampleIntrospective operator with a unit test and a lab.&lt;/li&gt;
&lt;li&gt;Improved lab applications.&lt;/li&gt;&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Rxx 1.2&lt;/h3&gt;&lt;h4&gt;Dependencies &lt;a name="Dependencies"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28568" class="externalLink"&gt;Reactive Extensions (Rx)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.0.10621 (Official stable version, SP1)
&lt;ul&gt;&lt;li&gt;This is only required when using the stable Rxx build.&lt;/li&gt;
&lt;li&gt;Rxx does not redistribute Rx, so you must download and install it yourself.  If you&amp;#39;ve installed Rxx via NuGet, then Rx is automatically downloaded for you.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.nuget.org/List/Packages/Rx_Experimental-Main/1.1.10621" class="externalLink"&gt;Reactive Extensions (Rx)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.1.10621 (Experimental)
&lt;ul&gt;&lt;li&gt;This is only required when using the experimental Rxx build.  These downloads are clearly marked with an &lt;i&gt;Experimental&lt;/i&gt; suffix.&lt;/li&gt;
&lt;li&gt;Rxx does not redistribute Rx, so you must download and install it yourself.  If you&amp;#39;ve installed Rxx via NuGet, then Rx is automatically downloaded for you.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;System.Windows.Interactivity.dll&lt;/b&gt; for Silverlight
&lt;ul&gt;&lt;li&gt;Rxx for Silverlight requires that you add a reference to &lt;i&gt;System.Windows.Interactivity.dll&lt;/i&gt; in your Silverlight  application when using the &lt;span class="codeInline"&gt;EventSubscription&lt;/span&gt; class.  If you&amp;#39;re not using that class, then you don&amp;#39;t need to add a reference to this assembly.&lt;/li&gt;
&lt;li&gt;This assembly is included in the ZIP file that is &lt;a href="http://rxx.codeplex.com/releases" class="externalLink"&gt;available for download&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; as of Feb. 12, 2012; however, it isn&amp;#39;t included in the NuGet package.  This will be corrected in Rxx 1.3.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Microsoft.Contracts.dll&lt;/b&gt; for Windows Phone
&lt;ul&gt;&lt;li&gt;Rxx for Windows Phone requires that you add a reference to &lt;i&gt;Microsoft.Contracts.dll&lt;/i&gt; in your Windows Phone application.&lt;/li&gt;
&lt;li&gt;This assembly is included in the ZIP file that is &lt;a href="http://rxx.codeplex.com/releases" class="externalLink"&gt;available for download&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; as of Feb. 12, 2012; however, it isn&amp;#39;t included in the NuGet package.  This will be corrected in Rxx 1.3.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Known Issues&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;System.Net.ObservableWebClient&lt;/b&gt; causes unhandled exceptions.&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;Do not use any of the &lt;b&gt;System.Net.ObservableWebClient&lt;/b&gt; methods if it&amp;#39;s possible that any kind of exception might be thrown by your web request.  All exceptions will result in an exception on a pooled thread that cannot be handled, ultimately crashing your application.&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;Workaround&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Use the &lt;b&gt;System.Net.WebClientExtensions&lt;/b&gt; methods instead.  The only difference is that these extensions require you to construct and dispose of a WebClient object yourself.&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;b&gt;Related work items&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;a href="http://rxx.codeplex.com/workitem/21820"&gt;ObservableWebClient.DownloadData doesnt handle 404&lt;/a&gt;&lt;/blockquote&gt;
&lt;h4&gt;What&amp;#39;s New?&lt;/h4&gt;Rxx 1.2 contains bug fixes and several new features.  See the &lt;a href="http://rxx.codeplex.com/documentation?referringTitle=Release%20Notes"&gt;Documentation&lt;/a&gt; tab for a complete list of the features in Rxx.
&lt;ul&gt;&lt;li&gt;Internalized or removed all interactive extensions that were unnecessary or that shadowed Microsoft&amp;#39;s Ix Experimental library.&lt;/li&gt;
&lt;li&gt;Added DependencyObjectExtensions.DependencyPropertyChanged and UIElementExtensions.RoutedEventRaised extension methods and a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added CollectionNotification, CollectionModification, IListSubject, IDictionarySubject and concrete types.&lt;/li&gt;
&lt;li&gt;Added Collect extension methods to Observable2, ObservableDirectory, DirectoryInfoExtensions and FileSystemWatcherExtensions.&lt;/li&gt;
&lt;li&gt;Added ObservableDirectory lab.&lt;/li&gt;
&lt;li&gt;Moved various extension methods into new classes: SmtpClientExtensions, PingExtensions, HttpListenerExtensions, WebClientExtensions, WebRequestExtensions and SocketExtensions.&lt;/li&gt;
&lt;li&gt;Adjusted trace identity format.  Also adjusted the default text for Ix tracing.&lt;/li&gt;
&lt;li&gt;Added ObservableSyndication for RSS 2.0 and Atom 1.0, with a corresponding UI lab that also uses DictionarySubject and the Collect extension method.&lt;/li&gt;
&lt;li&gt;Added ApplicationSettingsBase extensions for observing setting changes.&lt;/li&gt;
&lt;li&gt;Added ICommand extensions, CommandSubject, AnonymousCommand and a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added the Subscription XAML markup extension for WPF, which is similar to Binding and supports observable data sources.  Includes a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added EventSubscription trigger, which supports event handler bindings from FrameworkElement to IObserver, delegate or ICommand properties.  Includes a corresponding lab.&lt;/li&gt;
&lt;li&gt;Major performance and memory improvements for parsers; now avoids stack overflows due to recursion in quantifiers.&lt;/li&gt;
&lt;li&gt;Added ICursor&amp;lt;T&amp;gt; and IObservableCursor&amp;lt;T&amp;gt; types with concrete implementations, including CursorSubject&amp;lt;T&amp;gt; and ToCursor extension methods.&lt;/li&gt;
&lt;li&gt;Added full support for reactive XML parsers in WP7.  Now there&amp;#39;s complete parser parity across all platforms.&lt;/li&gt;
&lt;li&gt;Added view model support for all platforms, with corresponding UI labs.  Includes optional IViewModel interface and optional Rxx.ViewModel base class.&lt;/li&gt;
&lt;li&gt;Added Exactly parser operator.&lt;/li&gt;
&lt;li&gt;Added non-greedy variants to some of the quantifying parser operators.&lt;/li&gt;
&lt;li&gt;Added an overload to the AtLeast parser operator that accepts a maximum parameter, with behavior similar to the {n,m} regex pattern.&lt;/li&gt;
&lt;li&gt;Added AndUnordered and AllUnordered parser operators, fixed the XML parsers so that attributes are matched in any order and reversed the order of the attributes in the XML schema labs.&lt;/li&gt;
&lt;li&gt;Added Consume extensions that generalize the producer/consumer pattern over observables.&lt;/li&gt;
&lt;li&gt;Added Stream, FileStream and TextReader extensions.&lt;/li&gt;
&lt;li&gt;Added ObservableFile class with a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added n-ary Zip and CombineLatest combinators.&lt;/li&gt;
&lt;li&gt;Improved lab applications.&lt;/li&gt;&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Rxx 1.1&lt;/h3&gt;&lt;h4&gt;Dependencies &lt;a name="Dependencies"&gt;&lt;/a&gt;&lt;/h4&gt;Rxx has the following dependencies.  Note that Rxx does not redistribute these, so you must download and install them yourself.
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26649" class="externalLink"&gt;Reactive Extensions (Rx)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.0.10621 (Official stable version)
&lt;ul&gt;&lt;li&gt;This is only required when using the stable Rxx build.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26651" class="externalLink"&gt;Reactive Extensions (Rx)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.1.10621 (Experimental)
&lt;ul&gt;&lt;li&gt;This is only required when using the experimental Rxx build.  These downloads are clearly marked with an &lt;i&gt;Experimental&lt;/i&gt; suffix.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;What&amp;#39;s New?&lt;/h4&gt;The latest Rxx release is based on the official Rx 1.0 stable release.  Rxx now supports builds for .NET 4.0, Silverlight 4 and Windows Phone 7.  In addition, Rxx 1.1 is also built against each of the Rx experimental releases for all of the aforementioned platforms.  A number of new features have also been included since the previous Rxx release.  See the &lt;a href="http://rxx.codeplex.com/documentation?referringTitle=Release%20Notes"&gt;Documentation&lt;/a&gt; tab for a complete list of the features in Rxx.
&lt;ul&gt;&lt;li&gt;Added Parsers, labs and tests from http://archive.msdn.microsoft.com/RxParsers.  (Includes all updates from the Rx Parsers vNext release.)&lt;/li&gt;
&lt;li&gt;Added IEnumerable&amp;lt;T&amp;gt; StartWith and Scan extensions.&lt;/li&gt;
&lt;li&gt;Renamed the lab project&amp;#39;s IEnumerable Run extension method to ForEach.&lt;/li&gt;
&lt;li&gt;Some lab improvements.  Also upgraded to DaveSexton.Labs.dll version 1.3.&lt;/li&gt;
&lt;li&gt;Enabled most documentation rules in StyleCop.&lt;/li&gt;
&lt;li&gt;Fixed all StyleCop documentation warnings for code that was missed previously.&lt;/li&gt;
&lt;li&gt;LeftValue and RightValue types are now internal.  Use the new Either.Left and Either.Right static factory methods instead.&lt;/li&gt;
&lt;li&gt;Marked Either (LeftValue and RightValue) and Maybe with SerializableAttribute.&lt;/li&gt;
&lt;li&gt;Deleted Observable2.Run extensions because they already exist in Rx 1.1.10425 as Observable.ForEach.&lt;/li&gt;
&lt;li&gt;Renamed Enumerable2.Run extensions to ForEach.&lt;/li&gt;
&lt;li&gt;Renamed PairedObservableExtensions.Subscribe to SubscribePair and also renamed ForEach extensions to ForEachPair.&lt;/li&gt;
&lt;li&gt;Added Multicast overload that accepts a subject factory allowing clearing of state if observable goes cold.&lt;/li&gt;
&lt;li&gt;Added ObservableDns class with a corresponding lab.&lt;/li&gt;
&lt;li&gt;Added new overloads to FromEventBasedAsyncPattern that exclude the TEventAgs type argument.&lt;/li&gt;
&lt;li&gt;Added ObservableSmtpClient class with System.Net.Mail.SmtpClient extensions.&lt;/li&gt;
&lt;li&gt;Added ObservableSocket class with System.Net.Sockets.Socket extensions.&lt;/li&gt;
&lt;li&gt;Added ObservableWebRequest class with extensions for System.Net.WebRequest and derived types.&lt;/li&gt;
&lt;li&gt;Added Maybe class with static factory methods Return&amp;lt;T&amp;gt; and Empty&amp;lt;T&amp;gt;, and internalized the Maybe&amp;lt;T&amp;gt; constructor and Empty field.&lt;/li&gt;
&lt;li&gt;Integrated Sandcastle into the build process to generate reference documentation (Rxx.chm) in Release mode.&lt;/li&gt;
&lt;li&gt;Added overloads to Zip &amp;amp; CombineLatest that automatically use Tuple.Create as the selector function.&lt;/li&gt;
&lt;li&gt;Added ObservableNewtworkChange class with System.Net.NetworkInformation.NetworkChange extensions.&lt;/li&gt;
&lt;li&gt;Added ObservablePing class with System.Net.NetworkInformation.Ping extensions.&lt;/li&gt;
&lt;li&gt;Rxx for Silverlight 4, including corresponding Silverlight labs and documentation.&lt;/li&gt;
&lt;li&gt;Rxx for Windows Phone 7, including corresponding WP7 labs and documentation.&lt;/li&gt;
&lt;li&gt;Rxx for Rx Experimental.&lt;/li&gt;&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Rxx 1.0 (Compatible: Rx 1.0.10425)&lt;/h3&gt;&lt;h4&gt;Dependencies &lt;a name="Dependencies"&gt;&lt;/a&gt;&lt;/h4&gt;Rxx has the following dependencies.  Note that Rxx does not redistribute them so you must download and install them yourself.
&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f35521ed-db4c-4402-b2dc-f03984c88284" class="externalLink"&gt;Reactive Extensions (Rx) for the .NET Framework 4.0&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.0.10425&lt;/li&gt;&lt;/ol&gt;
&lt;h4&gt;Important Notes&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Rxx with Labs (Console Application) now has all of its dependencies included so that it works out-of-the-box.&lt;/li&gt;
&lt;li&gt;RxxLabs.exe requires administrator privileges for the &lt;i&gt;Reactive WebClient&lt;/i&gt; lab to register a local HTTP port.
&lt;ul&gt;&lt;li&gt;To start RxxLabs.exe, right-mouse click and select &lt;b&gt;Run as Administrator&lt;/b&gt;; otherwise, do not run the &lt;i&gt;Reactive WebClient&lt;/i&gt; lab because it will crash the program.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;What&amp;#39;s New?&lt;/h4&gt;This release is based on the previous 1.0 release, refactored to support Rx version 1.0.10425.  In addition, some small modifications have been made.
&lt;ul&gt;&lt;li&gt;Moved types and extensions into the appropriate namespaces for consistency with Rx.&lt;/li&gt;
&lt;li&gt;Added IEnumerable&amp;lt;T&amp;gt; Do, Run, Concat, Repeat, Throw and Catch extensions.&lt;/li&gt;
&lt;li&gt;Added IObservable&amp;lt;T&amp;gt; Run extensions.&lt;/li&gt;
&lt;li&gt;Removed DefaultIfEmpty extension because it&amp;#39;s included in Rx 1.0.10425.&lt;/li&gt;
&lt;li&gt;Improved the Priming and WebClient labs.&lt;/li&gt;&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Rxx 1.0&lt;/h3&gt;&lt;h4&gt;Dependencies &lt;a name="Dependencies"&gt;&lt;/a&gt;&lt;/h4&gt;Rxx has the following dependencies.  Note that Rxx does not redistribute them so you must download and install them yourself.
&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=95fa332f-ffe0-4fe8-9b15-fbd97a2d23f5" class="externalLink"&gt;Reactive Extensions (Rx) for the .NET Framework 4.0&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; version 1.0.2856.0&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;The latest version of Rx is available &lt;a href="http://go.microsoft.com/fwlink/?LinkId=182997" class="externalLink"&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;; however, Rxx is not compatible yet.  We are working on a compatible version that will be released ASAP.&lt;/blockquote&gt;&lt;h4&gt;What&amp;#39;s New?&lt;/h4&gt;This is the first release of Rxx.  The following extensions are included: 
&lt;ul&gt;&lt;li&gt;Trace extensions (Rx and Ix). &lt;/li&gt;
&lt;li&gt;FromEventBasedAsyncPattern extension. &lt;/li&gt;
&lt;li&gt;FromPropertyChangedPattern extension. &lt;/li&gt;
&lt;li&gt;Generalization of out-of-band binary observables; a.k.a., “Pairing”. Useful for things like progress and out-of-band exception channels. Includes several extensions. &lt;/li&gt;
&lt;li&gt;Catch, Retry and OnErrorResumeNext extensions that filter by Exception type, pair the observable with an error channel and support back-off algorithms. &lt;/li&gt;
&lt;li&gt;Generalization of time-shifting into a TimeShift operator. Also included some common patterns: AsTimer, AsInterval and Pulse. &lt;/li&gt;
&lt;li&gt;Serve extension. Useful in hosting scenarios such as receiving sockets with a maximum concurrency, without blocking during receives. &lt;/li&gt;
&lt;li&gt;DefaultIfEmpty extension. &lt;/li&gt;
&lt;li&gt;Maybe extension. &lt;/li&gt;
&lt;li&gt;Prime and StartPrimed extensions. &lt;/li&gt;
&lt;li&gt;PropertyDescriptor extensions for observable property changes and events. &lt;/li&gt;
&lt;li&gt;FileSystemWatcher extensions. &lt;/li&gt;
&lt;li&gt;Introspect, WindowIntrospective and BufferIntrospective extensions. &lt;/li&gt;
&lt;li&gt;HttpListener extensions (ObservableHttpListener). &lt;/li&gt;
&lt;li&gt;WebClient extensions (ObservableWebClient). &lt;/li&gt;
&lt;li&gt;OperationalObservable and OperationalEnumerable – a generalization of unary and binary operator overloads in C# being used as combinators; e.g., var os = xs + ys - zs; &lt;/li&gt;
&lt;li&gt;ObservableDynamicObject.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>davedev</author><pubDate>Mon, 12 Mar 2012 17:09:24 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Release Notes 20120312050924P</guid></item></channel></rss>