Over the weekend, I was thinking about how to improve performance when the NOODB client and server are both in process. It’s built to assume they’re not in process, hence the serializer.
The most obvious speeder-upper would be to eliminate the serialization and deserialization. That’s when I realized that I screwed up… I never needed a custom serializer to begin with.
All I need to do is crawl the object and pull out the name/value pairs of the properties of the entire graph and put them into a neutral format. The serializer uses xml for that neutral format.
On the server, the xml is loaded into neutral objects and the server operates against that.
What I need to do:
- Eliminate the Serializer
- Move the neutral objects into common
- Have the client load up the neutral objects rather than serialize to xml
- WHEN REMOTE: just pass the neutral objects to the wcf service; let it deal with the serialization. There are no longer any KNOWN TYPE issues, etc, because the graph has been converted to something very simple and marshalable.
- WHEN LOCAL: Just pass the same objects directly to the server.
So, I wasted a lot of time on that serializer, but it was fun and I learned a lot, so my crying over spilt milk will be limited.