Forums

Support for third party persistence frameworks - WHY?

Last post 7/18/2009 1:32 PM by Tolis Bekiaris [DX-Squad]. 13 replies.
Sort Posts: Previous Next
  • Daniel Ruoss

    Support for third party persistence frameworks - WHY?

    7/3/2009 8:23 PM
    • Not Ranked
    • Joined on 12/16/2007
    • Posts 2

    Hi guys

    I took a look at your roadmap for 9.2 and noticed the following planned feature:

    F583 Core: XPO-independent XAF-Core. F604 Core: XPO-independent modules.

    I absolutely don't understand why you guys are actually considering this. I mean...

    • XPO is your company's product. Why allow competition to step in? ( would Apple ever have sold one billion AppStore downloads if they had instead allowed developers to sell their apps on shareit or PayPal......?)
    • XPO is fast, ensures excellent data integrity, has a low footprint, a low learning curve... etc. Most of the other frameworks I've tested are either plain crap or they have a learning curve which basically makes me think that hard-coded SQL statements would still be more comfortable (hi there, NHibernate!!).
    • XPO can be extended directly by DevExpress as new requirements in XAF emerge.
    • The XPO<->XAF combo is rock solid and stable in its core. Why put this aspect at risk?

    I'm VERY WORRIED about two major issues if third party ORM frameworks are supported:

    1. Will we loose speed and flexibility? Today we have the following layers: DB -> XPO -> XAF. Tomorrow we're going to have:

    DB  -> ORM -> Generic XAF-ORM Interface -> XAF

    This additional layer poses 3 main problems in my opinion:

    A) Adding another abstraction layer usually reduces speed. And if an application has tens of thousands of objects, I don't think that's a good idea! The combo XAF<->XPO is what makes your product so unique (IMHO). How can you guarantee that speed won't decrease with this additional layer?

    B) A generic interface means that the lowest common denominator of all ORM systems will dictate what's possible and what's not. How can you make sure that this won't slow down the overall development process of XAF? Just one example: As soon as XPO supports persistent interfaces, how would you go on supporting other ORM's that don't support persistent interfaces?

    C) My biggest concern in this matter: Stability!!! I wouldn't want to sacrifice the excellent overall stability of XAF in its current form.

    2. Will XPO customers be neglected? I assume your staff isn't growing proportionally with each supported ORM, is it? In other words, the same team who is now supporting XAF<->XPO issues (one-to-one relatioship ;-) ), will in the future be supporting XAF <--> any ORM (one-to very many relationship...). As a logical consequence, developers using XPO will find less know-how and resources in the official XAF support forums.

    I'd appreciate some comments or statements on my concerns, especially from the devexpress team.

    Thanks! Have a great weekend!

    Daniel

     

     

    Filed under:
  • Marc Greiner [DX-Squad]

    Re: Support for third party persistence frameworks - WHY?

    7/5/2009 7:42 PM
    • Top 25 Contributor
    • Joined on 5/4/2007
    • France
    • Posts 1,188
    Hi Daniel ;

    These two roadmap points (F583 and F604) do not mean that XAF will necessarily at one point be independent from XPO and allow to interact with other ORMs.
    It just means that there is going to be a better separation of concerns between XAF and XPO so that both layers can evolve more freely.

    Regards,
    Marc Greiner [DX-Squad]
  • Gary L Cox Jr [DX-Squad]

    Re: Support for third party persistence frameworks - WHY?

    7/14/2009 10:34 AM
    • Top 50 Contributor
    • Joined on 9/9/2007
    • Austin, Tx
    • Posts 811

    It also makes more sense, if your building a framework you should allow the data layer to be customized.  Someone may prefer to use NHiberbate or some other form of ORM instead of XPO.  By making them separate the framework is more accepted for other developers that have invested in different ORMs.  I believe by default the XAF will use XPO, but developers will be allowed to choose a different ORM of their choice if they want to.  That makes a great framework. :)  Imagine if Microsoft only allowed IE to be installed on Windows since it is there browser, customers want to choose.  The same goes for XAF.

  • Adam Leffert

    Re: Support for third party persistence frameworks - WHY?

    7/14/2009 11:13 AM
    • Top 75 Contributor
    • Joined on 7/17/2007
    • Posts 360

    Similar to what Gary said...

    If XPO is the only back-end for XAF, then all the responsibility for providing persistence functionality falls on DX.  If DX doesn't develop a feature, XAF users can't have that feature.

    If that feature is a requirement, the developer can't use XAF.

    If XAF is loosely coupled to the persistence layer, then DX is no longer the bottleneck for features.  The rest of the world can step in and complete the picture.

    Best regards,

    Adam Leffert

  • Marco Kummer

    Re: Support for third party persistence frameworks - WHY?

    7/17/2009 2:38 AM
    • Top 500 Contributor
    • Joined on 7/17/2009
    • Posts 38

    I'm actually with Daniel on this. Of course you can always argue about giving more choice to the XAF customer. But the way I see it, an XAF customer is a DX customer. And this also makes him an XPO customer. In plain language this means: When someone builds their first XAF test project, they get XPO as a persistence framework. Later when they decide to buy XAF I would say that they liked what they saw, otherwise they wouldn't pay money for it... right?

    So how would someone who liked what they bought ever come into the situation of having to migrate an XAF project to a different persistence framework? I certainly don't see a reason for any of my XAF projects. And this is where the comparison to IE/Windows just doesn't work. A customer who buys Windows basically has no choice, because MS owns like 90% of the client market. But developers shopping for application frameworks have a huge selection out there... and once they've decided which one to buy, they have a really good reason for their choice. And the tight integration between XAF and XPO with all its advantages is a major part of what they were promised when they tried the bundle.

    The argument of flexibility and loose coupling doesn't always count... otherwise you'd have to start supporting other IDE's, different ribbon bar components, maybe throw in a little PHP here and there...

    I'd look at things the other way around: People who like other persistence frameworks (like NHibernate) better should go looking for application frameworks specifically made them. And if they don't find any, well then maybe that's an indication that they're using the wrong persistence framework!? They might want to consider switching to a persistence framework that's actually supported by developers who get paid real money for their hard work.

    The tight coupling between XAF and XPO was a major decision factor when I bought XAF. So if down the road I'll get a "deprecated" flag on my CriteriaOperator.Parse(..) method just because NHibernate just so happens to support an entirely different syntax... well then I'll have go shopping for a different application framework.

    Kind regards

    Marco Kummer

  • Alex Hoffman

    Re: Support for third party persistence frameworks - WHY?

    7/17/2009 3:56 AM
    • Top 100 Contributor
    • Joined on 5/4/2007
    • Posts 244

    I think what Marc Greiner said earlier is spot on ...

    "These two roadmap points (F583 and F604) do not mean that XAF will necessarily at one point be independent from XPO and allow to interact with other ORMs.  It just means that there is going to be a better separation of concerns between XAF and XPO so that both layers can evolve more freely."  -- Marc Greiner

    -- Alex Hoffman
    expressapp.blogspot.com

  • Trevor Westerdahl

    Re: Support for third party persistence frameworks - WHY?

    7/17/2009 1:54 PM
    • Top 25 Contributor
    • Joined on 5/4/2007
    • Portland, Oregon
    • Posts 2,424
    You seem to miss a very big point:
     
    You were satisfied with creating a new app via XAF from scratch; thus, you are happy with the tight coupling to XPO.
     
    However, other potential customers (many of them) are not satisfied with the requirements to learn everything new and start from scratch. DevExpress should design their framework to support as many potential customers as possible.
     
    I, for example, cannot use XAF (as it is) because of its locked-in two-tier (client-database) core related to XPO. 2-Tier models just won't pass the security requirements and it prevents centralization of business logic. Furthermore, many more users would likely adopt XAF if they could use their existing persistent framework and use as much of their existing business logic as possible.
     
    What you seem to be missing (from my view) is that decoupling XPO would likely increase new, PAYING, customers and that increase in revenue would support an increased staff to provide even faster and more robust development.
     
     
     
    > The argument of flexibility and loose coupling doesn't always count... otherwise you'd have to start supporting other IDE's, different ribbon bar components, maybe throw in a little PHP here and there...
     
    I don't agree, nobody that I am aware has been arguing for decoupling the UI aspects.
     
    > The tight coupling between XAF and XPO was a major decision factor when I bought XAF. So if down the road I'll get a "deprecated" flag on my CriteriaOperator.Parse(..) method just because NHibernate just so happens to support an entirely different syntax... well then I'll have go shopping for a different application framework.
     
    Deprecation will happen anyway, what you will get is support to ensure compatibility with XPO and support to address breaking changes. I wonder if the current XAF user base is sufficient to sustain the current costs? What happens if XAF does not draw in enough users? If that happens, you won't have to deal with deprecated because nothing new will be developed.
     
    In my opinion, XPO needs some serious upgrading anyway and deciding to open-up XAF to other persistent frameworks at the same time seems like a wise move, not a poor move. You should want DevExpress to maximize their market-share: it leads to more support and a much better product in the long run.
     
     
    Trevor Westerdahl - DX Squad
    BLOG: http://trevorunlocked.blogspot.com/
  • Marco Kummer

    Re: Support for third party persistence frameworks - WHY?

    7/17/2009 4:12 PM
    • Top 500 Contributor
    • Joined on 7/17/2009
    • Posts 38

    Trevor: I think YOU are missing a big point! What makes you so sure that the way to success is to change the formula and integrate with numerous other solutions out there? As mentioned before, having a proprietory solution can have considerable advantages in ease of use and robustness. And those are two key factors for an express app framework; hence the name.

    First I think we need to define what XAF wants to be and what not: It is a framework to develop solutions for small to medium businesses with minimum development and deployment effort. Such businesses usually have "limited" servers or maybe even no real server at all. So XAF/XPO with its 2 tier architecture perfectly steps in to cover the situation developers meet on site.

    Will this still be true if XAF is opened up to any persistence layer? Does XAF need to have aspirations to compete with larger scale solutions like Oracle Forms  with 3 tier support? Or could it be the better strategy to continue filling the gap for small to medium sized solutions? Expansion would undoubtedly draw new customers to the platform! But this would also turn it into a new, different product when considering the definition above. And again: That is not what I bought and it would drive me away as I appreciate (and rely on) the small business approach. Making the persistence layer a separate part of the configuration and deployment process may just scratch the "express" part from the product's name - because those are things I don't have to think about today.

    >Deprecation will happen anyway, what you will get is support to ensure compatibility with XPO and support to address breaking changes

    So basically you're saying that things just have to be changed for the sake of it, regardless of whether they're working just great the way they are today? I don't understand this attitude. As a vendor of standard development components it is the task of DX to reduce the number of breaking changes to the bare minimum.

    A note on 3-tier models: I'm aware of the advantages of this architecture. But working with XAF for a while I've come to an interesting conclusion: Decentralizing the business logic has some major advantages provided that you have a rock solid update management (which XAF fortunately provides the foundation for): Client machines nowadays are way underworked with their high performances. So it makes perfect sense to distribute the processing load to the clients while the server remains thin, hosting only a DB server. This reduces cost for the end customer by avoiding investments in server infrastructure and is therefore - once more - the perfect solution for small to medium businesses.

    What comforts me is the fact that DX has always done a great job supporting their customers and finding innovative solutions. So for now I'm positive that my needs will still be covered in future versions.

  • Roman Eremin (DevExpress)

    Re: Support for third party persistence frameworks - WHY?

    7/17/2009 4:13 PM
    • Top 75 Contributor
    • Joined on 9/12/2007
    • Posts 326

    Hi Daniel,

    A very brief answer:

    The main reason was Domain Components development - where views are tied to interfaces, not to XPO objects. 

    As a side benefit - we will be able to construct views for any object, not just XPO objects.

    Roman

  • Trevor Westerdahl

    Re: Support for third party persistence frameworks - WHY?

    7/17/2009 5:16 PM
    • Top 25 Contributor
    • Joined on 5/4/2007
    • Portland, Oregon
    • Posts 2,424
    > So XAF/XPO with its 2 tier architecture perfectly steps in to cover the situation developers meet on site.
     
    Certainly, differing people have differing needs and I understand your argument. The question is whether supporting other persistent mechanisms is really so hard to accomplish. Just because other multi-tiered solutions are a bureaucratic mess, does not mean XAF would become such a problem. I have to meet security audits. Perhaps if you saw how impossible it is to truly secure a 2-tier application. and if your customers did why happened with mine: require such an audit to pass. Perhaps then you would value the importance.
     
    In other words, your statement indicates that XAF meets all small to medium business case scenarios and it certainly does meet many of the requirements (as in your case). However, it does not meet mine and I simply do not agree with your blanket assessment that it turns XAF into an entirely different product. Persistence is simply a storage mechanism where an application performs CRUD operations. Why is it that CRUD operations must be tied directly to XPO and XPO directly to XAF?
     
    > So basically you're saying that things just have to be changed for the sake of it, regardless of whether they're working just great the way they are today? I don't understand this attitude. As a vendor of standard development components it is the task of DX to reduce the number of breaking changes to the bare minimum.
     
    I did not say they happen for the sake of making changes. As I stated, XPO cannot be used in my scenario and -gee- that is a big deal for me. So, if they go with your proposed direction, I can never be a customer. I would be satisfied if XPO could handle multi-tiers and would definitely consider using XAF if there was simply support for multi-tiers.
     
    I don't agree; however, that supporting other persistence tools turns XAF upside down. Frankly, I should be able to have data contained in XML files, or in a database (via XPO), or via any mechanism and have XAF handle it smoothly. I would also love to see support for exporting/importing directly into Excel, for example. I believe all the scenarios are handled best under the approach DevExpress proposed where the persistent layer (so-to-speak) no longer is concerned with how persistence is accomplished.
     
    Perhaps, if you had EDI (electronic data interchange) issues to deal with as well, you might start to see other advantages. For example, if your customer's customers and/or vendors now demanded EDI support in order to do business, then perhaps you would understand how nice it is to have a framework designed to abstract persistence.
     
    Honestly, I am happy that the current version of XAF meets or exceeds your expectations, but those of us who have requirements that XAF does not currently meet are not going to stand by and say "Oh, well" when XAF has not gotten to the level we require.
     
    > Client machines nowadays are way underworked with their high performances. So it makes perfect sense to distribute the processing load to the clients while the server remains thin, hosting only a DB server.
     
    Yep, and I support that, but that also introduces major security holes; thus, some of us rely on the client to perform these functions where most errors are caught client-side, but we cannot rely on the client as a standalone level of security, the service must still perform checks performed by the client.
     
    Does it add workload to the service? Certainly, but the overhead is minimal and the most basic of servers can more than adequately perform high volume transaction processing.
     
    NOTE: I am not suggesting XAF drop 2-tiers scenarios, but I am more than suggesting it should support multi-tiers and I strongly disagree that adding such support is some complete overhaul of XAF turning it into some entirely different product that is no longer capable of rapid development. That is an awfully broad, generic, and I believe fundamentally flawed assumption.
     
    Perhaps, I am wrong, but I don’t believe DevExpress would have proposed such a move if they believed it introduced such a radical shift as you suggest. I support such a move and share my view. I fully understand your concern and you certainly should express your view. I am not devaluing your opinion, but I am disagreeing that such a move is as radical and problematic as you suggest.
     
    > What comforts me is the fact that DX has always done a great job supporting their customers and finding innovative solutions. So for now I'm positive that my needs will still be covered in future versions.
     
    I think DevExpress has top-notch support and I agree with your statement. However, I am also one of their customers and I believe these changes are proposed to support customers in my scenario. Great, you are happy with things as they are. Some of us have no choice but to demand more and your suggestion is to categorically reject our needs. I am not demanding anything, but I am pleased they are moving towards supporting customers in my scenario.
     
    Please, do express what you believe is the best move for DevExpress. I am simply exerting my right to do the same.
     
     
    Trevor Westerdahl - DX Squad
    BLOG: http://trevorunlocked.blogspot.com/
  • Marco Kummer

    Re: Support for third party persistence frameworks - WHY?

    7/18/2009 10:10 AM
    • Top 500 Contributor
    • Joined on 7/17/2009
    • Posts 38

    Trevor, I fully understand and respect your requirements and the fact that you really hope for extended support for persistence frameworks. I really do. But while you'll be able to start blank projects with an open persistence layer support, I'm on the other end with several end customers running solutions with XAF/XPO. So if the scenarios you mentioned will be supported and they introduce major breaking changes, then how am I going to explain to my customers: "Hey, your next update will cost a lot more for the same functionality, because I had to overcome a lot of breaking changes in the underlying framework, in favor of customers with different requirements" ? I don't think they'll care, so I'll be the one paying for it with my own time.

    So I'm not categorically rejecting your needs, I never said that. But I would definitely consider it to be unfair to make existing customers re-write major code blocks just so that new customers can benefit from an open persistence layer. And maybe if you had as much existing XAF/XPO codebase as me, you could relate to my point. (maybe you even do, I don't know)

    Maybe a sort of outline about how DX wants to do this transition and how XPO customers will be affected would help take away my concerns. Maybe the whole thing is absolutely no big deal, but it would just help to know more. Right now, all I know is that XAF and XPO are tightly coupled, which means that de-coupling them would most likely introduce breaking changes.

    I'm only medium familiar with EDI. But I don't understand how EDI would depend on the persistence layer used? (Persistence layers didn't even exist back when EDI was "invented") If I had to support it for one of my customers today, then I'd drop in a Windows service project with a reference to the XAF Base Module containing the business classes. This service would handle the data exchange on what ever communcations channel is required, and act on the business objects accordingly. I've done this before for other formats of data exchange (e.g. XML), and so far it works perfectly.

    > Persistence is simply a storage mechanism where an application performs CRUD operations. Why is it that CRUD operations must be tied directly to XPO and XPO directly to XAF?

    Well I'm not saying it has to be this way. I'm saying I like it the way it is now for several reasons: Performance, ease of configuration, etc. So can you guarantee that decoupling XPO from XAF won't affect data performance in a negative way? I believe it will, because introducing an additional abstraction layer always affects performance. And as you said yourself, all we gain from this decoupling is "simply a storage mechanism" which we already have with XPO, and which supports the majority of commonly used db engines today.

    I totally agree with you on the security standpoint, though. A central service would make security enforcement a lot better. And as you suggested, it would be great to see this possibility created within XPO by DX.

    Have a great weekend!

  • Tolis Bekiaris [DX-Squad]

    Re: Support for third party persistence frameworks - WHY?

    7/18/2009 11:57 AM
    • Top 50 Contributor
    • Joined on 6/21/2007
    • Posts 592

    @Marco you have a strong point by your sayings, and they should be said at public so to Dx to remembers them when starting any transition.

    But I also think that Dx guys are talanted and expiriend enough to create a bridge for any ORM with less impact as possible, of course zero impact is imposible and still we, Xpo people have to learn new stuff in order other ORM guys can work with Xaf. This is not bad in my opinion cause if Xaf community gets bigger everything around it will grow as well, so do we!!!

     

  • Marco Kummer

    Re: Support for third party persistence frameworks - WHY?

    7/18/2009 12:11 PM
    • Top 500 Contributor
    • Joined on 7/17/2009
    • Posts 38

    Tolis, I totally agree with you. Learning new things has always been part of the process. And when I'm starting new projects I like to seize the opportunity to learn new technologies as well.

    But there's a clear difference between the addition of new features to extend and improve a product - and the alteration of existing features. The latter doesn't usually involve a beneficial learning process but simply means a lot of tedious work that none of our end customers wants to pay for. That's the kind of work that we don't grow by, and I think we all like to avoid it. So if XAF will offer great new enhancements I'll absolutely take advantage of them. On the other hand I wouldn't be pleased if I had to manually re-write say 5% of the old projects' code just to be able to re-compile them in the latest XAF version to finally achieve the same thing that had already worked before.

    So I believe we're on the same track here.

  • Tolis Bekiaris [DX-Squad]

    Re: Support for third party persistence frameworks - WHY?

    7/18/2009 1:32 PM
    • Top 50 Contributor
    • Joined on 6/21/2007
    • Posts 592

    That 5% remind me the days when Xaf was borned. That times the 5% was not a rare case at all. Thats why I spoke about Dx's experience in my previous post, cause I think that 5% nowdays does not apply at all. I am happy that we make a big post on this so Dx can see it and decide. And dont take me wrong if Dx can make it without 5% I would be much happier

More from DevExpress
Live Chat
Have a pre-sales question?
Need assistance with your evaluation?
We are here to help.
Chat is one of the many ways you can contact members of the DevExpress Team. We are available Monday-Friday between 8:30am and 5:00pm Pacific Time.
If you need additional product information, require pre-sales assistance, or want help with your order, write to us at info@devexpress.com or call us at
+1 (818) 844-3383.