I've been spending some time in the DevExpress eXpress Application Framework (XAF) and have been learning how to ensure that the apps will continue to perform well even after they grow into failry large systems. This is meant to be the beginning of a small series of articles that describe what I've learned.

I'm using Visual Studio 2012 with C# and the .NET 4.5 framework at the moment. The product I'm developing in conjunction with a few other talented programmers is called Apex.NET.




 

Working for a mission organization in Papua New Guinea (PNG) for the last few years, my tasks included a variety of technologies, some software related and some not.

 

My latest project has been building an Inventory Control system for a small aviation organization of bush pilots. After an exhaustive search for an "off-the-shelf" solution for their Maintenance and Repair Operations (MRO), it was ultimately decided that either the solutions available were insufficient for one reason or another, or they were too expensive to be sustainable in the long term. Although I'm never a fan of "re-inventing the wheel", I reluctantly agreed to build an MRO system based on their requirements.

Fortunately a fair amount of solid work was already complete more or less in the form of a functional specification. Also, already decided by management, was that the application should be build on the XAF framework by DevExpress.

I've really enjoyed the XAF framework and have learned a lot since I started. Particularly while troubleshooting performance issues as the application grew from just a view simple views into nearly dozens and dozens.

Listed here are the main issues that I have overcome to some extent. Articles that detail each I plan to follow shortly:

 

  • Ensuring Delayed instantiation of XPCollection properties
  • Detecting swallowed framework exceptions that cause massive and elusive performance trouble
  • Common "Gotchas" that create a drag on performance
  • Enabling the Data Cache in conjunction with the MS SQL Server Service Broker
  • Creating "Lite" versions of your objects for faster bulk operations and processes.
  • Auditing system Data Exhaust and thoughts on how to manage it
  • and probably some more...
In general, XAF in combindation with XPO has the best Object Relational Mapping (ORM) system I've ever seen and I've been very impressed. Even though I had a slow start and a lot of learning, now I feel that I can rapidly build very useful systems in XAF of a very high quality with limited potential for bugs.