CDML Computer Services has been looking for a software service provider to build a digital content delivery solution. The system would allow customers to advertise on request to a network of displays deployed nationally while providing a large degree of flexibility and real time access to the media being displayed and when to display it based on demographic categories.
Such a controlled content delivery would be useful in various scenarios including advertising, education, retail and others.
The system should be built to allow each customer to upload his content and schedule it across the network based on the specific target demographics, times of days, number of repetitions and related. On top of that, the system should provide global administration system for creating and managing each customer account.
- Building an optimized distributed digital content platform.
- Designing strong and optimized scheduling algorithms for each location that gives proportional opportunity for content to be displayed on every terminal that takes into account the customer package, duration of the media, and number of repetitions and related.
- Allowing customers to advertise with any kind of media whether in image, video or text formats.
- Keeping into consideration to remain as platform independent as possible.
InspirationGate set out to create a distributed solution that consists of two web sites, one for the customer and one for global administration along with a desktop application that would act as the terminal viewer and finally a communication mechanism to connect both pieces together.
The two administration websites were for the customer and global administration. The global administration website is responsible for creating new customers, customer users, verifying content, managing locations, tracking terminal states, viewing reports, managing the overall schedules and general business data. The customer website on the other hand allows each customer to upload his content to the media server, schedule his media to run at various intervals at the specified times, demographics and locations along with related services.
The .NET framework was used on the server side for building the solution infrastructure, ASP.NET has been used to build the management and administration websites along with a number of tracking and scheduling Web Services that interface with a Java based client that acts as the terminal viewer.
The client terminal objective is to display content that is scheduled from all the customers together, when the terminal is first opened, it connects to the scheduling web services to download a schedule that is created based on various parameters, once the schedule has been received, the terminal reviews the list of media to be displayed and compares it with the local cache to see if it has already downloaded the required media, if yes, it moves as per the specified schedule, otherwise, it initiates a parallel thread to download the new media and skips the item to be displayed till the media arrives then it goes back to the queue. Every bit of time, the terminal sends a tracking message to the server to report that it is working as expected and to report the media items that have been played for tracking, reporting and billing.
One of the primary objectives was not to require customers to create new content to be able to advertise in the network but to use whatever media formats they already had like images, videos, flash, or text. To accomplish this goal, the client terminal has been implemented to embed a web browser inside it so we can host any HTML based content thus allowing the user to host any kind of content with simple modifications which is handled automatically by the management website. On Windows, we used to embed Internet Explorer while on Mac we embedded Safari.
The client terminal is also designed to work in offline mode in case the internet connection goes down for any reason. As the client is written in Java, it can work cross platform and has been tested in both Windows and Mac environments.
The scheduling algorithms were a special challenge, as there has been a lot of variants that needed to be taken into consideration when building the schedule for each location, first there is the customer package which specifies the number of monthly impressions, then the duration of the media in seconds, number of displays per day, number of displays per location per day, previous playback from the requesting locations and other locations, display exceptions, blocked demographics to avoid similar businesses from advertising to each other and others. This required a number of well designed algorithms to achieve balanced and fair playlists.
Server Side: Visual Studio.Net 2005, .NET framework 2.0, C#, Web Services, ASP.NET Ajax Extensions, Ajax Toolkit, MS Enterprise blocks.
Client Side: Java, J2SE, Apache AXIS and JDIC.