Has anyone here used DevExpress XAF? I've been using it for a while and I'm of the opinion that its implementation is quite flawed. I'm looking for maybe a different opinion to rescue my time/investment into it. The idea behind XAF is great and one that will probably be the way to go sometime in the future, but for right now, in its current state, and judging by past updates by DevExpress, it's not "there" yet and probably wont be "there" for a long while.
For those not familiar with XAF, I'll try to summarize what it is. XAF is a commercial business application framework sold/developed by DevExpress which integrates their suite of windows or web controls (you get to choice to build your app as a web app or windows forms app at any time). You write your application by typing out .NET ORM classes (they have a ton of keyboard macros to make this task ultra fast and correct), and XAF attempts to build an entire end to end application for you using modules such as security, reporting, charts, input validation, audit history and more ...
If it worked correctly the great things about it would be that a developer could write business classes and get a bunch of functionality right out of the shoe. Features such as user login, user profiles/back end user management, fairly fully featured ORM class level security, visual record filtering, google like record searching, grid sorting/grouping, pivot charts, validation of input and so on (and actually quite a lot more stuff) all provided to you, the developer, nearly automatically. And if it worked correctly the idea would be that all projects from everyone using XAF would share a well tested/performant codebase, and easy or nearly automatic drop in access to many business application features.
Unfortunately the problem with XAF is scalability (the web version struggles when you add 4 or more users), performance, complete lack of work flow, constantly outdated/poor documentation, and many other minor/major pains.
In my opinion the concept behind XAF is the next logical and obvious step for most all business programming, but DevExpress is not capable of the daunting task that is fixing all the problems they create.
For me, 3rd party widgets are to be avoided wholesale.
I know you agree in principle. Seperation of Concerns could even be used to justify no 3rd party components... Vendors just want income.
CASE tools in particular never seem to work well enough to commit to use, in my experience. Sounds like XAF is a CASE-like "EASY button" sales offering, and blah-blah-woof-woof.
Spinning one's own T4 templates or code snippits for the likes of the storied functionality-shoe-box is the expensive but reliable route to go.
Cheers! sysrpl EDIT: yes, I did look at it last year - blech!
@JohnAskew: I agree. Every few years, I flirt with third party components. Every time, it ends up being a mess. It always starts with WTF can't they default to the system theme. No, they have to implement some over-wrought theming system that needs a bunch of hoop jumping to make the controls look like everything else. The API conventions are different enough to be painful. The functionality is weird because they went down some "clever" rabbit hole, and mis-handled basic features.
I do like the out-of-band toolkits that are on Codeplex. Since they are official projects, they are of much higher quality.
... I do like the out-of-band toolkits that are on Codeplex. Since they are official projects, they are of much higher quality.
We use DevExpress ASP.NET controls, and their support and documentation is great. I haven't looked at the XAF, although it does look interesting. I played with their ORM solution (XPO) and wasn't too impressed.
Thank you for the feedback. Am I correct assuming that the problems with the Web version you mentioned (scalability, performance and lack of workflow) is what you call by a flawed implementation? In any event, let me comment on these points. Even though XAF Web UI was originally designed for the Intranet use only (for example, it is a perfect choice for the backend CMS or CRM app that will be used within an enterprise by 100-200 users at a time, which also means that you would better use other tools, if you want to have another FB or eBay), it is difficult to imagine the performance problems with 4 users as you described. Would you please submit your application to the DevExpress Support Center for examination? I believe there must be a problem in a custom code somewhere. BTW, what is your experience with the XAF desktop version? As for the rest points, I would ask you clarify the "complete lack of work flow" and "many other minor/major pains" as these ones are not clear to me either.
As for the poor documentation, I can admit that there are certain outdated videos and help articles, but these are rather exceptions than rules. Would you please be more specific on this (e.g. list concrete topics and)? In general, it is strange to hear such a feedback on our docs, because they are very detailed (include the Getting Started, Tutorials, Concepts, FAQ, Troubleshooting sections), especially for this particular product. There are also tons of examples in the Code Central and Task-Based help sections as well as a large set of open source extensions.
>>And if it worked correctly the idea would be that all projects from everyone using XAF would share a well tested/performant codebase, and easy or nearly automatic drop in access to many business application features.<<
>>Cheers! sysrpl EDIT: yes, I did look at it last year - blech!<<
Thank you for your feedback, John. Would you please provide more descriptive feedback on what you liked, and what you did not like in XAF? Also, it would be interesting to learn about the project you wanted to implement with XAF, because this tool might be not suitable for this.
I am saying this because XAF is not a universal means of accomplishing various development tasks, and thus may not meet everyone's needs. If you are fine with having to deal with templates or code snippets, go for it. But apart from that, XAF provides you with a highly extensible and customizable development platform - framework, where developers can not only customize or fully replace standard "plug-ins", but also provide their own ones that are tailored to their specific business requirements. Shipped together with a rich set of built-in functionality packed into modules, XAF makes creation of business apps (e.g., CMS, ERP, CRM, etc.) faster as compared to traditional development approaches.
>>I played with their ORM solution (XPO) and wasn't too impressed.<< I will be more than happy (firstname.lastname@example.org) to learn more about your experience with XPO. BTW, XAF currently provides CTP support for Entity Framework, so it may be an option if you feel unhappy with the built-in ORM for some reason.
I have come to hateframeworks like these,..
Today I opened a project created with these tools, version 8.3.5, first it took me forever to figure out wich download to download, then I had to get the license renewed, just to compile the thing.
Either include a dll and a license as part of the project, so I can fix bugs or don't use it.
It's all fine and dandy when the project is running, but once the project is done and the software is put into production, the framework becomes something that you have to manage. If you don't, you end up with the trouble I am in today, costing a lot of money.
>>first it took me forever to figure out wich download to download, then I had to get the license renewed, just to compile the thing.<<
I either misunderstand you or you are doing something wrong... Assuming that you already have a valid license for XAF 8.3.5, you do NOT NEED to renew it to just compile your project. All that you need to do is to go to https://www.devexpress.com/ClientCenter/Downloads/ and download a required product version. Take special note that you automatically got access to all older versions once you bought a license. So, if you renewed your license by mistake, please contact our Client Services Department for a refund. I hope this helps.
As for your technical issue, if you do not want to look for the XAF installer, it is possible to store required assemblies together with your project in a version control system. At least, I know that many customers follow the same practice and even we ourselves do the same for DXperience assemblies when developing XAF. See the following screenshot. Finally, I should mention that this problem is not specific to XAF at all, but rather to general programming practices, organizing your solution structure, etc.
Yes, we do the same. We store all required assemblies for DevExpress and all other dependencies in a separate Library folder in the solution. In the projects we reference the assemblies in the Library folder. So all dependencies can be resolved on the build server and we can maintain different DevExpress versions at the same time. Never had any problems with this. This is not specific to DevExpress.
@sysrpl: I don't want to get into any endless discussions here, especially since it doesn't seem to me that most of those who commented have an interest in actual serious responses. But my experience is that XAF, XPO and the countless DevExpress component products that make up the UI experience of an XAF based application deliver unparalleled developer productivity when used correctly. Note the "used correctly" part - DevExpress have, to my knowledge, never claimed that XAF enables people to create applications they couldn't create in other ways. Instead, the framework takes care of the vast majority of repetitive jobs for you, saving a very large percentage of developer time.
In the interest of disclosure, as well as to explain the experience I'm referring to above: I used to work for DevExpress a few years ago and I was involved with XAF directly for a while as well. However, in the past few years I've spent much of my time with DevExpress clients who use XAF and other products in real world applications, large and small. It is certainly true, just like it is for any framework, that its strengths are not the same across the whole wide spectrum of applications somebody might create today. But in a nutshell I can say that any functional or performance problem you encounter in a typical business application project can be solved, while using XAF to increase productivity.
There's much that can be said on the topic - ten days ago I completed a training class on XAF doing just that for a week, with an audience of 22. I can't possibly repeat most of the content here, but one final matter: if your application stops working with four users, there's something wrong. And you know what? If you zip up your complete project and send it to the DevExpress support guys, like Dennis suggested, they will analyse the problem for you and tell you what can be done about it. That's what a good 3rd party tool chain provider will do for you, and DevExpress is the best.
@sysrpl: I can't comment on DevExpress specifically, but based on my experience developing ASP.NET+SQL Server applications, I know that forgetting to wrap a single line of code in a using statement can cause your web application to come to a crawl with even a single user.
I would venture to guess that the problem you are describing is being caused by a database connection that is never closed. I'm not saying that this is code that's part of the DevExpress framework or your custom code. Nevertheless, even poorly-written ASP.NET frameworks that otherwise avoid the "orphaned connection" scenario that I described above can stay relatively performant with well more than 4 users.
Whenever your application gets into the state that you described, you should check how many open connections there are with the database in question. You can do that by executing this script from SSMS:
SELECT db_name(dbid) as DatabaseName, count(dbid) as NoOfConnections,
loginame as LoginName
WHERE dbid > 0
GROUP BY dbid, loginame
@kraades: that's what I started out by saying; I've come to hate frameworks like these.
@DennisGaravsky: Ok, I challenge you to find version 8.3.5 from the downloads. It's nearly impossible!
I found 2008.3.5 in the previous downloads list in a matter of seconds. If that was what you classify as "nearly impossible" then I can only assume this is the effort you put into other tasks, as such your opinions on XAF in my mind are rendered moot.
Am I missing something? I don't see a version number anywhere,..
Edit; Ahhh,.. Now I see,.. The 8.3.5 version is the v2008 vol 3.5!
That's obvious of you have worked with or working on the product, but not for a new user like myself.
@Maddus - If you were unsure, could you not have asked a support question ?
I've found DX to have been very helpful in the past.
I bet you're glad to find out that DX will refund your renewal - not many 3rd party tool providers would make that offer.
Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.