I have been using PRPC for many years and I am comfortable with the concept of using Obj- methods for standard read/write activities. I notice that from 7.4 onwards there has been a push towards using Saveable Data Pages to persist data. But I am struggling to see the advantages these add and wonder if I am missing something.
Looking at the complexities surrounding developing these (defining a data page, defining a load method, defining how to save it and the non-linear logic progression this implies), it seems less useful than the traditional methods. The only advantage I can see is that it works declaratively instead of procedurally. However, given the performance impact of declarative processing and the advice to avoid overusing it, is it really beneficial to use these Saveable Data Pages instead of controlling the saves programmatically? Is taking away power from the developer offset by convenience? And is it as reliable (declarative expressions occasionally do not fire, making them unsuitable for data that requires 100% reliability)?
I am open to conversion provided someone can show me a realistic use case where it outperforms traditional methods and/or is simpler to use (i.e. is it really better, or is it like Data Transforms that add nothing but increase complexity and maintenance effort?). And above all, can be shown that there are zero instances of Data Pages not saving when they should?
I don't have extensive experience with saveable data pages, but at a high level, it has all the benefits of data pages (define once, reference anywhere, on demand, etc.). With the obj-methods, it is incumbent on you as the developer to ensure the data is in the clipboard, that you write it to the database, etc. With the savable data page, you can put those definitions around the page and not the specific process.
I would agree it's a bit more complex defining the savable data page at first, rather than using obj methods, but over the course of building a complex application, that complexity up front can avoid more complexity down the line. Not every object you write to the database is going to be one you want to define as a savable data page, so continue using pages and obj methods if they are working for you. These are just one more tool in your box for meeting your business requirements.
For reference, here's what the help file has to say on the subject...