<?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>Molten Core - a Sitecore blog</title>
	<atom:link href="http://mcore.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mcore.wordpress.com</link>
	<description>Commenting Sitecore...</description>
	<lastBuildDate>Mon, 12 Dec 2011 10:21:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mcore.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Molten Core - a Sitecore blog</title>
		<link>http://mcore.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mcore.wordpress.com/osd.xml" title="Molten Core - a Sitecore blog" />
	<atom:link rel='hub' href='http://mcore.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Inheritance techniques in Sitecore ASP.NET CMS</title>
		<link>http://mcore.wordpress.com/2011/12/07/inheritance-techniques-in-sitecore-asp-net-cms/</link>
		<comments>http://mcore.wordpress.com/2011/12/07/inheritance-techniques-in-sitecore-asp-net-cms/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 16:04:02 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Extension Methods]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[UserControl]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=393</guid>
		<description><![CDATA[There are two techniques for inheritance which are commonly used in all Sitecore solutions; hierarchical inheritance and template inheritance. Sadly, Sitecore offers no straight forward out-of-the-box API methods for the two techniques. This post describes some simple and neat ways of implementing these techniques &#8211; and also shows of how to use extension methods in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=393&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are two techniques for inheritance which are commonly used in all Sitecore solutions; hierarchical inheritance and template inheritance. Sadly, Sitecore offers no straight forward out-of-the-box API methods for the two techniques. This post describes some simple and neat ways of implementing these techniques &#8211; and also shows of how to use extension methods in .net to extend Sitecore and ASP.NET classes. This post was partly inspired by the extension method contest at the <a href="http://learnsitecore.cmsuniverse.net/en/Blog/Sitecore-Extension-Competition.aspx" title="Sitecore Extension contest" target="_blank">Learn Sitecore website</a>.</p>
<h2>Template inheritance:</h2>
<p>Template inheritance is an integral part of Sitecore which I hope that all of you Sitecore fans out there use extensively in your solutions. At Pentia, template inheritance is so vital that in practice, you will see no <code>item.TemplateID == SomeID</code> or <code>item.TemplateKey = "sometemplate"</code> in any of our code, just like you (hopefully) would never use <code>MyObject.GetType().Name == "MyClass"</code> in C#.<br />
No, we always use the following extension method:</p>
<p><pre class="brush: csharp;">
public static bool IsDerived(this Item item, ID templateId)
{
  if (item == null || templateId.IsNull || item.Template == null)
    return false;
    
  TemplateItem templateItem = item.Database.Templates[templateId];
  if (templateItem == null)
    return false;

  Template template = TemplateManager.GetTemplate(item);       
  return template != null &amp;amp;&amp;amp; (template.ID == templateItem.ID || template.DescendsFrom(templateItem.ID));
}
</pre><br />
The method is used as item.IsDerived(&#8220;MyTemplate&#8221;) just as you would always do MyObject is MyClass in c#. Sadly, Sitecore offers no obvious way to do the same out-of-the-box&#8230;.wait&#8230; oh yeah, you could naturally do Sitecore.Xml.Xsl.XslHelper.IsItemOfType()</p>
<h2>Hierarchical inheritance:</h2>
<p>While template inheritance is used to give all content of different types the same properties, hierarchical inheritance in Sitecore is slightly different. This is primarily used to allow a piece of content, a setting or a configuration to propagate down a branch in the tree &#8211; i.e. propogate down a number of content types which can be totally unrelated, but grouped together solely because of their content position. For example, this could be used to apply a given design theme to an entire subsite within you site. Using hierarchical inheritance, extension methods and Linq, this could be accomplished as such (pardon the train-wreck):</p>
<p><pre class="brush: csharp;">
protected void Page_Load(object sender, EventArgs e) {
  var theme = this.GetDataSourceItem().GetAncestorOrSelf().First(i =&gt; i.IsDerived(&quot;HasTheme&quot;)).Fields[&quot;Theme&quot;].Value;
  //...
}
</pre><br />
In this example there are &#8211; besides the IsDerived extension method described above &#8211; two very useful extension methods:</p>
<p><code>GetDataSourceItem</code> extends the ASP.NET UserControl to provide easy access to the DataSource set on a sublayout and is implemented as follows:</p>
<p><pre class="brush: csharp;">
public static Item GetDataSourceItem(this UserControl control)
{
  Sublayout sublayout = GetSublayout(control);
  if (sublayout == null)
    return null;
  string dataSourcePath = sublayout.DataSource;
  return !String.IsNullOrEmpty(dataSourcePath) ? Context.Database.GetItem(dataSourcePath) : null;
}
</pre></p>
<p><code>GetAncestorOfSelf</code> extends item to return a list with the item itself and all its parents &#8211; and this is naturally where the key to hierarchical inheritance lies:</p>
<p><pre class="brush: csharp;">
public static IEnumerable&lt;Item&gt; GetAncestorOrSelf(this Item item)
{
  do {
    yield return item;
    item = item.Parent;
    
  } while (item != null);
}
</pre></p>
<p>I hope this post shows you how some simple extension methods can give you a lot of power in your solutions.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/393/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=393&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2011/12/07/inheritance-techniques-in-sitecore-asp-net-cms/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Drawing the customization line</title>
		<link>http://mcore.wordpress.com/2011/01/24/drawing-the-customization-line-4/</link>
		<comments>http://mcore.wordpress.com/2011/01/24/drawing-the-customization-line-4/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 09:02:02 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">https://mcore.wordpress.com/?p=384</guid>
		<description><![CDATA[Sitecore is an extremely flexible system; in fact most of Sitecore is built with the extensibility and customization functionalities which is provided. This includes pipelines, events, commands, SheerUI, providers and more. All in all: there is not much which cannot be achieved in Sitecore and only the imagination of you and your client sets the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=384&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sitecore is an extremely flexible system; in fact most of Sitecore is built with the extensibility and customization functionalities which is provided. This includes pipelines, events, commands, SheerUI, providers and more. All in all: there is not much which cannot be achieved in Sitecore and only the imagination of you and your client sets the limits of customizations &#8211; and believe me, in my work of helping out clients and Sitecore partners all over the world, I&#8217;ve seen Sitecore completely twisted in many ways. I&#8217;ve seen Sitecore&#8217;s entire layout engine replaced with an item based layout definition, with subitems representing placeholders and subitems representing presentation elements. I&#8217;ve seen publishing and item saved pipelines so crammed full of custom functionality that performance was non-existent and I&#8217;ve seen XSLT&#8217;s with one line of code: a call to an extension function which would return an entire HTML structure as a string.</p>
<p>So where do we draw the line in the holy name of bending functionality and giving the customer &#8220;what they want&#8221;? Remember:</p>
<ul>
<li>Convincing the client to choose standard functionality is also an option.</li>
<li>Each change of standard Sitecore functionality is potentially expensive &#8211; for you and for the client.</li>
<li>If possible, do not replace Sitecore functionality, extend it.</li>
<li>Think about what you put into Sitecore: Content and functionality can be accessed through .NET code and does not necessarily need to be added to the Sitecore DB&#8217;s or in a pipeline.</li>
<li>Keep track of your customizations &#8211; source control it and document it.</li>
<li>Remember that your customizations will have to upgrade with Sitecore.</li>
<li>Stay true to yourself: If it feels wrong, don&#8217;t do it.</li>
</ul>
<p>In short, just because you can does not mean that you should:-)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/384/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=384&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2011/01/24/drawing-the-customization-line-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting your Sitecore project right</title>
		<link>http://mcore.wordpress.com/2011/01/19/getting-your-sitecore-project-right/</link>
		<comments>http://mcore.wordpress.com/2011/01/19/getting-your-sitecore-project-right/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 10:01:57 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Introduction]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/2011/01/19/getting-your-sitecore-project-right/</guid>
		<description><![CDATA[This post is for you clients who have already selected Sitecore as your new website platform and is starting up a new Sitecore project. Here are a couple of my thoughts on how you can get your Sitecore project on the right track from the beginning, by setting the stage for a good collaboration with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=376&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post is for you clients who have already selected Sitecore as your new website platform and is starting up a new Sitecore project.<br /> Here are a couple of my thoughts on how you can get your Sitecore project on the right track from the beginning, by setting the stage for a good collaboration with your implementation partner.
</p>
<p>The website you a building today should also be the website for tomorrow and hence the website you are building should be extendable, flexible and scalable. It is absolutely possible to build a Sitecore web platform which will last many iterations – considering that you take this into account early in the process.
</p>
<h3>Select your implementation partner carefully<br />
</h3>
<p>Your implementation partner is the single most important collaboration partner in your project. They bind everything together; requirement specifications, user experience design, hardware, software, domain knowledge and more, and is therefore crucial for the project&#8217;s success. Therefore your primary focus initially in your project should without doubt be to find the right implementation partner.
</p>
<p>In my opinion, what you should focus on is:
</p>
<p><strong>Human chemistry:</strong> A website is not primarily a technological project, but a communication project. Therefore select a partner with whom you can communicate openly and freely. If you sense that they are listening, factors as for example domain knowledge is less important.
</p>
<p><strong>Experience:</strong> Sitecore is not a difficult tool to learn – but is takes time to master. Therefore, try to find a partner which has multiple large scale projects under its belt, and preferably with projects which has undergone a number of iterations.
</p>
<p><strong>Technology based:</strong> In my experience, companies which are technology based, i.e. which focuses primarily on the integration and platform parts of the solutions compared to the user experience driven companies, e.g. design agencies, makes more future proof Sitecore solutions. Therefore if you are looking for someone to build your future webplatform as opposed to just your next website, opt for a company with vast knowledge of Microsoft .NET and surrounding technologies.
</p>
<p><strong>References:</strong> Most implementation partners can most likely show an impressing list of references – but please do not stop there. Call their references and enquire about support, quality etc. Hearing whether their existing customers have gotten value for money is very useful.
</p>
<h3>Don&#8217;t be too specific in your requirement specifications<br />
</h3>
<p>My suggestion is that you use your implementation partner as a sparring partner on requirements. Remember that these guys have built other solutions before yours and might bring experience, skills and functionality which will benefit you. Also, allowing multiple implementation partners to suggest different solutions to your website&#8217;s objective – as opposed to a RFP checklist – will allow you to better evaluate their creativity.
</p>
<p>Therefore, in the specifications, try to explain the objectives you have for your company, users or editors, instead of the precise functionality. In Pentia we have had multiple requests for debate forum functionality in solutions – which in our experience is a prime example of a specific functionality which is often never used by users. By explaining which objective the clients wanted to achieve on the website, instead of the specific functionality, we could have advised better, earlier in the process and given more value to the client. By the way; in most cases we managed to dissuade the clients to actually implement the debate forum, and used the precious development time for something much more valuable.
</p>
<p>In short: Requirements change. Therefore, being too specific and detailed about functionality already in the RFP process will most likely get you a whole lot of expensive, unused functionality.
</p>
<h3>Be open about your development budget<br />
</h3>
<p>This is in my book a no-brainer. The only reasons for not being open about the budget are if you adopt the &#8220;they-are-all-thieves-and-robbers&#8221; attitude or if you hope to haggle your way to a cheaper website. In both cases, you are doing yourself and your website a whole lot of damage.
</p>
<p>First of all, you have to trust your implementation partner, as they hold an immense power to make your project a success or failure. If you don&#8217;t, find another partner. Secondly, this is not a standard product you are buying. If you push your implementation partner on time or money, they have but one place to push back: quality. This basically means that your solution will be in a worse state, bringing lower reliability or higher support cost.
</p>
<p>Therefore, a selection process is not about getting the lowest price or best solution description. It&#8217;s all about finding the implementation partner which you trust the most. And if you found that implementation partner, why not be open about mostly everything, including budget?
</p>
<h3>Bring your partners on board early<br />
</h3>
<p>There is a lot of benefit in bringing in all your partners as early in the process as possible – this means both strategy and design partners and well as implementation and hosting partners. Each domain has something to bring to the process and can potentially save you a lot of money and hassle. Getting the implementation partner and hosting partner to talk together as early as possible can save a lot of time in the deployment process, and in my experience, by getting the implementation partner involved in the strategy and graphical design process a lot of hours can be saved in communication afterwards. Furthermore implementation partners often have prebuilt functionality which – if it fits the project – can save you a lot of time and money. The earlier this is brought forward, the easier it is to fit into any graphical design or information architecture.
</p>
<p>
 </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/376/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=376&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2011/01/19/getting-your-sitecore-project-right/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Dedicated image server in Sitecore &#8211; part 2</title>
		<link>http://mcore.wordpress.com/2011/01/02/dedicated-image-server-in-sitecore-part-2/</link>
		<comments>http://mcore.wordpress.com/2011/01/02/dedicated-image-server-in-sitecore-part-2/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 14:15:05 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=363</guid>
		<description><![CDATA[I have earlier blogged about setting up a dedicated image server for Sitecore here. The implementation required some customization of the LinkProvider, but from Sitecore 6.3 it is possible to achieve the same just using configuration. A dedicated media server can be used to serve media on a separate URL, so that you can optimize performance [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=363&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have earlier blogged about setting up a <a title="Dedicated image server and Sitecore" href="http://mcore.wordpress.com/2009/11/02/dedicated-image-server-and-sitecore/">dedicated image server for Sitecore here</a>. The implementation required some customization of the LinkProvider, but from Sitecore 6.3 it is possible to achieve the same just using configuration.</p>
<p>A dedicated media server can be used to serve media on a separate URL, so that you can optimize performance due to limitations on the amount of connections the browser can open to the domain, which I also described in the last post. Further it can be used to optimize your server for handling media and supporting a CDN.</p>
<p>As mentioned it is now possible to have a separate server for media by configuration. In this scenario you might have a dedicated publishing target for media, and this should just be a standard Sitecore installation, which then only handles media by directing the DNS for your image URL to this server. For instance I have setup three Sitecore installations – one as a content manager server, one as the dedicated image server and one as content delivery server. The domain for my content management server is <a href="http://sitecore63/">http://sitecore63/</a>, the one for my image server is <a href="http://sitecore64imageserver/">http://sitecore63imageserver/</a> and the content delivery server has the domain <a href="http://sitecore63cd/">http://sitecore63cd/</a>. What I then want to achieve is:</p>
<ol>
<li>That my content management server serves images in the normal way, so that the editors can insert, alter and preview images without having to publish.</li>
<li>On my content delivery servers I want my images to be served by the image server.</li>
</ol>
<p>The first goal is easy. I just leave every configuration to the standard. This means that the content management server serves media itself.<br />
The second goal requires some configuration changes. On the content delivery servers I must make all media references point to the image server. This can be done by setting the Media.MediaLinkPrefix in the web.config to the domain name of the image server plus the media prefix I want. For instance like this:</p>
<p>&lt;setting name=&#8221;Media.MediaLinkPrefix&#8221; value=&#8221;<a href="http://sitecore63imageserver/~/media/">http://sitecore63imageserver/~/media/</a>&#8221; /&gt;</p>
<p>This means that all media items on the content delivery server(s) will be prefixed with the above url:</p>
<p>&lt;img width=&#8221;128&#8243; height=&#8221;128&#8243; alt=&#8221;" src=&#8221;<a href="http://sitecore63imageserver/~/media/Images/user.ashx?w=128&amp;amp;h=128&amp;amp;as=1">http://sitecore63imageserver/~/media/Images/user.ashx?w=128&amp;amp;h=128&amp;amp;as=1</a>&#8220;&gt;</p>
<p>So in this scenario the html is delivered by <a href="http://sitecore63cd">http://sitecore63cd</a> and the image is served by <a href="http://sitecore63imageserver">http://sitecore63imageserver</a>. In the content management environment, the media is served locally. Now this is a lot easier, than the customization you needed in older versions of Sitecore.</p>
<p><a href="http://mcore.files.wordpress.com/2011/01/dedicated-image-server-in-sitecore.png"><img class="alignnone size-medium wp-image-366" title="dedicated image server in sitecore" src="http://mcore.files.wordpress.com/2011/01/dedicated-image-server-in-sitecore.png?w=300&#038;h=170" alt="dedicated image server in sitecore" width="300" height="170" /></a></p>
<p>If you want another media prefix then the standard /~/media, you also need to make the media server handle these requests as media. This is done by adding the prefix to the &lt;mediaPrefix&gt; element in the web.config and add the prefix to the customHandlers section in the web.config.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/363/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=363&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2011/01/02/dedicated-image-server-in-sitecore-part-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2011/01/dedicated-image-server-in-sitecore.png?w=300" medium="image">
			<media:title type="html">dedicated image server in sitecore</media:title>
		</media:content>
	</item>
		<item>
		<title>Hidden functionality: The XPath Builder</title>
		<link>http://mcore.wordpress.com/2010/12/15/hidden-functionality-the-xpath-builder/</link>
		<comments>http://mcore.wordpress.com/2010/12/15/hidden-functionality-the-xpath-builder/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 10:34:58 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=351</guid>
		<description><![CDATA[Maybe it is just me, who never found it, but after a support request I was made aware of a feature in Sitecore, I have missed for years. I thought I’d just share it, if there were any others like me, who wasn’t aware of the great Sitecore application XPath Builder. Whenever I create a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=351&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Maybe it is just me, who never found it, but after a support request I was made aware of a feature in Sitecore, I have missed for years. I thought I’d just share it, if there were any others like me, who wasn’t aware of the great Sitecore application XPath Builder.</p>
<p>Whenever I create a template which uses a Sitecore Query to populate a multilist field with items, I always spend a little too much time figuring out the correct syntax for the Sitecore Query. But no longer… now that I have found the XPath Builder!</p>
<p>The XPath Builder is triggered in the Developer Center through the Tools menu. The application helps you build the right query and shows the result of the query:</p>
<div id="attachment_352" class="wp-caption aligncenter" style="width: 310px"><a href="http://mcore.files.wordpress.com/2010/12/xpathbuilder.png"><img class="size-medium wp-image-352 " title="XPathBuilder" src="http://mcore.files.wordpress.com/2010/12/xpathbuilder.png?w=300&#038;h=188" alt="Sitecore XPath Builder" width="300" height="188" /></a><p class="wp-caption-text">The XPath Builder in Sitecore</p></div>
<p>Yay! What a great tool!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/351/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=351&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/12/15/hidden-functionality-the-xpath-builder/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2010/12/xpathbuilder.png?w=300" medium="image">
			<media:title type="html">XPathBuilder</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore Rocks &#8211; preview the future of Sitecore development</title>
		<link>http://mcore.wordpress.com/2010/09/08/sitecore-rocks-preview-the-future-of-sitecore-development/</link>
		<comments>http://mcore.wordpress.com/2010/09/08/sitecore-rocks-preview-the-future-of-sitecore-development/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 18:06:24 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">https://mcore.wordpress.com/?p=298</guid>
		<description><![CDATA[Something really cool happened today! A new tool called Sitecore Rocks has been released in a CTP (Community Technology Preview) version – a early sneak peek. The tool, although a little rough around the edges, really shows a bright new future for Sitecore development, a future where we as developers do not need to muck [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=298&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Something really cool happened today!
</p>
<p>A new tool called <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/44a26c88-83a7-46f6-903c-5c59bcd3d35b">Sitecore Rocks </a>has been released in a CTP (Community Technology Preview) version – a early sneak peek. The tool, although a little rough around the edges, really shows a bright new future for Sitecore development, a future where we as developers do not need to muck about with browsers interfaces, only to connect our code, .NET pages and user controls into Sitecore. Now we can stay within in the tool we use and like, Visual Studio.
</p>
<p>Together with the <a href="http://www.hhogdev.com/products/team-development-for-sitecore.aspx">Team Development for Sitecore</a> module from Hedgehog, this tool looks to be a must-have in the Sitecore developer toolbox.
</p>
<p><img src="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc18.png?w=497" alt="" />
	</p>
<p>In short, Sitecore Rocks is a Sitecore editing environment in Visual Studio. The environment naturally does not contain the complete set of features of the Sitecore content editor, but is focused on the features we as developers use. This includes for example:
</p>
<ul>
<li>Quick and easy navigation in the content tree and on the item editor.
</li>
<li>Multi-item editing.
</li>
<li>Linking Visual Studio project to Sitecore, and automatic creating of layout related items in Sitecore from your .NET files.
</li>
<li>Live Sitecore log viewer.
</li>
<li>Job viewer allowing you to examine running tasks in Sitecore.
</li>
<li>Edit rich text fields in Visual Studio HTML editor/designer.
</li>
<li>Easy interface for layout management.
</li>
</ul>
<p><img src="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc28.png?w=497" alt="" />
	</p>
<p><a href="http://www.youtube.com/watch?v=Zh__mbWuN60">You can watch a video of Lars Fløe Nielsen presenting some of the Sitecore Rocks features here.</a></p>
<p>In my view, the tool is very nice and definitely a vision of what&#8217;s in store for us as developers, but the tool is still in the early phase and still has a lot of unused potential. Personally I feel that one of the most promising features is the ability for everybody to extend the functionality, and hopefully this will create a flood of shared source plug-ins with really useful features. Of the top of my head, I can mention countless possibilities, so drop a comment if you have a lot of time on your hands <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
<p><img src="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc38.png?w=497" alt="" />
	</p>
<p>The tool is available through the Visual Studio 2010 Extension Managers Online Gallery – just open it up in Visual Studio and search for &#8220;Sitecore&#8221; &#8211; <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/44a26c88-83a7-46f6-903c-5c59bcd3d35b">or download Sitecore Rocks from the MSDN</a>:
</p>
<p><img src="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc45.png?w=497" alt="" />
	</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/298/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=298&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/09/08/sitecore-rocks-preview-the-future-of-sitecore-development/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc18.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc28.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc38.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2010/09/090810_1906_sitecoreroc45.png" medium="image" />
	</item>
		<item>
		<title>What TODO &#8211; in Sitecore 6.3</title>
		<link>http://mcore.wordpress.com/2010/08/12/what-todo-in-sitecore-6-3/</link>
		<comments>http://mcore.wordpress.com/2010/08/12/what-todo-in-sitecore-6-3/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 11:29:13 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[new releases]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=290</guid>
		<description><![CDATA[Sitecore 6.3 was recently released. A lot of great improvements was included in this version &#8211; for instance support for multiple backend web servers and Windows Azure support. Read more about it in Marco Tana&#8217;s blog post and read more about the event queue on Adam Conn&#8217;s blog. Besides these new features  a huge amount of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=290&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sitecore 6.3 was recently released. A lot of great improvements was included in this version &#8211; for instance support for multiple backend web servers and Windows Azure support. Read more about it in <a href="http://rc-sitecore.blogspot.com/2010/07/what-does-sitecore-v63-really-means.html">Marco Tana&#8217;s blog post</a> and read more about the event queue on <a href="http://www.sitecore.net/en/Community/Technical-Blogs/Getting-to-Know-Sitecore/Posts/2010/07/Introducing-the-Sitecore-Event-Queue.aspx">Adam Conn&#8217;s blog</a>.</p>
<p>Besides these new features  a huge amount of bug fixes has been included. Some of them quite important; some of them quite funny&#8230;</p>
<p>Almost two years ago I wrote the blog post <a href="http://mcore.wordpress.com/2008/11/03/what-todo/">What TODO?</a> In short I described the somewhat weird way of marking TODO&#8217;s by the kernel develepors at Sitecore. Well guess what&#8230; In Sitecore 6.3 they thought they would finaly do something about it. It has now&#8230;. been marked as obsolete (?!).</p>
<blockquote><p>&#8220;The Sitecore.Todo class has been marked as obsolete. (323278)&#8221;</p></blockquote>
<p>I must admit it made me laugh again. Why not just remove it, when you decide to do something about it?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=290&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/08/12/what-todo-in-sitecore-6-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>5 worst code smells in Sitecore</title>
		<link>http://mcore.wordpress.com/2010/08/03/5-worst-code-smells-in-sitecore/</link>
		<comments>http://mcore.wordpress.com/2010/08/03/5-worst-code-smells-in-sitecore/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 12:18:13 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[code smells]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=280</guid>
		<description><![CDATA[Last year I wrote a blog post on doing code reviews on Sitecore. While dealing with conceptual issues it doesn’t really say what to look for in code, when evaluating the quality or to evaluate if any wrong decisions have been made when developing the solution.  Therefore I wanted to wright a post about the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=280&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last year I wrote a blog post on doing <a title="Code reviews on Sitecore" href="http://mcore.wordpress.com/2009/02/18/code-reviews-on-sitecore/" target="_blank">code reviews on Sitecore</a>. While dealing with conceptual issues it doesn’t really say what to look for in code, when evaluating the quality or to evaluate if any wrong decisions have been made when developing the solution.  Therefore I wanted to wright a post about the top 5 <a title="Code smells" href="http://en.wikipedia.org/wiki/Code_smell" target="_blank">code smells</a> I look for, when I am trying to evaluate or trouble shoot a Sitecore solution. These code smells often indicate that the developers have gone down the wrong road and there is something fundamentally wrong in the architecture.</p>
<p>So here goes:</p>
<p><strong><span style="text-decoration:underline;"><em>1) Using the descendant axes in xpath expressions:</em></span></strong></p>
<p>This one I especially look for, when I am looking at a site which doesn’t perform. It may be used in some cases, but very often I find that a developer has used this to generate relations between content and thereby iterating over the complete content tree. This works fine in development where there are a few hundred content items. However in production where thousands of items are created this simply breaks the performance of the site – especially after publishing which clears the HTML cache.</p>
<p>The descendants can be accessed in multiple ways. In XSLT it normally looks like this:<br />
&lt;xsl:for-each select=&#8221;$sc_currentitem/descendant-or-self::item&#8221;&gt;<br />
&lt;/xsl:for-each&gt;Or like this:<br />
&lt;xsl:for-each select=&#8221;$sc_currentitem//item&#8221;&gt;<br />
&lt;/xsl:for-each&gt;</p>
<p>In C# using the Sitecore API it is most often accessed like this:</p>
<p>item.Axes.GetDescendants()</p>
<p><strong><span style="text-decoration:underline;"><em>2) XSLT Import:</em></span></strong></p>
<p>This is related to a point in the post about code reviews on Sitecore, where I argue that overcomplicated functionality and logic in XSLTs, is a problem. If you need to do an import of another XSLT in your rendering, you probably do it to call a method or in another way try and reuse functionality. If you want to do this, don’t use XSLTs! XSLTs should only – if you really want to use them at all – hold simple presentations.<br />
XSLTs can be imported like this:</p>
<p>&lt;xsl:import href=&#8221;YourOtherXslt.xslt&#8221; /&gt;</p>
<p><strong><span style="text-decoration:underline;"><em>3) Explicitly accessing the master database</em></span></strong></p>
<p>Although this can be needed in some cases and especially in scheduled tasks or other backend functionality, most often it is because the developer haven’t thought the issue through or if they have made a wrong decision of how data entered by the user should be stored.<br />
The master database is most often used like this in c#</p>
<p>Database masterDatabase = Database.GetDatabase(&#8220;master&#8221;);</p>
<p>If you see a call like this, your solution is most likely not ready for staging, where there is no access to the master database from the content delivery server. You should generally use something like this:</p>
<p>Database database = Sitecore.Context.Database ?? Sitecore.Context.ContentDatabase;</p>
<p>This means you operate on the context database and on the content delivery databases this will be the web database and in preview you will use the master database, which is probably what you want.<br />
If you need to write something to the master database, you first need to decide if this is a good idea at all. If you write to the master database from your frontend, you make yourself vulnerable for malicious attack, as people from the outside can enter data into the master database. Normally we handle user entered data in a custom database or parse all user created content to ensure that the master database won’t be flooded with data.<br />
If you really need to access the master database, you should create a service that handles access to the master database, so that your solution is ready for staged environments.</p>
<p><strong><span style="text-decoration:underline;"><em>4) XSLT extension over 100 lines of code:</em></span></strong></p>
<p>This point is closely related to point number 2, but I really see a lot of issues with XSLTs which have been used wrong and this creates a lot of issues later on in the project lifecycle. If you have an XSLT extension with over a hundred lines of code, chances are, that the developer made a wrong decision when creating the XSLT; instead he/she should have created a sublayout.<br />
XSLT extensions are functional programming and you should use an object oriented approach, so my advice is not to use XSLTs at all, unless you are doing something really simple. Otherwise your solution will become harder and harder to maintain, as utility methods like the XSLT extensions are very hard to understand and couplings in the renderings themself are difficult to map.<br />
You can find all registered XSLT extensions in the web.config under xslExtension and it looks something like this:</p>
<p>&lt;xslExtensions&gt;<br />
  &lt;extension mode=&#8221;on&#8221; type=&#8221;MyNamespace.XslHelper, MyAssembly&#8221; namespace=&#8221;<a href="http://www.example.net/helper">http://www.example.net/helper</a>&#8221; singleInstance=&#8221;true&#8221;/&gt;</p>
<p><strong><span style="text-decoration:underline;"><em>5) Clearing of cache</em></span></strong></p>
<p>This may seem obvious to some, but I have seen surprisingly many methods, which cleared the entire Sitecore cache including the data and item cache. If you see this in your code and it is needed, chances are, that you have an architectural issue in your solution. It should most rarely be needed to clear the cache, unless it is after a publish and Sitecore handles this automatically. I have heard many reasons for clearing the cache including an issue, where the developer argued that it was necessary, as he wrote directly to the Sitecore database with a SQL statement, and then Sitecores cache wasn’t updated.<br />
If you experience something like this, the issue is of cause not the cache, but that you don’t use the Sitecore API to read and write data from the database.<br />
The caching is most often cleared like this:</p>
<p>CacheManager.ClearAllCaches();</p>
<p>This is just some of the things I have seen many times, but I know there are many other bad code smells when developing Sitecore solution. Do you have any other code smells to share?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=280&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/08/03/5-worst-code-smells-in-sitecore/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore Lucene index viewer 1.2 released</title>
		<link>http://mcore.wordpress.com/2010/06/21/sitecore-lucene-index-viewer-1-2-released/</link>
		<comments>http://mcore.wordpress.com/2010/06/21/sitecore-lucene-index-viewer-1-2-released/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 08:37:34 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[IndexViewer]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=273</guid>
		<description><![CDATA[Last week I was contacted by the Sitecore Shared Source coordinator Jimmie Overby and he told me that a guy in the Sitecore Ukraine office had made some changes to the Sitecore Lucene IndexViewer, I released some time ago. At first I was a bit sceptic about it, so I asked to review the code [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=273&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last week I was contacted by the <a title="Shared source coordinator" href="http://sharesitecore.wordpress.com/" target="_blank">Sitecore Shared Source coordinator </a>Jimmie Overby and he told me that a guy in the Sitecore Ukraine office had made some changes to the Sitecore Lucene IndexViewer, I released some time ago. At first I was a bit sceptic about it, so I asked to review the code changes and see the new functionality. So I installed the new package and looked through the code, and I discovered that the Sitecore Ukranian Vyacheslav Tronko (don&#8217;t ask me to pronounce it:)) had done a fantastic job!</p>
<p>Not only had he added some very nice features but he had rewritten some of the code so the application is more stable and extendable. So I really appreciate his work!</p>
<p>The new features are:</p>
<ul>
<li>Possibility to browse indexes defined in the new search section in the web.config</li>
<li>Rebuild indexes through the IndexViewer (which is really nice, as you can&#8217;t rebuild the new type of indexes any other way)</li>
<li>Optimize indexes.</li>
<li>Improved usability and look-and-feel of the application</li>
</ul>
<p>So go take a look at the changes at <a href="http://trac.sitecore.net/IndexViewer">http://trac.sitecore.net/IndexViewer</a> </p>
<p>If you want to see some screenshots of the<a title="Lucene index viewer" href="http://trac.sitecore.net/IndexViewer" target="_blank"> new features, take a look here</a></p>
<p>What I would like to add next, is extended search functionality.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/273/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=273&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/06/21/sitecore-lucene-index-viewer-1-2-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore podcast launched</title>
		<link>http://mcore.wordpress.com/2010/06/15/sitecore-podcast-launched/</link>
		<comments>http://mcore.wordpress.com/2010/06/15/sitecore-podcast-launched/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 14:27:46 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=267</guid>
		<description><![CDATA[Over at Learn Sitecore my coworker Jimmi Lyhne Andersen and I have just launched a brand new Sitecore podcast. Hopefully you will all like it and hopefully it will bring more article contributors to Learn Sitecore. In the first episode we interview Sitecore CTO John West. We talk about Dreamcore and Sitecore in general. Check it out at: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=267&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over at <a title="Learn Sitecore" href="http://learnsitecore.cmsuniverse.net">Learn Sitecore</a> my coworker Jimmi Lyhne Andersen and I have just launched a brand new <a title="Sitecore Podcast" href="http://learnsitecore.cmsuniverse.net/en/Podcasts.aspx">Sitecore podcast</a>. Hopefully you will all like it and hopefully it will bring more article contributors to Learn Sitecore.</p>
<p>In the first episode we interview Sitecore CTO <a title="John West" href="http://sitecorejohn.spaces.live.com/">John West</a>. We talk about Dreamcore and Sitecore in general. Check it out at: <a href="http://learnsitecore.cmsuniverse.net/en/podcasts.aspx">http://learnsitecore.cmsuniverse.net/en/podcasts.aspx</a></p>
<p>Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=267&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/06/15/sitecore-podcast-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore MVP event at Dreamcore Europe 2010</title>
		<link>http://mcore.wordpress.com/2010/04/23/sitecore-mvp-event-at-dreamcore-europe-2010/</link>
		<comments>http://mcore.wordpress.com/2010/04/23/sitecore-mvp-event-at-dreamcore-europe-2010/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 11:28:11 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=254</guid>
		<description><![CDATA[Pentia Professional Services and the Sitecore MVP&#8217;s of Pentia, invites all Sitecore MVP&#8217;s to attend an evening event before the Dreamcore 2010 by Sitecore conference &#8211; and absolute free. The purpose of the night is primarily networking and social get-together, but during the evening we will provide an opportunity for you to share your best [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=254&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pentia.net/dreamcore.aspx"><img alt="Dreamcore Europe 2010 - Sitecore MVP event" src="http://www.pentia.dk/~/media/Dreamcore/Dreamcore%20image.ashx" title="Dreamcore Europe 2010 - Sitecore MVP event" class="alignnone" width="300" height="93" /></a></p>
<p><a href="http://www.pentia.net/professional-services">Pentia Professional Services</a> and the Sitecore MVP&#8217;s of Pentia, invites all Sitecore MVP&#8217;s to attend an evening event before the <a href="http://dreamcore-eu.events.sitecore.net/">Dreamcore 2010 by Sitecore conference</a> &#8211; and absolute free.</p>
<p>The purpose of the night is primarily networking and social get-together, but during the evening we will provide an opportunity for you to share your best case stories, as well as join in a roundtable discussion on the future of the Sitecore platform, e.g. covering topics such as: &#8220;<em>In which direction do we want Sitecore to move</em>&#8220;, &#8220;<em>What are the successes and failures of the Sitecore platform today</em>&#8220;. </p>
<p>The event will take place <strong>Tuesday the 18th of May at 5pm</strong>, the evening before the Dreamcore conference. It is hosted at Pentia&#8217;s charming domicile located a stone-throw from the Dreamcore venue, and is concluded by a dinner at Copenhagen’s premiere steak gourmet restaurant, MASH.<br />
<a href="http://www.pentia.net/dreamcore.aspx"><img alt="Sign up now for the Sitecore Dreamcore MVP event" src="http://www.pentia.dk/~/media/Dreamcore/Signup%20arrow%20-%20dark.ashx" title="Sign up now" class="alignright" width="200" height="119" /></a><br />
If you are a Sitecore MVP, and want to get together with your peers and discuss the platform you love &#8211; Sitecore &#8211; then <a href="http://www.pentia.net/dreamcore.aspx">sign up now</a>!</p>
<p><a href="http://www.pentia.net/dreamcore.aspx">Read more on the agenda, venue and how to signup, at the Pentia website.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=254&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/04/23/sitecore-mvp-event-at-dreamcore-europe-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>

		<media:content url="http://www.pentia.dk/~/media/Dreamcore/Dreamcore%20image.ashx" medium="image">
			<media:title type="html">Dreamcore Europe 2010 - Sitecore MVP event</media:title>
		</media:content>

		<media:content url="http://www.pentia.dk/~/media/Dreamcore/Signup%20arrow%20-%20dark.ashx" medium="image">
			<media:title type="html">Sign up now</media:title>
		</media:content>
	</item>
		<item>
		<title>Will Sitecore OMS end strictly hierarchical sites?</title>
		<link>http://mcore.wordpress.com/2010/04/22/will-sitecore-oms-end-strictly-hierarchical-sites/</link>
		<comments>http://mcore.wordpress.com/2010/04/22/will-sitecore-oms-end-strictly-hierarchical-sites/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 22:10:40 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[OMS]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=246</guid>
		<description><![CDATA[Since the release of Sitecore OMS there have been much hype about the product and many people have speculated on what impact it will have on the CMS industry. However – in my opinion – the product has been more or less misunderstood or at least underestimated. Partly the product has been considered as a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=246&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Since the release of Sitecore OMS there have been much hype about the product and many people have speculated on what impact it will have on the CMS industry. However – in my opinion – the product has been more or less misunderstood or at least underestimated. Partly the product has been considered as a (somewhat limited) analytics tool and partly as a marketing tool allowing multivariate testing, conditional renderings etc. This is the result of several factors; one of them being that people review the product, without having understood the concept; another being that the product has been marketed for marketers. Therefore attention has been given on presentation and conditional renderings, when discussing personalization or behavioral targeting. Every demo I have seen have revolved around presentations and how they can vary depending on the profile of the website user or how a non technical marketer can act upon analytics data directly without the developer being involved.</p>
<p>To be honest I think this is somewhat unambitious considering the power of the product. Sitecore has always excellented in focusing on keeping presentation as layer on top of the content. The demos I have seen have focused on the presentation layer strictly. This is all fine and I find the options given to the non-technical personal impressive, but in my opinion the product has a lot more to offer than that. I think that we in the future will see the analytics, personalization etc. applied to content as well as the presentation.</p>
<h2>The past &#8211; hierarchical sites</h2>
<p>So what do I mean by this? Well, most of the sites I work on, the real resource on the site is good and relevant content. The issue is then how do we present and structure this best for the user of the site? (Well most of the time this is the issue; I have actually worked with clients who think the most important job is to structure the content well for the content authors.) Anyway the focus on the information architecture and structure has always been inwards and out and how the content authors can deliver the content in the right structure.</p>
<p>This is the case of a hierarchical site. In these types of sites content authors try to force the content into a hierarchy, which dimensions often are dictated by the design of the navigation parts on the frontend. However content is rarely strictly hierarchical. Content is often more relational and is relevant in multiple places in the hierarchy and should be presented several places. If this doesn’t happen automatically the content authors will have a lot of maintenance and will have to consider where content should be presented on the frontend each time they create it. Further the hierarchy often resembles something that the website users don’t know anything about – such as the organizational structure of the company. So hierarchical sites tend to be hard to maintain and the users of the website are more often than not, going to have problems finding the content they are looking for. (A great example is the SDN. Who can find something on that site without using the search functionality?)</p>
<h2>The present &#8211; Taxonomy driven websites</h2>
<p>To accommodate this issue we have seen more and more request for taxonomy driven sites and have implemented them with success. In these types of sites the navigation of the site is controlled by tags. Content is created centrally by the content authors and they will have to tag the content with terms indicating what the content is about. The content is then automatically shown relevant and often multiple places on the site, depending on how the hierarchy of the tags is structured.</p>
<p>The limitation of this is still that the approach is inwards and out. The content authors and the information architects still have to create the hierarchy based on the presumptions about the users.</p>
<h2>The future &#8211; behavior driven websites</h2>
<p>And this is where OMS comes into the picture. Imagine if we could construct sites, which are completely outwards and in. The information shown on the websites is structured by how the users behave and not by what the content authors think is a good structure. The information OMS has gathered about the each user can be used and he will automatically be presented for relevant content based on previous experiences with similar profiles. Further imagine that the web analysts and marketers can create goals in OMS and then the content structure on the site will change, so that it will present the structure which gives the most conversions based on the behavior of other users or profiles, which have made a conversion. I call this a behavior-driven website and I would love to be given the opportunity to implement it.</p>
<p>So what is the difference from what we have already heard about the product? In my opinion personalization, behavioral targeting etc. should be based at content level and not only at presentation level. For instance take the functionality for A/B testing. This is based on different presentations, but in a behavior-driven website the A/B testing is applied to the content – in Sitecore that would be an Item. Imagine creating two versions of an item and then test the different content to see which brings most conversions. Imagine that the hierarchy of the site isn’t based on organization structure or tags defined by the authors, but from whatever structure bring most conversions for the profile the user matches. This can’t be handled in presentations – only at content level. Imagine that content authors never need to worry about where content should be placed, it is automatically placed where analytics from real users says is the best place. Now this would really be cool and I am sure it can be achieved with OMS and that is why having live analytics data together with your CMS is going to change how we build sites… Or so I hope <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Does this make sense outside my brain?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=246&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/04/22/will-sitecore-oms-end-strictly-hierarchical-sites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Publishing strategies</title>
		<link>http://mcore.wordpress.com/2010/01/22/publishing-strategies/</link>
		<comments>http://mcore.wordpress.com/2010/01/22/publishing-strategies/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 23:10:50 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[publishing]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=233</guid>
		<description><![CDATA[Publishing can be quite an issue for content authors and make an impact on performance. However if you use the right strategy, there really isn’t any issues. One of the issues with publishing can be performance. When you publish one or more items the HTML cache is cleared, which means that if you have some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=233&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Publishing can be quite an issue for content authors and make an impact on performance. However if you use the right strategy, there really isn’t any issues.</p>
<p>One of the issues with publishing can be performance. When you publish one or more items the HTML cache is cleared, which means that if you have some performance heavy presentations, it will increase the loading time of the page, until the cache has been rebuild. Further if you use the staging module and it is configured to it, all the data caches are cleared as well. This can cause the site to take up to 30 seconds to reload your pages – especially if they are data heavy. You can read more about<a title="Sitecore caching explained" href="http://learnsitecore.cmsuniverse.net/en/Developers/Articles/2009/07/CachingOverview.aspx" target="_blank"> Sitecore Caching here</a> and read about the issues with cache and the <a href="http://blog.paulgeorge.co.uk/2009/07/22/problems-with-sitecore-and-the-staging-module/">staging module here</a>.</p>
<p>Note that Sitecore recently released a staging module which supports partial item caching, but the HTML cache is still cleared. You can read more about the new<a title="New staging module" href="http://sitecoresupport.blogspot.com/2009/12/partial-item-cache-clearing-module.html" target="_blank"> module on Alex Shybas blog</a>.</p>
<p>I don’t know if performance impact when publishing is specific to Sitecore or is generally a problem in most CMS’, but I reckon it is the later. However Sitecore has a special problem with regards to caching. As Sitecore isn’t page based as many other CMS’ (this is also one of its biggest advantages), it makes it difficult to have a partial cache clearing – especially with regards to HTML cache. A page can be constructed by several content items, and there are no immediate binding between a page and the items, which it is constructed of, so all HTML caches needs to be cleared even though you just publish one item.</p>
<p>Another issue is the usability for content authors. Some of our clients were complaining about being queued all the time when they initiated a publish and it could take a very long time before they got their content published. What often happened was that when they initiated a publish, the modal dialog reported, that they were queued. Instead of waiting for it, they closed the window and continued editing. A few minutes later they would initiate another publish, but was once again told that they were queued. When this process repeated itself for the 50 active content authors, you can imagine the queue could get quite big.</p>
<p>Another thing we stumbled upon was, that some content authors used publishing instead of preview. Every time they wanted to view their work in progress to check if it looked alright frontend-wise, they published the item and viewed the page as if it was already completed and ready for actual publish.<br />
I know we are not the only Sitecore partner experiencing this, as I have talked to other implementation partners and received questions about it on <a title="Learn Sitecore and tutorials" href="http://learnsitecore.cmsuniverse.net" target="_blank">Learn Sitecore</a>.</p>
<p>So why do I suggest it isn’t a problem? Well… we aren’t really experience any issues with our clients or with performance issues caused by publishing anymore. This is a result of more than one thing, but the primary solution was to use scheduled publish.</p>
<p>I don’t know why, but using this publishing strategy this can be a really big issue for clients. We often heard remarks like: “We need to publish content immediately”… But common! I really haven’t worked with many organizations, where this is an actual issue. What content do these organizations have, which is so important, that they can’t wait 15 minutes (at tops) to be published? I have consulted clients with huge sites, which is absolutely critical to the business and the funny part is that these companies rarely have a need to have immediate publishing. They are normally used to having a longer waiting period for the rest of their web services due to replications tasks between 100s of servers and rebuilding of caching. So why do the smaller companies have a bigger need for immediate publishing? The short answer – they don’t!</p>
<p>So what do we do to convince our client to use scheduled publish? We do more than one thing: First of all we explain to them, what impact publishing has. Then we allow a single or a few admins to have publish rights, so that they can have immediate publishing. Further we set the “do not publish” mark on all newly created items, so that they won’t be accidently published while they’re not finished. The authors will have to unclick the setting, when they think the item is ready for publishing.</p>
<p>Finally we have developed something, which in my opinion is rather cool! We acknowledged that people respond best to waiting time, if they have an indication of when the waiting will come to an end. This fact is also one of the reasons why they have timers on traffic lights in Copenhagen:</p>
<div id="attachment_234" class="wp-caption alignnone" style="width: 170px"><a href="http://mcore.files.wordpress.com/2010/01/trafiklys-small.png"><img class="size-full wp-image-234" title="Traffic light with timer" src="http://mcore.files.wordpress.com/2010/01/trafiklys-small.png?w=497" alt="Traffic light with timer"   /></a><p class="wp-caption-text">7 seconds to green light <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<p>We decided to use the same strategy for scheduled publishing. If the content authors would know, when the next scheduled publish is due, they would be much more satisfied with the idea of not having immediate publishing. So we – in Pentia – developed a timer which is shown in the task bar in Sitecore: </p>
<div id="attachment_235" class="wp-caption alignnone" style="width: 310px"><a href="http://mcore.files.wordpress.com/2010/01/scheduledpublishtimer.png"><img class="size-medium wp-image-235" title="scheduled publish timer" src="http://mcore.files.wordpress.com/2010/01/scheduledpublishtimer.png?w=300&#038;h=120" alt="scheduled publish timer" width="300" height="120" /></a><p class="wp-caption-text">The scheduled publish timer in action</p></div>
<p>The “Trinvis udgivelse” is Danish and mean incremental publish. So this timer tells the content author, that there is 12 minutes and 48 seconds to the next incremental publish. The functionality also supports multiple timers, so on some solutions we also use it to indicate, when an import from an external database is due and so forth. Cool, right?</p>
<p>These things combined we really don’t have any issues, with convincing our clients to use scheduled publishing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/233/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=233&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/01/22/publishing-strategies/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2010/01/trafiklys-small.png" medium="image">
			<media:title type="html">Traffic light with timer</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2010/01/scheduledpublishtimer.png?w=300" medium="image">
			<media:title type="html">scheduled publish timer</media:title>
		</media:content>
	</item>
		<item>
		<title>Looking forward to Sitecore in 2010</title>
		<link>http://mcore.wordpress.com/2010/01/08/looking-forward-to-sitecore-in-2010/</link>
		<comments>http://mcore.wordpress.com/2010/01/08/looking-forward-to-sitecore-in-2010/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 09:22:55 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[OMS]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=226</guid>
		<description><![CDATA[2009 has brought some really nice features and enhancement to Sitecore and has in my point of view really moved Sitecore succesfully to the Enterprise segment. 2009 has also been a year with great focus on feature richness and business value in the product, e.g. by targeting marketing divisions even more. From a developer point [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=226&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>2009 has brought some really nice features and enhancement to Sitecore and has in my point of view really moved Sitecore succesfully to the Enterprise segment. 2009 has also been a year with great focus on feature richness and business value in the product, e.g. by targeting marketing divisions even more. From a developer point of view, 2009 has been a more <a href="http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/ChangeLog.aspx">meager year</a>, although OMS and the rules engine are interesting additions. Below, I have compiled a list of topics, where I would love Sitecore to make headway in 2010. The list is nowhere near complete and is as always my personal opinion. Sadly I have no crystal ball to tell me what Sitecore really focused on.</p>
<h2>The maturing OMS</h2>
<p>The <a href="http://learnsitecore.cmsuniverse.net/Editors/Articles/2009/07/OMSKeyConcepts1.aspx">Online Marketing Suite</a> is a great addition to Sitecore, and has some very cool features and a lot of potential for enhancing all of our solutions in the future. The product has some shortcomings and parts which could need enhancing, though. From a developer point of view, the documentation is limited, and there is no API for extracting data in a summarized or aggregated way – which leaves us to extract data directly from the SQL database using LINQ, SQL or stored procedures. But from my point of view, the most urgent need is best practices and tools for hosting the system. Switching the Analytics.Enabled to true in an out-of-the-box OMS will quickly generate a fairly large (huge) database, and sets some requirements on the hosting servers. Therefore, tools for administrators to handle databases (monitoring, truncating, etc.) as well as documentation for our hosting partners is looked forward to. There is a lot of focus from Sitecore and the community’s side on OMS, so I am confident that the already great product will make quantum leaps in 2010.</p>
<h2>Scalable editor environment</h2>
<p>One of the most anticipated enhancements of Sitecore has been the possibility to scale the backend/master server. This will allow not only better performance and active failover in the editor environment, but scaling of solutions running directly on the master database without publishing. An example of this type of solution is the Sitecore Intranet Portal. We have had customers requesting this possibility since version 4, and Sitecore codename “Twin Peaks” which introduced this feature, was on the <a href="http://mcore.wordpress.com/2008/09/13/sitecore-roadmap/">Sitecore 2009 roadmap</a>. Maybe 2010 will be the lucky year.</p>
<h2>Enhanced presentation content</h2>
<p>With Sitecore 6, the concept of a Page Designer was introduced. This makes it possible for editors or administrators to visually add or rearrange content on a page as well as edit properties on layout elements in a structured manner via property pages – cool features and great selling points. The problem with these features is that it touches upon one of the cornerstones of the Sitecore CMS architecture: The separation of content and presentation. By allowing property pages which saves content on the presentation layer, and allowing editors to change and save layouts directly on individual items, Sitecore has introduced a feature which makes it vital for developers to draw an <a href="http://mcore.wordpress.com/2009/06/18/content-and-presentation-separated-%e2%80%93-part-2/">exact line between content and presentation</a>, and potentially pushes an rather large support burden on to the partners. We look forward to Sitecore best practices and tools to help us with this.</p>
<h2>Greater testability</h2>
<p>The close relationship between Sitecore and .NET has made it possible to transfer a lot of knowledge, methodology and design principles between the two platforms. Time has shown that not only Sitecore has adopted new.NET patterns, but also that .NET has implemented some of Sitecores (Just think of ASP.NET master pages in .NET 2). One of the great problems with both traditional ASP.NET and Sitecore is the support for unit testing and mocking. .NET has introduced ASP.NET MVC – which in many ways aligns with the content/presentation paradigm in Sitecore – and with this, enhancing support for unit testing. I’m sure many Sitecore developers look forward to a similar push from Sitecore in 2010.</p>
<h2>Dreamcore conference</h2>
<p>2010 has already introduced the <a href="http://dreamcore.sitecore.net/">Dreamcore conference</a> – a three day conference hosted by Sitecore North America with developer and business tracks. Arranging this kind of conference on a regional basis, is not only a testimony to the success of Sitecore but fills a growing need in the community for Sitecore to communicate best practices and examples. Especially the developer part of the conference has been desired for some years, and rumors say that a similar conference is under way on our side of the pond. Now let us just hope that the conference brings real world examples and industry best practices instead of more Sitecore sales pitches. 2010 will tell.</p>
<p>No matter what 2010 brings, I am confident it will give us a lot of new cool Sitecore stuff.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/226/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=226&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2010/01/08/looking-forward-to-sitecore-in-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Will dynamics in .NET 4 change the way we do Sitecore?</title>
		<link>http://mcore.wordpress.com/2009/11/12/will-dynamics-in-net-4-change-the-way-we-do-sitecore/</link>
		<comments>http://mcore.wordpress.com/2009/11/12/will-dynamics-in-net-4-change-the-way-we-do-sitecore/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:20:04 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[TechEd]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=208</guid>
		<description><![CDATA[I am spending my time these days walking the halls of Berlin Messe at the Microsoft TechEd 2009. One of the interesting upcoming features of .NET 4 is the introduction of dynamic language support in the .NET Language Runtime. This does not only mean that you can write your .NET code in dynamic languages such as Python (IronPython) and Ruby (IronRuby), but also that you can use some of the dynamic features from C#. <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=208&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am spending my time these days walking the halls of Berlin Messe at the <a href="http://www.microsoft.com/europe/TechEd/">Microsoft TechEd 2009</a>. One of the interesting upcoming features of .NET 4 is the introduction of dynamic language support in the .NET Language Runtime. This does not only mean that you can write your .NET code in dynamic languages such as Python (<a href="http://www.codeplex.com/wikipage?ProjectName=IronPython">IronPython</a>) and Ruby (<a href="http://ironruby.net/">IronRuby</a>), but also that you can use some of the dynamic features from C#. With the introduction of the <em>dynamic</em> type keyword, method calls and member access can be evaluated at runtime instead of at compile time (previously known as late-binding). This does not mean that C# is no longer a type safe language, it merely means that the language now provides a more &#8220;syntax correct&#8221; way of accessing those dynamic types of data, we previously used to access via strings, invokation, reflection etc. Examples of dynamic data models includes COM, the HTML DOM and XML.
</p>
<p>Another one of the dynamic types of data we all works with each day, is Sitecore. The structure, i.e. templates and fields, we are coding up against changes constantly, and Sitecore provides a string based way to access specific items and fields and values in fields. Some of these dynamic types are exposed via classes in the Sitecore API, e.g. the fields type classes in the Sitecore.Data.Fields namespace.  In Pentia we have a concept we call Sitecore wrapper classes, i.e. classes which we custom write to provide a proper interface to items of a given template. Writing these classes are tedious and potentially error-prone, which is why we are working on code generator for generating these classes (similar to e.g. LINQ to SQL). But with dynamics in .NET 4, we have a way of eliminating these classes completely, while still maintaining a proper syntax &#8211; and hopefully Sitecore will implement this to our common advantage. Here is an example of how code from the current version could look in a future version of Sitecore:
</p>
<p><pre class="brush: csharp;">

//BEFORE: .NET 3.5 Framework, Sitecore 6
public string GetContextItemDocumentImage() {
  Item item = Sitecore.Context.Item;
  ImageField field = ((ImageField)item.Fields[&quot;DocumentImage&quot;]);
  return field.Src;
}

//AFTER .NET 4 Framework, Sitecore 7?
public string GetContextItemDocumentImage()
{
  dynamic item = Sitecore.Context.Item;
  return item.DocumentImage.Src;
}
</pre></p>
<p>Note that although the syntax differs, the actual functionality executed in both example would be the same. So, what does it require from Sitecore to do this? The secret lies in the <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.idynamicmetaobjectprovider(VS.100).aspx">System.Dynamics. IDynamicMetaObjectProvider</a> interface or more easily, the <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject(VS.100).aspx">DynamicObject</a> class. This interface and class allows the derived class to provide its own resolving to e.g. members access and method calls via a number of virtual methods. The methods are Try based, which means that you should return false if the functionality is not supported, or e.g. a method with an invalid method is called. Some of the most important virtual methods which can be implemented via DynamicObject are:
</p>
<div>
<table style="border-collapse:collapse;" border="0">
<col>
<col>
<tbody valign="top">
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:solid black .5pt;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>TryConvert</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:solid black .5pt;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>A cast is attempted, trying to convert the dynamic type to a static.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>TryGetIndex</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>An indexer is called, trying to get a value with a given id or index.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>TryGetMember</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>There is an attempt to get the value of a named member (e.g. a field or property)</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>TryInvokeMember</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>A method with a given name and parameters is invoked.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>TrySetIndex</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>There is an attempt to set the value in an indexer with the given id or index.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>TrySetMember</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;">
<p>There is an attempt to get the value of a named member (e.g. a field or property)</p>
</td>
</tr>
</tbody>
</table>
</div>
<p>
 </p>
<p>An example of the above Sitecore 7 (:-)) implementation could therefore be:
</p>
<p><pre class="brush: csharp;">
namespace Sitecore.Data.Items
{
  public class Item : DynamicObject //...and other interfaces
  {
    //...
    public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
      dynamic field = Fields[binder.Name];
      if (field != null) {
        result = field;
        return true;
      }
     	return base.TryGetMember(binder, out result);
    }
    //...
  }
}
</pre></p>
<p>Let this be an inspiration to Sitecore for the next version – I for one truly hope we see something like this in the product.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=208&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/11/12/will-dynamics-in-net-4-change-the-way-we-do-sitecore/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Dedicated image server and Sitecore</title>
		<link>http://mcore.wordpress.com/2009/11/02/dedicated-image-server-and-sitecore/</link>
		<comments>http://mcore.wordpress.com/2009/11/02/dedicated-image-server-and-sitecore/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 23:56:00 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Sitecore modules]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=202</guid>
		<description><![CDATA[A lot of sites which have a large amount of visitors use a dedicated image server.  There are several reasons for this, but mostly it is because that most browsers only allow a few simultaneous connections to the same domain, which stalls the download of a page that has more than two resources. For instance [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=202&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A lot of sites which have a large amount of visitors use a dedicated image server.  There are several reasons for this, but mostly it is because that most browsers only allow a few simultaneous connections to the same domain, which stalls the download of a page that has more than two resources. For instance imagine you have a page consisting of multiple images, stylesheets and javascript files. As the clients only allows a few simultaneous downloads, the browser won’t download all the resources at the same time, but wait for each download to complete and first then start the next download.</p>
<p>The reason of this behavior is that the HTTP standard says that only two simultaneous connections between a client and a server should be allowed. This was specified to save servers from heavy IO load, when files where requested. Browsers like IE7 and Firefox 2 lives up to this standard and only allow 2 connections, while new browsers like IE8 and Firefox 3 allows 6 connections.<br />
To ensure that the HTML can be fully loaded independently and without waiting for other downloads and to remove the load from the primary web server; a dedicated image server can be used. This server holds all files and uses a different domain (for instance images.mydomain.com). All files used on the page can then be fully referenced and thereby be downloaded from a different domain. Eg &lt;img src=”http://images.mydomain.com/image1.jpg alt=”image1”/&gt;. As the images are now on a different domain, these can be requested independently of the server providing the HTML and more simultaneous connections can be opened.</p>
<p>But how is this possible in Sitecore where the media library controls all the images?</p>
<p>One of the easiest ways is to have another publishing target for the media. In that way you will have two frontend servers: One serving the normal requests and one serving all media items. You can easily set up another publishing target and for instance use the staging module to clear the cache. <a title="SDN guide" href="http://sdn.sitecore.net/Articles/Administration/Sitecore%20Publishing%20Operations/Publishing%20Targets.aspx" target="_blank">Read more on SDN </a>if you want to know how to set it up.</p>
<p>The remaining problem is: How do we ensure that all media items gets prefixed with another domain? Unfortunately there isn’t a simple setting for this (it will probably come in a future a release of Sitecore &#8211; I hope <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). However there is a simple solution to the problem as links are expanded by the LinkProvider, which can be overridden. More precisely the links are expanded in the LinkProvider.ExpandDynamicLink method, so we need to override this replacing the media path:</p>
<p>namespace TestApplication<br />
{<br />
  public class CustomLinkProvider : LinkProvider<br />
  {<br />
    public const string MEDIA_PATH = &#8220;~/media/&#8221;;</p>
<p>    public override string ExpandDynamicLinks(string text, bool resolveSites)<br />
    {<br />
      string baseExpands = base.ExpandDynamicLinks(text, resolveSites);<br />
      return baseExpands.Replace(MEDIA_PATH, &#8220;<a href="http://images.pentia.dk/">http://images.pentia.dk/</a>&#8221; + MEDIA_PATH);<br />
    }<br />
  }<br />
}</p>
<p>Here I override the ExpandDynamicLinks in the inherited class CustomLinkProvider. I replace all media paths (identified by the prefix ~/media/) and replace it with the full path to the image server. The remaining thing to do is to replace the LinkProvider type in the web.config:</p>
<p>&lt;linkManager defaultProvider=&#8221;sitecore&#8221;&gt;<br />
  &lt;providers&gt;<br />
    &lt;clear /&gt;<br />
    &lt;add name=&#8221;sitecore&#8221; type=&#8221;<strong><em>TestApplication.CustomLinkProvider, TestApplication</em></strong>&#8221; addAspxExtension=&#8221;true&#8221; alwaysIncludeServerUrl=&#8221;false&#8221; encodeNames=&#8221;true&#8221; languageEmbedding=&#8221;asNeeded&#8221; languageLocation=&#8221;filePath&#8221; shortenUrls=&#8221;true&#8221; useDisplayName=&#8221;false&#8221; /&gt;<br />
  &lt;/providers&gt;<br />
&lt;/linkManager&gt;</p>
<p>Here I just point the LinkProvider type to my own implementation.</p>
<p>Now that this is set up, all requests for media items will be handled by the image server. This does not just allow faster load times for the client, but will put less pressure on the main server. Further you can tune the media server to handling media items by increasing the media cache, setting the prefetch cache etc.</p>
<p>Enjoy your new Sitecore media server <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/202/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=202&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/11/02/dedicated-image-server-and-sitecore/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Why can’t I download the latest version of Sitecore?</title>
		<link>http://mcore.wordpress.com/2009/09/27/why-can%e2%80%99t-i-download-the-latest-version-of-sitecore/</link>
		<comments>http://mcore.wordpress.com/2009/09/27/why-can%e2%80%99t-i-download-the-latest-version-of-sitecore/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 21:51:44 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[release management]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=194</guid>
		<description><![CDATA[I have earlier questioned Sitecores way of releasing new versions. You can read the full discussion here: http://sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?PostID=17750. The whole notion of Sitecore having “recommended” and “not recommended” releases are to me rather strange. Especially considering the frequency of when new versions gets to the “recommended” level. For instance it is at the moment not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=194&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have earlier questioned Sitecores way of releasing new versions. You can read the full discussion here: <a href="http://sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?PostID=17750">http://sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?PostID=17750</a>. The whole notion of Sitecore having “recommended” and “not recommended” releases are to me rather strange. Especially considering the frequency of when new versions gets to the “recommended” level. For instance it is at the moment not possible to use a recommended version of Sitecore which supports Sitecore OMS!</p>
<p>In Pentia we finally got to that point, where we just decided to ignore the recommended label and upgrade and use the latest released version, as it seems rather arbitrary whether a version is recommended or not. This means that I wanted to download the latest version of Sitecore… But guess what. That is not possible. You have to download the release 090630; install it and then afterward download and install <em>two</em> updates.</p>
<p>So I couldn’t help but wonder… Why can’t I download a package containing the latest release of Sitecore?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=194&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/09/27/why-can%e2%80%99t-i-download-the-latest-version-of-sitecore/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Search Appliance, cool API&#8217;s</title>
		<link>http://mcore.wordpress.com/2009/09/25/google-search-appliance-cool-apis/</link>
		<comments>http://mcore.wordpress.com/2009/09/25/google-search-appliance-cool-apis/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 14:53:10 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=188</guid>
		<description><![CDATA[Me and my colleague Brian Pedersen have been spending time in London (thx to Google London and Dave Gallerizzo of Fig Leaf) this week looking into the Google Search Appliance (GSA) &#8211; which is a really cool search product which I hope we will implement in a lot of future solutions. By the way, Pentia [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=188&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.google.com/enterprise/gsa/images/gsa2.jpg" alt="Google Search Appliance" /></p>
<p>Me and my colleague <a href="http://briancaos.wordpress.com/">Brian Pedersen</a> have been spending time in London (thx to Google London and Dave Gallerizzo of <a href="http://www.figleaf.com/Company/Executive_Team.cfm#CP_JUMP_651">Fig Leaf</a>) this week looking into the Google Search Appliance (GSA) &#8211; which is a really cool search product which I hope we will implement in a lot of future solutions. By the way, <a href="http://www.pentia.net">Pentia</a> is now a Google Enterprise Partner <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>The GSA though, is a double edged knife &#8211; on one hand, it provides really good value out of the box (best of class in search relevance), and has a lot of nice features and configuration possibilities. On the other hand, the configuration interface on the GSA sucks! yes, it sucks! I would never expect any end-users to understand what happens in the UI, and in worst case, they will mess up the nice out-of-the-box functionality. Said in other words: the summer intern who wrote the config UI should be definately find work in a non-computer related sector.<br />
This said, the GSA has some really cool API&#8217;s, which will allow you to provide nice functionality for your users:</p>
<p><strong>Admin API</strong><br />
If you consider integrating a GSA in a Sitecore (or any CMS) solution, you should consider integrating some of the configuration directly in the CMS backend. Imagine users being able to tweak the biasing of content, or adding content to the &#8220;recommended&#8221; box in the top of the results directly in Sitecore. This is all available through the Admin API &#8211; which is nicely wrapped in .NET assemblies.<br />
<a href="http://code.google.com/apis/searchappliance/documentation/60/gdata/acapi_cs.html">You can find the Admin API here</a>.</p>
<p><strong>Feeds API</strong><br />
The Feeds API allows you to insert content directly into the crawler queue. There are three options: web feeds, which simply adds URLs you want the GSA to crawl, url-and-metadata feeds, which allows you to add additional metadata to URLs being crawled (think adding metadata to PDF files), and content feeds which actually insert the html or binary data directly into the GSA.<br />
<a href="http://code.google.com/apis/searchappliance/documentation/60/feedsguide.html">You can find the feeds API here.</a></p>
<p><strong>Policy ACL API</strong><br />
One of the strong sides of the GSA is the possibility to crawl and serve secure content, e.g. on your extranet or intranet. The problem though, is how to determine which URLs the individual users in your custom security solution has access to. This is where the Policy ACL (access control list) API comes handy. In short, it allows you to insert access lists in the GSA and map them to URLs &#8211; which again allows you to have fast secure queries &#8211; simple and wrapped in .NET.<br />
<a href="http://code.google.com/apis/searchappliance/documentation/60/gdata/acapi_policy_acls.html">Find the Policy ACL API here.</a></p>
<p>There are tons of other APIs and <a href="http://code.google.com/apis/searchappliance/documentation/60/index.html">documentation on the Google Search Appliance on code.google.com</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=188&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/09/25/google-search-appliance-cool-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>

		<media:content url="http://www.google.com/enterprise/gsa/images/gsa2.jpg" medium="image">
			<media:title type="html">Google Search Appliance</media:title>
		</media:content>
	</item>
		<item>
		<title>Composite Layouts – keeping your stuff together</title>
		<link>http://mcore.wordpress.com/2009/07/22/composite-layouts-%e2%80%93-keeping-your-stuff-together/</link>
		<comments>http://mcore.wordpress.com/2009/07/22/composite-layouts-%e2%80%93-keeping-your-stuff-together/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 19:28:02 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[best practise]]></category>
		<category><![CDATA[composite layout]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=170</guid>
		<description><![CDATA[I&#8217;ve always been a big fan of keeping things that belongs together, together. This might be an obvious fact, but I sometimes find that in Sitecore, it&#8217;s not so easy to follow. If you read my post on agile Sitecore design, you&#8217;ll get my drift. But this post is on something much more practical, i.e. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=170&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always been a big fan of keeping things that belongs together, together. This might be an obvious fact, but I sometimes find that in Sitecore, it&#8217;s not so easy to follow. If you read my post on <a href="http://mcore.wordpress.com/2009/05/27/agile-sitecore-design/">agile Sitecore design</a>, you&#8217;ll get my drift. But this post is on something much more practical, i.e. composing your layouts in Sitecore, and how something I choose to call <em>composite layouts</em> can help you make your practice better.
</p>
<p>When it comes to putting your pages together in Sitecore, you have two choices:<br />
<br />You can choose to build up your entire page composition on your templates in Sitecore, i.e. choose a layout and putting <span style="text-decoration:underline;">all</span> sublayouts, renderings etc. on a template (which is naturally the __standard values of the template). This method is in my book the most correct, as it allows you, your fellow developers and the administrators to see the complete structure of a page, without leaving Sitecore. Unfortunately Sitecore does not deliver any layout inheritance etc., so this way requires a lot of hard work and mouse clicking (&#8220;try adding a rendering to all pagetypes late in the process – phew&#8221;) and is potential place for mistakes. Also, the page designer and Webforms module copies the layout from the template, locally to the item – and trust me, you do not want your layout with 20 renderings spread over your 15 pagetypes <span style="text-decoration:underline;">and</span> 356 local items (&#8220;try adding a rendering to all pagetypes late in the process – double-phew&#8221;).
</p>
<p>So, unless you are committed to keeping your page composition in one place, and choose not to use the page designer and webforms, you are left with the second option – putting page composition in sublayouts. This is where you put renderings and other sublayouts directly in the .ascx file, either through Visual Studio or the Sitecore layout designer. The big problem I have with this option, is that you separate page composition into two places – Sitecore and the ascx files. This forces you to use two different systems to setup caching etc. and makes it difficult to overview the complete page composition.
</p>
<p>Enter Composite Layouts:
</p>
<p>Composite Layouts is a new type of rendering I developed for a large project, which bridges the gap between the two options. It utilizes the fact that even rendering items in Sitecore have a Layout field, and it merges a layout set directly on a composite layout item into the layout set on a template. I.e. a composite layout is pretty much like a sublayout, in that it allows you to group renderings and place them on a page as a unit. The exception is that all configuration is done in Sitecore and the renderings on a composite layout can be placed in all placeholders – even placeholders outside the composite layout.
</p>
<p>Our Form pagetype is a standard document page (with the usual header, topmenu, title, leftmenu, footer, spots etc.) which renders a selected form (which is incidentally created using Webform for Marketeers) in the content area:
</p>
<p><img src="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela1.png?w=497"></p>
<p>The DocumentPage rendering is a composite layout which is defined with the following layout:
</p>
<p><img src="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela2.png?w=497"></p>
<p>Note that the layout has a NullLayout selected – this is merely because the Sitecore UI forces us to select a layout before saving the layout on the item. The NullLayout is naturally never rendered.
</p>
<p>Just to make the point; in turn, here&#8217;s how what the HeaderBlocks composite layout contains:
</p>
<p><img src="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela3.png?w=497">
<p>As you can see, composite layouts uses standard Sitecore UI with no addition, and all I&#8217;ve had to do at this point is to create a <em>Composite Layout</em> template and add it to the insert options of the <em>Sublayout Folder</em> template. The template has no fields whatsoever.
</p>
<p>So how do you get it to merge the layouts? First you create a class – let&#8217;s call it InsertCompositeLayoutRenderings – derive it from Sitecore.Pipelines.RenderLayout.RenderLayoutProcessor and insert it into the renderLayout pipeline in the web.config. The entry needs to be right below the InsertRenderings entry, as this unfolds all the renderings in the current item and fills the Sitecore.Context.Page.Renderings list.
</p>
<p><img src="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela4.png?w=497"></p>
<p>Second, you implement the Process() method of your InsertCompositeLayoutRenderings class, run through the Sitecore.Context.Page.Renderings and detects any composite layouts in the list, parse the layout field in the composite layout item and call Sitecore.Context.Page.AddRendering for each rendering found. If you want recursive support, you merely give the renderings on each composite the same treatment.
</p>
<p><img src="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela5.png?w=497">
	</p>
<p>Granted, the design has some flaws – e.g. all renderings are added to the end of the layout (theres no InsertRendering method), so you have to be careful about the placeholders you use and order of the composite layouts – but I still consider the solution to be much better than the two options first mentioned.
</p>
<p>We could all hope Sitecore reads this post and implements something similar in a future version, but until then if anyone is interested, I&#8217;ll consider posting the code on the Sitecore shared source network.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=170&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/07/22/composite-layouts-%e2%80%93-keeping-your-stuff-together/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela1.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela2.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela3.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela4.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2009/07/072209_1928_compositela5.png" medium="image" />
	</item>
		<item>
		<title>Sitecore learning portal launched</title>
		<link>http://mcore.wordpress.com/2009/07/08/sitecore-learning-portal-launched/</link>
		<comments>http://mcore.wordpress.com/2009/07/08/sitecore-learning-portal-launched/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 21:34:23 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=163</guid>
		<description><![CDATA[My cooworker Jimmi Lyhne Andersen and I are glad to announce that we have finally finished a project we have been working on for quite a while now; a complete learning site for Sitecore. Check it out at http://learnsitecore.cmsuniverse.net/   So what is it all about? Well we have been working with Sitecore for quite [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=163&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My cooworker Jimmi Lyhne Andersen and I are glad to announce that we have finally finished a project we have been working on for quite a while now; a complete learning site for Sitecore. Check it out at <a title="Learn Sitecore" href="http://learnsitecore.cmsuniverse.net/" target="_blank">http://learnsitecore.cmsuniverse.net/</a></p>
<p> </p>
<p>So what is it all about? Well we have been working with Sitecore for quite a while now, and we found that documentation was somewhat limited. Documentation revolves around SDN which is great as a reference (especially if the search functionality worked probably) and blog post by enthusiastic Sitecore developers. This leaves quite a gap, as there are no in depth article base and nowhere to go, if you want to start learning about Sitecore. Further there is only limited documentation for editors, server administrators and architects.</p>
<p>Therefore our vision was to create a site, which matches these target groups and goes in depth with the topics. Our mission is not to compete with SDN, as it is quite resourceful for snippets and references. Our mission is neither to compete with the blogs, as these are quite resourceful when you want biased opinions on Sitecore or new and interesting tweaks.</p>
<p>So in short learnsitecore.com is the place to go if you want to learn Sitecore or read in depth articles on different technologies which Sitecore uses. Right now there are a limited number of articles, but we hope to get some contributors and of cause write a lot of articles our self.</p>
<p> </p>
<p>We hope you&#8217;ll find it resourceful and that you might be motivated to write an article or two.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=163&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/07/08/sitecore-learning-portal-launched/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Content and presentation separated – part 2</title>
		<link>http://mcore.wordpress.com/2009/06/18/content-and-presentation-separated-%e2%80%93-part-2/</link>
		<comments>http://mcore.wordpress.com/2009/06/18/content-and-presentation-separated-%e2%80%93-part-2/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 22:31:29 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=158</guid>
		<description><![CDATA[Following up on my previous post about content and presentation separation , I realized that separating presentation and content is extremely important, if you want to utilize some of the new features in Sitecore such as the page editor and the new rule engine . These features let the end user meddle with the presentation [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=158&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Following up on my previous post about <a href="http://mcore.wordpress.com/2009/02/09/content-and-presentation-separated-does-it-make-sense/">content and presentation separation</a> , I realized that separating presentation and content is extremely important, if you want to utilize some of the new features in Sitecore such as the page editor and the <a href="http://sitecorejohn.spaces.live.com/blog/cns!960125F1D4A59952!399.entry">new rule engine</a> . These features let the end user meddle with the presentation which gives quite a few nice features. For instance an editor can add a rendering to a given page in a rich and intuitive GUI and set up rules for a visualization of a certain rendering.</p>
<p>The problem, as earlier discussed, is what to do with “presentation content”. With presentation content I mean settings or similar. For instance take a rendering where you want to present a list of news, which are all descendants of a specified root item. This rendering needs the following settings: How many news items to show, a root item, a read more link etc. Normally I would put these properties on a template as fields. However this would bind the presentation to content and the sublayout or rendering would only work on an item, which is derived from that template. As the end user can now meddle with the renderings and add or remove them at will, he will have to know the dependencies to different templates, which is practically impossible. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p> </p>
<p>So what is the solution to this problem? Well as fare as I can figure out, you need to use the datasource and parameter properties on the rendering instead. However this introduces some issues when it comes to usability, as it is now the end user who needs to set these properties. Sitecore has a really rich and user friendly interface for altering content, but for some reason the UI for setting properties on a rendering/sublayout is rather hopeless. There is only one field type – a simple text field. So when you need to set an external or internal link you need to enter it as simple text. No lookups, nothing. Further there is no way, to my knowledge, to create validators for these fields, so you aren’t able to help the editor.</p>
<p>So for this to work Sitecore needs to implement a better UI or use the content editor to allow editors to configure renderings. I sort of figure it would be quite nifty, if there was created an item, whenever you add a rendering. The item should be based on a specific template for the rendering type, which would mean you could create different templates for different types of renderings and thereby control which parameters would be needed. This should be completely transparent for the editor, which wouldn’t notice that an actual item was created, except he would get the user friendly interface of the content editor.</p>
<p>This would give better usability and thereby allow a better separation of content and presentation (and the content needed by the presentation).</p>
<p> </p>
<p>The end user issue doesn’t stand alone. Recently I implemented a sublayout, which should read some parameters. If I have done this in a best practice way, I must admit, that the API for reading parameters is completely hopeless. <a href="http://sdn5.sitecore.net/FAQ/Archive/API/Get%20DataSource%20Code%20and%20Parameters%20for%20Sublayout%20via%20Code-behind.aspx">Check it out on SDN</a>. What? Is this really the easiest way? Further the parameters data type is a concatenation of strings much like query parameters. This is quite frustrating as you have to parse the string or use the .net UrlString class to extract a specific parameter.</p>
<p>Adding all this together and adding different validation of the parameters made my class turn into one long unreadable mess.</p>
<p> </p>
<p>The conclusion? If you want to separate content and presentation you lower the capabilities and usability for the editor and make your code one big mess. Either that or I am doing something completely wrong.</p>
<p>If Sitecore really wants the editors to meddle with presentation, they should really improve the UI and API for sublayout parameters and similar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=158&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/06/18/content-and-presentation-separated-%e2%80%93-part-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile Sitecore design</title>
		<link>http://mcore.wordpress.com/2009/05/27/agile-sitecore-design/</link>
		<comments>http://mcore.wordpress.com/2009/05/27/agile-sitecore-design/#comments</comments>
		<pubDate>Wed, 27 May 2009 04:45:58 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=148</guid>
		<description><![CDATA[It been a while since my last blog post – my second child Annika was born March 16th and since then I&#8217;ve been forced to realize that two children takes up a lot of blog-writing time. A year ago I wrote a post titled Type before function, which pointed out the very type-centric design of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=148&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It been a while since my last blog post – my second child Annika was born March 16<sup>th</sup> and since then I&#8217;ve been forced to realize that two children takes up a lot of blog-writing time.
</p>
<p>A year ago I wrote a post titled <a href="http://mcore.wordpress.com/2008/05/28/type-before-function/">Type before function</a>, which pointed out the very type-centric design of Sitecore. Since then, we have in Pentia tried to develop a design practice which focuses more on isolating logically grouped functionality in our design and thinking outside the type-centric nature of Sitecore. For this purpose, we have &#8220;invented&#8221; the term <em>component</em> in our design. The purpose of components is to separate the functionality from the type, allowing the developer to focus on one purpose and its interfaces.
</p>
<p>The practise has been quite successful &#8211; our large-scale solutions have become increasingly easy to maintain and extend. As a side effect of the process, we now have a high degree of reuse &#8211; not just knowledge, but actual code &#8211; between even seemingly un-similar projects. Not very surprisingly, it turns out that developers are more inclined to reuse code, which is easily overviewed. The design practice is so successful, that we have passed it on to external projects, through our <a href="http://www.pentia.net/Kompetencer_og_produkter/Kompetencer/Sitecore_raadgivning_og_analyse.aspx">Professional Services</a>.
</p>
<p>Here are a few tips on getting you started:
</p>
<h2>Consistent placement and naming<br />
</h2>
<p>Not all items belonging to a component can be placed together. Naming and placement makes it easier to identify component items – in a type-centric system.
</p>
<p>Keep your files together &#8211; we never use the standard Sitecore folders, e.g. /xsl and /layouts. All files in a component are placed below a folder named /Components/[<em>ComponentName</em>]. This makes it easy to identify which files belong together without e.g. garbling the filename with unnecessary prefixes. And if you think about it, it&#8217;s not hard to identify a file as an XSLT – so why put it in the/xsl folder? Keeping component items together also goes for templates, renderings and layouts in Sitecore. For the purpose of Sitecore best practice, we still place templates under /sitecore/templates (although I suppose it&#8217;s not strictly necessary), and layout items under /sitecore/layouts. But we always use subfolders which are named consistently, e.g. /sitecore/templates/Components/[<em>ComponentName</em>].
</p>
<h2>Component projects<br />
</h2>
<p>Each component has a separate Visual Studio project, and therefore a separate assembly. Aside from grouping files even further, this also helps to identify dependencies between components. Use build events on the project to move files from component folders to website folders if needed.
</p>
<h2>Interface templates<br />
</h2>
<p>Think of templates in Sitecore as interfaces – never basetypes – which provide your pagetypes or data items with certain functionality. Always refer to these interfaces in the code within the components.
</p>
<p>Example: The component Navigation (menu, breadcrumb and sitemap) defines the template Navigable with the fields <em>Menu Title</em> and <em>Show In Menu</em>. This template is assigned to the pagetypes which can be shown in the menu. The renderings Menu.xslt and Breadcrumb.xslt only references the Navigable template by using the XslHelper.IsItemOfType() method (or your own more optimized version).
</p>
<h2>Common components<br />
</h2>
<p>There are a number of components which is always in a project, and which brings the functionality of the other components together.
</p>
<p>The <em>Design</em> component contains all the graphic design for the project. Do not be tempted to place stylesheets and graphics within each component – the design for a single component is always related to other components, and therefore you will be forced to create unnecessary dependencies.
</p>
<p>The <em>PageTypes</em> component brings together the interface templates and renderings and sublayouts in the other components on the actual page type template. Only page type templates are <em>instantiated</em> in the content tree. If you define the page type template <em>News</em> in the <em>News</em> component and not in the <em>PageTypes</em> component, you will be forced to create dependencies to other components e.g. <em>Navigation</em>.
</p>
<h2>Dependencies and Inversion of control<br />
</h2>
<p>Keep your dependencies amongst components as few and as obvious as possible. It should not be necessary for a developer to know more than the component he is working on – too many dependencies makes the components too complex and less flexible. The common components is one way to reduce dependencies, another is the use of the <a href="http://en.wikipedia.org/wiki/Inversion_of_Control">inversion of control pattern</a> and possibly an IoC container. Suppose the News component uses the Indexing component for providing data quickly. This could naturally be done by calling the indexing component directly through the News code, thereby creating a dependency. Alternately the <em>News</em> component could provide an appropriate interface which defines its necessary functionality. This interface could be implemented by the Indexing component and instantiated though Reflection or an IoC container like Unity or Spring, thereby inverting the dependency and making the <em>News</em> component more lean.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=148&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/05/27/agile-sitecore-design/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Command templates – the forgotten feature of Sitecore 6?</title>
		<link>http://mcore.wordpress.com/2009/05/15/command-templates-%e2%80%93-the-forgotten-feature-of-sitecore-6/</link>
		<comments>http://mcore.wordpress.com/2009/05/15/command-templates-%e2%80%93-the-forgotten-feature-of-sitecore-6/#comments</comments>
		<pubDate>Thu, 14 May 2009 23:25:50 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=138</guid>
		<description><![CDATA[I don’t know about you, but I actually haven’t been giving command templates any attention since they were introduced in Sitecore 6. This is really a shame, as it is pretty powerful and can help editors a lot. For instance take the often used structure for news, where you have a news folder. To avoid [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=138&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I don’t know about you, but I actually haven’t been giving command templates any attention since they were introduced in Sitecore 6. This is really a shame, as it is pretty powerful and can help editors a lot.</p>
<p>For instance take the often used structure for news, where you have a news folder. To avoid too many items in a flat structure you have folders for the current year and the current month. This could back in the old days be used by letting the editors them self create the folders they needed or you could have implemented a lot of event handlers or similar. Now you can just use a command template and let the command create the folders from the current DateTime.</p>
<p>To create command templates follow the guide in the <a href="http://sdn5.sitecore.net/Reference/Sitecore%206/Data%20Definition%20Cookbook.aspx">data definition cookbook</a> . Then implement the command to create the folders like this:<br />
<code><br />
public class MyCustomCommand : Command<br />
{<br />
  public override void Execute(CommandContext context)<br />
  {<br />
  if (context.Items.Length == 1)<br />
  {<br />
  Item item = context.Items[0];<br />
  NameValueCollection parameters = new NameValueCollection();<br />
  parameters["id"] = item.ID.ToString();<br />
  parameters["language"] = item.Language.ToString();<br />
  parameters["database"] = item.Database.Name;<br />
  Sitecore.Context.ClientPage.Start(this, "Run", parameters);<br />
  }<br />
}</code><br />
<code><br />
protected void Run(Sitecore.Web.UI.Sheer.ClientPipelineArgs args)<br />
{<br />
  if (!args.IsPostBack)<br />
  {<br />
    //Means we are in the initial step, we want to ask for the name of the news<br />
    Sitecore.Context.ClientPage.ClientResponse.Input("Enter the name of the news item:", Sitecore.Globalization.Translate.Text("New NewsItem"), Sitecore.Configuration.Settings.ItemNameValidation, "'$Input' is not a valid name.", 100);<br />
    args.WaitForPostBack();<br />
  }<br />
  else<br />
  {<br />
    //Now we got a postback, which means we got a response<br />
    if (!String.IsNullOrEmpty(args.Result) &amp;&amp; args.Result != "undefined")<br />
    {<br />
      Database db = Sitecore.Configuration.Factory.GetDatabase(args.Parameters["database"]);<br />
      Item parent = db.GetItem(args.Parameters["id"], Language.Parse(args.Parameters["language"]));<br />
      //Create the folder structure if it doesn't exist<br />
      string year = DateTime.Now.Year.ToString();<br />
      string month = DateTime.Now.Month.ToString();<br />
      TemplateItem folderTemplate = db.Templates[Sitecore.TemplateIDs.Folder];<br />
      Item yearFolder = parent.Children[year];<br />
      if (yearFolder == null)<br />
        yearFolder = parent.Add(year, folderTemplate);<br />
      Item monthFolder = yearFolder.Children[month];<br />
      if (monthFolder == null)<br />
        monthFolder = yearFolder.Add(month, folderTemplate);<br />
      //Create the news Item<br />
      TemplateItem template = Sitecore.Context.ContentDatabase.Templates[new ID("{B2612CF6-16D6-426D-9E74-EE3A4E3989B2}")];<br />
      Item item = monthFolder.Add(args.Result, template);<br />
      //Load the Item in the content editor<br />
      Sitecore.Context.ClientPage.SendMessage(this, "item:load(id=" + item.ID.ToString() + ")");<br />
    }<br />
  }<br />
 }<br />
}</code></p>
<p>There you go &#8211; auto creation of folders. It’s that simple. I can think of really many usages of this – also more complex situations. Too bad the sheer UI documentation is so limited, as it makes it difficult to implement complex wizards etc.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=138&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/05/15/command-templates-%e2%80%93-the-forgotten-feature-of-sitecore-6/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Performance debugging Sitecore backend</title>
		<link>http://mcore.wordpress.com/2009/05/11/performance-debugging-sitecore-backend/</link>
		<comments>http://mcore.wordpress.com/2009/05/11/performance-debugging-sitecore-backend/#comments</comments>
		<pubDate>Mon, 11 May 2009 09:20:09 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[debugging]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=135</guid>
		<description><![CDATA[In Pentia we have created a new service &#8211; Pentia Professional Services, where we offer our deep knowledge of and experiences with Sitecore. The purpose of this service is a bit like Sitecore Professional Services. We offer to help clients and partners with architecture, codereviews, performance testing and debugging Sitecore solutions. To differentiate us from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=135&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In Pentia we have created a new service &#8211; <a href="http://www.pentia.net/Kompetencer_og_produkter/Kompetencer/Sitecore_raadgivning_og_analyse.aspx">Pentia Professional Services</a>, where we offer our deep knowledge of and experiences with Sitecore. The purpose of this service is a bit like Sitecore Professional Services. We offer to help clients and partners with architecture, codereviews, performance testing and debugging Sitecore solutions. To differentiate us from Sitecore Professional Services we focus on the custom solution, where Sitecore focuses on the product.</p>
<p>A couple of weeks ago I was assigned to a task, where a client experienced that the Sitecore backend were performing really bad. Issues like these have always been harder to debug then frontend performance issues, as there are very few indicators to which process, is making the solution stall. Is it a scheduled task? Is it a custom pipeline? Is it an event hookup? Etc. etc.</p>
<p>Well on this particular task I found a rather new entry type in the log. Sitecore has implemented a new counter – the LongRunningOperationWatcher. This class is used to log entries like this:</p>
<p><em>Long running operation: Running Validation Rules</em></p>
<p>This is a great indicator and makes it easier to debug the backend. The class is called with a threshold, a message and some custom parameters, which are outputted in the log entry if the threshold timer is exceeded when the object is disposed. It is used in different methods throughout the kernel – for instance when validating different validation rules and in different pipelines. I can only hope that Sitecore will extend it to more operations and pipelines. Further it is great to use yourself, when creating a custom scheduled task, which might run wild.</p>
<p>After analyzing the log file for the client, I found that the “Long operation: Running validation rules” entry came up constantly, which told me, that either they had some custom validations, which were quite heavy on performance or that the server couldn’t bare the load from the standard validations.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=135&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/05/11/performance-debugging-sitecore-backend/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore serialization for version control</title>
		<link>http://mcore.wordpress.com/2009/03/17/sitecore-serialization-for-version-control/</link>
		<comments>http://mcore.wordpress.com/2009/03/17/sitecore-serialization-for-version-control/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 06:59:08 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=130</guid>
		<description><![CDATA[As described in the latest post about Continuous Integration we have been working on making it easier and less manual to have multiple developers work on the same project in different environments. However one thing that has always been a challenge is Sitecore items in form of templates, layouts etc. Until now we have run [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=130&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">As described in the latest post about Continuous Integration we have been working on making it easier and less manual to have multiple developers work on the same project in different environments. However one thing that has always been a challenge is Sitecore items in form of templates, layouts etc. Until now we have run on a shared database server, making updates to Sitecore from a shared server to avoid data cache issues. This has a couple of disadvantages:</span></span></span></p>
<p class="MsoListParagraphCxSpFirst" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">It is quite difficult to synchronize environments. If we want to update the development environment with content from production, we either have to create a huge package with all the content or restore the database from production, freezing all development while it is updated.</span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">There is no way of tracking changes or roll back. </span></span></span></p>
<p class="MsoListParagraphCxSpLast" style="text-indent:-18pt;margin:0 0 10pt 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">It is inconvenient for our developers to work on a shared server, when developing backend functionality.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">When Sitecore introduced serialization in Sitecore 6, we were hoping to be able to allow local databases that syncs via SVN and (de)serialization. The dream is a VisualSVN or TurtoiseSVN like functionality for Sitecore. Imagine using the gutter as an indicator whether you have made changes to an item and then have a commit button, which commits the changes to the repository, allowing other developers to update their database with the changes. Has anyone out there tried implementing something similar?</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">I have taken a look at the serialization functionality and found a few issues. Most of them can be worked around, but I was hoping, that we could have achieved our goal mostly using standard functionality.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">To have version control you need the following operations:</span></span></span></p>
<p class="MsoListParagraphCxSpFirst" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Create: This works more or less as expected in (de)serialization</span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Merge: There seem to be no actual merge functionality. If you deserialize an item, which already exists (identified by item id), the item with the latest _update date, will be used. There is no merging of fields, as far as I have been able to test. This is not such a big issue, as the serialized items can be merged on file level. However it would be nice to be able to force an update through via the UI. This is by default only possible from the API.</span></span></span></p>
<p class="MsoListParagraphCxSpLast" style="text-indent:-18pt;margin:0 0 10pt 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Delete: This is not possible with serialization. We have thought of a couple of solutions, but they are quite extensive.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">So what really needs to be handled is a way of deleting items with serialization. Oh… and a lot of UI functionality to make it work as VisualSVN <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Anyone got any experiences?</span></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=130&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/03/17/sitecore-serialization-for-version-control/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore Continuous Integration Continued</title>
		<link>http://mcore.wordpress.com/2009/03/02/sitecore-continuous-integration-continued/</link>
		<comments>http://mcore.wordpress.com/2009/03/02/sitecore-continuous-integration-continued/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 20:51:13 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=116</guid>
		<description><![CDATA[Here&#8217;s an update on the post I wrote a year ago on our Continuous Integration project here at Pentia. To put it short: it&#8217;s turned out to be one of the most successful internal projects in our company. In the last year we&#8217;ve added 20+ new projects into the system, and we are in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=116&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an update on the post I wrote a year ago on our <a href="http://mcore.wordpress.com/2008/02/29/continous-integration-and-sitecore/">Continuous Integration project here at Pentia</a>.<br />
To put it short: it&#8217;s turned out to be one of the most successful internal projects in our company. In the last year we&#8217;ve added 20+ new projects into the system, and we are in the process of moving our old projects from SourceSafe to SVN, and creating build files for them.<br />
Our setup is not a conventional build setup with specifically designed build scripts for a major project, it&#8217;s more of a build framework for the many Sitecore project passing through Pentia. We&#8217;ve designed our setup around our naming and location best practises, so in order to add a project to the build system, we only need to create a single file with about 10 lines of XML specifically for the project.</p>
<p>Our entire setup consist of:</p>
<p>1: nAnt build framework<br />
This is a set of approx. 30 nAnt scripts which is shared across all our projects. The scripts handles everything from SVN, MSBuild, FxCop, deployment, zipped releases, automatic versioning and much more. The files are versioned so that changes and new features will not influence the older projects and break the builds. In the last year we have released 5 versions of the nAnt scripts.</p>
<p>2: Subversion version control<br />
In my approx. 15 years of programming I&#8217;ve only worked with Visual SourceSafe as version control (and as those of you who knows the product knows, is hasn&#8217;t changed for 15 years either <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , so the switch to SVN has been a daunting task for me. After a year, my only recommendation for those of you who consider it is to go for it! Subversion is easy to install and maintain (I recommend VisualSVN Server), easy to use (TortoiseSVN) and the integration into Visual Studio (VisualSVN) is perfect. Naturally the integration with nAnt is nice too as. E.g. it made it possible for us to automatically version our projects when releasing, by extracting the latest revision from SVN.</p>
<p>3: CruiseControl.NET<br />
The hardest part to integrate into the company has been the CruiseControl.NET server. It&#8217;s not difficult to explain its purpose to the developers (to continuously check the projects on commits in SVN and build nightly releases), but the benefits of the other parts of the setup, for the individual developer has just been so much more evident. But still, its running, checking our builds and keeping our internal testing environment updated, by releasing each night.</p>
<p>4: Module library<br />
The module library is a really neat feature of our build system. In short, it allows us to only maintain our own codebase in a project in version control and still allows developers to get quickly up and running, not making it necessary to install Sitecore version and thirdparty tools on their local machines. In the last year we&#8217;ve added 12 versions of Sitecore, 16 Sitecore modules (with 3+ versions each), 10+ third party modules like PDF, FTP and unit testing, and much more. The library allows us not only to add our old projects to the build system, but the cool thing is that when e.g. a new update to Sitecore is released, all our projects can be upgraded by changing a single line in the project build files.</p>
<p>5: Configuration merging<br />
Both Sitecore and Microsoft has acknowledged the problem of mainting large configuration files. And the both have features which allows config changes to be merged from external files. The only thing they do not make easy, is to have different configurations for the different environments. For this we&#8217;ve developed a nAnt extension which allows the developers to create configuration merge files (configmerge files) which can be varied according to the environment we are building to. This has made a huge difference as opposed to juggling different configuration files for production/test/training/development environments for frontend and backend servers (6-7 web.configs!).</p>
<p>6: GUI tools.<br />
We have lazy developers in Pentia <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Joke aside, we quickly acknowledged that in order to successfully get the system to the developers, we had to provide them with better tools than the nAnt command-line and CruiseControl xml files. So we created a nice GUI for our nAnt scripts and for editing our CruiseControl server.</p>

<a href='http://mcore.wordpress.com/2009/03/02/sitecore-continuous-integration-continued/builder/' title='builder'><img data-attachment-id='118' data-orig-size='689,388' data-liked='0'width="150" height="84" src="http://mcore.files.wordpress.com/2009/03/builder.png?w=150&#038;h=84" class="attachment-thumbnail" alt="builder" title="builder" /></a>
<a href='http://mcore.wordpress.com/2009/03/02/sitecore-continuous-integration-continued/ccconfig/' title='ccconfig'><img data-attachment-id='119' data-orig-size='515,508' data-liked='0'width="150" height="147" src="http://mcore.files.wordpress.com/2009/03/ccconfig.png?w=150&#038;h=147" class="attachment-thumbnail" alt="ccconfig" title="ccconfig" /></a>

<p>As you can hear, I am still pretty excited by the accomplishments we&#8217;ve made in the last year &#8211; and we have a lot of cool features waiting. Our next release will incorporate generation of SQL scripts for mounting Sitecore databases and setting up database access and automatic IIS setup. We also want to automate our releases even more, by generating batch files for folder security and automated FTP upload to the production servers.</p>
<p>I&#8217;ll still be happy to hear from anyone with experience or ideas &#8211; or you can give me or Pentia a shout if you want to hear more about our setup.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=116&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/03/02/sitecore-continuous-integration-continued/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2009/03/builder.png?w=150" medium="image">
			<media:title type="html">builder</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2009/03/ccconfig.png?w=150" medium="image">
			<media:title type="html">ccconfig</media:title>
		</media:content>
	</item>
		<item>
		<title>Code reviews on Sitecore</title>
		<link>http://mcore.wordpress.com/2009/02/18/code-reviews-on-sitecore/</link>
		<comments>http://mcore.wordpress.com/2009/02/18/code-reviews-on-sitecore/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 23:37:19 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=104</guid>
		<description><![CDATA[Thomas Eldblom and I are reviewing most of the projects, we do in Pentia. The most of the things we comment on concerns C#, architecture, HTML, XSL or other general technologies, but some issues are related to the use of Sitecore. In this post I want to share the most common, most severe or most [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=104&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Thomas Eldblom and I are reviewing most of the projects, we do in Pentia. The most of the things we comment on concerns C#, architecture, HTML, XSL or other general technologies, but some issues are related to the use of Sitecore. In this post I want to share the most common, most severe or most irritating issues/pitfalls I often stumble upon or look for, when doing a code review. I am glad to say, that I almost never stumble upon the most basic things, such as layouts specified directly on items, masters set on masters (SC5) etc.</span></span></span></p>
<p class="MsoListParagraphCxSpFirst" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;"><strong>Use of Sitecore.Context in logic</strong></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">When having actual classes or general logic, I sometimes find a reference to the Sitecore.Context. Often it is a reference to Sitecore.Context.Item or Sitecore.Context.Database. This is rarely a good idea. The logic should be independent of the context it runs in. Instead you should pass in the objects you need as parameters. If you don’t do this, you’ll bind your logic to a certain context, making it unusable, if you want to use it without a context. Further logic that uses the context isn’t very testable.</span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"> </p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">        <strong> </strong></span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;"><strong>Iterating over to many items</strong></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">I don’t find this sort of issue very often, but it is pretty severe. The scenario is often that you have a list of all latest documents or a similar relational operation. You implement a simple XSL using “//item”. This works fine in development, but when the client starts importing or creating several thousand documents, the list doesn’t perform and brings the whole site down. </span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"> </p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;"><strong>Too much logic in an XSL</strong></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Often you start out with a page type, which looks like a simple rendering. Therefore you start out creating an XSL. As you dig into the specs, you find out, that you need a lot of logic. You end up with a large amount of XSL extensions and a complex rendering. The result is a way to complex XSL, which is practically unreadable and impossible to maintain. When you have a lot of logic use a sublayout. </span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"> </p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">        <strong> </strong></span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;"><strong>Reference to specific databases</strong></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Sometimes I find a reference to a specific database. For instance something like Sitecore.Configuration.Factory.GetDatabase(‘web’). Allthough it may be needed in some situations, it often gives some unintended sideeffects. Most of the time you want to operate on the context database, so you use the correct database specified in the site section in the web.config. A direct reference to the web database might cause preview functionality not to work as intended, and a direct reference to the master database might not work if you are using a staged environment. </span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"> </p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;"><strong>Null reference</strong></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">As Sitecore is so type weak and everything is an item, you don’t know what fields/properties the item has. No matter how experienced the developer is, I often find the use of a field of some sort, where it hasn’t been validated whether the field is null or not, resulting in a null reference exception if the input is incorrect.</span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"> </p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;"><strong>Overriding standard Sitecore functionality</strong></span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Sometimes a developer isn’t satisfied with the way Sitecore implements something &#8211; for instance the indexing, the site resolver, the domain etc. As Sitecore allows you to override almost everything, the developer thinks… Hey, I’ll just override the domain doing my own implementation. Although this might be necessary, it should be considered carefully. I have too many times stumbled into a problem with a custom implementation of standard functionality, either because it may be more complex than first assumed, the next developer on the project isn’t aware of it or last but not least an upgrade of Sitecore changes the requirements to the functionality.</span></span></span></p>
<p class="MsoListParagraphCxSpLast" style="margin:0 0 10pt 36pt;"> </p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">I am hoping you want to share some of your experiences as well &#8211; telling what Sitecore pitfalls you often stumble upon or find very irritating.</span></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=104&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/02/18/code-reviews-on-sitecore/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducing the Lucene Index Viewer</title>
		<link>http://mcore.wordpress.com/2009/02/11/introducing-the-lucene-index-viewer/</link>
		<comments>http://mcore.wordpress.com/2009/02/11/introducing-the-lucene-index-viewer/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 22:25:12 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=100</guid>
		<description><![CDATA[I have earlier complained about Sitecore 6 Lucene implementation hard-coding compression, making it impossible to view the index in Luke. Further I have often wanted to view an index in production, where a Luke installation wasn’t allowed. Therefore I decided to implement an index viewer and I am proud to announce, that it is now [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=100&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have earlier <a href="http://mcore.wordpress.com/2008/11/05/sitecores-lucene-integration/">complained about Sitecore 6 Lucene implementation</a> hard-coding compression, making it impossible to view the index in <a href="http://www.getopt.org/luke/">Luke</a>. Further I have often wanted to view an index in production, where a Luke installation wasn’t allowed.</p>
<p>Therefore I decided to implement an index viewer and I am proud to announce, that it is now released. It has been added to the Sitecore Shared Source modules. Go to <a href="http://trac.sitecore.net/IndexViewer">http://trac.sitecore.net/IndexViewer</a> to download the package or the source. To see some screenshots go to <a href="http://trac.sitecore.net/IndexViewer/wiki/Documentation">http://trac.sitecore.net/IndexViewer/wiki/Documentation</a>.</p>
<p>In the IndexViewer it is possible to: See information about an index (Last modified, number of ducuments etc.), browse the documents in an index and search through the index using different Lucene Query types.</p>
<p>Let me know if you have any comments, feature request or similar. Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=100&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/02/11/introducing-the-lucene-index-viewer/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Content and presentation separated &#8211; Does it make sense?</title>
		<link>http://mcore.wordpress.com/2009/02/09/content-and-presentation-separated-does-it-make-sense/</link>
		<comments>http://mcore.wordpress.com/2009/02/09/content-and-presentation-separated-does-it-make-sense/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 12:24:04 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=91</guid>
		<description><![CDATA[Often I hear that Sitecore separates content and presentation completely &#8211; In fact it seems that it is a key selling point. Lately I have also seen other CMS vendors promote the same idea. But I must admit that I don’t understand why it seems to be so important. Is it because of reuse of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=91&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Often I hear that Sitecore separates content and presentation completely &#8211; In fact it seems that it is a key selling point. Lately I have also seen other CMS vendors promote the same idea. But I must admit that I don’t understand why it seems to be so important. Is it because of reuse of content? Is it because you want to be able to present the same content on different devices such as iPhones, PDAs etc.?</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">But…<span>  </span>Does it make any sense? </span></span></span></p>
<p class="MsoListParagraphCxSpFirst" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Most of the clients we have been working with prefer to use the content editor and not webedit. To ensure that content editing is user friendly and intuitive, most of the time we construct solutions, where the content structure and hierarchy is the same as how it is presented on the frontend. This enables the editor to find and edit content in the same manner they find the information on the frontend. </span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">In this matter it makes more sense to bind content and presentation structure together.</span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">You seldom want to use the same content structure on different devices. When constructing sites for mobile devices, you probably want to have a simple flat hierarchy, which is different from your normal site. </span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin:0 0 0 36pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Therefore it makes more sense to me, to have two different structures optimized for the presentation on the different devices.</span></span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Often the editors want to be able to edit the presentation. If they create a list in a rich text, they probably want to be able to decide how this list is presented – hence you bind content to presentation. This is allowed in the rich text field. By nature WYSIWYG editors is bound to presentation. What you create is what is presented. Should you avoid rich text fields completely?</span></span></span></p>
<p class="MsoListParagraphCxSpLast" style="text-indent:-18pt;margin:0 0 10pt 36pt;"><span style="font-family:Symbol;" lang="EN-US"><span><span style="font-size:small;">·</span><span style="font:7pt &quot;">         </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">If content from rich text fields should be independent from what devices it is presented on, it requires editors to consider this, when they create their content. For instance a table with a lot of data expanding over 320 pixels wouldn’t look good on an iPhone, so the editor has to be more aware of the technical limitations of the devices or limited to use memo fields.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">All in all I find that you on some level always want to bind the content to the presentation, allowing more flexible content and giving editors a more intuitive way of creating content.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">I agree that you can construct a Sitecore solution that separates content from presentation completely, by developing a solution consisting of a big repository of memo fields, which can be pulled on to a presentation item… But this wouldn’t be very user friendly. </span></span></span></p>
<p><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span style="font-size:small;">So why is it so important to separate content from presentation and does it make any sense? </span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=91&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/02/09/content-and-presentation-separated-does-it-make-sense/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>The curse of the PNG’s</title>
		<link>http://mcore.wordpress.com/2009/01/06/the-curse-of-the-png%e2%80%99s/</link>
		<comments>http://mcore.wordpress.com/2009/01/06/the-curse-of-the-png%e2%80%99s/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 08:54:53 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/2009/01/06/the-curse-of-the-png%e2%80%99s/</guid>
		<description><![CDATA[When Sitecore released version 5.0 of the CMS, it included a major overhaul of the design in the editor, which featured a set of icons purchased from an external icon design company. These PNG icons are also included in the version 6 of the CMS. Sitecore already in version 5 decided to include the complete [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=89&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When Sitecore released version 5.0 of the CMS, it included a major overhaul of the design in the editor, which featured a set of icons purchased from an external icon design company. These PNG icons are also included in the version 6 of the CMS. <br />Sitecore already in version 5 decided to include the complete icon package into the software, although only a subset of the icons were used – why? Maybe as a service towards the developers or maybe just because it was easier for them just to include them all, who knows. Anyway, the complete icon library can be used – and in version 6 even browsed – from with the Sitecore editor. Nice feature &#8211; but from my point of view, at a very high price.
</p>
<p>The following table shows the number of files, just in the /sitecore/shell/themes/standard folder for some randomly picked versions of Sitecore CMS:
</p>
<p>Version 5.0:    11.100 files<br />Version 5.2.0:    13.357 files<br />Version 5.3.0:    13.745 files<br />Version 5.3.2:    18.133 files<br />Version 6.0:    18.244 files<br />Version 7.0:    ??
</p>
<p>I have about 5-10 different Sitecore projects on my hard disk which I am actively working on, I constantly create and delete Sitecore projects for testing purposes and our build system continuously and nightly surveys, builds and copies 20+ active Sitecore projects in our company. All of these tasks are heavily burdened by the icon library.<br />A clean Sitecore 6 version contains approx. 24.000 files of which approx. 18.000 are icons (and approx. 5.000 are related to the HTML editor). This means that 75% of the files in Sitecore are icons. In terms of megabytes, this number is only 40%. But still, you get my point?
</p>
<p>Sitecore, please, please, please consider alternate ways of including the icon library. How about a compiled resource with all the icons? Or maybe included in the media library in the core database? Whichever way you choose, the life of me – and a lot of my fellow Sitecore developers &#8211; will be so much easier. Thank you!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=89&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2009/01/06/the-curse-of-the-png%e2%80%99s/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>XslExtensions be gone &#8211; part 3</title>
		<link>http://mcore.wordpress.com/2008/11/17/xslextensions-be-gone-part-3/</link>
		<comments>http://mcore.wordpress.com/2008/11/17/xslextensions-be-gone-part-3/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 15:30:55 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Open source]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[XSL]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=80</guid>
		<description><![CDATA[Finally I&#8217;ve gotten the XslCodebehind module added to the Sitecore shared source modules. Go to http://trac.sitecore.net/XslCodebehind if you want to have a look at the source. Please give me a shout if you have any comments or if you want to contribute with ideas or coding.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=80&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Finally I&#8217;ve gotten the XslCodebehind module added to the Sitecore shared source modules.<br />
Go to <a href="http://trac.sitecore.net/XslCodebehind">http://trac.sitecore.net/XslCodebehind</a> if you want to have a look at the source. </p>
<p>Please give me a shout if you have any comments or if you want to contribute with ideas or coding.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=80&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/11/17/xslextensions-be-gone-part-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>LINQ to Sitecore</title>
		<link>http://mcore.wordpress.com/2008/11/12/linq-to-sitecore/</link>
		<comments>http://mcore.wordpress.com/2008/11/12/linq-to-sitecore/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 14:31:47 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[TechEd]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=78</guid>
		<description><![CDATA[We are here at TechEd EMEA 2008 in Barcelona and have just attended a really cool session by Bart De Smet (blog here) titled LINQ to Anything. As you can imagine, the talk was about writing Linq providers to any data sources. Bart has active projects on LINQ to ActiveDirectory and LINQ to Sharepoint which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=78&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We are here at TechEd EMEA 2008 in Barcelona and have just attended a really cool session by Bart De Smet (<a href="http://blogs.bartdesmet.net/bart">blog here</a>) titled LINQ to Anything. As you can imagine, the talk was about writing Linq providers to any data sources. Bart has active projects on <a href="http://www.codeplex.com/LINQtoAD">LINQ to ActiveDirectory</a> and <a href="http://www.codeplex.com/LINQtoSharePoint">LINQ to Sharepoint</a> which really gives a good understanding of what it involves writing a custom provider.</p>
<p>The really interesting question is, are anyone working on a LINQ to Sitecore project? or how about an template entity mapper (like to one in LINQ to Sharepoint)? Give me a shout if you are interested &#8211; maybe we can get a open source project going on the topic.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=78&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/11/12/linq-to-sitecore/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore and System.Web.Routing</title>
		<link>http://mcore.wordpress.com/2008/11/11/sitecore-and-systemwebrouting/</link>
		<comments>http://mcore.wordpress.com/2008/11/11/sitecore-and-systemwebrouting/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 11:31:11 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=71</guid>
		<description><![CDATA[There is a lot going on from Microsofts side on the ASP.NET side. .NET 3.5 SP1 included Dynamic Data and in .NET 4.0 the Microsoft MVC framework (out in a preview) will be a major feature. Alex has already brushed the subject on his blog and although he is right in some of his concerns, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=71&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There is a lot going on from Microsofts side on the ASP.NET side. .NET 3.5 SP1 included <a href="http://www.asp.net/dynamicdata/">Dynamic Data</a> and in .NET 4.0 the Microsoft MVC framework (out in a <a href="http://quickstarts.asp.net/previews/mvc/">preview</a>) will be a major feature.<br />
Alex has already brushed the subject on his <a href="http://sitecore.alexiasoft.nl/">blog</a> and although he is right in some of his concerns, I merely look at these new features as tools in my Sitecore/.NET toolbox, not nessecarily a replacement for anything.</p>
<p>Both the mentioned technologies from Microsoft uses another feature in .NET 3.5 SP1, which is <a href="http://msdn.microsoft.com/en-us/library/system.web.routing.aspx">URL Routing</a> (available through the System.Web.Routing assembly). Basically, you are able in your global.asax to specify dynamic URL&#8217;s which will routed to static ASP.NET pages. Sound familiar? Yes, it is a dynamic resolver similar to the way Sitecore resolves its rendering engine, and this is where the challenge lies. Microsoft uses exactly the same technology as Sitecore, httpModules, to hook into the request and resolve the physical file. Therefore the following must be added to you web.config to get Microsoft URL Routing to work:</p>
<pre>
&lt;httpModules&gt;
  &lt;add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&gt;
&nbsp;&nbsp;&lt;add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&gt;
&nbsp;&nbsp;&lt;add type="Sitecore.Nexus.Web.HttpModule, Sitecore.Nexus" name="SitecoreHttpModule"/&gt;
&nbsp;&nbsp;&lt;add type="Sitecore.Resources.Media.UploadWatcher, Sitecore.Kernel" name="SitecoreUploadWatcher"/&gt;
&nbsp;&nbsp;&lt;add type="Sitecore.IO.XslWatcher, Sitecore.Kernel" name="SitecoreXslWatcher"/&gt;
&nbsp;&nbsp;&lt;add type="Sitecore.IO.LayoutWatcher, Sitecore.Kernel" name="SitecoreLayoutWatcher"/&gt;
&nbsp;&nbsp;&lt;add type="Sitecore.Configuration.ConfigWatcher, Sitecore.Kernel" name="SitecoreConfigWatcher"/&gt;
&lt;/httpModules&gt;
</pre>
<p>Notice that I&#8217;ve added the UrlRouting to the top of the list, making this my primary URL routing preference. There is a few more entries in the web.config you need to add, but this is really the one that does the trick &#8211; well almost&#8230;<br />
The problem is that Sitecore is a real bastard for taking over the request &#8211; even if Microsoft URL routing is interested in the request, Sitecore says &#8220;we&#8217;ll I don&#8217;t know about this URL, so lets redirect to the ItemNotFoundUrl&#8221; (this is also why 404 errors and SEO in Sitecore is handled poorly).<br />
To overcome this, we either have to, manually, enter our URL Routing URLs in the IgnoreURLPrefixes entry in the web.config or create a Sitecore HttpRequestProcessor for handling the URL Routing URLs. To do this, you need to implement a class deriving from HttpRequestProcessor which determines if a URL is handled by Microsoft URL Routing and then skips out the Sitecore stuff.:</p>
<pre>
using System.Web;
using System.Web.Routing;
using Sitecore.Pipelines.HttpRequest;

namespace WebApplication1
{
  public class IgnoreUrlRouting : HttpRequestProcessor
  {
    public override void Process(HttpRequestArgs args)
    {
      RouteData route = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context));
      if (route != null)
        args.AbortPipeline();
    }
  }
}
</pre>
<p>This class then needs to be hooked into the Sitecore request pipeline in your web.config. I&#8217;ve chose to do it just after the IgnoreList. This is before Sitecore sets up its context, so you can choose to move it even further down the list if you want more Sitecore functionality in your ASP.NET code:</p>
<pre>
&lt;httpRequestBegin&gt;
  &lt;processor type="Sitecore.Pipelines.HttpRequest.StartMeasurements, Sitecore.Kernel"/&gt;
  &lt;processor type="Sitecore.Pipelines.HttpRequest.IgnoreList, Sitecore.Kernel"/&gt;
  &lt;processor type="WebApplication1.IgnoreUrlRouting, WebApplication1"/&gt;
  &lt;processor type="Sitecore.Pipelines.HttpRequest.SiteResolver, Sitecore.Kernel"/&gt;
  ...
</pre>
<p>Bam! You are up and running ASP.NET Routing and can now start using MVC, Dynamic Data and all the other fun new stuff coming from Microsoft.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=71&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/11/11/sitecore-and-systemwebrouting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecores Lucene integration</title>
		<link>http://mcore.wordpress.com/2008/11/05/sitecores-lucene-integration/</link>
		<comments>http://mcore.wordpress.com/2008/11/05/sitecores-lucene-integration/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 11:44:28 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Lucene]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=65</guid>
		<description><![CDATA[I have always been fond of Sitecores use of Lucene to index. I often use Lucene to relational operations avoiding iterating over the complete content tree etc. The way Sitecore uses Lucene to index, hasn’t been all that well documented, but earlier this year Sitecore released some documentation describing how items are indexed. The guide [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=65&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">I have always been fond of Sitecores use of Lucene to index. I often use Lucene to relational operations avoiding iterating over the complete content tree etc.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;font-family:Calibri;">The way Sitecore uses Lucene to index, hasn’t been all that well documented, but earlier this year Sitecore released some <a href="http://sdn5.sitecore.net/upload/sdn5/articles%202/administration/lucene%20search/lucene%20search%20engine.pdf" target="_blank">documentation</a> </span><span style="font-size:small;"><span style="font-family:Calibri;">describing how items are indexed. The guide is ok and it describes how indexes are configured and how the indexing is performed in an understandable way. </span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;font-family:Calibri;">However I often find that I need some documentation on how to extract data from the indexes. Even Lucene’s own online documentation on this, is somewhat limited. A couple of weeks ago I found and skimmed the book <a href="http://www.amazon.com/exec/obidos/ASIN/1932394281/interncom-20" target="_blank">“Lucene in action”</a>. </span><span style="font-size:small;"><span style="font-family:Calibri;">It is a recommendable book and describes the different queries and analyzers really well. </span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">Still there is a lack of Sitecore documentation on how to extract data through the Sitecore wrapper API to Lucene. In particular I could use some documentation on the Sitecore.Data.Indexing namespace, which seems to hold a lot of functionality – also when one wants to extract data. The documentation is limited to a few snippets and blog entries.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;font-family:Calibri;">However the lack of documentation hasn’t been an issue until Sitecore 6, as it was possible to use the tool <a href="http://www.getopt.org/luke/" target="_blank">Luke</a></span><span style="font-size:small;"><span style="font-family:Calibri;">. With Luke it was possible to browse indexes, try out query strings etc. When developing something that uses Lucene, this tool has been essential. </span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;"><span lang="EN-US"><span style="font-family:Calibri;">In Sitecore 6 the indexing uses compression, resulting in Luke failing whenever you browse or search through an index – as .net compression isn’t compatible with Java compression. Whether or not to use compression for the indexes, hasn’t been implemented as a setting in the web.config, but is hardcoded into the IndexData class, so it is not possible to disable. </span></span><span style="font-family:Wingdings;" lang="EN-US"><span>L</span></span><span lang="EN-US"><span style="font-family:Calibri;"> </span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">I have asked Sitecore Support to register a change request for implementing a setting – but until then developing functionality, which uses the indexes, are based on guessing and use of the reflector… So Sitecore please hurry!</span></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=65&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/11/05/sitecores-lucene-integration/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>What TODO?</title>
		<link>http://mcore.wordpress.com/2008/11/03/what-todo/</link>
		<comments>http://mcore.wordpress.com/2008/11/03/what-todo/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 16:27:58 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=58</guid>
		<description><![CDATA[When developing solutions and you stumble upon an issue, you want to return to, it is a good idea to mark this with some kind of TODO tag. We normally do this in a comment and then browse it with the TODO-explorer in Resharper. The other day exploring the Sitecore API through the reflector, I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=58&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;font-family:Calibri;">When developing solutions and you stumble upon an issue, you want to return to, it is a good idea to mark this with some kind of TODO tag. We normally do this in a comment and then browse it with the <a href="http://www.jetbrains.com/resharper/features/navigation_search.html#To-do_Explorer" target="_self">TODO-explorer in Resharper</a>. </span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">The other day exploring the Sitecore API through the reflector, I found Sitecores way of marking TODOs. I was looking at the SiteResolver and then found the following line of code in the Process method:</span></span></span></p>
<pre><a title="Sitecore.Todo" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Sitecore.Kernel:6.0.0.0/Sitecore.Todo"><span lang="EN-US"><span style="font-size:x-small;">Todo</span></span></a><span lang="EN-US"><span style="font-size:x-small;">.</span></span><a title="void Sitecore.Todo.OT(string description, bool throwException);" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Sitecore.Kernel:6.0.0.0/Sitecore.Todo/OT(String,Boolean)"><span lang="EN-US"><span style="font-size:x-small;">OT</span></span></a><span lang="EN-US"><span style="font-size:x-small;">(<span style="color:maroon;">"Optimize - takes almost 2 ms."</span>, <span style="color:maroon;">false</span>);</span></span></pre>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;"><span lang="EN-US"><span style="font-size:small;font-family:Calibri;">While laughing I thought…. Hmmmm should I contact </span><a href="http://www.thedailywtf.com" target="_blank"><span style="font-size:small;font-family:Calibri;">www.thedailywtf.com</span></a><span style="font-size:small;"><span style="font-family:Calibri;"> ? </span></span></span></span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">It seems that Sitecore has a class called Sitecore.Todo with a method for each developer and it is not removed when releasing new versions of Sitecore. </span></span></span><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">The above line probably reminds Ole Thrane that he should take a closer look at the SiteResolver. </span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;"><span lang="EN-US"><span style="font-family:Calibri;">Much better then resharper… <span> </span>Or? </span></span><span style="font-family:Wingdings;" lang="EN-US"><span>J</span></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=58&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/11/03/what-todo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore vs. Sharepoint</title>
		<link>http://mcore.wordpress.com/2008/10/31/sitecore-vs-sharepoint/</link>
		<comments>http://mcore.wordpress.com/2008/10/31/sitecore-vs-sharepoint/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 10:26:27 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/2008/10/31/sitecore-vs-sharepoint/</guid>
		<description><![CDATA[Just read a really good series of posts from Julius Ganns in Germany. The series is a developer-centric view of the differences between Microsot Sharepoint and Sitecore CMS, covering the strengths and weaknesses in the two products. Although Julius works with netzkern, a German Sitecore partner and training center, the series is fairly objective and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=57&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just read a really good series of posts from Julius Ganns in Germany. The series is a developer-centric view of the differences between Microsot Sharepoint and Sitecore CMS, covering the strengths and weaknesses in the two products.
</p>
<p>Although Julius works with netzkern, a German Sitecore partner and training center, the series is fairly objective and I would consider a must-read for all you people in the Sitecore/Sharepoint community interested in where Sitecore/Sharepoint can help you.
</p>
<p>You can find the series <a href="http://jgnk.spaces.live.com/blog/cns!457F4BDBA1A371A5!271.entry">here</a>.
</p>
<p>Good work Julius – looking forward to the next post.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=57&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/10/31/sitecore-vs-sharepoint/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft TechEd EMEA 2008</title>
		<link>http://mcore.wordpress.com/2008/10/25/microsoft-teched-emea-2008/</link>
		<comments>http://mcore.wordpress.com/2008/10/25/microsoft-teched-emea-2008/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 18:53:27 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=54</guid>
		<description><![CDATA[Jens and I from the Pentia Core team are going to attend the Microsoft TechEd 2008 conference in Barcelona, 10-14 November. Over 200 sessions of tech talk over 5 days &#8211; who could wish for more:-) (Plus we&#8217;ve also managed to get tickets for FC Barcelona vs. Valladolid at Camp Nou &#8211; I&#8217;m soo excited!) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=54&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jens and I from the Pentia Core team are going to attend the Microsoft TechEd 2008 conference in Barcelona, 10-14 November. Over 200 sessions of tech talk over 5 days &#8211; who could wish for more:-)<br />
(Plus we&#8217;ve also managed to get tickets for FC Barcelona vs. Valladolid at Camp Nou &#8211; I&#8217;m soo excited!)</p>
<p>Are others of you in the Sitecore community also attending the conference? Maybe we should get together for a talk about how the topics could be applied in our daily work with Sitecore. Write me a comment if you are interested.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=54&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/10/25/microsoft-teched-emea-2008/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>XslExtensions be gone – part 2</title>
		<link>http://mcore.wordpress.com/2008/10/20/xslextensions-be-gone-%e2%80%93-part-2/</link>
		<comments>http://mcore.wordpress.com/2008/10/20/xslextensions-be-gone-%e2%80%93-part-2/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 09:51:02 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[XSL]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=29</guid>
		<description><![CDATA[As described in part one of my post, we at Pentia have for some time had a bad feeling about the XSLT extensions concept introduced by Microsoft in the XsltTransform class and implemented further in Sitecore. We feel that XSLT&#8217;s belong in the UI tier (in a traditional n-tier architecture) and XSLT extensions has a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=29&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As described in part one of my post, we at Pentia have for some time had a bad feeling about the XSLT extensions concept introduced by Microsoft in the XsltTransform class and implemented further in Sitecore. We feel that XSLT&#8217;s belong in the UI tier (in a traditional n-tier architecture) and XSLT extensions has a tendency to introduce a mix of UI and business layer functionality and limited by the type restrictions in XSLT.
</p>
<p>All developers (in their right minds) knows that asp.net codebehind files should contain UI layer functionality, not business logic, and that one c# codebehind file is bound to one asp.net file. What we want to achieve, is to have the same link between codebehind files in ASP.NET and XSLTs, therefore in our internal projects at Pentia, we have introduced the concept of XSLT codehind files.
</p>
<p>So how does that work, you might ask?</p>
<p>Basically, we&#8217;ve developed a module which is included in all our projects (through our build environment), which automatically links XSLT extension classes to XSLT files through a common namespace. The module consists of an overridden Sitecore.Web.UI.WebControls.XslFile class, which overrides the AddExtensionObjects function:<br />
<code><br />
&nbsp;&nbsp;public class XslCodebehindFile : Sitecore.Web.UI.WebControls.XslFile<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;protected override void AddExtensionObjects(XsltArgumentList list, Item item)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//...<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
</code></p>
<p>The AddExtensionObjects function dynamically determines which .NET class is the codebehind file for the current XSLT and adds it to the XsltArgumentList with a specific namespace (in our case http://www.pentia.net/codebehind). The class to add is determined via a custom .NET Attribute class which decorates the codebehind class (see the example below).
</p>
<p>Furthermore the module implements an overridden Sitecore.Web.UI.XslControlRenderingType class:<br />
<code><br />
&nbsp;&nbsp;public class XslCodebehindControlRenderingType : XslControlRenderingType<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;public override Control GetControl(NameValueCollection parameters, bool assert)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Returns the XslCodebehindFile class instead of the XslFile class<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
</code><br />
This class is used by the Sitecore renderings engine to return the .NET class which implements a Sitecore rendering type. The class is hooked into Sitecore through the web.config (done automatically though our build environment):<br />
<code><br />
&lt;configuration&gt;<br />
&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
&nbsp;&nbsp;&lt;sitecore&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;renderingControls&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;control template="xsl rendering"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type="PT.XslCodebehind.XslCodebehindControlRenderingType, PT.XslCodebehind"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propertyMap="Path=path" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
</code></p>
<p>
So how does the developer actually use it?
</p>
<p>The developer starts by writing his XSLT file, e.g. /xsl/newslist.xslt. Most often it turns out that XSLT files does not even require codebehind or that the required functionality is implemented in the Sitecore XSLT extensions, but in the rare cases where advanced functionality is required (e.g. paging in the list of news) the developer creates a c# class file named newslist.xslt.cs (to keep the naming conventions defined by Microsoft). The class in the file is decorated with the XslCodebehind attribute which points to the fully qualified XSLT file:<br />
<code><br />
&nbsp;&nbsp;[XslCodebehind("/xsl/NewsArchive.xslt")]<br />
&nbsp;&nbsp;public class NewsArchive<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//All functions in this class can be called in NewsArchive.xslt<br />
&nbsp;&nbsp;&nbsp;&nbsp;public Int32 GetCurrentPageIndex(XPathNodeIterator archive)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//...<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;public Int32 GetPreviousPageIndex(XPathNodeIterator archive)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//...<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;public Int32 GetNextPageIndex(XPathNodeIterator archive)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//...<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</code><br />
This class is then automatically linked into the XSLT file at runtime and can be called though the http://www.pentia.net/codebehind namespace:<br />
<code><br />
&nbsp;&nbsp;&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&nbsp;&nbsp;&lt;xsl:stylesheet version="1.0"<br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsl="http://www.w3.org/1999/XSL/Transform"<br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:sc="http://www.sitecore.net/sc"<br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:codebehind="http://www.pentia.net/codebehind"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exclude-result-prefixes="sc codebehind"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xsl:template match="*" mode="main"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="?p={codebehind:GetNextPageIndex(.)}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- ... --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/xsl:template&gt;<br />
&nbsp;&nbsp;&lt;/xsl:stylesheet&gt;<br />
</code><br />
Easy-peasy – no meddling about in web.config and a much tighter coupling between XSLT files and their .NET functions.
</p>
<p>The XSLT codebehind functionality took me about half a day to code and include into all our projects. It has made it practically easier for developers to link functionality to XSLT files and conceptually easier to understand the placement of the XSLT functionality in the UI layer.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=29&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/10/20/xslextensions-be-gone-%e2%80%93-part-2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>XslExtensions be gone! &#8211; part 1</title>
		<link>http://mcore.wordpress.com/2008/10/03/xslextensions-be-gone-part-1/</link>
		<comments>http://mcore.wordpress.com/2008/10/03/xslextensions-be-gone-part-1/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 06:47:57 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[XSL]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/2008/10/03/xslextensions-be-gone-part-1/</guid>
		<description><![CDATA[One of the features of Sitecore which challenges correct development practise is XslExtensions (or XslHelpers as we call them). Good examples of XslExtensions are the Sitecore.Xml.Xsl.XslHelper and Sitecore.Xml.Xsl.SqlHelper classes (read more here). The possibility of hooking in your own .NET functions into your XSLT code is a vital part of Sitecore, but the concept of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=28&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the features of Sitecore which challenges correct development practise is XslExtensions (or XslHelpers as we call them). Good examples of XslExtensions are the Sitecore.Xml.Xsl.XslHelper and Sitecore.Xml.Xsl.SqlHelper classes (read more <a href="http://sdn5.sitecore.net/Articles/XSL/Using%20XSL%20Extension%20Objects/Creating%20Sitecore%20XSL%20Extension%20Function.aspx">here</a>).
</p>
<p>The possibility of hooking in your own .NET functions into your XSLT code is a vital part of Sitecore, but the concept of XslExtensions brings a few problems to the party:
</p>
<ul>
<li>XslExtensions are actually a return to the world of functional programming and removes the concept of which context your code is running.
</li>
<li>XslExtensions are loosly bound to where it is used. In practise it is difficult to know from where your code is being called – if it is called at all.
</li>
<li>Hooking in XslExtensions requires changes to your web.config file. This is actually not a big problem, but it would be nice to be without.
</li>
<li>XslExtension methods require specific types as input and output. Therefore if you introduce nice functionality in a XslExtension method, it is bound to the XSLT compliant types.
</li>
<li>XslExtensions lies on the border between the UI and the business logic tier of your application. Therefore XslExtensions can often be cluttered with methods which replicate and port functionality in your business logic to XSLT compliancy, or actually introduces new business logic functionality.
</li>
</ul>
<p>A good example of this last two points are Sitecore.Xml.Xsl.XslHelper.HasBaseTemplate() method, which is actually the only place in the Sitecore API where you can query whether an Item derives from a given template. This means that if you need this code in ASP.NET, you need to replicate the functionality in your own classes or &#8211; even worse – call Sitecore.Xml.Xsl.XslHelper.HasBaseTemplate() from your ASP.NET codebehind.
</p>
<p>So, what can we do to try to enforce good development practise while still maintaining the essential functionality of exposing .NET methods to XSLT&#8217;s? I&#8217;ll get back to that in part two of my post.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=28&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/10/03/xslextensions-be-gone-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore Roadmap</title>
		<link>http://mcore.wordpress.com/2008/09/13/sitecore-roadmap/</link>
		<comments>http://mcore.wordpress.com/2008/09/13/sitecore-roadmap/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 06:16:05 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/2008/09/13/sitecore-roadmap/</guid>
		<description><![CDATA[Sitecore has released a roadmap for future versions, featuring editor clustering, user personalization and more.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=25&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just attended an official Sitecore 6 presentation held here in Copenhagen by Sitecore Denmark (Presentations <a href="http://spn.sitecore.net/news/sitecore%20events/sitecore%20cms%206%20partnerlancering.aspx">here</a> –in Danish). The Sitecore 6 content was mildly entertaining, but can all be <a href="http://sdn5.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/Whats_New.aspx">read on the SDN</a>. What was really interesting though, was the presented roadmap for future Sitecore versions – one of the first I&#8217;ve ever seen for the Sitecore product.
</p>
<p>The next release will be Q1 2009 and is codenamed &#8220;Twin Peaks&#8221;. According to Sitecore, this will be a minor release primarily focused on scalability, i.e. clustering of the master/editing servers and transactional publish. This will allow Sitecore to run live mode (no publishing) on a scaled environment as well as allowing partial clearing of the caches. These features are super important for the Sitecore product and something I&#8217;m personally looking very much forward to.
</p>
<p>After &#8220;Twin Peaks&#8221; comes &#8220;Everest&#8221; – Q2 2009. As I see it, a version which is primarily defined by the marketing division of Sitecore. It is planned to include personalization, analytics and reporting features – nice features, but not something I as developer and architect is going to lie sleepless in anticipation over. That said, I&#8217;m sure we&#8217;ll all experience more user driven and personalized websites in the future which means that Sitecore is delivering.
</p>
<p>Not included in the roadmap was &#8220;Massif&#8221;, which rumor says is going to contain database and content scaling – the ability to have thousands of items on one leaf in the hierarchy. For me this is the big one – imagine not having to force one hierarchical view on to parts of your data. For example, in current versions of Sitecore we are forced to group the news data of a solution after date, category or something other. But then if the date on the news item changes, we have to move the item to another folder or what if news can have multiple categories… Hopefully &#8220;Massif&#8221; will help us out on this, allowing items to be created in one big pile and extracted using indexing.
</p>
<p>Conclusion: Good job, Sitecore – please bring more roadmaps in the future!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/25/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/25/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=25&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/09/13/sitecore-roadmap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Reference to templates</title>
		<link>http://mcore.wordpress.com/2008/09/01/reference-to-templates/</link>
		<comments>http://mcore.wordpress.com/2008/09/01/reference-to-templates/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 21:49:01 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[XSL]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=20</guid>
		<description><![CDATA[The last couple of weeks I have stumbled on several people referring to a specific template when developing XSLT’s or in some other code. Even Sitecores standard XSL does it: &#60;xsl:variable name=&#8221;home&#8221; select=&#8221;$sc_item/ancestor-or-self::item[@template='site root']&#8221; /&#62; It is fine that they finally removed the hardcoded path to /sitecore/content/home, but in my opinion the reference to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=20&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The last couple of weeks I have stumbled on several people referring to a specific template when developing XSLT’s or in some other code. Even Sitecores standard XSL does it:</p>
<p>&lt;xsl:variable name=&#8221;home&#8221; select=&#8221;$sc_item/ancestor-or-self::item[@template='site root']&#8221; /&gt;</p>
<p>It is fine that they finally removed the hardcoded path to /sitecore/content/home, but in my opinion the reference to the specific template ‘site root’ is still bad practice.</p>
<p>When developing a site one should take into account, that the site can be expanded, altered or duplicated later on. In the process of doing so, it is likely that a new template is created, which then inherits from the original template (in this case the ‘site root’). If this is the case all your renderings will stop working, just because you wanted to add a field, change a rendering or in any other way alter the original template.<br />
Instead you should test whether an item is of a given ‘type’ – testing if the template the item is based on is equal to <em>or derives from</em> a specific template. This functionality has even been included in the XSLHelper class in Sitecore 6. Now it is possible to do the test like this:</p>
<p>&lt;xsl:variable name=&#8221;home&#8221; select=&#8221;$sc_item/ancestor-or-self::item[sc:IsItemOfType('site root',.)]&#8220;/&gt;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=20&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/09/01/reference-to-templates/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>No More Masters</title>
		<link>http://mcore.wordpress.com/2008/08/20/no-more-masters/</link>
		<comments>http://mcore.wordpress.com/2008/08/20/no-more-masters/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 08:13:27 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=18</guid>
		<description><![CDATA[Sitecore 6 has retired the masters term – a fine decision which hopefully will remove a lot of the obvious mistakes made when designing Sitecore 4 and 5 solutions, e.g. like assigning masters and layout directly to a content item. The concept has been substituted by the possibility to assign templates directly templates (i.e. &#8220;Which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=18&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sitecore 6 has retired the masters term – a fine decision which hopefully will remove a lot of the obvious mistakes made when designing Sitecore 4 and 5 solutions, e.g. like assigning masters and layout directly to a content item.
</p>
<p>The concept has been substituted by the possibility to assign templates directly templates (i.e. &#8220;Which templates can be created under this page type&#8221; instead of &#8220;Which prefilled items can be created under this page type&#8221;). The prefilled data on the master (which was copied to the items) can still be applied using Standard Values (which was there in Sitecore 5 as well). Standard Values are made even more powerful than in Sitecore 5 since it now derived through all inheritance levels, i.e. if DerivedItem is created from DerivedTemplate which derives from BaseTemplate, standard values set on BaseTemplate also applies to DerivedItem. This means that you can e.g. set a layout on BaseTemplate and thus all the derived templates will now have a standard layout which you apply changes to.
</p>
<p>With this and other features, Sitecore 6 has made some nice changes to force developers to design better Sitecore solutions by applying content reuse and thus makes the solution easier maintainability. But there are some issues: Sitecore 6 no longer indicates whether a value is a standard value or actually applied to the item (see below). In my opinion this is a major flaw. It is vital for developers and administrators to be able to instantly determine whether a value should be changed directly on the item or on the template, thereby allowing them to think about whether the change should be universal or local change. An ugly dent in the before mentioned &#8220;changes to force developers to design better Sitecore solutions&#8221;. Thankfully the designer of the DBBrowser (hail!) has not been so rash – but this is still not a tool I would like my users (even the super-ones) to see. Hopefully this will return in an upcoming hotfix.
</p>
<p><img src="http://mcore.files.wordpress.com/2008/08/082008-0813-nomoremaste1.png?w=497">
	</p>
<p><img src="http://mcore.files.wordpress.com/2008/08/082008-0813-nomoremaste2.png?w=497">
	</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/18/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/18/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=18&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/08/20/no-more-masters/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>

		<media:content url="http://mcore.files.wordpress.com/2008/08/082008-0813-nomoremaste1.png" medium="image" />

		<media:content url="http://mcore.files.wordpress.com/2008/08/082008-0813-nomoremaste2.png" medium="image" />
	</item>
		<item>
		<title>The /sitecore folder &#8211; runtime</title>
		<link>http://mcore.wordpress.com/2008/07/08/the-sitecore-folder-runtime/</link>
		<comments>http://mcore.wordpress.com/2008/07/08/the-sitecore-folder-runtime/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 21:03:28 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[5.3]]></category>
		<category><![CDATA[configuration]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=15</guid>
		<description><![CDATA[In the Sitecore SDN Forums, Michael Lumpp just asked a very interesting question: &#8220;Do I have to have the &#8216;sitecore&#8217; folder on the runtime server?&#8221; (i.e. does the running website need any files in the /sitecore folder) I&#8217;ve been working with Sitecore for quite a while now and my first though on this reply was [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=15&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the Sitecore SDN Forums, Michael Lumpp just asked a very interesting question: <a href="http://sdn5.sitecore.net/forum/ShowPost.aspx?PostID=10163">&#8220;Do I have to have the &#8216;sitecore&#8217; folder on the runtime server?&#8221;</a> (i.e. does the running website need any files in the /sitecore folder)</p>
<p>I&#8217;ve been working with Sitecore for quite a while now and my first though on this reply was &#8220;Of course you cannot remove the Sitecore folder, because&#8230;&#8221; &#8211; well because what? So my second though was &#8220;Dammit i&#8217;ll try it out&#8221; &#8211; and&#8230;
</p>
<blockquote><p>System.Xml.XmlException: &#8220;The root element is missing&#8221;
</p>
</blockquote>
<p>To be frank, I&#8217;ve not once though to remove the Sitecore folder even from some of the major solutions I&#8217;ve been on &#8211; and it makes perfect sense. There really should be no runtime specific data in the /sitecore folder &#8211; well at least not in the /sitecore/admin, /sitecore/debug, /sitecore/login, /sitecore/shell, /sitecore/testing (actually /sitecore/testing sound like it should not have been released at all), and the folders not mentioned here sound like they at least could be removed on some projects. So why does it fail?
</p>
<p>It seems one runtime file has snuck its way into the /sitecore folder – to be more precise: sitecore/shell/Security templates.xml. Because security is such a low level part of Sitecore and affects all reading of data via the API, and since all data in Sitecore are based on templates – even security data &#8211; initializing the templates for Users, Roles must be done before all data access through the normal API can begin (a genuine catch 22). The templates for security are therefore specified in a file – Security templates.xml.
</p>
<p>Luckily this file – along with its path &#8211; is specified in the web.config and can therefore be moved (two changes are necessary &#8211; to find them search for the path), and &#8211; hey presto – the /sitecore folder can be removed with out exceptions being thrown.
</p>
<p>Please note that there are other links in the web.config file which must be changed, e.g. /sitecore/nolayout.aspx which is used to show a pretty error page when a layout is not present on an item. But these should be fairly simple.
</p>
<p>Also note that this is Sitecore 5.3 only – Sitecore 6 has an entirely different security architecture and therefore none of the above is probably valid.
</p>
<p>Happy /sitecore deleting <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=15&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/07/08/the-sitecore-folder-runtime/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Type before function?</title>
		<link>http://mcore.wordpress.com/2008/05/28/type-before-function/</link>
		<comments>http://mcore.wordpress.com/2008/05/28/type-before-function/#comments</comments>
		<pubDate>Wed, 28 May 2008 15:33:22 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/2008/05/28/type-before-function/</guid>
		<description><![CDATA[I&#8217;ve recently been made aware of how type-centric Sitecore is in its architecture and best practices. Consider the main sections in Sitecore: Content, Templates, Layouts, and even the folder structure /xsl, /layouts. Sitecore seems inherently to point the architect towards categorizing his solution after which types of elements it consists of, i.e. which templates do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=14&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been made aware of how type-centric Sitecore is in its architecture and best practices.
</p>
<p>Consider the main sections in Sitecore: Content, Templates, Layouts, and even the folder structure /xsl, /layouts. Sitecore seems inherently to point the architect towards categorizing his solution after which types of elements it consists of, i.e. which templates do my website consist of, how many layouts do I have, which XSL&#8217;s do I have to write etc. instead of looking at the conceptual structure of the website, i.e. which functionality do I have, e.g. newsletter, document, navigation etc. Trying to piece together all the parts which make one function on the website involves browsing through a lot of folders in Sitecore and looking into a lot of code, whereof many of the references are very loose e.g. template names in XSLT files, or assembly references in the web.config (or even worse: assembly references in Sitecore). All in all it is not an architecture which is very helpful for reuse and overview.
</p>
<p>I vision Sitecore in a future version working in a more functionality-centric way, for example imagine the Sitecore content tree:
</p>
<ul>
<li>
<div>/sitecore
</div>
<ul>
<li>Content (This is where the editors edit the site – not much different here)
</li>
<li>
<div>Components (This is where we &#8211; the developers &#8211; roam)
</div>
<ul>
<li>
<div><em>Component</em> (each functionality has its own section)
</div>
<ul>
<li>Templates (this defines the templates for this component)
</li>
<li>Presentation (This defines all the presentation elements for this component, layouts, renderings etc.)
</li>
<li>Settings (General settings, dictionary texts etc. needed by the component)
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>…and that&#8217;s it. No more browsing the entire tree looking for the settings for the Mailing list module. No more: &#8220;I wonder if this layout is used by any of my 367 templates&#8221;. No more: &#8220;Was that document.xsl or document.ascx&#8221;. Just imagine the ease in making of package for porting functionality to a new website.
</p>
<p>Just my two cents…</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=14&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/05/28/type-before-function/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Assigning layouts</title>
		<link>http://mcore.wordpress.com/2008/05/16/assigning-layouts/</link>
		<comments>http://mcore.wordpress.com/2008/05/16/assigning-layouts/#comments</comments>
		<pubDate>Fri, 16 May 2008 07:30:07 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=13</guid>
		<description><![CDATA[My first idea was to write a post about the top 5 mistakes when developing in Sitecore, but then I decided to go for the one potential danger I consider grave enough for its own post: Assigning layouts to items. A layout is basically a simple field (__layout) on an item which describes how the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=13&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My first idea was to write a post about the top 5 mistakes when developing in Sitecore, but then I decided to go for the one potential danger I consider grave enough for its own post: Assigning layouts to items.
</p>
<p>A layout is basically a simple field (__layout) on an item which describes how the item is rendered by the rendering engine, and as such can be assigned on the item and on the Standard values (<a href="http://sdn5.sitecore.net/End%20User/Template%20Manager/Standard%20Values.aspx">http://sdn5.sitecore.net/End%20User/Template%20Manager/Standard%20Values.aspx</a>).
</p>
<p>On pre-5.3 version of Sitecore standard values was not available, so in order to have layout reuse, layouts was assigned to templates. This functionality has been preserved in Sitecore 5.3 for backward compatibility. I&#8217;ve actually just recently been made aware of Sitecore&#8217;s recommendation on putting layout settings on standard values instead of on the template. Architecturally this is absolutely the right way to go – the template way was a hardcoded layout engine functionality to enable reuse.
</p>
<p>Well to get back to the point: <strong>Do not – ever – assign layouts directly to items.<br />
</strong></p>
<p>Assigning layouts to template standard values gives you the reuse you want and need, in order to maintain an architecturally sound Sitecore installation. Consider a situation where you have a layout (header, footer, menu, spots, content) defined on your document template, and you want to introduce a breadcrumb on your site. If the architecture is correct, this can be accomplished merely by changing the document template and all documents on your website will be updated.
</p>
<p>Then again consider a situation where 10 specific documents need a slightly different layout. Well, the simplest way would be to just set the layout directly on these documents. WRONG! Settings layouts on directly on items primarily set aside all reuse, but more importantly makes you completely loose the overview of your solution. If you in this case wish to introduce a breadcrumb you will have to manually find (on your 10.000 page website) the items which has a specific layout and correct these – which often leads you to the painstaking realization that you have to write a script.
</p>
<p>Therefore what you should consider is introducing data templates and layout templates and use template inheritance. In projects in Pentia, we define fields and functionality in one template then derive to another template and set the layout on this. Consider a template DocumentData which holds the fields Title and Text, and another, Document, which derives from DocumentData and define the layout (and other standard values). If I need specific layouts on certain items, I derive another layout template from DocumentData, e.g. WideDocument, which then defines the specific layout. This means that all layout settings are always in the Templates section of Sitecore – easy to find and reusable.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=13&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/05/16/assigning-layouts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Shared Source Modules</title>
		<link>http://mcore.wordpress.com/2008/03/03/shared-source-modules/</link>
		<comments>http://mcore.wordpress.com/2008/03/03/shared-source-modules/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 13:46:51 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Open source]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Sitecore modules]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=9</guid>
		<description><![CDATA[Great! Sitecore has extended its platform for its shared source modules on sdn. Now they offer Subversion and Trac, so that we all can help make the modules even better. That I am able to influence the modules directly, makes me seriously consider using one of these modules next time. The logical question is: why [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=9&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Great! Sitecore has extended its platform for its <a href="http://sdn5.sitecore.net/Resources/Shared%20Source/Modules.aspx">shared source modules</a> on sdn. Now they offer <a href="http://svn.sitecore.net/Blog/">Subversion</a> and <a href="http://trac.sitecore.net/Blog">Trac</a>, so that we all can help make the modules even better. That I am able to influence the modules directly, makes me seriously consider using one of these modules next time.<br />
The logical question is: why not extend this with all the official modules? It&#8217;s not like the code is obfuscated or anything, so we can look into it anyway &#8211; and this way we can all contribute to making the Sitecore product even better.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=9&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/03/03/shared-source-modules/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Crestone Beta</title>
		<link>http://mcore.wordpress.com/2008/03/03/crestone-beta/</link>
		<comments>http://mcore.wordpress.com/2008/03/03/crestone-beta/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 10:20:28 +0000</pubDate>
		<dc:creator>Jens Mikkelsen</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Crestone]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=8</guid>
		<description><![CDATA[If you didn&#8217;t know it, Crestone is the &#8220;codename&#8221; for the next version of Sitecore, and today I noticed you could sign up for the Crestone Beta Program. You can be a Crestone beta tester, that is! Well I signed up and hope to be selected for the program. Exciting to see what the developers [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=8&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you didn&#8217;t know it, Crestone is the &#8220;codename&#8221; for the next version of Sitecore, and today I noticed you could <a href="http://sdn5.sitecore.net/Crestone.aspx">sign up</a> for the Crestone Beta Program. You can be a Crestone beta tester, that is!</p>
<p>Well I signed up and hope to be selected for the program. Exciting to see what the developers have come up with. Especially Im looking forward to have a look at the new security engine. Further it&#8217;s very nice that the next version of Sitecore has an actual beta fase. Hopefully this will ensure, that most bugs are handled before an actual release.</p>
<p>One thing though&#8230; You have to sign up via fax! What?!? Cutting edge technology CMS vendor Sitecore couldn&#8217;t make an online sign up form? Well it made me laugh. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=8&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/03/03/crestone-beta/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df4c1f864ec5c9c21f8e21c6a7cc07d0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jens Mikkelsen</media:title>
		</media:content>
	</item>
		<item>
		<title>Continuous Integration and Sitecore</title>
		<link>http://mcore.wordpress.com/2008/02/29/continous-integration-and-sitecore/</link>
		<comments>http://mcore.wordpress.com/2008/02/29/continous-integration-and-sitecore/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 09:43:30 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[CruiseControl.NET]]></category>
		<category><![CDATA[nant]]></category>
		<category><![CDATA[Sitecore modules]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=7</guid>
		<description><![CDATA[We have recently launched our internal Continuous Integration environment for use in our many Sitecore projects. The setup is pretty straightforward with NAnt, CruiseControl.NET and Subversion in beautiful harmony. Because of the integration with Visual Studio, we would have liked to use Visual Studio Team System, but the pricing deterred us. When nAnt, CC.NET and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=7&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We have recently launched our internal Continuous Integration environment for use in our many Sitecore projects. The setup is pretty straightforward with NAnt, CruiseControl.NET and Subversion in beautiful harmony. Because of the integration with Visual Studio, we would have liked to use Visual Studio Team System, but the pricing deterred us. When nAnt, CC.NET and Subversion are so cool why on earth has Microsoft set their price so high? In my view, they could have cornered the entire .NET based market by having a more relaxed price policy.<br />
Well back to the point: We have tried to implement an environment which helps our developers and increases productivity, by removing some of the mundane tasks of developing in Sitecore. I am real excited about the prospects, so I would like to share some of the cool features we’ve implemented:</p>
<p><strong>Module Library:</strong><br />
We have collected an entire module library, including all newer version of Sitecore, all Sitecore modules as well as all our internal modules. This means that when starting a new project, or when implementing a new modules in a project, the customer merely points the build configuration to which modules the project uses, and &#8211; hey presto – the module is included in the project. This includes code files, Sitecore packages, configuration file changes (see later) and all other related files. The point is – the project points to a module, and the module is responsible for integrating itself in the project.</p>
<p><strong>Configuration files management:</strong><br />
We have previously had a lot of hassle trying to maintaining changes in the Sitecore web.config as well as all the other configuration files. Trying to keep all config files in all project targets (dev, test, prod, etc.) synchronized is a pain. Therefore we have developed a nAnt task which when running the build, merges project/module specific changes into Sitecores standard configuration file. I.e. when a full build is run:</p>
<ol>
<li>The standard Sitecore configuration files are copied from the Module Library (from the correct version of Sitecore)</li>
<li>The relevant Sitecore modules standard configuration changes are merged into the configuration files</li>
<li>Dependant on which target the build is for, the project specific configuration changes (connection strings etc.) are merged into the configuration files.</li>
</ol>
<p>A side from keeping the configuration files synchronized, this also means that when upgrading Sitecore (a task which basically to point the project to the new version in the module library) all Sitecore’s new or changed configuration settings are automatically included.</p>
<p>Our CI environment also implements Subversion, MSBuild, FxCop, automatic test server deployment and installation versioning/packaging.<br />
One of the problems we are facing with Sitecore and CI is the amount of functionality and configuration hosted in the Sitecore database. We’ve through hard about e.g. integrating the Sitecore packager with the build environment, but dropped the idea. Please let me know if you’ve done something similar.<br />
As you can hear i&#8217;m pretty excited about this, and would really like to make it as cool as possible &#8211; so throw me a comment if you have experiences with CI/build environments and Sitecore.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=7&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/02/29/continous-integration-and-sitecore/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Open source modules</title>
		<link>http://mcore.wordpress.com/2008/02/26/6/</link>
		<comments>http://mcore.wordpress.com/2008/02/26/6/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 20:31:59 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Open source]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Sitecore modules]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/2008/02/26/6/</guid>
		<description><![CDATA[For a while, Pentia has been working on a new Forum module for Sitecore. As some of you might know there are some licensing issues which causes problems with the current Community Server based implementation. As thing are looking now, the new Forum module will be based on YetAnotherForum.NET, a .NET/MSSQL based open-source discussion forum [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=6&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For a while, Pentia has been working on a new Forum module for Sitecore. As some of you might know there are some licensing issues which causes problems with the current Community Server based implementation.<br />
As thing are looking now, the new Forum module will be based on <a href="http://www.yetanotherforum.net/">YetAnotherForum.NET</a>, a .NET/MSSQL based open-source discussion forum or bulletin board system. This means that the source code for the forum system, which is licensed as GPL, will be distributed along with the module.<br />
Hopefully this will spread as a trend within the Sitecore modules, as one of problems I often face is trying to get the restrained standard modules to work the way I, or rather the customer, wants or expects it to behave. What I find, is that we Sitecore developers today face the option of using the modules and the module functionality as is, or to code the functionality from scratch.<br />
I truely hope that the future Sitecore modules will be more flexible and open &#8211; perhaps even the source <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=6&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/02/26/6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
		<item>
		<title>Configuration in Sitecore</title>
		<link>http://mcore.wordpress.com/2008/02/26/configuration-in-sitecore/</link>
		<comments>http://mcore.wordpress.com/2008/02/26/configuration-in-sitecore/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 08:31:19 +0000</pubDate>
		<dc:creator>Eldblom</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[Design Patterns]]></category>

		<guid isPermaLink="false">http://mcore.wordpress.com/?p=4</guid>
		<description><![CDATA[Ever considered putting environment specific configuration in the Sitecore database? &#8230;well don&#8217;t. In the official Mailing list module, Sitecore has, among others, placed the database connection string and we have nothing but grief from it. Consider moving from development to test to production, or in the latest example a customer wanted to have an internal [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=4&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ever considered putting environment specific configuration in the Sitecore database? &#8230;well don&#8217;t.<br />
<br />
In the official Mailing list module, Sitecore has, among others, placed the database connection string and we have nothing but grief from it. Consider moving from development to test to production, or in the latest example a customer wanted to have an internal test site nightly updated with the production database. Sigh!<br />
<br />
Real Sitecore style, we&#8217;ve even looked into the possibility of hooking into the database connection of the mailing list module &#8211; but no:</p>
<ul>
<li>
  All database access in the MailingList module goes through the <u>internal</u> class Sitecore.Modules.MailingList.Core.SqlHelper
</li>
<li>
  This class is only accessible through the <u>internal</u> property SqlHelper SqlHelper in Sitecore.Modules.MailingList.Core.MailingList
</li>
<li>
  SqlHelper opens a database connection in the protected <u>(but not virtual)</u> IDbConnection CreateConnection()
</li>
<li>
  This function returns an SqlConnection if the Sitecore field &#8220;Database&#8221; contains the text &#8220;MSSQLSERVER&#8221; (*Sigh*), otherwise an OleDbConnection is opened
</li>
<li>
  The sql server ConnectionString is read from public <u>static</u> string Sitecore.Modules.MailingList.Core.MailingListSettings.ConnectionString
</li>
<li>
  This property reads the value from the field ConnectionString in the Sitecore database
</li>
</ul>
<p>As you can see there is no way of plugging in anywhere&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcore.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcore.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcore.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcore.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcore.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcore.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mcore.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mcore.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mcore.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mcore.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcore.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcore.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcore.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcore.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcore.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcore.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcore.wordpress.com&amp;blog=2983764&amp;post=4&amp;subd=mcore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mcore.wordpress.com/2008/02/26/configuration-in-sitecore/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ebef7d147872a290a73b7d8d0f4ab52?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eldblom</media:title>
		</media:content>
	</item>
	</channel>
</rss>
