понедельник, 3 декабря 2012 г.

Why you should not use Devexpress XAF for midsize projects

In this short post I want to share my personal experience with Devexpress XAF (eXpressApplication Framework). The preface is - you think that this "famous magic box" can help you to build high class enterprise - scale software system. Because XAF has rich "modules". Because it targets Windows desktops and ASP.NET "platforms". Because it has online docs and the user community. Did I miss something? Oh yeah! Case studies and user comments... A lot of them are connected to XAF and might make you sure that XAF is the "magic thing" you are looking for...
OK, let's look inside of that super thing. The library (or framework) you use should be reliable and high performance. Otherwise your customers have to buy new computers (or servers).
1. Memory leaks:
http://www.devexpress.com/Support/Center/Question/Details/Q444882
http://www.devexpress.com/Support/Center/Question/Details/S39277
Our application has over 40'000 lines of C# code and the built application could occupy over 1GB of the computer memory (!!!!???) during some hours of user activity in the XAF application. GC doesn't help.

2. Ugly Insecurity:
In case you built an application connected to any type of SQL database service (MS SQL, Oracle etc.) you have to:
1. take care of setting security to each role of users inside the database (add users to logins and roles) OR provide full access to the database to all XAF application users.
2. you have to set users and roles in your XAF application to hide protected functions.
In order to prevent users to have direct full access to your database you have to build mid-tier application service:
http://www.devexpress.com/Products/NET/Application_Framework/features_middle_tier_service.xml
Read the page: "XAF applications can now obtain data from the application server, thus preventing the client application from direct database connections. "
In other words XAF security is a kids' toy and admins' headache if you do not use an application server!

3. Unreliable code of modules:
Workflow module is unreliable. I tested Workflow with hundreds of runs. From time to time it doesn't resume "Idle" processes if you restart Workflow.

4. The XAF application is extremely slow.
We have computers with Intel Core i5 and i3 CPU and 4-6 GB of RAM. Our XAF application starts in 15-25 seconds. Any XAF "view" appears in 100 times slower then classic "Windows Forms" or ASP.NET page. If you have low-end "Celeron" or "Atom" CPUs it is a real pain.

_____________________________________________________________
The verdict is: avoid Devexpress XAF in your upper-beginning enterprise projects. It is good idea that is not mature yet. Use cross-platform JavaEE + GWT, Python + Django. Or pure ASP.NET for Windows only.