<?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>James Blog</title>
	<atom:link href="http://james98.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://james98.wordpress.com</link>
	<description></description>
	<lastBuildDate>Sat, 05 Mar 2011 05:24:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='james98.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>James Blog</title>
		<link>http://james98.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://james98.wordpress.com/osd.xml" title="James Blog" />
	<atom:link rel='hub' href='http://james98.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Design Patterns &#8211; Gang of Four (GOF)</title>
		<link>http://james98.wordpress.com/2009/10/02/design-patterns-gang-of-four-gof/</link>
		<comments>http://james98.wordpress.com/2009/10/02/design-patterns-gang-of-four-gof/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 20:27:05 +0000</pubDate>
		<dc:creator>james98</dc:creator>
				<category><![CDATA[Design Patterns]]></category>

		<guid isPermaLink="false">http://james98.wordpress.com/2009/10/02/design-patterns-gang-of-four-gof/</guid>
		<description><![CDATA[http://www.dofactory.com/Patterns/Patterns.aspx Design Patterns         Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges. The Gang of Four (GoF) patterns [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=19&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dofactory.com/Patterns/Patterns.aspx">http://www.dofactory.com/Patterns/Patterns.aspx</a></p>
<table border="0" cellspacing="0" cellpadding="0" width="460">
<tbody>
<tr>
<td width="50%"><strong>Design Patterns</strong></td>
<td width="50%"> </td>
</tr>
</tbody>
</table>
<p> </p>
<table border="0" cellspacing="1" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="100" valign="bottom"> </td>
<td width="8"> </td>
<td valign="top">Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.</td>
</tr>
</tbody>
</table>
<p>The Gang of Four (GoF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: Creational, Structural, and Behavioral. Here you will find information on these important patterns.</p>
<p>To give you a head start, the C# source code is provided in 2 forms: &#8216;structural&#8217; and &#8216;real-world&#8217;. Structural code uses type names as defined in the pattern definition and UML diagrams. Real-world code provides real-world programming situations where you may use these patterns.</p>
<p>A third form, &#8216;.NET optimized&#8217; demonstrates design patterns that exploit built-in .NET 2.0, 3.0, and 3.5 features, such as, generics, attributes, delegates, object and collection initializers, automatic properties, and reflection. These and much more are available in our <a href="http://www.dofactory.com/Framework/Framework.aspx">Design Pattern Framework 3.5</a><sup>TM</sup>. See our <a href="http://www.dofactory.com/Patterns/PatternSingleton.aspx">Singleton</a> page for a .NET 3.5 Optimized code sample.</p>
<p> </p>
<table border="0" cellspacing="1" cellpadding="0" width="100%">
<tbody>
<tr>
<td colspan="2">  <strong>Creational Patterns</strong></td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternAbstract.aspx">Abstract Factory</a></td>
<td>  Creates an instance of several families of classes</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternBuilder.aspx">Builder</a></td>
<td>  Separates object construction from its representation</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternFactory.aspx">Factory Method</a></td>
<td>  Creates an instance of several derived classes</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternPrototype.aspx">Prototype</a></td>
<td>  A fully initialized instance to be copied or cloned</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternSingleton.aspx">Singleton</a></td>
<td>  A class of which only a single instance can exist</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="0" cellspacing="1" cellpadding="0" width="100%">
<tbody>
<tr>
<td colspan="2">  <strong>Structural Patterns</strong></td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternAdapter.aspx">Adapter</a></td>
<td>  Match interfaces of different classes</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternBridge.aspx">Bridge</a></td>
<td>  Separates an object’s interface from its implementation</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternComposite.aspx">Composite</a></td>
<td>  A tree structure of simple and composite objects</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternDecorator.aspx">Decorator</a></td>
<td>  Add responsibilities to objects dynamically</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternFacade.aspx">Facade</a></td>
<td>  A single class that represents an entire subsystem</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternFlyweight.aspx">Flyweight</a></td>
<td>  A fine-grained instance used for efficient sharing</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternProxy.aspx">Proxy</a></td>
<td>  An object representing another object</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="0" cellspacing="1" cellpadding="0" width="100%">
<tbody>
<tr>
<td colspan="2">  <strong>Behavioral Patterns</strong></td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternChain.aspx">Chain of Resp.</a></td>
<td>  A way of passing a request between a chain of objects</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternCommand.aspx">Command</a></td>
<td>  Encapsulate a command request as an object</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternInterpreter.aspx">Interpreter</a></td>
<td>  A way to include language elements in a program</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternIterator.aspx">Iterator</a></td>
<td>  Sequentially access the elements of a collection</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternMediator.aspx">Mediator</a></td>
<td>  Defines simplified communication between classes</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternMemento.aspx">Memento</a></td>
<td>  Capture and restore an object&#8217;s internal state</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternObserver.aspx">Observer</a></td>
<td>  A way of notifying change to a number of classes</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternState.aspx">State</a></td>
<td>  Alter an object&#8217;s behavior when its state changes</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternStrategy.aspx">Strategy</a></td>
<td>  Encapsulates an algorithm inside a class</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternTemplate.aspx">Template Method</a></td>
<td>  Defer the exact steps of an algorithm to a subclass</td>
</tr>
<tr>
<td width="120">  <a href="http://www.dofactory.com/Patterns/PatternVisitor.aspx">Visitor</a></td>
<td>  Defines a new operation to a class without change</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/james98.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/james98.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/james98.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/james98.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/james98.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/james98.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/james98.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/james98.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/james98.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/james98.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/james98.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/james98.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/james98.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/james98.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=19&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://james98.wordpress.com/2009/10/02/design-patterns-gang-of-four-gof/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/527953ffe0043e32e40304561fecc97d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">james98</media:title>
		</media:content>
	</item>
		<item>
		<title>Exporting CRM records as vCards</title>
		<link>http://james98.wordpress.com/2009/09/10/exporting-crm-records-as-vcards/</link>
		<comments>http://james98.wordpress.com/2009/09/10/exporting-crm-records-as-vcards/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 15:25:10 +0000</pubDate>
		<dc:creator>james98</dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[vCard]]></category>

		<guid isPermaLink="false">http://james98.wordpress.com/?p=13</guid>
		<description><![CDATA[The following blog comes from http://crm.georged.id.au/post/2008/02/11/Exporting-CRM-records-as-vCards.aspx &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8220;I want to be able to open a record in CRM, push the button and import the information as a contact into Outlook. Then, after synchronising with my PDA, I&#8217;ll have this contact card available while on the road.&#8221; That was, in a nutshell, the requirement from one [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=13&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote>
<p style="text-align:center;">The following blog comes from <a href="http://crm.georged.id.au/post/2008/02/11/Exporting-CRM-records-as-vCards.aspx">http://crm.georged.id.au/post/2008/02/11/Exporting-CRM-records-as-vCards.aspx</a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>&#8220;I want to be able to open a record in CRM, push the button and import the information as a contact into Outlook. Then, after synchronising with my PDA, I&#8217;ll have this contact card available while on the road.&#8221;</p></blockquote>
<p>That was, in a nutshell, the requirement from one of the CRM users.  This particular CRM deployment contained over 10,000 account and contact records imported from the industry database and taking them all offline would have been a challenge not to mention impractical. After some brainstorming the following alternatives emerged:</p>
<ul>
<li>Offline CRM client synchronising a subset of records. Apart from the fact that user did not have a laptop with them all the time, process of adding a selected individual account/contact would have become quite complicated. We could have built a view selecting accounts/contacts based on some criteria, e.g. custom flag  and then ask user to check this flag for the selected record and then go offline. Cumbersome and would not work that well when user was on the road.</li>
<li><a title="CRM Mobile Client" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ea5a3566-7ec8-4afe-bbfa-91e7210c55c4&amp;DisplayLang=en">CRM 3.0 Mobile</a>. Same issues as above. In addition user wanted the records to be on both laptop and PDA.</li>
<li><a title="CRM Mobile Express on CodePlex" href="http://www.codeplex.com/crmmobileexpress/">CRM Mobile Express</a>. Perhaps that would have worked if user had a reliable phone reception everywhere they went. Unfortunately, due to the nature of their business quite often they ended up in places which fall into unlucky <a title="Telstra coverage" href="http://www.telstra.com.au/mobile/networks/nextg.html">2% of Australian population</a> without reliable mobile coverage. If anyone thinks that <a title="Satellite services from Telstra" href="https://www.telstra.com.au/mobile/networks/satellite.cfm">satellite phone</a> is an option, just wait until your first bill.</li>
<li>Export/import facility. Outlook has ability to import contact information from vCards so all we have to do is to export CRM information as a vCard. Now we were cooking&#8230;</li>
</ul>
<p> </p>
<h1>Solution</h1>
<p>If you cannot wait to try it out, <a title="AlexaCrm.vCard project download" rel="enclosure" href="http://james98.wordpress.com/file.axd?file=AlexaCrm.vCard.zip">download</a> the binaries and the source (Visual Studio 2008), and follow instructions in a readme to deploy. The final result:</p>
<p> </p>
<p> <img style="border-width:0;margin:0 10px 0 0;" src="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_3.png" border="0" alt="Save/Open vCard prompt" width="244" height="196" /> <img style="border-width:0;" src="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_4.png" border="0" alt="Imported Outlook contact record" width="244" height="190" /></p>
<p>Note that the sample account name contains some Cyrillic and Simplified Chinese (I think <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  characters &#8211; this is just to test cosmopolitan nature of the implementation.</p>
<p>The anatomy of the solution is very simple:</p>
<ul>
<li>Custom toolbar button links to <strong>getvcard.aspx</strong> page and passes parameters that define entity to be exported.</li>
<li>Code on <strong>getvcard.aspx</strong> connects to CRM (working out version in the process) and extracts CRM record as a <a title="Dynamic entity class documentation" href="http://msdn2.microsoft.com/en-us/library/bb930292.aspx">DynamicEntity</a> instance.</li>
<li>Based on the entity type, vCard template is loaded and slugs are replaced using properties of the extracted DynamicEntity.</li>
<li>The content is marked as text/x-vCard and sent to the browser as a file attachment with extension <strong>vcf.</strong></li>
<li>Browser prompts to Open/Save and, if <strong>Open </strong>is selected, Outlook takes over and opens the file as a new contact record.</li>
</ul>
<p>Works on both CRM 3 and CRM 4.</p>
<h1>vCard and i18n</h1>
<p>In 1996 <a title="Internet Mail Consortium link" href="http://www.imc.org/">Internet Mail Consortium</a> took on vCard and vCalendar technologies from <a title="versit consortium link" href="http://en.wikipedia.org/wiki/Versit">versit consortium</a>. Since then vCard standard evolved to <a title="MIME Content-Type for Directory Information (RFC 2425)" href="http://www.ietf.org/rfc/rfc2425.txt">couple</a> <a title="vCard MIME Directory Profile (RFC 2426)" href="http://www.ietf.org/rfc/rfc2426.txt">RFCs</a> however Outlook, even in 2007 version, still seems to support only 2.1 specifications (last non-RFC version) which is <a title="Developers documentation for PDI formats" href="http://www.imc.org/pdi/pdiproddev.html">reasonably documented</a>. As the only application we had to concern ourselves with was Outlook, we decided to stick with version 2.1.</p>
<p>In a nutshell, vCard is a list of fields and values in the following format:</p>
<p>PropertyName [‘;‘ PropertyParameters] ’:‘ PropertyValue</p>
<p>It&#8217;s all nice and simple and we even managed to implement vCard generation using templates with slug replacement. But what an implementation of any standard would be without a challenge? As often is the case, encoding needed to be taken care of. You see, vCards are supposed to be transmittable using 7-bit ASCII and property values in vCards therefore have to be encoded using either <a title="Quoted-printable encoding" href="http://en.wikipedia.org/wiki/Quoted-printable">quoted-printable</a> of <a title="Base64 encoding" href="http://en.wikipedia.org/wiki/Base64">base64</a>, when required. As base64 is unreadable, we really wanted to use quoted-printable encoding but could not find any reliable sample code that would handle anything beyond 8-bit ASCII. Throw in character sets definitions supported by vCard specifications and you&#8217;ve got one big <a title="Internationalization" href="http://en.wikipedia.org/wiki/Internationalization_and_localization">i18n</a> mess.</p>
<p>I won&#8217;t bother you with <a title="Unicode in .NET" href="http://www.yoda.arachsys.com/csharp/unicode.html">research details</a> but since we never transmitted any of vCards and only had to concern ourselves with Outlook, the solution turned out to be quite simple. Outlook was happy to digest any data from CRM as long as we recorded them using UTF-8 encoding. To pass through line breaks, &#8216;=&#8217; and sometimes &#8216;;&#8217; we still had to use quoted-printable encoding but we limited our implementation to these special cases. The end result is not quite what would you call quoted-printable but it seems to work just fine.</p>
<h1>Dual binary support</h1>
<p>Another problem was rather self-inflicted. As the implementation turned out to be quite straightforward, we challenged ourselves with producing single binary that would support both CRM 3 and CRM 4. Simpler solution would have been a single code base with some conditional compilation here and there but we wanted to see what would it take to make same binaries to run on both versions.</p>
<p>The code was compiled using Microsoft.Crm.Sdk and Microsoft.Crm.SdkTypeProxy libraries, finalised and tested against CRM 4. Once it was working, we pointed code to CRM 3 endpoint, tried to execute it &#8220;as is&#8221; and immediately run into problems with the line:</p>
<div>
<p>RetrieveResponse retrieved = service.Execute(retrieve) as RetrieveResponse;</p></div>
<p>which threw the following SOAPException:</p>
<div>
<p>&#8220;Server did not recognize the value of HTTP Header SOAPAction:  http://schemas.microsoft.com/crm/2007/WebServices/Execute.&#8221;</p></div>
<p>Close peek into <strong>Microsoft.Crm.SdkTypeProxy</strong> library using <a title="Reflector download" href="http://www.aisto.com/roeder/dotnet/Download.aspx?File=Reflector">Reflector</a> explained what was happening. All SOAP methods in this library are marked with <a href="http://schemas.microsoft.com/crm/2007/WebServices">http://schemas.microsoft.com/crm/2007/WebServices</a> namespace while CRM 3 expected <a href="http://schemas.microsoft.com/crm/2006/WebServices">http://schemas.microsoft.com/crm/2006/WebServices</a>. <strong>Microsoft.Crm.Sdk</strong> library, on the other hand, uses 2006 namespaces throughout, apart from new classes and methods introduced in CRM 4, e.g. <a title="CrmAuthenticationToken SDK documentation" href="http://msdn2.microsoft.com/en-us/library/bb928922.aspx">CrmAuthenticationToken</a>. What that meant that, perhaps, if we didn&#8217;t engage into some complicated scenarios we might be able to use Microsoft.Crm.Sdk library references against CRM 3.</p>
<p>As far as SdkTypeProxy references are concerned, we only needed a handful of methods and classes so we were able to proxy them manually. We generated proxy code against CRM 3 installation and then carefully stripped out everything that was not required by our code. The end result is <strong>Microsoft.Crm.SdkTypeProxy3.cs</strong> file containing version 3 of some of classes and methods defined in <strong>Microsoft.Crm.SdkTypeProxy</strong>.</p>
<p>Our code is designed to run on the CRM server so we use registry value <strong>CRM_Server_Version </strong>to work out CRM server version at run-time.  Apart from different end-point and call to <strong>Execute</strong> method,  CRM 4 also requires some <a title="ASP.NET Applications on the CRM Server" href="http://www.philiprichardson.org/blog/post/Part-4-ASPNET-Applications-on-the-CRM-Server.aspx">additional code</a> to support impersonation and multiple organisations and IFD scenarios. But once we created instance of DynamicEntity class for the entity, the code relies purely on <strong>Microsoft.Crm.Sdk </strong>and is <em>identical</em> for both CRM 3 and 4.</p>
<p>One other minor difference between CRM 3 and CRM 4 is the way the parameters are passed into custom URLs. CRM 4 uses <em>id </em>and<em> typename</em> while CRM 3 passes in <em>oId</em> and <em>oTypeName</em>. That, perhaps, was the easiest code fork:</p>
<div>
<p>Guid id;<br />
string entityName;</p>
<p>if (CrmHelper.GetServerVersion().Major == 3)<br />
{<br />
    id = new Guid(Request.QueryString["oId"]);<br />
    entityName = Request.QueryString["oTypeName"];<br />
}<br />
else<br />
{<br />
    id = new Guid(Request.QueryString["id"]);<br />
    entityName = Request.QueryString["typename"];<br />
}</p></div>
<p>While &#8220;single binary&#8221; implementation is most certainly an overkill and is unlikely to be required in real life, the challenges of making your code work with both versions of CRM are very common for ISVs and having a single distribution binary for your product is certainly an advantage worth aiming for. As mentioned, easier approach would have been conditional compilation linking code to different proxy libraries.</p>
<h1>Installation</h1>
<p>Despite all the efforts to produce single binary supporting both CRM versions, the installation still differs. The main difference is support for multi-tenancy and IFD in CRM 4 which means that we have to run our code under CRM web site context.  In version 3, since our code requires CLR 2.0, we have to create a separate virtual web site under .NET 2.0 application pool not to interfere with CRM server.  Unless mentioned otherwise, all installation is done on CRM server.</p>
<h2>CRM 4</h2>
<ol>
<li>Place AlexaCrm.vCard.dll from <strong>installation</strong> folder into GAC. Drag&#8217;n'dropping file into <strong>c:\windows\assembly </strong>using Windows Explorer usually does the trick, command line interface addicts can use <strong>gacutil.exe /i</strong>. Note: there is no need to do anything with <strong>Microsoft.Crm.*.dll</strong> assemblies as they should already be in server&#8217;s GAC.</li>
<li>Create new folder, e.g. <strong>c:\program files\vcard</strong>.</li>
<li>Copy <strong>GetVCard.aspx</strong> and <strong>web.config</strong> files from <strong>installation\4</strong> folder into the folder above.</li>
<li>Create new <strong>virtual directory</strong> named <strong>vCard </strong>under <strong>ISV </strong>folder located in <strong>Microsoft Dynamics CRM</strong> web site and point it to the folder above. Make sure you don&#8217;t select <strong>Run Scripts</strong> permissions to avoid creating a separate application: <br />
<img style="border-width:0;" src="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_5.png" border="0" alt="Creating virtual directory for CRM 4" width="244" height="158" /></li>
<li>Export ISV Config customizations, add <strong>Button </strong>entries listed in <strong>installation\4\isv.config.xml</strong> and import back. No need to publish.</li>
<li>If you have more than one organisation that you want to enable vCard support for, rinse and repeat step 5.</li>
</ol>
<h2>CRM 3</h2>
<ol>
<li>Create new folder, e.g. <strong>c:\program files\vcard</strong>. Create <strong>bin</strong> subfolder.</li>
<li>Copy GetVCard.aspx and <strong>web.config</strong> files from <strong>installation\3</strong> folder into the folder above.</li>
<li>Copy <strong>AlexaCrm.vCard.dll, Microsoft.Crm.Sdk.dll</strong> and <strong>Microsoft.Crm.SdkTypeProxy.dll</strong> into <strong>c:\program files\vcard</strong>\<strong>bin</strong> folder. As we run our code under a separate web site, there is no need for assemblies to reside in GAC and they can be happily live in the <strong>bin</strong> folder.</li>
<li>Create new <strong>virtual directory</strong> named <strong>vCard </strong>under <strong>Microsoft Dynamics CRM</strong> web site and point it to the folder above. Make sure you select <strong>Run Scripts</strong> permissions to create a separate application:<br />
<img style="border-width:0;" src="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_6.png" border="0" alt="Creating virtual directory for CRM 3" width="244" height="190" /></li>
<li>Open <strong>Properties </strong>dialog for the new site and make sure that it&#8217;s .NET 2.0 application that runs under one of .NET 2.0 application pools:<br />
<img style="border-width:0;margin:0 10px 0 0;" src="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_1.png" border="0" alt="Configure application to run under 2.0 framework" width="244" height="237" /> <img style="border-width:0;" src="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_7.png" border="0" alt="Setting application pool for vcard web site" width="244" height="237" /></li>
<li>Add <strong>Button </strong>entries listed in <strong>installation\3\isv.config.xml</strong> to your <strong>C:\Program Files\Microsoft CRM\CRMWeb\_Resources\isv.config.xml</strong> file. No need to publish but it&#8217;s a good idea to backup this file prior to making any changes as you can easily render your CRM installation useless.</li>
</ol>
<p>Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/james98.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/james98.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/james98.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/james98.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/james98.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/james98.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/james98.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/james98.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/james98.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/james98.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/james98.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/james98.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/james98.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/james98.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=13&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://james98.wordpress.com/2009/09/10/exporting-crm-records-as-vcards/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/527953ffe0043e32e40304561fecc97d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">james98</media:title>
		</media:content>

		<media:content url="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_3.png" medium="image">
			<media:title type="html">Save/Open vCard prompt</media:title>
		</media:content>

		<media:content url="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_4.png" medium="image">
			<media:title type="html">Imported Outlook contact record</media:title>
		</media:content>

		<media:content url="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_5.png" medium="image">
			<media:title type="html">Creating virtual directory for CRM 4</media:title>
		</media:content>

		<media:content url="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_6.png" medium="image">
			<media:title type="html">Creating virtual directory for CRM 3</media:title>
		</media:content>

		<media:content url="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_1.png" medium="image">
			<media:title type="html">Configure application to run under 2.0 framework</media:title>
		</media:content>

		<media:content url="http://james98.wordpress.com/image.axd?picture=WindowsLiveWriter/ExportingvCards_8E02/image_thumb_7.png" medium="image">
			<media:title type="html">Setting application pool for vcard web site</media:title>
		</media:content>
	</item>
		<item>
		<title>Sharepoint</title>
		<link>http://james98.wordpress.com/2009/06/01/sharepoint/</link>
		<comments>http://james98.wordpress.com/2009/06/01/sharepoint/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 16:05:20 +0000</pubDate>
		<dc:creator>james98</dc:creator>
				<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false">http://james98.wordpress.com/?p=9</guid>
		<description><![CDATA[MS TechNet &#8211; SharePoint 2007 Large library of documents about designing and deploying SPS 2007. Highlight Features of SharePoint 2007 Microsoft&#8217;s five new Office Servers give Office 2007 users a wealth of new features and capabilities.We examine how in this four-part series, starting with SharePoint 2007. MS Download Centre Product guides, white papers, etc. MS [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=9&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><a href="http://technet2.microsoft.com/Office/en-us/library/3e3b8737-c6a3-4e2c-a35f-f0095d952b781033.mspx?mfr=true" target="_top">MS TechNet &#8211; SharePoint 2007</a></td>
<td valign="top">Large library of documents about designing and deploying SPS 2007.</td>
</tr>
<tr>
<td valign="top"><a href="http://www.infoworld.com/article/07/08/13/33TCmoss_1.html" target="_top">Highlight Features of SharePoint 2007</a></td>
<td valign="top">Microsoft&#8217;s five new Office Servers give Office 2007 users a wealth of new features and capabilities.We examine how in this four-part series, starting with SharePoint 2007.</td>
</tr>
<tr>
<td valign="top"><a href="http://www.microsoft.com/downloads/" target="_top">MS Download Centre</a></td>
<td valign="top">Product guides, white papers, etc.</td>
</tr>
<tr>
<td valign="top"><a href="http://msdn2.microsoft.com/en-us/office/default.aspx" target="_top">MS Office Developer Center</a></td>
<td valign="top"> </td>
</tr>
<tr>
<td valign="top"><a href="http://office.microsoft.com/en-us/products/FX101865111033.aspx" target="_top">Purchasing &amp; Licensing MOSS</a></td>
<td valign="top"> </td>
</tr>
<tr>
<td valign="top"><a href="http://msdn2.microsoft.com/en-us/office/bb421303.aspx" target="_top">SharePoint Designer Developer Portal</a></td>
<td valign="top">For developers.</td>
</tr>
<tr>
<td valign="top"><a href="http://technet.microsoft.com/en-us/windowsserver/sharepoint/default.aspx" target="_top">SharePoint Services 3.0 Tech Centre</a></td>
<td valign="top"> </td>
</tr>
<tr>
<td valign="top"><a href="http://technet2.microsoft.com/Office/en-us/library/80a650f6-c4e9-48f2-86ff-96121fcdae3b1033.mspx?mfr=true" target="_top">Create and configure Shared Services Providers</a></td>
<td valign="top"> </td>
</tr>
<tr>
<td valign="top"><a href="http://technet2.microsoft.com/Office/en-us/library/80a650f6-c4e9-48f2-86ff-96121fcdae3b1033.mspx?mfr=true" target="_top">Deployment End-to-End</a></td>
<td valign="top"> </td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/james98.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/james98.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/james98.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/james98.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/james98.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/james98.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/james98.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/james98.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/james98.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/james98.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/james98.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/james98.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/james98.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/james98.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=9&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://james98.wordpress.com/2009/06/01/sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/527953ffe0043e32e40304561fecc97d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">james98</media:title>
		</media:content>
	</item>
		<item>
		<title>ASP.NET tutorial video</title>
		<link>http://james98.wordpress.com/2009/06/01/asp-net-tutorial-video/</link>
		<comments>http://james98.wordpress.com/2009/06/01/asp-net-tutorial-video/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 15:51:20 +0000</pubDate>
		<dc:creator>james98</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://james98.wordpress.com/2009/06/01/asp-net-tutorial-video/</guid>
		<description><![CDATA[Data Access – Create a new database from scratch, define a table, populate it with data, create a strongly typed DAL TableAdapter to work against it, and then build a filtered master/detail set of ASP.NET pages with data sorting, paging and editing support against it.  Master Pages and Site Navigation – Create a consistent master [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=7&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_data_final.wmv">Data Access</a> – Create a new database from scratch, define a table, populate it with data, create a <a href="http://weblogs.asp.net/scottgu/archive/2006/01/15/435498.aspx">strongly typed DAL TableAdapter</a> to work against it, and then build a filtered master/detail set of ASP.NET pages with data sorting, paging and editing support against it. </p>
<p><a href="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_masterpages-nav_FINAL.wmv">Master Pages and Site Navigation</a> – Create a consistent master page layout for a site using the new ASP.NET Master Pages Feature.  Then create a site navigation menu using site navigation and the new TreeView control. </p>
<p><a href="http://download.microsoft.com/download/3/6/0/3604c3d2-0db9-4726-910d-b3b8f93a86e4/hilo_membership-roles_final.wmv">Membership and Roles</a> – Add an authentication and authorization system to a site from scratch, and implement login, create user, change password, password reset, and role based security in a secure way.</p>
<p> <a href="http://download.microsoft.com/download/3/6/0/3604c3d2-0db9-4726-910d-b3b8f93a86e4/hilo_profile-themes_final.wmv">Profiles and Themes</a> – Enable per-user profile personalization on a site.  Then use this together with the new Themes/Skins feature to allow a visiting user to customize and personalize the look and feel of a site. </p>
<p> <a href="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_webparts_final.wmv">Web Parts and Personalization</a> – Enable customizable drag/drop portal UI within web-pages, and allow visiting users to customize the information experience they see.</p>
<p> <a href="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_cache1_final.wmv">Output Caching and SQL Cache Invalidation</a> – Learn how to use the output caching feature in ASP.NET, as well as the new SQL Cache Invalidation support to build super efficient output cached pages that stay in sync with the data within your database.</p>
<p> <a href="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_cache2_final.wmv">Partial Page Caching</a> – Learn how to use the Partial Page output caching with ASP.NET to enable regions of a page to be cached, while also allowing other portions of the page to stay dynamic.</p>
<p> <a href="http://download.microsoft.com/download/3/6/0/3604c3d2-0db9-4726-910d-b3b8f93a86e4/hilo_localization_final.wmv">Localization</a> – Learn how to build culture-aware and locale specific applications using ASP.NET 2.0.</p>
<p> <a href="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_contact_final.wmv">Wizard and Validation Control</a>s – Build a canonical form data registration page using the new ASP.NET 2.0 Wizard control and validation control features.</p>
<p> <a href="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_tips_final.wmv">Tips and Tricks</a> – This video highlights a number of cool new features in ASP.NET 2.0, including: cross-page postback support, file uploading, the MultiView control, encrypting web.config settings, and more.</p>
<p> <strong>AJAX Update:</strong> </p>
<p><a href="http://atlas.asp.net/Default.aspx?tabid=47">Atlas </a>&#8211; This video shows building a todo Task List using Atlas, the new ASP.NET AJAX framework.</p>
<p>&#8211;From: <a href="http://weblogs.asp.net/scottgu/archive/2006/02/26/Great-ASP.NET-2.0-Tutorial-Videos-Online.aspx">http://weblogs.asp.net/scottgu/archive/2006/02/26/Great-ASP.NET-2.0-Tutorial-Videos-Online.aspx</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/james98.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/james98.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/james98.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/james98.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/james98.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/james98.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/james98.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/james98.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/james98.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/james98.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/james98.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/james98.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/james98.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/james98.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=7&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://james98.wordpress.com/2009/06/01/asp-net-tutorial-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_data_final.wmv" length="15388844" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_masterpages-nav_FINAL.wmv" length="17171650" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/3/6/0/3604c3d2-0db9-4726-910d-b3b8f93a86e4/hilo_membership-roles_final.wmv" length="22532064" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/3/6/0/3604c3d2-0db9-4726-910d-b3b8f93a86e4/hilo_profile-themes_final.wmv" length="14886402" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_webparts_final.wmv" length="17476512" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_cache1_final.wmv" length="15625186" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_cache2_final.wmv" length="18852878" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/3/6/0/3604c3d2-0db9-4726-910d-b3b8f93a86e4/hilo_localization_final.wmv" length="15715852" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_contact_final.wmv" length="16372244" type="video/x-ms-wmv" />
<enclosure url="http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_tips_final.wmv" length="25086210" type="video/x-ms-wmv" />
	
		<media:content url="http://1.gravatar.com/avatar/527953ffe0043e32e40304561fecc97d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">james98</media:title>
		</media:content>
	</item>
		<item>
		<title>ASP.NET</title>
		<link>http://james98.wordpress.com/2009/06/01/asp-net/</link>
		<comments>http://james98.wordpress.com/2009/06/01/asp-net/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 15:47:58 +0000</pubDate>
		<dc:creator>james98</dc:creator>
				<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://james98.wordpress.com/?p=3</guid>
		<description><![CDATA[http://www.asp.net/get-started/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=3&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.asp.net/get-started/">http://www.asp.net/get-started/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/james98.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/james98.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/james98.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/james98.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/james98.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/james98.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/james98.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/james98.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/james98.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/james98.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/james98.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/james98.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/james98.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/james98.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=james98.wordpress.com&amp;blog=7989483&amp;post=3&amp;subd=james98&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://james98.wordpress.com/2009/06/01/asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/527953ffe0043e32e40304561fecc97d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">james98</media:title>
		</media:content>
	</item>
	</channel>
</rss>
