What seemed to be no obstacle at all is turning out to complicate my architectural
designs lately.
Microsoft Message Queuing (MSMQ) has this strange limitation (at least for
year 2003) which prevents you to have messages longer than 4MB. Since most of .NET
architects are dumping object instances into MSMQ, which get serialized into XML,
we all have a problem with binary data. The problem lies in binary XML serialization,
XML Schema and its base64Binary datatype,
which is used in encoding. We do not get 4MB, but ~3MB message content limitation,
due to a well known 1.333 factor of base64 encoding.
Architectural design is now vastly different, since I have to split the binary documents,
while allowing them to be linked appropriately with their parent messages. And since
I'm building a document management system which will push .doc, .xls and friends on
a MSMQ stack, 4MB is often not enough.