<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>johnllao</title>
	<atom:link href="http://johnllao.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://johnllao.wordpress.com</link>
	<description>my blogginess</description>
	<lastBuildDate>Thu, 22 Sep 2011 07:41:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='johnllao.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>johnllao</title>
		<link>http://johnllao.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://johnllao.wordpress.com/osd.xml" title="johnllao" />
	<atom:link rel='hub' href='http://johnllao.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Javascript OOP Pattern Inspired By JQuery</title>
		<link>http://johnllao.wordpress.com/2011/09/22/javascript-oop-pattern-inspired-by-jquery/</link>
		<comments>http://johnllao.wordpress.com/2011/09/22/javascript-oop-pattern-inspired-by-jquery/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 07:41:25 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=147</guid>
		<description><![CDATA[I was looking at the JQuery and SignalIR sourcecode and I can say the I was intrigued by how they implemented a OOP Pattern. so I created my own simple object to show this var Andromeda = (function() { // Factory method var Andromeda = function () { return new Andromeda.fn.init(); } Andromeda.fn = { [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=147&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was looking at the JQuery and SignalIR sourcecode and I can say the I was intrigued by how they implemented a OOP Pattern. so I created my own simple object to show this</p>
<pre class="csharpcode">var Andromeda = (function() {
    <span class="rem">// Factory method</span>
    var Andromeda = function () {
        <span class="kwrd">return</span> <span class="kwrd">new</span> Andromeda.fn.init();
    }

    Andromeda.fn = {
        <span class="rem">// Constructor</span>
        init : function() {

        },

        property : 0,

        method : function() {
            var me = <span class="kwrd">this</span>;
            alert(me.property);
        }
    };

    Andromeda.fn.init.prototype = Andromeda.fn;

    <span class="kwrd">return</span> Andromeda;
}());</pre>
<p>To call methods</p>
<p>&nbsp;</p>
<pre class="csharpcode">var a = Andromeda();
a.property = 1;
a.method();

var b = Andromeda();
b.property = 2;
b.method();</pre>
<p>Happy coding&#8230; </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=147&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2011/09/22/javascript-oop-pattern-inspired-by-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Registry Tricks</title>
		<link>http://johnllao.wordpress.com/2011/09/21/registry-tricks/</link>
		<comments>http://johnllao.wordpress.com/2011/09/21/registry-tricks/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 06:42:52 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=144</guid>
		<description><![CDATA[&#160; Enable / Disable Add Remove Windows Components &#160; HKLM &#62; Software &#62; Microsoft &#62; Windows &#62; CurrentVersion &#62; Policies &#62; Uninstall NoWindowsSetupPage = 0 Enable IE Advance Tab HKCU &#62; Software &#62; Policies &#62; Microsoft &#62; Internet Explorer &#62; Control Panel<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=144&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><strong>Enable / Disable Add Remove Windows Components</strong></p>
<p>&nbsp;</p>
<p>HKLM &gt; Software &gt; Microsoft &gt; Windows &gt; CurrentVersion &gt; Policies &gt; Uninstall</p>
<p>NoWindowsSetupPage = 0</p>
<p><strong>Enable IE Advance Tab</strong></p>
<p>HKCU &gt; Software &gt; Policies &gt; Microsoft &gt; Internet Explorer &gt; Control Panel</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=144&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2011/09/21/registry-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Calling WCF Service using JQuery</title>
		<link>http://johnllao.wordpress.com/2011/08/09/calling-wcf-service-using-jquery/</link>
		<comments>http://johnllao.wordpress.com/2011/08/09/calling-wcf-service-using-jquery/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 12:31:47 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=140</guid>
		<description><![CDATA[In this post I will document a simple application to call a WCF service using JQuery. To make this happens I used the following definition in the .svc markup &#60;%@ ServiceHost Language="C#" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" Service="Guava.Server.Web.Services.GuavaService" %&#62; In the above code I used WebScriptServiceHostFactory, in this way it enables some configurations to allow the service to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=140&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post I will document a simple application to call a WCF service using JQuery. To make this happens I used the following definition in the .svc markup</p>
<pre class="csharpcode"><span class="asp">&lt;%@ ServiceHost Language="C#" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" Service="Guava.Server.Web.Services.GuavaService" %&gt;</span></pre>
<p>In the above code I used WebScriptServiceHostFactory, in this way it enables some configurations to allow the service to be called by AJAX. Alternative implementation is setting the configuration to enable web script behavior.</p>
<p>The following code defines my service</p>
<pre class="csharpcode">[ServiceContract(Namespace = <span class="str">"http://guava"</span>, Name = <span class="str">"GuavaService"</span>)]
<span class="kwrd">public</span> <span class="kwrd">interface</span> IGuavaService
{
    [OperationContract]
    [WebInvoke(Method = <span class="str">"POST"</span>,
               BodyStyle = WebMessageBodyStyle.WrappedRequest,
               RequestFormat = WebMessageFormat.Json,
               ResponseFormat = WebMessageFormat.Json)]
    <span class="kwrd">void</span> Execute(<span class="kwrd">string</span> name);

    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json)]
    <span class="kwrd">string</span> Version(<span class="kwrd">string</span> name);
}

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(IncludeExceptionDetailInFaults = <span class="kwrd">true</span>)]
<span class="kwrd">public</span> <span class="kwrd">class</span> GuavaService : IGuavaService
{
    <span class="kwrd">public</span> <span class="kwrd">void</span> Execute(<span class="kwrd">string</span> name)
    {

    }

    <span class="kwrd">public</span> <span class="kwrd">string</span> Version(<span class="kwrd">string</span> name)
    {
        <span class="kwrd">return</span> <span class="str">"1.0"</span>;
    }
}</pre>
<p>The AspNetCompatibilityRequirements attributes ensures compatibility with AJAX calls.</p>
<p>To allow GET methods define the method with the WebGet attribute.</p>
<p>To allow POST methos define the method with the following attribute</p>
<pre>    [WebInvoke(Method = "POST",
               BodyStyle = WebMessageBodyStyle.WrappedRequest,
               RequestFormat = WebMessageFormat.Json,
               ResponseFormat = WebMessageFormat.Json)]</pre>
<p>From the above code the BodyStyle must be defines as WrappedRequest</p>
<p>The following code shows my JQuery call</p>
<p>&nbsp;</p>
<pre class="csharpcode">    function OnError(jqXHR, textStatus, errorThrown) {
        <span class="kwrd">if</span> (jqXHR.textStatus === <span class="str">'error'</span>) {

        }
    }

    function OnVersionCompleted(data, textStatus, jqXHR) {
        alert(data.d);
    }

    function OnVersion() {
        $.getJSON(<span class="str">'Services/GuavaService.svc/Version?name=John'</span>, {}, OnVersionCompleted);
    }

    function OnExecuteCompleted(data, textStatus, jqXHR) {
        alert(<span class="str">'OnExecuteCompleted'</span>);
    }

    function OnExecute() {
        $.ajax({
            url: <span class="str">'Services/GuavaService.svc/Execute'</span>,
            type: <span class="str">'POST'</span>,
            data: <span class="str">'{ "name" : "John" }'</span>,
            dataType: <span class="str">'json'</span>,
            contentType: <span class="str">'application/json'</span>,
            success: OnExecuteCompleted,
            error: OnError
        });
    }</pre>
<p>For the POST method it is important to express your data as Json string format.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=140&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2011/08/09/calling-wcf-service-using-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Unity Dependency Injection in WebFormsMVP</title>
		<link>http://johnllao.wordpress.com/2011/05/24/using-unity-dependency-injection-in-webformsmvp/</link>
		<comments>http://johnllao.wordpress.com/2011/05/24/using-unity-dependency-injection-in-webformsmvp/#comments</comments>
		<pubDate>Tue, 24 May 2011 00:45:18 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=137</guid>
		<description><![CDATA[As I was preparing a POC for my new project, I stumble upon an idea of using dependency injection / IOC. This is to facilitate the property injection to my Repository or Service classes. Here is the snapshot of the code Global.asax using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState; using [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=137&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As I was preparing a POC for my new project, I stumble upon an idea of using dependency injection / IOC. This is to facilitate the property injection to my Repository or Service classes. Here is the snapshot of the code</p>
<p><strong>Global.asax</strong></p>
<pre class="csharpcode"><span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Collections.Generic;
<span class="kwrd">using</span> System.Linq;
<span class="kwrd">using</span> System.Web;
<span class="kwrd">using</span> System.Web.Security;
<span class="kwrd">using</span> System.Web.SessionState;
<span class="kwrd">using</span> Microsoft.Practices.ServiceLocation;
<span class="kwrd">using</span> Microsoft.Practices.Unity;
<span class="kwrd">using</span> Monday.Data;
<span class="kwrd">using</span> Monday.Data.Repositories;
<span class="kwrd">using</span> WebFormsMvp.Binder;
<span class="kwrd">using</span> WebFormsMvp.Unity;

<span class="kwrd">namespace</span> Monday
{
    <span class="kwrd">public</span> <span class="kwrd">class</span> Global : System.Web.HttpApplication
    {
        <span class="kwrd">private</span> <span class="kwrd">readonly</span> IUnityContainer _container;

        <span class="kwrd">public</span> Global()
            : <span class="kwrd">base</span>()
        {
            _container = <span class="kwrd">new</span> UnityContainer();
        }

        <span class="kwrd">void</span> Application_Start(<span class="kwrd">object</span> sender, EventArgs e)
        {
            _container.RegisterInstance&lt;MondayEntities&gt;(
                <span class="kwrd">new</span> MondayEntities(),
                <span class="kwrd">new</span> ContainerControlledLifetimeManager());

            _container.RegisterType&lt;ICountryRepository, CountryRepository&gt;(
                <span class="kwrd">new</span> ContainerControlledLifetimeManager());

            UnityServiceLocator locator = <span class="kwrd">new</span> UnityServiceLocator(_container);
            ServiceLocator.SetLocatorProvider(() =&gt; locator);

            PresenterBinder.Factory = <span class="kwrd">new</span> UnityPresenterFactory(_container);

        }</pre>
<p>The implementation of the Unity is pretty normal except that I use the ServiceLocator to encapsulate calls to the UnityContainer. Developers may get instance using the following code.</p>
<pre class="csharpcode">ICountryRepository repo =
    ServiceLocator.Current.GetInstance&lt;ICountryRepository&gt;();</pre>
<p>As for codes that want to utilize Property Injection they can implement it in the following way<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> CountryScriptPresenter : Presenter&lt;ICountryScriptView&gt;
{
    <span class="kwrd">private</span> ICountryScriptView _view;

    <span class="kwrd">public</span> CountryScriptPresenter(ICountryScriptView view)
        : <span class="kwrd">base</span>(view)
    {
        _view = view;
        _view.Load += <span class="kwrd">new</span> EventHandler(OnLoad);
    }

    [Dependency]
    <span class="kwrd">public</span> ICountryRepository CountrySource { get; set; }

    <span class="kwrd">private</span> <span class="kwrd">void</span> OnLoad(<span class="kwrd">object</span> sender, EventArgs e)
    {

        <span class="kwrd">if</span> (CountrySource == <span class="kwrd">null</span>)
            <span class="kwrd">throw</span> <span class="kwrd">new</span> ApplicationException(<span class="str">"CountryRepository is null or not defined."</span>);

        StringBuilder sb = <span class="kwrd">new</span> StringBuilder();
        StringWriter sw = <span class="kwrd">new</span> StringWriter(sb);

        JsonSerializer serializer = <span class="kwrd">new</span> JsonSerializer();
        serializer.Serialize(sw, CountrySource.GetList());

        _view.Model.List = sb.ToString(); ;
    }
}</pre>
<p>The Dependency attribute will handle the injection of the object</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/137/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=137&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2011/05/24/using-unity-dependency-injection-in-webformsmvp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Dynamic JavaScript in ASP.NET</title>
		<link>http://johnllao.wordpress.com/2011/05/09/dynamic-javascript-in-asp-net/</link>
		<comments>http://johnllao.wordpress.com/2011/05/09/dynamic-javascript-in-asp-net/#comments</comments>
		<pubDate>Mon, 09 May 2011 15:53:01 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=131</guid>
		<description><![CDATA[As I was preparing some Proof-of-Concept for my new ASP.NET Webforms projects, I came across an idea of using a dynamic JavaScript. Here how it goes. Let say I want to generate the following javascript dynamically var currencyManager = function() { var _currencyManager = function() { this.list = [ {cur:'EUR',rate:0.69996}, {cur:'GBP',rate:0.61304}, {cur:'AUD',rate:0.93141}]; } _currencyManager.prototype = [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=131&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As I was preparing some Proof-of-Concept for my new ASP.NET Webforms projects, I came across an idea of using a dynamic JavaScript. Here how it goes.</p>
<p>Let say I want to generate the following javascript dynamically</p>
<pre class="csharpcode">var currencyManager = function() {
    var _currencyManager = function() {
        <span class="kwrd">this</span>.list = [
            {cur:<span class="str">'EUR'</span>,rate:0.69996},
            {cur:<span class="str">'GBP'</span>,rate:0.61304},
            {cur:<span class="str">'AUD'</span>,rate:0.93141}];
    }

    _currencyManager.prototype = {
        getRate : function(currency) {
            var rate = 0;
            <span class="kwrd">for</span> (var i = 0; i &lt; <span class="kwrd">this</span>.list.length; i++) {
                <span class="kwrd">if</span> (<span class="kwrd">this</span>.list[i].cur === currency) {
                    rate = <span class="kwrd">this</span>.list[i].rate;
                    <span class="kwrd">break</span>;
                }
            }
            <span class="kwrd">return</span> rate;
        }
    }

    <span class="kwrd">return</span> <span class="kwrd">new</span> _currencyManager();
}();</pre>
<p>From the above code, I want the list of currencies to be dynamic as I want my users to get the latest rates from our database</p>
<p>To implement this I created a Generic Script Handler (.ashx). The code will be similar to this one</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> CurrencyScriptHandler : IHttpHandler
{
    <span class="kwrd">public</span> <span class="kwrd">void</span> ProcessRequest(HttpContext context)
    {
        <span class="kwrd">if</span> (context == <span class="kwrd">null</span>)
            <span class="kwrd">throw</span> <span class="kwrd">new</span> NullReferenceException(<span class="str">"context is null or not defined"</span>);

        <span class="kwrd">if</span> (context.Response == <span class="kwrd">null</span>)
            <span class="kwrd">throw</span> <span class="kwrd">new</span> NullReferenceException(<span class="str">"context.Response is null or not defined"</span>);

        HttpResponse response = context.Response;

        StringBuilder stringBuilder = <span class="kwrd">new</span> StringBuilder();
        StringWriter textWriter = <span class="kwrd">new</span> StringWriter(stringBuilder);
        HtmlTextWriter htmlWriter = <span class="kwrd">new</span> HtmlTextWriter(textWriter);

        Page page = <span class="kwrd">new</span> Page();
        Control control = page.LoadControl(<span class="str">"Scripts/CurrencyScriptControl.ascx"</span>);
        page.Controls.Add(control);
        HttpContext.Server.Execute(page, textWriter, false);

        response.ContentType = <span class="str">"text/javascript"</span>;
        response.Write(stringBuilder.ToString());
    }

    <span class="kwrd">public</span> <span class="kwrd">bool</span> IsReusable
    {
        get
        {
            <span class="kwrd">return</span> <span class="kwrd">false</span>;
        }
    }
}</pre>
<p>As you may notice I am just rendering a User Control and setting the ContentType to &#8220;text/javascript&#8221;. The Control CurrencyScriptControl.ascx will contain the code to generate this javascript.</p>
<pre class="csharpcode">&lt;%@ Control Language=<span class="str">"C#"</span> AutoEventWireup=<span class="str">"true"</span> CodeBehind=<span class="str">"CurrencyScriptControl.ascx.cs"</span> Inherits=<span class="str">"Monday.Scripts.CurrencyScriptControl"</span> %&gt;</pre>
<pre class="csharpcode">var currencyManager = function() {
    var _currencyManager = function() {
        <span class="kwrd">this</span>.list = &lt;%= CurrencyListJson %&gt;;
    }

    _currencyManager.prototype = {
        getRate : function(currency) {
            var rate = 0;
            <span class="kwrd">for</span> (var i = 0; i &lt; <span class="kwrd">this</span>.list.length; i++) {
                <span class="kwrd">if</span> (<span class="kwrd">this</span>.list[i].cur === currency) {
                    rate = <span class="kwrd">this</span>.list[i].rate;
                    <span class="kwrd">break</span>;
                }
            }
            <span class="kwrd">return</span> rate;
        }
    }

    <span class="kwrd">return</span> <span class="kwrd">new</span> _currencyManager();
}();</pre>
<p>The CurrencyListJson can be a protected property of your ascx control<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> CurrencyScriptControl : System.Web.UI.UserControl
{
    <span class="kwrd">protected</span> <span class="kwrd">string</span> CurrencyListJson ;

    <span class="kwrd">protected</span> <span class="kwrd">void</span> Page_Load(<span class="kwrd">object</span> sender, EventArgs e)
    {
        CurrencyScriptControl = CurrencyListJson();
    }

    <span class="kwrd">private</span> <span class="kwrd">string</span> CurrencyListJson()
    {
        <span class="rem">// Call you business objects here and JSON serilizer.</span>
    }
}</pre>
<p>We may now call this script into our page like this<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">type</span><span class="kwrd">="text/javascript"</span> <span class="attr">src</span><span class="kwrd">="Scripts/CurrencyScriptHandler.ashx"</span><span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=131&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2011/05/09/dynamic-javascript-in-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Manual NServiceBus Configuration</title>
		<link>http://johnllao.wordpress.com/2010/10/22/manual-nservicebus-configuration/</link>
		<comments>http://johnllao.wordpress.com/2010/10/22/manual-nservicebus-configuration/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 09:12:02 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=127</guid>
		<description><![CDATA[In my previous post I have shown a simple implementation of Publish / Subscribe messages using the NServiceBus. We may notice from the example provided that to run the Service Bus we executed configuration through a series of extesion methods supplied. Bus = Configure.With().DefaultBuilder().BinarySerializer() .MsmqTransport().IsTransactional(true).PurgeOnStartup(false) .UnicastBus().ImpersonateSender(false).LoadMessageHandlers() .CreateBus() .Start(); I managed to explore more and look into [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=127&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In my previous post I have shown a simple implementation of Publish / Subscribe messages using the NServiceBus. We may notice from the example provided that to run the Service Bus we executed configuration through a series of extesion methods supplied.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode">Bus = Configure.With().DefaultBuilder().BinarySerializer()
         .MsmqTransport().IsTransactional(<span class="kwrd">true</span>).PurgeOnStartup(<span class="kwrd">false</span>)
         .UnicastBus().ImpersonateSender(<span class="kwrd">false</span>).LoadMessageHandlers()
         .CreateBus()
         .Start();</pre>
<p>I managed to explore more and look into how each extension methods are performing the configuration. Here is what I discovered.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode">Configure config = Configure.With();

<span class="rem">// Setting the DefaultBuilder</span>
IContainer container = <span class="kwrd">new</span> SpringObjectBuilder();
CommonObjectBuilder b = <span class="kwrd">new</span> CommonObjectBuilder { Container = container, Synchronized = SyncConfig.Synchronize };
config.Builder = b;
config.Configurer = b;
config.Configurer.ConfigureComponent&lt;CommonObjectBuilder&gt;(ComponentCallModelEnum.Singleton)
    .ConfigureProperty(c =&gt; c.Container, container);
SyncConfig.MarkConfigured();

<span class="rem">// Setting the Serialization</span>
config.Configurer.ConfigureComponent&lt;SimpleMessageMapper&gt;(ComponentCallModelEnum.Singleton);
config.Configurer.ConfigureComponent(<span class="kwrd">typeof</span>(MessageSerializer), ComponentCallModelEnum.Singleton);

<span class="rem">// Setting MSMQ Transport</span>
ConfigMsmqTransport transportCfg = <span class="kwrd">new</span> ConfigMsmqTransport();
transportCfg.Configure(config);
transportCfg.IsTransactional(<span class="kwrd">true</span>);
transportCfg.PurgeOnStartup(<span class="kwrd">false</span>);

<span class="rem">// Setting the Unicast Bus</span>
ConfigUnicastBus unicastCfg = <span class="kwrd">new</span> ConfigUnicastBus();
unicastCfg.Configure(config);
unicastCfg.ImpersonateSender(<span class="kwrd">true</span>);
unicastCfg.LoadMessageHandlers();

<span class="rem">// Creating the Bus</span>
IStartableBus startableBus = config.CreateBus();

<span class="rem">// Staring the Bus</span>
Bus = startableBus.Start();</pre>
<p>Digging further into the details we can slice the MSMQ configuration using the following code.<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode">IComponentConfig&lt;MsmqTransport&gt; transportCfg = config.Configurer.ConfigureComponent&lt;MsmqTransport&gt;(ComponentCallModelEnum.Singleton);
MsmqTransportConfig msmqTransportCfg = Configure.GetConfigSection&lt;MsmqTransportConfig&gt;();
<span class="kwrd">if</span> (msmqTransportCfg != <span class="kwrd">null</span>)
{
    transportCfg.ConfigureProperty(t =&gt; t.InputQueue, msmqTransportCfg.InputQueue);
    transportCfg.ConfigureProperty(t =&gt; t.NumberOfWorkerThreads, msmqTransportCfg.NumberOfWorkerThreads);
    transportCfg.ConfigureProperty(t =&gt; t.ErrorQueue, msmqTransportCfg.ErrorQueue);
    transportCfg.ConfigureProperty(t =&gt; t.MaxRetries, msmqTransportCfg.MaxRetries);
    transportCfg.ConfigureProperty(t =&gt; t.IsTransactional, <span class="kwrd">true</span>);
    transportCfg.ConfigureProperty(t =&gt; t.PurgeOnStartup, <span class="kwrd">false</span>);
}</pre>
<p>The Unicast settings can be further broken into the following code<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode">IComponentConfig&lt;UnicastBus&gt; unicastCfg = config.Configurer.ConfigureComponent&lt;UnicastBus&gt;(ComponentCallModelEnum.Singleton);
Type authType = Configure.TypesToScan.Where(t =&gt; <span class="kwrd">typeof</span>(IAuthorizeSubscriptions).IsAssignableFrom(t) &amp;&amp; !t.IsInterface).FirstOrDefault();
<span class="kwrd">if</span> (authType != <span class="kwrd">null</span>)
    config.Configurer.ConfigureComponent(authType, ComponentCallModelEnum.Singleton);
Configure.TypesToScan.Where(t =&gt; <span class="kwrd">typeof</span>(IMessageModule).IsAssignableFrom(t) &amp;&amp; !t.IsInterface).ToList().ForEach(
        type =&gt; config.Configurer.ConfigureComponent(type, ComponentCallModelEnum.Singleton)
    );
UnicastBusConfig unicastBusCfg = Configure.GetConfigSection&lt;UnicastBusConfig&gt;();
<span class="kwrd">if</span> (unicastBusCfg != <span class="kwrd">null</span>)
{
    Hashtable assembliesToEndpoints = <span class="kwrd">new</span> Hashtable();
    Configure.TypesToScan.Where(t =&gt; <span class="kwrd">typeof</span>(IMessage).IsAssignableFrom(t)).ToList().ForEach(
            t =&gt; assembliesToEndpoints[t.Assembly.GetName().Name] = <span class="kwrd">string</span>.Empty
        );

    <span class="kwrd">foreach</span> (MessageEndpointMapping mapping <span class="kwrd">in</span> unicastBusCfg.MessageEndpointMappings)
        assembliesToEndpoints[mapping.Messages] = mapping.Endpoint;

    unicastCfg.ConfigureProperty(ub =&gt; ub.DistributorControlAddress, unicastBusCfg.DistributorControlAddress);
    unicastCfg.ConfigureProperty(ub =&gt; ub.DistributorDataAddress, unicastBusCfg.DistributorDataAddress);
    unicastCfg.ConfigureProperty(ub =&gt; ub.ForwardReceivedMessagesTo, unicastBusCfg.ForwardReceivedMessagesTo);
    unicastCfg.ConfigureProperty(ub =&gt; ub.MessageOwners, assembliesToEndpoints);
    unicastCfg.ConfigureProperty(ub =&gt; ub.ImpersonateSender, <span class="kwrd">true</span>);

    List&lt;Type&gt; handlers = <span class="kwrd">new</span> List&lt;Type&gt;();

    <span class="kwrd">foreach</span> (Type t <span class="kwrd">in</span> Configure.TypesToScan)
        <span class="kwrd">if</span> (IsMessageHandler(t))
        {
            config.Configurer.ConfigureComponent(t, ComponentCallModelEnum.Singlecall);
            handlers.Add(t);
        }

    unicastCfg.ConfigureProperty(ub =&gt; ub.MessageHandlerTypes, handlers);
}</pre>
<p>Helper methods I used in this example<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Returns true if the given type is a message handler.</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;param name="t"&gt;&lt;/param&gt;</span>
<span class="rem">/// &lt;returns&gt;&lt;/returns&gt;</span>
<span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">bool</span> IsMessageHandler(Type t)
{
    <span class="kwrd">if</span> (t.IsAbstract)
        <span class="kwrd">return</span> <span class="kwrd">false</span>;

    <span class="kwrd">if</span> (<span class="kwrd">typeof</span>(ISaga).IsAssignableFrom(t))
        <span class="kwrd">return</span> <span class="kwrd">false</span>;

    <span class="kwrd">foreach</span> (Type interfaceType <span class="kwrd">in</span> t.GetInterfaces())
    {
        Type messageType = GetMessageTypeFromMessageHandler(interfaceType);
        <span class="kwrd">if</span> (messageType != <span class="kwrd">null</span>)
            <span class="kwrd">return</span> <span class="kwrd">true</span>;
    }

    <span class="kwrd">return</span> <span class="kwrd">false</span>;
}

<span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Returns the message type handled by the given message handler type.</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;param name="t"&gt;&lt;/param&gt;</span>
<span class="rem">/// &lt;returns&gt;&lt;/returns&gt;</span>
<span class="kwrd">public</span> <span class="kwrd">static</span> Type GetMessageTypeFromMessageHandler(Type t)
{
    <span class="kwrd">if</span> (t.IsGenericType)
    {
        Type[] args = t.GetGenericArguments();
        <span class="kwrd">if</span> (args.Length != 1)
            <span class="kwrd">return</span> <span class="kwrd">null</span>;

        <span class="kwrd">if</span> (!<span class="kwrd">typeof</span>(IMessage).IsAssignableFrom(args[0]))
            <span class="kwrd">return</span> <span class="kwrd">null</span>;

        Type handlerType = <span class="kwrd">typeof</span>(IMessageHandler&lt;&gt;).MakeGenericType(args[0]);
        <span class="kwrd">if</span> (handlerType.IsAssignableFrom(t))
            <span class="kwrd">return</span> args[0];
    }

    <span class="kwrd">return</span> <span class="kwrd">null</span>;
}</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/127/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=127&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2010/10/22/manual-nservicebus-configuration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple MassTransit ServiceBus Sample</title>
		<link>http://johnllao.wordpress.com/2010/10/15/simple-masstransit-servicebus-sample/</link>
		<comments>http://johnllao.wordpress.com/2010/10/15/simple-masstransit-servicebus-sample/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 05:28:31 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=124</guid>
		<description><![CDATA[Following my post on NServiceBus, here I will show you how to get up to speed with MassTransit. Using a similar scenario with NServiceBus. One thisng I observed withe MassTransit is it is the initialization of the service is dependent on the Dependency Injection framework. when you download the library it provides you with several [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=124&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Following my post on NServiceBus, here I will show you how to get up to speed with MassTransit. Using a similar scenario with NServiceBus.</p>
<p>One thisng I observed withe MassTransit is it is the initialization of the service is dependent on the Dependency Injection framework. when you download the library it provides you with several choice like using Castle, Unity, Ninject, StructureMap. In this sample I will be using the StructureMap.</p>
<p>To begin, we need to create a class that inherits from ﻿﻿﻿MassTransitRegistryBase, this is only applicable if you are using StructureMap and your DI. This class contains the necessary initialization of your MassTransitService.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> MassTransit.Configuration;
<span class="kwrd">using</span> MassTransit.Services.Routing.Configuration;
<span class="kwrd">using</span> MassTransit.StructureMapIntegration;
<span class="kwrd">using</span> MassTransit.Transports.Msmq;

<span class="kwrd">namespace</span> Relativity
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">class</span> ServiceBusRegistry : MassTransitRegistryBase
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">const</span> <span class="kwrd">string</span> MQPATH = <span class="str">"msmq://localhost/relativity"</span>;

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> ServiceBusRegistry()
            : <span class="kwrd">base</span>(<span class="kwrd">typeof</span>(MsmqEndpoint))
        {
            RegisterServiceBus(MQPATH, ConfigHandler);

            MsmqEndpointConfigurator.Defaults(config =&gt; { config.CreateMissingQueues = <span class="kwrd">true</span>; });
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> ConfigHandler(IServiceBusConfigurator e)
        {
            <span class="rem">//e.ConfigureService&lt;RoutingConfigurator&gt;(rs =&gt; rs.Route&lt;RelativityMessage&gt;().To(MQPATH));</span>
            <span class="rem">//e.ConfigureService&lt;RoutingConfigurator&gt;(rs =&gt; rs.Route&lt;RelativityResponseMessage&gt;().To(MQPATH));</span>
        }
    }
}</pre>
<p>After this has been defined, you may now get the instance of the Bus using the MassTransit Container.<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> MassTransit;
<span class="kwrd">using</span> StructureMap;
<span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Linq;
<span class="kwrd">using</span> System.Windows;

<span class="kwrd">namespace</span> Relativity
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// Interaction logic for App.xaml</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> App : Application
    {
        <span class="kwrd">private</span> Container _container;
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;returns&gt;&lt;/returns&gt;</span>
        <span class="kwrd">public</span> IServiceBus GetServiceBus()
        {
            <span class="kwrd">if</span> (_container == <span class="kwrd">null</span>)
                <span class="kwrd">throw</span> <span class="kwrd">new</span> NullReferenceException(<span class="str">"Service has not properly initialized"</span>);
            <span class="kwrd">return</span> _container.GetInstance&lt;IServiceBus&gt;();
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> OnStartup(StartupEventArgs e)
        {
            <span class="kwrd">base</span>.OnStartup(e);
            _container = <span class="kwrd">new</span> Container(ConfigHandler);

            IServiceBus bus = GetServiceBus();
            bus.Subscribe&lt;RelativityMessage&gt;(RelativityMessageConsumer);
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> ConfigHandler(ConfigurationExpression e)
        {
            e.AddRegistry(<span class="kwrd">new</span> ServiceBusRegistry());
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="message"&gt;&lt;/param&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> RelativityMessageConsumer(RelativityMessage message)
        {
            <span class="rem">//System.Threading.Thread.Sleep(3000);</span>
            App app = Application.Current <span class="kwrd">as</span> App;
            <span class="kwrd">if</span> (app == <span class="kwrd">null</span>)
                <span class="kwrd">throw</span> <span class="kwrd">new</span> NullReferenceException(<span class="str">"Service has not properly initialized"</span>);

            IServiceBus bus = app.GetServiceBus();
            bus.Publish&lt;RelativityResponseMessage&gt;(<span class="kwrd">new</span> RelativityResponseMessage() { Text = message.Text + <span class="str">" Acknowledged!"</span> });
        }
    }
}</pre>
<p>To publish / subscribe messages<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> MassTransit;
<span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Windows;

<span class="kwrd">namespace</span> Relativity
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// Interaction logic for MainWindow.xaml</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> MainWindow : Window
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> MainWindow()
        {
            InitializeComponent();
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="sender"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> OnLoaded(<span class="kwrd">object</span> sender, RoutedEventArgs e)
        {
            App app = Application.Current <span class="kwrd">as</span> App;
            <span class="kwrd">if</span> (app == <span class="kwrd">null</span>)
                <span class="kwrd">throw</span> <span class="kwrd">new</span> NullReferenceException(<span class="str">"Service has not properly initialized"</span>);

            IServiceBus bus = app.GetServiceBus();
            bus.Subscribe&lt;RelativityResponseMessage&gt;(RelativityResponseMessageConsumer);
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="sender"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> Send(<span class="kwrd">object</span> sender, RoutedEventArgs e)
        {
            App app = Application.Current <span class="kwrd">as</span> App;
            <span class="kwrd">if</span> (app == <span class="kwrd">null</span>)
                <span class="kwrd">throw</span> <span class="kwrd">new</span> NullReferenceException(<span class="str">"Service has not properly initialized"</span>);

            IServiceBus bus = app.GetServiceBus();
            bus.Publish&lt;RelativityMessage&gt;(<span class="kwrd">new</span> RelativityMessage() { Text = <span class="str">"Hello world!"</span> });
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="message"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> RelativityResponseMessageConsumer(RelativityResponseMessage message)
        {
            MessageBox.Show(message.Text);
        }
    }
}</pre>
<p>That&#8217;s it</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=124&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2010/10/15/simple-masstransit-servicebus-sample/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple NServiceBus Sample</title>
		<link>http://johnllao.wordpress.com/2010/10/15/simple-nservicebus-sample/</link>
		<comments>http://johnllao.wordpress.com/2010/10/15/simple-nservicebus-sample/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 04:57:00 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=121</guid>
		<description><![CDATA[I have been exploring Service Bus in the past few days as I am very well impressed how reliable messaging is being handled. the first challenge that I encounter is being able to create a simple application that demontrate how it works. I have seen the NServiceBus and MassTransit examples from their respective sites however [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=121&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been exploring Service Bus in the past few days as I am very well impressed how reliable messaging is being handled. the first challenge that I encounter is being able to create a simple application that demontrate how it works.</p>
<p>I have seen the NServiceBus and MassTransit examples from their respective sites however I find the sample pretty difficult to digest. So after few hours of exploring I came up wih a simple example to make things work.</p>
<p>In this post I will show how a simple Publish and Subscribe messages work with NServiceBus. I have created a simple WPF window application that hosts the NServiceBus service in itself.</p>
<p>First let us start with the configuration.<br />
<!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">="1.0"</span> <span class="attr">encoding</span><span class="kwrd">="utf-8"</span> ?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">configuration</span><span class="kwrd">&gt;</span>

  <span class="kwrd">&lt;</span><span class="html">configSections</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">section</span> <span class="attr">name</span><span class="kwrd">="MsmqTransportConfig"</span> <span class="attr">type</span><span class="kwrd">="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"</span> <span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">section</span> <span class="attr">name</span><span class="kwrd">="UnicastBusConfig"</span> <span class="attr">type</span><span class="kwrd">="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"</span> <span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">configSections</span><span class="kwrd">&gt;</span>

  <span class="rem">&lt;!-- in order to configure remote endpoints use the format:</span>
<span class="rem">       "queue@machine" </span>
<span class="rem">  --&gt;</span>

  <span class="kwrd">&lt;</span><span class="html">MsmqTransportConfig</span>
    <span class="attr">InputQueue</span><span class="kwrd">="IonInputQueue"</span>
    <span class="attr">ErrorQueue</span><span class="kwrd">="IonErrorQueue"</span>
    <span class="attr">NumberOfWorkerThreads</span><span class="kwrd">="5"</span>
    <span class="attr">MaxRetries</span><span class="kwrd">="5"</span>
  <span class="kwrd">/&gt;</span>

  <span class="kwrd">&lt;</span><span class="html">UnicastBusConfig</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">MessageEndpointMappings</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">Messages</span><span class="kwrd">="IonMessages"</span> <span class="attr">Endpoint</span><span class="kwrd">="IonInputQueue"</span> <span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">MessageEndpointMappings</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">UnicastBusConfig</span><span class="kwrd">&gt;</span>

<span class="kwrd">&lt;/</span><span class="html">configuration</span><span class="kwrd">&gt;</span></pre>
<p>The MsmqTransportConfig tells the name of the queue (e.g. MSMQ) that NServiceBus will use to publish and subscribe.</p>
<p>The UnicastBusConfig tells about the message endpoints you will be used to send messages. So what does that mean? It simple tells what type of Messages you want to send. Messages in NServiceBus are simply classes you create. The Messages attribute in the config tells the Assembly where you can find the Messages class.</p>
<p>So how do we create a Message, in NServiceBus you simply create a class that implements the IMessage interface. Here are the examples.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> NServiceBus;
<span class="kwrd">using</span> System;

<span class="kwrd">namespace</span> Ion.Messages
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [Serializable]
    <span class="kwrd">public</span> <span class="kwrd">class</span> RequestMessage : IMessage
    {
        <span class="kwrd">public</span> Guid MessageId;
        <span class="kwrd">public</span> <span class="kwrd">string</span> Name;
    }
}</pre>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> NServiceBus;
<span class="kwrd">using</span> System;

<span class="kwrd">namespace</span> Ion.Messages
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [Serializable]
    <span class="kwrd">public</span> <span class="kwrd">class</span> ResponseMessage : IMessage
    {
        <span class="kwrd">public</span> Guid MessageId;
        <span class="kwrd">public</span> Guid RequestMessageId;
        <span class="kwrd">public</span> <span class="kwrd">string</span> Status;
    }
}</pre>
<p>Now we have the messages classes, next I will show you how to Publish and Subscribe to these messages. but before we go into that, we need to make the NServiceBus running, meaning listening and executing the messages that arrives in our queue. Here is the code that do that.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> Ion.Messages;
<span class="kwrd">using</span> NServiceBus;
<span class="kwrd">using</span> NServiceBus.Config;
<span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Windows;

<span class="kwrd">namespace</span> Ion.Windows.UI
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// Interaction logic for App.xaml</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> App : Application
    {
        <span class="kwrd">public</span> <span class="kwrd">static</span> IBus Bus;

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> OnStartup(StartupEventArgs e)
        {
            <span class="kwrd">base</span>.OnStartup(e);

            Bus = Configure.With().DefaultBuilder().BinarySerializer()
                .MsmqTransport().IsTransactional(<span class="kwrd">true</span>).PurgeOnStartup(<span class="kwrd">false</span>)
                <span class="rem">//.MsmqSubscriptionStorage()</span>
                .UnicastBus().ImpersonateSender(<span class="kwrd">false</span>).LoadMessageHandlers()
                .CreateBus()
                .Start();
        }
    }
}</pre>
<p>The following code shows how to publish / subscribe to a message.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> Ion.Messages;
<span class="kwrd">using</span> NServiceBus;
<span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Windows;

<span class="kwrd">namespace</span> Ion.Windows.UI
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// Interaction logic for Window1.xaml</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> MainWindow : Window
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> MainWindow()
        {
            InitializeComponent();
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="sender"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> Window_Loaded(<span class="kwrd">object</span> sender, RoutedEventArgs e)
        {
            <span class="kwrd">if</span> (App.Bus != <span class="kwrd">null</span>)
            {
                App.Bus.Subscribe&lt;ResponseMessage&gt;(MessageResponseHandler);
            }
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="m"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;returns&gt;&lt;/returns&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">bool</span> MessageResponseHandler(ResponseMessage m)
        {
            MessageBox.Show(m.Status + <span class="str">" - "</span> + m.MessageId.ToString() + <span class="str">" - "</span> + m.RequestMessageId);
            <span class="kwrd">return</span> <span class="kwrd">true</span>;
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="sender"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> Send(<span class="kwrd">object</span> sender, RoutedEventArgs e)
        {
            <span class="kwrd">if</span> (App.Bus != <span class="kwrd">null</span>)
            {
                App.Bus.SendLocal&lt;RequestMessage&gt;(m =&gt;
                {
                    m.MessageId = Guid.NewGuid();
                    m.Name = <span class="str">"John"</span>;
                });
            }
        }
    }
}</pre>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> Ion.Messages;
<span class="kwrd">using</span> NServiceBus;
<span class="kwrd">using</span> System;

<span class="kwrd">namespace</span> Ion.Windows.UI.MessageHandlers
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">class</span> RequestMessageHandler : IMessageHandler&lt;RequestMessage&gt;
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="message"&gt;&lt;/param&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">void</span> Handle(RequestMessage message)
        {
            <span class="kwrd">if</span> (App.Bus != <span class="kwrd">null</span>)
            {
                App.Bus.Reply&lt;ResponseMessage&gt;(m =&gt;
                {
                    m.MessageId = Guid.NewGuid();
                    m.RequestMessageId = message.MessageId;
                    m.Status = <span class="str">"Completed"</span>;
                });
            }
        }
    }
}</pre>
<p>You may notice that we created a class that implements the IMessageHandler, this class automatically handles the messages and implements action into it.</p>
<p>That&#8217;s it!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=121&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2010/10/15/simple-nservicebus-sample/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Using SQL string in Fluent NHibernate</title>
		<link>http://johnllao.wordpress.com/2010/08/16/using-sql-string-in-fluent-nhibernate/</link>
		<comments>http://johnllao.wordpress.com/2010/08/16/using-sql-string-in-fluent-nhibernate/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 17:13:59 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=119</guid>
		<description><![CDATA[Sample code only shows how to execute a simple SQL string using Fluent NHibernate. Basically the method here will also work with Hibernate except that mapping will be on a .xml file. First we have to create a the Entity and mapping class. /// &#60;summary&#62; /// /// &#60;/summary&#62; public class Planet { private int _Id; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=119&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sample code only shows how to execute a simple SQL string using Fluent NHibernate. Basically the method here will also work with Hibernate except that mapping will be on a .xml file.</p>
<p>First we have to create a the Entity and mapping class.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// </span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="kwrd">public</span> <span class="kwrd">class</span> Planet
{
    <span class="kwrd">private</span> <span class="kwrd">int</span> _Id;
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">virtual</span> <span class="kwrd">int</span> Id
    {
        get { <span class="kwrd">return</span> _Id; }
        set { _Id = <span class="kwrd">value</span>; }
    }
    <span class="kwrd">private</span> <span class="kwrd">string</span> _Name;
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">virtual</span> <span class="kwrd">string</span> Name
    {
        get { <span class="kwrd">return</span> _Name; }
        set { _Name = <span class="kwrd">value</span>; }
    }
}</pre>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// </span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="kwrd">public</span> <span class="kwrd">class</span> PlanetMap : ClassMap&lt;Planet&gt;
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> PlanetMap()
    {
        Id(x =&gt; x.Id).Column(<span class="str">"id"</span>);
        Map(x =&gt; x.Name).Column(<span class="str">"name"</span>);
    }
}</pre>
<p>Now lets go to the actual method.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// </span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;param name="args"&gt;&lt;/param&gt;</span>
<span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)
{
    ISessionFactory sessionFactory = Fluently
                .Configure()
                .Database(MySQLConfiguration.Standard.ConnectionString(GetConnectionString()))
                .Mappings(m =&gt; m.FluentMappings.AddFromAssemblyOf&lt;Program&gt;())
                .BuildSessionFactory();

    <span class="kwrd">using</span> (ISession session = sessionFactory.OpenSession())
    {
        <span class="rem">// Executing sql string query</span>
        ISQLQuery query = session.CreateSQLQuery(<span class="str">"SELECT id, name FROM planet"</span>);

        <span class="rem">// Getting result in a form of nested arrays</span>
        Collection&lt;Planet&gt; planets = <span class="kwrd">new</span> Collection&lt;Planet&gt;();
        IList result = query.List();
        <span class="kwrd">foreach</span>(<span class="kwrd">object</span>[] item <span class="kwrd">in</span> result)
        {
            planets.Add(<span class="kwrd">new</span> Planet() { Id = (<span class="kwrd">int</span>) item[0], Name = (<span class="kwrd">string</span>) item[1] });
        }
    }

    Console.WriteLine(<span class="str">"Press enter key to exit."</span>);
    Console.ReadLine();
}</pre>
<p>From the example above we used the ISQLQuery object to define and execute the query, please note that the result is in the form of a nested array of objects.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=119&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2010/08/16/using-sql-string-in-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple Facebook WPF Application</title>
		<link>http://johnllao.wordpress.com/2010/06/28/simple-facebook-wpf-application/</link>
		<comments>http://johnllao.wordpress.com/2010/06/28/simple-facebook-wpf-application/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 12:52:37 +0000</pubDate>
		<dc:creator>johnllao</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://johnllao.wordpress.com/?p=116</guid>
		<description><![CDATA[On this blog I will show how to create a simple WPF application that connects to Facebook. In this sample it is assumed that you already acquired an Application ID from Facebook. If not please check this link http://developers.facebook.com/docs/.  The Application ID is one of the requirements to connect to Facebook. To begin, download the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=116&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On this blog I will show how to create a simple WPF application that connects to Facebook. In this sample it is assumed that you already acquired an Application ID from Facebook. If not please check this link <a href="http://developers.facebook.com/docs/">http://developers.facebook.com/docs/</a>.  The Application ID is one of the requirements to connect to Facebook.</p>
<p>To begin, download the Facebook toolkit from the this link <a href="http://facebooktoolkit.codeplex.com/">http://facebooktoolkit.codeplex.com/</a> </p>
<p>In you WPF application reference the following dlls:</p>
<ul>
<li>Facebook.dll</li>
</ul>
<p>Create the following class in your application:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// </span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">class</span> FacebookService
{
    <span class="kwrd">private</span> <span class="kwrd">static</span> DesktopSession _Session;
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">static</span> DesktopSession Session
    {
        get { <span class="kwrd">return</span> _Session; }
        set { _Session = <span class="kwrd">value</span>; }
    }
    <span class="kwrd">private</span> <span class="kwrd">static</span> BindingManager _Service;
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">static</span> BindingManager Service
    {
        get { <span class="kwrd">return</span> _Service; }
        set { _Service = <span class="kwrd">value</span>; }
    }
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="rem">/// &lt;param name="session"&gt;&lt;/param&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> Init(DesktopSession session)
    {
        _Session = session;
        _Service = BindingManager.CreateInstance(_Session);
    }
}</pre>
<p>The DesktopSession is a Facebook component from the toolkit that manage the connection and authentication to Facebook. To know more on how Facebook authenticates you application, check this link <a href="http://wiki.developers.facebook.com/index.php/How_Facebook_Authenticates_Your_Application">http://wiki.developers.facebook.com/index.php/How_Facebook_Authenticates_Your_Application</a></p>
<p>The BindingManager is another Facebook component that is reponsible retrieving friends list, photos and other information stored in a user&#8217;s profile.</p>
<p>To make this work, add the following code from the constructor of your WPF window:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Interaction logic for MainWindow.xaml</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> MainWindow : Window
{
    <span class="kwrd">private</span> FacebookModel _vm;
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> MainWindow()
    {
        DesktopSession session = <span class="kwrd">new</span> DesktopSession(<span class="str">"cd0ade267315e76b6e9d0b5855df7e98"</span>, <span class="kwrd">true</span>);
        session.Login();
        FacebookService.Init(session);

        InitializeComponent();

        _vm = <span class="kwrd">new</span> FacebookModel();
        Loaded += <span class="kwrd">new</span> RoutedEventHandler(MainWindow_Loaded);
        Closing += <span class="kwrd">new</span> System.ComponentModel.CancelEventHandler(MainWindow_Closing);
    }</pre>
<p>From the above code we use the DesktopSession to authenticate our applicatio to Facebook, when launching this application WPF will automatically redirects the application to a Facebook login page then returns back to our main window.</p>
<p>The following code shows the Facebook View Model that facilitates the retrieval of data from Facebook.</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<pre class="csharpcode"><span class="kwrd">using</span> Facebook.BindingHelper;
<span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Collections.ObjectModel;
<span class="kwrd">using</span> System.ComponentModel;

<span class="kwrd">namespace</span> MyFacebook.MainApplication.Model
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// </span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">class</span> FacebookModel : INotifyPropertyChanged
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> FacebookModel()
        {
            _Friends = FacebookService.Service.Friends;
            _Friends.DataRetrievalCompletedEvent += <span class="kwrd">new</span> System.EventHandler&lt;DataRetrievalCompletedEventArgs&gt;(Friends_DataRetrievalCompletedEvent);

            _Activities = FacebookService.Service.Stream;
            _Activities.DataRetrievalCompletedEvent += <span class="kwrd">new</span> System.EventHandler&lt;DataRetrievalCompletedEventArgs&gt;(Activities_DataRetrievalCompletedEvent);

            <span class="kwrd">long</span> user_id = FacebookService.Service.CurrentUserId;
            _CurrentUserList = FacebookService.Service.GetUsers(<span class="kwrd">new</span> <span class="kwrd">long</span>[] { user_id });
            _CurrentUserList.DataRetrievalCompletedEvent += <span class="kwrd">new</span> System.EventHandler&lt;DataRetrievalCompletedEventArgs&gt;(CurrentUser_DataRetrievalCompletedEvent);
        }

        <span class="preproc">#region</span> Current User
        <span class="kwrd">private</span> FacebookContactCollection _CurrentUserList;
        <span class="kwrd">private</span> FacebookContact _CurrentUser;
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> FacebookContact CurrentUser
        {
            get { <span class="kwrd">return</span> _CurrentUser; }
            set
            {
                <span class="kwrd">if</span> (_CurrentUser != <span class="kwrd">value</span>)
                {
                    _CurrentUser = <span class="kwrd">value</span>;
                    OnPropertyChanged(<span class="str">"CurrentUser"</span>);
                }
            }
        }
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="sender"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> CurrentUser_DataRetrievalCompletedEvent(<span class="kwrd">object</span> sender, DataRetrievalCompletedEventArgs e)
        {
            _CurrentUserList = sender <span class="kwrd">as</span> FacebookContactCollection;
            <span class="kwrd">if</span> (_CurrentUserList != <span class="kwrd">null</span> &amp;&amp; _CurrentUserList.Count &gt; 0)
            {
                CurrentUser = _CurrentUserList[0];
            }
        }
        <span class="preproc">#endregion</span>

        <span class="preproc">#region</span> Activities
        <span class="kwrd">private</span> ActivityPostCollection _Activities;
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> ActivityPostCollection Activities
        {
            get { <span class="kwrd">return</span> _Activities; }
            set
            {
                <span class="kwrd">if</span> (_Activities != <span class="kwrd">value</span>)
                {
                    _Activities = <span class="kwrd">value</span>;
                    OnPropertyChanged(<span class="str">"Activities"</span>);
                }
            }
        }
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="sender"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> Activities_DataRetrievalCompletedEvent(<span class="kwrd">object</span> sender, DataRetrievalCompletedEventArgs e)
        {

        }
        <span class="preproc">#endregion</span>

        <span class="preproc">#region</span> Selected Friend
        <span class="kwrd">private</span> FacebookContact _SelectedFriend;
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> FacebookContact SelectedFriend
        {
            get { <span class="kwrd">return</span> _SelectedFriend; }
            set
            {
                <span class="kwrd">if</span> (_SelectedFriend != <span class="kwrd">value</span>)
                {
                    _SelectedFriend = <span class="kwrd">value</span>;
                    SelectedFriendPhotos = _SelectedFriend.PhotosBy;
                    OnPropertyChanged(<span class="str">"SelectedFriend"</span>);
                }
            }
        }

        <span class="kwrd">private</span> FacebookPhotoCollection _SelectedFriendPhotos;
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> FacebookPhotoCollection SelectedFriendPhotos
        {
            get { <span class="kwrd">return</span> _SelectedFriendPhotos; }
            set
            {
                <span class="kwrd">if</span> (_SelectedFriendPhotos != <span class="kwrd">value</span>)
                {
                    _SelectedFriendPhotos = <span class="kwrd">value</span>;
                    OnPropertyChanged(<span class="str">"SelectedFriendPhotos"</span>);
                }
            }
        }
        <span class="preproc">#endregion</span>

        <span class="preproc">#region</span> Friends
        <span class="kwrd">private</span> FacebookContactCollection _Friends;
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> FacebookContactCollection Friends
        {
            get
            {
                <span class="kwrd">return</span> _Friends;
            }
            set
            {
                <span class="kwrd">if</span> (_Friends != <span class="kwrd">value</span>)
                {
                    _Friends = <span class="kwrd">value</span>;
                    OnPropertyChanged(<span class="str">"Friends"</span>);
                }
            }
        }
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="sender"&gt;&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name="e"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> Friends_DataRetrievalCompletedEvent(<span class="kwrd">object</span> sender, DataRetrievalCompletedEventArgs e)
        {

        }
        <span class="preproc">#endregion</span>

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">event</span> PropertyChangedEventHandler PropertyChanged;
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// </span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="propertyName"&gt;&lt;/param&gt;</span>
        <span class="kwrd">private</span> <span class="kwrd">void</span> OnPropertyChanged(<span class="kwrd">string</span> propertyName)
        {
            <span class="kwrd">if</span> (PropertyChanged != <span class="kwrd">null</span>)
            {
                PropertyChanged(<span class="kwrd">this</span>, <span class="kwrd">new</span> PropertyChangedEventArgs(propertyName));
            }
        }
    }
}</pre>
<p>That&#8217;s it!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/johnllao.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/johnllao.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/johnllao.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/johnllao.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/johnllao.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/johnllao.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/johnllao.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/johnllao.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/johnllao.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/johnllao.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/johnllao.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/johnllao.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/johnllao.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/johnllao.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=johnllao.wordpress.com&amp;blog=3896657&amp;post=116&amp;subd=johnllao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://johnllao.wordpress.com/2010/06/28/simple-facebook-wpf-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58170b849a2611dbd033bc269123fb26?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">johnllao</media:title>
		</media:content>
	</item>
	</channel>
</rss>
