Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > Msxml*.XMLHTTP vs. Microsoft.XMLHTTP

Reply
Thread Tools

Msxml*.XMLHTTP vs. Microsoft.XMLHTTP

 
 
yawnmoth
Guest
Posts: n/a
 
      11-07-2006
<http://www.quirksmode.org/book/printable/xmlhttp.txt> shows two
alternatives to Microsoft.XMLHTTP - Msxml2.XMLHTTP and Msxml3.XMLHTTP.
If my understanding is correct, the different numbers refer to the
version of Microsoft's XML parser and that Microsoft.XMLHTTP refers to
the latest installed version.

This makes me wonder why sites like
<http://developer.apple.com/internet/webcontent/xmlhttpreq.html> opt to
use Msxml2.XMLHTTP, first, and then use Microsoft.XMLHTTP as a
fallback. If v2 was the latest version of the XML parser,
Microsoft.XMLHTTP would refer to it just as Msxml2.XMLHTTP does. If v3
or v4 were the latest versions, Microsoft.XMLHTTP would refer to either
of those. So why give v2 preference? Wouldn't it be better to use v4
and then v3, before using v2? Wouldn't it be better just to reference
Microsoft.XMLHTTP and not Msxml*.XMLHTTP?

 
Reply With Quote
 
 
 
 
Julian Turner
Guest
Posts: n/a
 
      11-07-2006

yawnmoth wrote:
> <http://www.quirksmode.org/book/printable/xmlhttp.txt> shows two
> alternatives to Microsoft.XMLHTTP - Msxml2.XMLHTTP and Msxml3.XMLHTTP.
> If my understanding is correct, the different numbers refer to the
> version of Microsoft's XML parser and that Microsoft.XMLHTTP refers to
> the latest installed version.
>
> This makes me wonder why sites like
> <http://developer.apple.com/internet/webcontent/xmlhttpreq.html> opt to
> use Msxml2.XMLHTTP, first, and then use Microsoft.XMLHTTP as a
> fallback. If v2 was the latest version of the XML parser,
> Microsoft.XMLHTTP would refer to it just as Msxml2.XMLHTTP does. If v3
> or v4 were the latest versions, Microsoft.XMLHTTP would refer to either
> of those. So why give v2 preference? Wouldn't it be better to use v4
> and then v3, before using v2? Wouldn't it be better just to reference
> Microsoft.XMLHTTP and not Msxml*.XMLHTTP?


Hi

I don't know what the correct answer to this is, but you should have a
look at tbe MS XML Web Log as to the recommended ProgIDs at the moment.

<URL:http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx>


Regards


Julian Turner

 
Reply With Quote
 
 
 
 
Julian Turner
Guest
Posts: n/a
 
      11-07-2006

Julian Turner wrote:
[snip]
> I don't know what the correct answer to this is, but you should have a
> look at tbe MS XML Web Log as to the recommended ProgIDs at the moment.
>
> <URL:http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx>
>



See the following quote at the end of the above entry:-

"MSXML2 vs. Microsoft namespace - I've also seen a lot of code that
instantiates the "Microsoft.XMLHTTP" ActiveX object rather than the
MSXML2.XMLHTTP.3.0 or MSXML2.XMLHTTP.6.0 if you're using 6.0. The
"Microsoft" namespace is actually older and is only implemented in
MSXML3 for legacy support. It's unfortunate we used the "better"
name on the older version, but stick to the "msxml2" namespace when
instantiating objects."

Seems to suggest that using Microsoft.XMLHTTP is actually out of date.

Regards

Julian

 
Reply With Quote
 
VK
Guest
Posts: n/a
 
      11-07-2006

Julian Turner wrote:
> Seems to suggest that using Microsoft.XMLHTTP is actually out of date.


Right: that is for the very first implementations of IXMLHTTPRequest so
should be used (if even used) as the last option.

For modern implementations it is Msxml library activated by
Msxml2.XMLHTTP or Msxml3.XMLHTTP etc.

As it can be very problematic to detect the current version of the
library (2?, 3?,..., 6?) Microsoft made "Msxml2.XMLHTTP" to be the
universal alias *for the current library on the given client* This way
you can use new ActiveXObject('Msxml2.XMLHTTP') and do not worry that
the current livrary version is say Msxml4

 
Reply With Quote
 
Martin Honnen
Guest
Posts: n/a
 
      11-07-2006
VK wrote:

> For modern implementations it is Msxml library activated by
> Msxml2.XMLHTTP or Msxml3.XMLHTTP etc.


There is no program id 'Msxml3.XMLHTTP'. If you want to use the client
side XMLHTTP component of MSXML 3 then the program id is
'Msxml2.XMLHTTP.3.0'. For MSXML 4 it is 'Msxml2.XMLHTTP.4.0', for MSXML
5 it is 'Msxml2.XMLHTTP.5.0', and for MSXML 6 it is 'Msxml2.XMLHTTP.6.0'.
See
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/e5533515-e525-4781-b68b-1ecfefdd1e89.asp>
for the MSXML 3 program ids and
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
for the introduction to that section.

> As it can be very problematic to detect the current version of the
> library (2?, 3?,..., 6?) Microsoft made "Msxml2.XMLHTTP" to be the
> universal alias *for the current library on the given client* This way
> you can use new ActiveXObject('Msxml2.XMLHTTP') and do not worry that
> the current livrary version is say Msxml4


That is not true, MSXML 4 and later components can only be instantiated
with version specific program ids e.g. 'Msxml2.XMLHTTP.4.0'.
To quote from above URL:
"After you install MSXML 4.0 or later, applications that use
version-independent ProgIDs continue to run using the most recent
version of MSXML prior to version 4.0. Typically, for most current
Windows systems, this will be MSXML 3.0"

So the version independent version id 'Msxml2.XMLHTTP' is bound to MSXML
3 or earlier but never to later versions (MSXML 4 or later) even if
these are installed.


--

Martin Honnen
http://JavaScript.FAQTs.com/
 
Reply With Quote
 
VK
Guest
Posts: n/a
 
      11-07-2006
Martin Honnen wrote:
> That is not true, MSXML 4 and later components can only be instantiated
> with version specific program ids e.g. 'Msxml2.XMLHTTP.4.0'.
> To quote from above URL:
> "After you install MSXML 4.0 or later, applications that use
> version-independent ProgIDs continue to run using the most recent
> version of MSXML prior to version 4.0. Typically, for most current
> Windows systems, this will be MSXML 3.0"
>
> So the version independent version id 'Msxml2.XMLHTTP' is bound to MSXML
> 3 or earlier but never to later versions (MSXML 4 or later) even if
> these are installed.


Right, sorry and thanks for the correction. If it is necessary to use
Microsoft XML Core Services ver.4 or above (say for specific XSLT
transformations client-side) it is necessary to use the correct ProgID.

If it is a regular ajaxoid used just to grab data / send data to the
server than the version is not important and ProgID 'Msxml2.XMLHTTP'
covers it all.

 
Reply With Quote
 
yawnmoth
Guest
Posts: n/a
 
      11-07-2006

Martin Honnen wrote:
<snip>
> There is no program id 'Msxml3.XMLHTTP'. If you want to use the client
> side XMLHTTP component of MSXML 3 then the program id is
> 'Msxml2.XMLHTTP.3.0'. For MSXML 4 it is 'Msxml2.XMLHTTP.4.0', for MSXML
> 5 it is 'Msxml2.XMLHTTP.5.0', and for MSXML 6 it is 'Msxml2.XMLHTTP.6.0'.

If there's no Msxml3.XMLHTTP program id, I assume that means that
<http://www.quirksmode.org/book/printable/xmlhttp.txt> is in error when
it references it?

Also, I assume the program id for the client side XMLHTTP component of
MSXML 1 is Microsoft.XMLHTTP?

> That is not true, MSXML 4 and later components can only be instantiated
> with version specific program ids e.g. 'Msxml2.XMLHTTP.4.0'.
> To quote from above URL:
> "After you install MSXML 4.0 or later, applications that use
> version-independent ProgIDs continue to run using the most recent
> version of MSXML prior to version 4.0. Typically, for most current
> Windows systems, this will be MSXML 3.0"
>
> So the version independent version id 'Msxml2.XMLHTTP' is bound to MSXML
> 3 or earlier but never to later versions (MSXML 4 or later) even if
> these are installed.

Does Msxml2.XMLHTTP bind itself to MSXML 1, as well?

If so, what's the point of referencing Microsoft.XMLHTTP at all?
Shouldn't Msxml2.XMLHTTP always exist when Microsoft.XMLHTTP does?

If not, then would it be more accurate to say that Msxml2.XMLHTTP is
bound to MSXML 2 and 3?

Finally, if one wanted to use the latest version of MSXML (even though
it might not be necessary), I assume the program id's ought to be
checked in this order?:

Msxml2.XMLHTTP.6.0
Msxml2.XMLHTTP.5.0
Msxml2.XMLHTTP.4.0
Msxml2.XMLHTTP
(assuming Msxml2.XMLHTTP is not bound to MSXML 1) Microsoft.XMLHTTP

 
Reply With Quote
 
Martin Honnen
Guest
Posts: n/a
 
      11-07-2006
yawnmoth wrote:

> If there's no Msxml3.XMLHTTP program id, I assume that means that
> <http://www.quirksmode.org/book/printable/xmlhttp.txt> is in error when
> it references it?


It does not help having that in there as that program id does not exist
but as the code that uses it has try/catch the script will not give an
error but rather go on and create a different component.


> what's the point of referencing Microsoft.XMLHTTP at all?


Original IE 5 and IE 5.5 installation have MSXML versions that support
that program id but not the program id Msxml2.XMLHTTP.

For all the details I have already pointed to
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
then there was already a link posted to a recent blog entry of the MS
XML team on what they want to be used currently.
Finally this knowledge base entry
<http://support.microsoft.com/kb/269238/en-us>
lists the different versions and which versions are or were included
with which other products (e.g. IE versions).




--

Martin Honnen
http://JavaScript.FAQTs.com/
 
Reply With Quote
 
yawnmoth
Guest
Posts: n/a
 
      11-07-2006

Joe D Williams wrote:
> <snip>
> So from what I can see, this should cover reasonable possiblilities?
>
> // create XMLHttpRequest request
> function createXMLHttpRequest()
> {
> if ( window.XMLHttpRequest ) // IE7 and all of interest
> {
> try { return new window.XMLHttpRequest(); }
> catch(e) {alert("window.XMLHttpRequest failed"+e.message);}
> }
> else // old IE
> {
> try { return new ActiveXObject("Microsoft.XMLHTTP"); }
> catch (e) {}
> try { return new ActiveXObject("Msxml2.XMLHTTP"); }
> catch (e) {alert("Platform not supported"+e.message);}
> }
> }


Per this discussion, it seems that it'd be better to use
Microsoft.XMLHTTP only if Msxml2.XMLHTTP is unavailable (you're doing
it in the other direction), since Microsoft.XMLHTTP refers to an older
version of Microsoft's XML Core Services then is Msxml2.

 
Reply With Quote
 
yawnmoth
Guest
Posts: n/a
 
      11-07-2006

Martin Honnen wrote:
> yawnmoth wrote:
>
> > If there's no Msxml3.XMLHTTP program id, I assume that means that
> > <http://www.quirksmode.org/book/printable/xmlhttp.txt> is in error when
> > it references it?

>
> It does not help having that in there as that program id does not exist
> but as the code that uses it has try/catch the script will not give an
> error but rather go on and create a different component.
>
>
> > what's the point of referencing Microsoft.XMLHTTP at all?

>
> Original IE 5 and IE 5.5 installation have MSXML versions that support
> that program id but not the program id Msxml2.XMLHTTP.
>
> For all the details I have already pointed to
> <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>


No page on that URL seems to discuss Microsoft.XMLHTTP request very
much.

<http://msdn.microsoft.com/library/en-us/xmlsdk/html/e5533515-e525-4781-b68b-1ecfefdd1e89.asp?frame=true>
suggests that Microsoft.XMLHTTP is bound MSXML 2. It makes no mention
of whether or not Msxml2.XMLHTTP is also bound to MSXML 2 (which would
mean that two things would be bound to it), let alone whether or not
it's bound to MSXML 1.

<http://msdn.microsoft.com/library/en-us/xmlsdk/html/5016cf75-4358-4c1f-912e-c071aa0a0991.asp>
suggests that MSXML 3 was the last one that had a version-independent
ProgID but doesn't state what the first version of MSXML to support a
version-independant ProgID was.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments