April Showers Bring .. MudApril 13 2001 |
||
|
MSXML3 Objects not Location-Independent
|
MSXML3 SP1 ReleasedThere have been scattered reports that SP1 breaks SQL Server 7 installations. They seem to be unfounded. Testing on an unimportant computer may be prudent. If installed on a machine running SQL server, test remote access to the database server. MSXML4 Preview is AvailableMSXML4 supports XSD. Finally. XSLT Programmers Reference Second Edition ReadyThe second edition of the XSLT Bible will be available any minute now. MSXML3 Objects not Location-IndependentI thought I would share an issue I ran into MSXML3 this week that cost me $200 in support and about a day's worth of work. The MSXML objects are not location-independent because they don't allow
passing interface pointers across process boundaries. Indeed, I've
even had problems passing interface pointers across apartments in the same
process (using Here are two articles that describe the problem in more detail:
I came across this problem while attempting to transform a node that was
from a different process. The The solution is to pass the XML either as a string or a stream across the boundary, or use a file or URL. I disagree with this "by design" behavior. The MSXML
objects should support type library marshaling; that is, interface
pointers are marshaled across apartments instead of the data. I
don't want
Microsoft to
implement a custom marshaler that streams data behind my back because that
could be extremely slow. Yes,
the method call round trips require extra overhead. Let me make the decision whether to
take the hit or not. I'm sure that Microsoft's XML engineers aren't stupid and they have a good reason for this behavior. It's probably to keep the implementation as fast as possible without using excessive amounts of memory. But these guys are brilliant and I'm sure they can fix this without losing performance. Persistence Pays Off |