luciusism wrote:
I strongly recommend adapter. In fact, I wish LL would depreciate then remove selfservicing all together. Admittedly selfservicing looks nice, especially when you show those 2 lines of code samples for calling up an entity. But when you start using it with complex object graphs, you realize that lazy loading will not work performance wise.
At least in my experience, I think that the adapter vs selfservicing choice unnecessarily confuses new users. Fran, are there any plans to get rid of selfservicing someday? (Or maybe combine the two?)
With v2.0 development I've tried to combine the two, as in: make selfservicing a specialization of Adapter.
The thing was however that the architecture wasn't really combinable without creating huge problems with upgrading, there were simply too much breaking changes. So I gave up.
No there are no plans in dropping one or the other, as both have their place and we support both because they appeal to different groups of people so we don't force one onto the other. Similar to that we won't drop VB.NET support.
We will be making more changes which are template group specific in the future (we already did in v2.5 as well with xml / serialization support): if some feature doesn't really make sense on selfservicing (as it's for example used in distributed scenario's) we won't add it to selfservicing and vice versa. In v2.5 we for example added fast serialization to adapter as selfservicing is discouraged in distributed scenarios. We also optimized the Xml serialization a lot and added much more compact XML support to adapter and not to selfservicing as selfservicing isn't really usable in webservices scenarios.
What we will do in v3 is to drop .net 1.x support. But that's about it. If one asks me personally, should selfservicing be dropped, I still would say no, though if I could change one thing about llblgen pro it would be to make selfservicing a specialization of adapter as that's actually the right architecture. The thing is though that we started with selfservicing and adapter was added later on, so refactoring it now is a complete impossible mission.
I always like to use the two hierarchies to explain that agile development isn't all about YAGNI and no design up front: if I would have known adapter would have to be added anyway (We developed (and still do) llblgen pro in a user-scenario oriented approach, so no big design upfront) I would have designed the architecture way differently. Refactoring it now is technically possible but the price is simply too high, simply because it's released software and in that world there are simply way different rules than when you're working on a product that hasn't been released yet.
That's also why I always say that refactoring isn't free, it never is. Don't rely on it to make your software better, it should be great from the start. I'm still pleased with the design of llblgen pro as it is now, but it would have been better if adapter would have been the underlying layer of selfservicing. But as my mother always used to say when I was a kid: "If we would know everything up front, it would make becoming rich a walk in the park".
Dropping features in a released product is a difficult thing. Changing features because of the architecture is almost impossible to get away with. That's what makes software engineering so hard and migration processes of software from v1 to v2 often a difficult task, at least more difficult than the agile movement wants us all to believe. OF course 'agile' simply means 'adaptive to change' but the change is only in adding new features, not CHANGING behavior, at least not on a large scale: people will see there's no upgrade path and will drop it entirely as it doesnt provide them any continuation in the future and rightfully so.
The blog of one of my closest friends, Jeroen vd Bos (http://jvdb.org/blog/ ) is almost entirely spend on this problem: how to migrate software from vX to vX+1, or in general: software maintenance. If we want it or not: in the near future the far most work done in software development is maintenance related. What's more scary... in a couple of years there are more software applications on the world than that there are software engineers to maintain them...