Thursday, August 28, 2008

Version 2.1 Released!

I am pleased to announce the immediate availability of Gallery Server Pro 2.1. There are several new features and a couple dozen bug fixes.

The most important new feature is the use of the open source SQLite database engine for storing gallery data. SQLite is a self-contained, serverless, zero-configuration, transactional, ACID compliant SQL database engine. That is a mouthful, but it can be summed up as “It rocks!”. In fact, you are probably already a SQLite user, as it is the most widely deployed SQL database engine in the world. It is embedded in various Adobe products, Mozilla Firefox, and even in the Apple, Solaris, and Symbian operating systems.

The beauty of SQLite – at least as far as Gallery Server Pro is concerned – is that there is nothing extra to install. The data reside in a file named galleryserverpro_data.sqlite in the App_Data directory of your web application. GSP communicates with the database using System.Data.SQLite.dll, which is a .NET wrapper around the sqlite3.dll C library. This .NET wrapper greatly simplifies the coding, and I owe a great big thanks to its creator, Robert Simpson, at http://sqlite.phxsoftware.com.

During installation, you no longer have to mess with SQL configuration settings. The wizard asks you which database engine you want to use – SQLite or SQL Server. If you choose SQLite, then you enter the username and password you want to use for GSP administration, and you are done! Ba-da-boom, ba-da-bing!

SQL Server is still a first-class component, including SQL Server 2008 and SQL Server 2008 Express. You may want to use SQL Server if any of the following are true:

You are comfortable with SQL Server.

You are already using SQL Server and want to keep all your data in one place.

You are forced to run Gallery Server Pro in a Medium Trust environment and are not able to install System.Data.SQLite.dll in the Global Assembly Cache (GAC).

Your installation of GSP is mission-critical and you don’t want to take any chances with your data. Since SQLite is file-based, there are rare circumstances where the hard drive reports to the software that the data is written to disk, when in fact it has not yet done so. If, at this moment, your PC loses power, SQLite will think the data is safely stored, but it is not.

You are already using ASP.NET membership and have your users in SQL Server. For example, you may have DotNetNuke installed and want GSP to use the existing user accounts in your SQL Server DotNetNuke database.

You have other applications besides the GSP web application interacting with the data file. You may encounter file locking issues and slowed performance as multiple threads wrestle for access to the file. This is one of the few cases where a traditional client-server database such as SQL Server is clearly superior.

I believe the vast majority of you will find SQLite to be the best option, and there are a good number of you who wouldn’t consider using GSP before because you didn’t know a darn thing about SQL Server, and didn’t have the time or inclination to learn yet another thing. Now, you don’t have to know anything about SQLite, because it “just works”.

The second major feature is the use of Microsoft’s Silverlight plug-in to render wmv, wma, mp3, asf, and asx files. For example, here is Silverlight being used for an asf video:

You can start playing the video as soon as a few seconds are buffered. Previously, GSP typically rendered videos in an <object …> tag and let the browser figure out what plug-in to use. The plug-ins that I tended to have on my browsers always wanted to fully download the video before starting to play it, meaning you were often twiddling your thumbs. The old functionality is still available if you want (just edit the templates in galleryserverpro.config), but I believe most of you will appreciate the consistency and added features of Silverlight, especially as the plug-in becomes more widely installed.

If Silverlight is not installed on a user’s browser, a Microsoft-supplied image will appear that says Get Silverlight. When clicked, the user is shown a download page and stepped through the process of installing it. You have probably already seen this image on other sites that use Silverlight.

GSP also allows you to point to media objects stored on other servers. For example, when browsing videos on YouTube, you may have seen the embed code textbox on the side:

Copy this text to your clipboard and then navigate to the GSP Add objects page. Click the External content tab, and then paste the embed code, like this:

Click Add media object, and your gallery now has a link to the YouTube video! The video is not actually downloaded to your web server. Instead, the video is streamed straight from YouTube to your user’s browser. YouTube pays for the bandwidth! But it *looks* like it is on your server:

You can also upload your videos to Silverlight Streaming and link to them from your gallery. Again, the bandwidth is paid for by them, not you.

There are a lot of other new features and bug fixes that I won’t get into detail at the moment. Among them are significant improvements to the synchronization process, performance of very large galleries, and full support for IIS 7 Integrated Pipeline Mode.

I am proud of the new release, and I hope you enjoy it. If you have any questions, comments, or feature requests, please use the forums.