One of nice features of 11.4 is the passing of class-based objects between an ABL client and AppServer.
Are there plans to implement this feature for the Open Client?
How does it even make sense with Open Client? No AVM, nothing to run the code.
No AVM, but .NET CLR for instance. Just as for example ProDataSets are mapped tot ADO.NET DataSets and vice versa, it would be nice to have ABL classes be mapped to .NET classes.
Well, frankly, I don't like the idea of passing classes across a boundary like this, even if there is an AVM at both ends. I would much rather have the source side handle whatever issues it has in the context, e.g., if this is triggered by an error, and then pass a message back that conveys the needed information. The message can be agnostic about the technology at the other end.
So, if one could do it, I wouldn't, but frankly I think you are dreaming to hope for it. Data, yes, behavior, no.
How do we get context to the open clients? O, yes. Put primitive data type parameters in the .p.
Now what if the seventeenth service don't care about parameter 4 but need to pass no. 8? Oops. New interface.... New proxies.... New WSDL.....
Now imagine a world where a class containing public properties, i.e. a parameter class, can be passed over the wire.
You have specific needs for a program? No problem, derive a new class or implement the interface in a new class. Base signatures stays unchanged all over.
Good news, in 11.4 you can pass the class!
Bad news, you are now locked into AVM-based clients. You are back in circa 1998 in that respect....
OE 11.4 Serialization is a time machine moving me back almost 20 years!
How do we get context to the open clients? O, yes. Put primitive data type parameters in the .p.
Now what if the seventeenth service don't care about parameter 4 but need to pass no. 8? Oops. New interface.... New proxies.... New WSDL.....
Now imagine a world where a class containing public properties, i.e. a parameter class, can be passed over the wire.
You have specific needs for a program? No problem, derive a new class or implement the interface in a new class. Base signatures stays unchanged all over.
Good news, in 11.4 you can pass the class!
Bad news, you are now locked into AVM-based clients. You are back in circa 1998 in that respect....
OE 11.4 Serialization is a time machine moving me back almost 20 years!
Flag this post as spam/abuse.
What I hoped they would give us in 11.4, but didn't make it ... although I think it is likely coming soon ... is controllable serialization of a class to XML or JSON. Yes, one can do this now with a certain amount of work, but it would be very nice to have it built-in ... serialization and de-serialization. Then, one can have any technology at the other end and lighterweight packets to send.
I guess it's time for the ABL to interact with some predefined interfaces. So the ABL defines ISerializable (or similar) and you get the possibility to supply your own implementation. Same for IIterable and FOR EACH, but that's off-topic.
“I guess it's time for the ABL to interact with some predefined interfaces.”
But that would require a wide community consent about how the structure of those interfaces. Otherwise those that already have all that functionality might be biten.
No, it just requires Progress to come up with the interface and others to either rebuild or stick with their current solution. ISerializable won't be rocket science and the ones who have a solution already will probably be able to wrap it somehow.
edited: typo
Perhaps I need to dig out the enhancement requests I put in years ago and get them on the Ideas page. I think all we need is to be able to serialize an object in the same way that we can serialize a dataset to JSON or XML. I.e., ways to flag thing to omit from the serialization and to change the serialized name and such. Then, regardless of the technology at the other end of the wire, one can provide an object with a method that will initialize itself from that output.
Sure, I wouldn't mind if Progress came up with two implementations of the ISerialize interface: JsonSerializer & XmlSerializer ;-)