With the upcoming release of Visual Studio 2010 the functionality in Dotfuscator has moved far beyond just obfuscation. By using the free functionality of Runtime Intelligence™ included with Dotfuscator in Visual Studio 2010 Beta 1, developers are able to enhance the functionality of any of their .NET applications to include feature usage tracking, automatic expiration and tamper detection as well as reporting on the data that is generated.
As a developer I am familiar with the standard model of software distribution. I write the program, release it and then the only time I know if anyone actually used it is if it blows up and they complain about it. Once the user hits that download button I have no idea if they have even installed it much less if anyone has even used the latest functionality that I spent many late nights to get just right. I may have some basic error reporting functionality via automated email or an HTTP post and perhaps my installer downloads some content from my website so that I can correlate downloads to installs but I have a full to do list without having to cook up some additional code to see if anyone is using the software. Plus, that’s more code that is not directly related to my application that I have to write, maintain and find some way of reporting on the data that would be generated. As a developer I am paid to solve problems for people, but how can I get an understanding of the best way to help them solve their problems if I don’t know what they are doing?
Runtime Intelligence™ provides an easy to use way to add additional functionality to your applications without requiring you to write and maintain any additional code. By using Dotfuscator as a code injection platform and following Aspect Oriented Programming techniques similar to MSIL Injection we are able to add significant additional functionality to existing .NET binaries, in many cases without you having to write any supporting code. With Runtime Intelligence™ your applications are no longer a black box and you are able to get real data on how people are using your programs in the real world.
There are three significant features that are shipping in the Community Edition of Dotfuscator available in Visual Studio 2010 Professional and higher. First there is application analytics, a way of instrumenting your applications after compilation so that the usage data of what features and functionality your users are using is sent back to a central collecting and reporting system and reported on. Second there is Shelf Life, a way of injecting expiration functionality into your sample, beta or proof of concept applications so that they stop functioning after a set expiration date. Finally, there is tamper detection and defense that allows your application to detect if it has been hacked and take appropriate action at run time.
I will be writing a series of blog posts here in which will I demonstrate every aspect of this new functionality and how it can be used in new applications, existing applications and even applications that you have lost the original source code for. I will cover both the functionality available for free in the Community Edition of Dotfuscator available in the Visual Studio 2010 Beta 1 release as well as the enhanced features that are available by using the commercial versions of Dotfuscator and Runtime Intelligence™.
For many years the actions of our end users has been hidden to those of us who did not have the significant amount of time and money that it probably took Microsoft to implement their Customer Experience Improvement Program. Now you have the ability to add that functionality to any .NET application ever written including console applications, libraries, Windows Services, Winforms, ASP.NET (Webforms, MVC, SharePoint Webparts and AJAX heavy websites), Compact Framework, WPF and Silverlight.