DotNetNuke in Azure Cloud
DotNetNuke (DNN) is an open source CMS (Content Management System) written in Microsoft VB.Net (from the version 6.0 C# .Net). It has two versions: community (free) and commercial. The commercial version contains some additional features and customer support. A standard DotNetNuke installation contains only the DNN core, with the basic functionality that could be extended by additionally installed modules. This architecture provides a good flexibility of project design and configuration. Complicated web solutions could be built easily using the modules like bricks, which provide all the required functionality.
Nowadays cloud solutions become more and more popular. Project scalability in the cloud requires less time and has an elastic scale. So let's discuss the possibility of using the DotNetNuke and the cloud together. Could a DNN solution be deployed to the cloud and achieve all the benefits of cloud scaling? Let's take Microsoft Azure as a cloud platform for this investigation. As DNN is .Net based CMS, and we could make an assumption, that Microsoft's cloud platform will be the most suitable for DNN hosting, as it uses the same technologies from the same vendor.
Deployment of the DNN to one server is an easy process. You could just download the binaries from the DNN official site and install them using the simple wizard. But what could we do in case to install DotNetNuke to Azure cloud, while you don't have access to the destination virtual servers, where your solution will be hosted?
David Rodriguez has an idea of the same simple installation DotNetNuke to the Azure cloud in his Azure accelerator project (https://dnnazureaccelerator.codeplex.com/). It is a simple application for creating a deployment package which could be used to install DNN to the cloud. Package creation requires SQL Azure and Azure Storage pre-configuration. Deployment could be done just in few easy steps:
2. Creating Azure Storage instance.
3. Run the Accelerator installation and enter Storage & SQL credentials on wizard request.
4. Upload created packages to the Azure server and start deployment.
While deployment DotNetNuke Accelerator creates the virtual drive on Azure Storage with DNN Sources and deploys DNN Database to the SQL Server. A detailed diagram of DotNetNuke architecture while using Azure Accelerator you can see on the screen.
After deployment, we could use all the features or Azure to optimize our DotNetNuke application.
- Use the core Azure Load Balancing mechanism to provide better performance
- Improve system logging with Azure logging services.
- Optimize file storage, using a separate Azure Storage. It will give us access to the fast, cost-effective and efficient file management.
- Store DotNetNuke Database on the fail safe server using Azure SQL.
So, at first view DotNetNuke is ready to be installed to the Azure cloud to achieve all the positive aspects of the cloud scalability. But during the detailed investigation I've found several serious limitations for DotNetNuke in the Cloud:
- Azure SQL limitations. The DNN Azure Accelerator installs only basic modules. So, other modules should be installed manually. Each module installer contains a script which applies to the DNN Database. In case of using Azure SQL for database hosting, script could fail due to the SQL limitations of Azure SQL. In some cases it could fail a whole DNN site. So, don't forget to back up the database before installation of a new module. Install script should be also edited to fit Azure SQL requirements.
- Azure storage connection limitations. The community edition of DotNetNuke doesn't contain Azure Storage connectors. Connectors for cloud storages (Azure, Dropbox, Amazon) are present only in the commercial version of DNN, which have no Azure Accelerator installer. The workaround for this is installing the Intelequia DNNFolderProviders. But this provider is shareware and requires a license file before its configuring. So for now there isn't a free way of using the Azure Storage, while hosting in the Azure cloud.
As a conclusion, I would like to say that as for me the time for DotNetNuke in the cloud has not come yet. The installation process still looks complicated. Code adaptation requires a lot of efforts to be used in the Azure cloud. I hope that the community will provide more tools and workaround in the near future, but you could already start a pilot project to plan the strategy for your future DotNetNuke projects for the cloud deployment.
Industries and Technology Areas:
Industries: DotNetNuke (DNN), Windows Azure, cloud computing
Technology Areas: DotNetNuke (DNN), Microsoft Azure, cloud computing, content management system (CMS), SQL Azure