Blazor.Diagrams icon indicating copy to clipboard operation
Blazor.Diagrams copied to clipboard

About Serialization

Open kobeliu9527 opened this issue 1 year ago • 8 comments

Can it be serialized now? Saving it to a database is a common requirement, will it be implemented? Thank you for providing such a powerful library. If serialization could be implemented, that would be great. Looking forward to it! "System. Text. Json" is much more powerful than before

kobeliu9527 avatar Dec 20 '23 12:12 kobeliu9527

That would be really good

JAzevedoDev avatar Jan 09 '24 08:01 JAzevedoDev

I am also interested in this. I have written my own implementation which seems to work great, but has involved quite a bit of code writing and is possibly overkill. I'm about two write my third implementation for a more complex system but I am surprised I can't find any examples. Here is roughly what I have done: All the elements in my diagram are customized by inheriting from NodeModel, PortModel, LinkModel. I added a virtual methods GetSaveState() LoadSaveState() which emit/consume a POCO / DTO object hierarchy representing the diagram. That is, I am making a complete clone of all the state information I want to persist. This class is sufficiently simple to serialized to JSON, or EF Core, or XML.
My actual model is quite complicated - quite a few concrete nodes, links and ports which are built from a hierarchy of abstract nodes links and ports. The serialization seems to work okay so far, but I'm still keen to see if there is a smarter way.

peterharding93 avatar May 29 '24 02:05 peterharding93

Just my thoughts about serialization: A mapper should be able to handle all your cases, mapping from and to NodeModels. In addition it would leave absolutely no room for abstraction on your persistance layer.

Serializing Node Models would break the boundaries between architecture levels of every application. Depending of the technology used to transfer Data from and to the blazor app, it could also be incompatible with default serialization (think of gRPC).

MPapst avatar May 29 '24 07:05 MPapst