Back in 2007, FullArmor was given the opportunity to be one of the first ISVs to work with Microsoft's new Azure platform, pre-release. At the time, the platform was still immature, quickly changing, and had a number of problems to solve.
"Running an application in the cloud required you to test it in a remote data center without any debugging capabilities," says David Gressett, the architect behind FullArmor's cloud services team. "The new data services were meant to scale but the interfaces were low level and primitive for transferring data. Back then, even web services had configuration problems preventing scalability, requiring the use of a different protocol to sidestep the issues."
Recognizing the importance of the opportunity, FullArmor needed to produce reliable cloud-friendly versions of its Policy, Profile, and Application management products, fast.
David, having previously experienced the productivity benefits of using Aspect-Oriented Programming, recognized this as a perfect time to educate his team on using aspects and says he chose PostSharp because it met all of his teams requirements:
Using PostSharp, his team started with tracing, logging, and data contract aspects to address the stability risks of the platform. FullArmor was able to instrument all of its codebase using multicast weaving in a few lines of code, and maintain instrumentation automatically as new code was added or changed.
By multicasting into different namespaces, and associating a configuration key to each trace aspect woven into the code, the team could easily turn tracing on or off dynamically, wherever it was needed, and get instant diagnostics.
FullArmor also took full advantage of code contracts years before they were supported by Microsoft in C#. The aspects were easily shared in common code between Silverlight, the cloud, or local agents. The team quickly recognized the value of using AOP, and the attribute type syntax of PostSharp aspects was as easy to understand as it was familiar, like the usage of serialization attributes.
As the team learned AOP, PostSharp aspects were used to solve the problem of marshaling data from method calls for data services, web messaging, and serialization. FullArmor quickly built a full production library of aspects covering most well-known use cases for which aspects are used. This core library has become shared technology for half a dozen FullArmor products and is the keystone for starting several more. Over the course of three years, FullArmor has used this technology to produce three of the most mature cloud products running on Azure and several other cloud vendors' platforms that exist in the space, starting with just a few developers and gradually ramping up to more than a dozen using this technology.
"FullArmor considers the use of AOP and PostSharp a competitive advantage," says David. "Even if we didn't extend our aspects any further, the base library of aspects we have continue to provide leverage as our technology evolves and grows."
Learn about the history of aspect-oriented programming and why you should be using it to eliminate scattered, tangled and coupled code from your life.