Work smarter and help streamline your Sitecore development lifecycle with this collection of development tools and resources for Sitecore developers.
As Sitecore developers we all face a common set of tasks and challenges: installing, configuring, designing, developing, testing and deploying, and if you're human, there's likely the occasional debugging session. With this in mind, I thought I'd put together a list of some of the tools and resources that can help to reduce the load and streamline your Sitecore development lifecycle.
Sitecore's developer community is full of active innovators, willing to share their solutions and help enhance our Sitecore experience. Which means this list, while it includes some contributions to the Sitecore Marketplace, is by no means exhaustive.
So before I start, a big thanks to all those who have helped to make my Sitecore development environment a nicer place to visit!
In no particular order:
Luke is an essential piece of kit for any developer working with Sitecore's search indexes – so basically all of us.
Luke provides you with a list of the indexed fields and documents for a given index and allows you to write Lucene query's against them.
Since the original Java (Apache) implementation, a .NET version is also available from CodePlex. Regardless of which interface you prefer, it’s the only option we could find out there that will give you a free and comprehensive view into the new Sitecore 7.x ContentSearch indexes.
While Sitecore's shared source index viewer is still a viable option for instances running on 6.5.x and below, if you have any plans to upgrade to 7.x I'd recommend familiarizing yourself with Luke now and taking advantage of its feature set before you need to.
- Sitecore Instance Manager
Sitecore Instance Manager (SIM) is available from the Sitecore Marketplace and works as an end-to-end Sitecore installer. Out of the box it lists and allows management of your local Sitecore installs. When you need to install another Sitecore instance, SIM will configure the necessary databases, IIS websites/app pools and create Visual Studio project structures all within minutes.
So MVC ready, isolated delivery instances, with WFFM, ECM Weblog and DMS can be up and running in an instant.
Add in API access and you have the tools to fully automate your environment configuration and installation.
SIM requires an SDN account to download Sitecore distributions and a valid license. Once you are set up you'll find yourself free to focus on that new prototype and try out new modules and Sitecore versions without the overhead generated by the setup and configuration of a new Sitecore instance.
More Information on SIM is available here.
It's worth calling out the Sitecore Installer here, which is also available from the Sitecore Marketplace. It offers a comparable feature set and who can argue with a running instance in under 15 seconds. This video gives you a closer look.
- Linq Pad
Linq Pad is a design, profiling and debugging tool for your Linq to 'x' queries. You can copy your Linq to Object Queries directly from Visual studio into Linq Pad and see into the filtered data collections for each operation in your query.
You'll need to run queries from within a Sitecore context to access to the Sitecore API. Luckily there's a simple post here from Adam Conn to help with this, and a follow up post that covers configuration generation with SIM 1.3.
If you're working with Sitecore 7 you may have also found the Linq ScratchPad implementation that comes with the CMS – ‘http://<domain>/sitecore/admin/LinqScratchPad.aspx.’ This can be a great time saver when trying out new Sitecore Search queries, as there's no need to re-compile your search classes when you change your mind.
If you find yourself needing to debug large Linq statements without breaking them down (or reverting to basic C# constructs) or you want to use a Linq focused IDE that can also run C# statements, expressions and even programs, Linq Pad is a must. It's also a helpful tool for anyone wanting to get to grips with Linq. Learn more about Linq Pad.
- Sitecore Rocks
Sitecore Rocks is a Sitecore supported, developer focused, Sitecore client, with most of the same functionality offered by Sitecore's admin screens. What makes Rocks truly useful is its context. As a Visual Studio plugin, Sitecore Rocks is able to help bridge the UI divide between code and item creation, so you no longer need to leave the Visual Studio IDE to manipulate content.
Here are just a few of the reasons you need Sitecore Rocks in your life:
Check out more on Sitecore Rocks here.
- Edit the content of Sitecore items from within Visual Studio – the Item Editor supports multi-edit so multiple items can be updated and deleted in a single operation
- Search any of your Sitecore databases directly from within Visual Studio
- Automatically create associated rendering items in Sitecore when you create .aspx, .ascx or .xsl files in Visual Studio
- Team Development for Sitecore (TDS)
Team Development for Sitecore (TDS) is a multi-faceted developer aid. Its primary function is to allow developers to version control critical Sitecore items by syncing serialized copies of templates, renderings, etc. to their local solutions. This enables developers to work locally (disconnected from shared databases) while still sending and receiving item updates to and from the rest of the developers on the team.
With the blueprint for your Sitecore architecture safely stored away, TDS frees you up to refactor your templates and renderings. Safe in the knowledge that you have the option to roll back to an earlier state from within your TDS projects.
TDS can also be configured to auto generate ORM (Custom Item Generator and Glass Mapper) classes for all templates. It has its own build targets, to aid in the deployment of your solution code and Sitecore items to remote environments and granular item deployment settings to ensure that only the items you want deployed actually make it.
More Information is available here.
- Sitecore Object Relational Mappers
Object Relational Mappers (ORM's) help to map C# types directly to templates and items within your Sitecore tree. This allows us to expose Sitecore fields as strongly typed members, forms a solid base for domain data models and enforces a consistent, best practice approach to interacting with the Sitecore.Data API.
Most Sitecore ORM's will augment basic type mapping, with useful extensions such as, field renderer support for page editor. If you find you need to add your own extensions. ORM's that offer configurable T4 templates, can usually be modified to fit your needs. Using TDS code generation features you can also automate the code generation process and ensure that important structural changes within your Sitecore tree are reflected within your solution code.
There are many options out there and most are freely available from the Sitecore Marketplace. If you're looking for a good place to start, I would recommend checking out Glass Mapper.
- Developer Center
If you've ever built or installed a Sitecore package, you've no doubt wandered into or noticed the developer center link ‘Sitecore > Developer Tools > Development Center.’ This is a confusingly sparse tool (i.e., why Linq ScratchPad, cache clearing, etc. are not included is a bit of a mystery) but one that’s worth familiarizing yourself with:
- Xpath Builder – Not something I use that heavily since Sitecore now recommends using their Search API's to query the content tree, although it can come in handy. For example, when you want to test out RSS Item selection queries. More syntax help and examples can be found in John West's cheat sheet.
- Profiler – Also accessible from the page editor, the page profiler offers detailed Sitecore centric performance metrics.
- Performance Analysis – Demonstrates how long each rendering takes to load.
- Cache Analysis – Shows which parts of a page are being called from Sitecore's cache.
- .NET Trace – Add or set
in the configuration section in your web.config file to access a .NET trace report viewer for all requests.
- Sitecore Admin Tools
Less of a revelation and more of a reminder, I touched on the addition of Linq Scratch pad to the admin toolkit earlier. Here are some of the more useful administrative tools that come with Sitecore.
The Website\sitecore\admin folder is also a good place to place any potentially dangerous (in a production sense) one off scripts. The hope is that they would never be deployed. In the event that they are, it would be handy if you have implemented the recommendations in Sitecore's security hardening guide. Then the contents of this folder should not be not addressable in your delivery environments.
- Cache Reporting – If your sites are heavily cached (recommended) then you're probably already familiar with the Sitecore cache clearing page. If you're not seeing updates hit the site, it's very possible that you're on your way to finding this hidden gem.
- Configuration Viewer – The output of ‘http://<domain>/sitecore/admin/ShowConfig.aspx’ allows you to view the Sitecore configuration settings from your web.config file, after the transformations defined in your App_Config\include folder have been applied. Allowing you to see the configuration that your Sitecore instance is actually using. Updated in 7.x to include reference comments so that you can track down which include configuration file the settings came from.
Other tools include:
- DB Browser - A lightweight Sitecore content administration tool that provides basic Sitecore functions and allows you to navigate along the template inheritance chain.
- Fill DB - A tool for quickly adding test content to your Sitecore instance.
- Pipelines - An overview of the currently active pipelines and their usage.
- Stats - Provides insight into the usage and cache coverage of your renderings across all pages in your site.
Here are a few highlights:
- Create and share coding guideline configurations with your team.
- Inline refactoring suggestions for added syntactic sugar.
- Refactor name spaces, individually, globally at the folder level. Safely extract new methods and properties from spaghetti code.
- Enforce style rules – build upon ReSharpers default style rules with the StyleCop plugin for ReSharper.
- Visual traffic light system to let you know when your classes are conformant.
- Code cleanup features can auto-correct your classes to make them conformant.
- Code inspection tools to identify non-conformant code across the entire solution.
Reflector helps to turn up the transparency on those occasional black boxes and shines a light on the darker areas of more open APIs. When it isn’t clear how Sitecore performs a task (i.e., the undocumented 120 character item name limit buried deep inside the old Search Crawler API), you can leverage reflector to take a look under the covers.
In its simplest form, Reflector allows you to browse through the name spaces and types in a given assembly and view much of the original code. Reflectors Visual studio plugin can create .pdb files for most assemblies, enabling the Visual Studio debugger to step through referenced assemblies while debugging your Sitecore instance.
Again, this is not an exhaustive list. Sitecore.net is an obvious contender, there’s a wealth of best practice guidelines and recommendations from their technical bloggers and documentation covering everything from setting up your first development environment, through to delivery environment performance tuning.
Don’t forget to keep an eye on the Sitecore Marketplace and remember to follow to the Aware Insights blog or subscribe to our RSS feed in order to stay up to date with our own latest offerings.