Home    >    Case Studies    >    Sermon Mp3 Management Module

Case Study: Sermon Mp3 Management Module


This is a module for managing the sermon records as well as the associated audio files(mp3) for in a Umbraco based site. The customer have all the UIs and contents done. They need a module to handle the sermons information. Here we are very glad to share the bright spots in the project.


  • Add/Modify/Delete the sermons and their associated mp3 files
  • Return records with complex search criteria
  • Play mp3 on the page
  • Download the mp3 on the page
  • Automatically update the podcasting rss feed for itune

Add/Modify/Delete sermons are the basic functionalities for the module. User can select the speaker from a dropdown list, series from a dropdown list and bible references from three cascading driven drop down lists, typing title and summary in the textbox and finally, select the mp3 file for the sermon. Before uploading, user's input will be validated for lengths and formats.

Before the mp3 file is stored on the server, the sermon information will be recorded into the tags of mp3 file as well which makes the mp3 file take features of sermon's.

Whenever the sermon has a change, the module will update the podcasting rss feed to keep consistence between the records in podcasting rss and the records represented on the site.


The search criteria includes three categories, each category contains different search criteria. The arbitrary combination of the categories determines the returned records.


Design Considerations

  • Flexibility for content designer in Umbraco
  • Performance in maintaining the podcasting rss feed

Umbraco itself is a powerful system full of flexibility. A brunch of solutions or plans can be found in Umbraco for one requirement. Our design embraces Umbraco's flexibility as well.


We break the whole requirement down to several controls according to the business object in the requirements. Each control can work independently. But the power of the design is that they can be composed in any arbitrary combination. What does this design mean?

It means flexibility in putting the usercontrol wrapped data type in Umbraco back office in any manner. It means flexibility to Umbraco content designer to put the controls through Umbraco macros on the pages in any manner.

Let's say the content designer can put SermonListOnlyForViewControl.ascx only in the front page to display all the sermons. But the content designer can also put SermonListOnlyForViewControl.ascx and SearchCriteriaControl.ascx together in another front page to let the user search for sermons with specified criteria.


We highly concern to the performance in maintaining the podcasting rss feed with big amount of sermons when the site suffers heavy traffic. Commonly speaking, we have quite a few approaches at our pocket to manage the xml file easily. But most of them will load the xml content into objects which facilitates programmer to code with the xml data but result in many objects on the managed heap and then heavy burden for the .net framework's garbage collection that eventually hits the web server's performance.

To avoid the performance issue, we directly writes the object into the file with customized approaches. It is proved definitely speeding.


Benefits to the Customer

The customer initially just offered a copy of business requirements for the module without any flexibility or performance consideration. The benefits to the customer lies not only the deliverable output but also our continuously accumulated knowledge, experiences and intelligence.