MSXML2.XMLHTTP와 Microsoft.XMLHTTP
아래 자료의 원문은 이곳이다.
여러 예제들은 살펴본 결과 IE에서 XMLHttpRequest 객체를 생성하는데
Msxml2.XMLHTTP와 Microsoft.XMLHTTP를 사용하는 것을 알 수 있었다.
그런데 이 두 놈에 대한 차이를 설명해주는 곳이 없어서 차이점을 찾아 어설픈 번역을 해본다.
MSXML에는 프로그램 아이디에 의존하는 버전과
프로그램아이디에 독립적인 버전이 존재한다.일반적으로 스크립트가 구동되는 클라이언트가
어떤 버전의 IE일지 또 어떤 버전의 MSXML
이 설치되어 있을지 모를 경우
프로그램 아이디에 독립적인 버전을 사용하는 것이 좋다.MSXML 버전이 어떤 프로그램 아이디와 연결되는지
정확히 알 필요 없을 때 사용할 수 있다.XML DOM document의 프로그램 아이디 독립버전은 Microsoft.XMLDOM이며,
IE 5 이후에서 XML DOM을 다음과 같이 생성한다.
var xmlDocument = new ActiveXObject(‘Microsoft.XMLDOM’);
와 같이 생성한다.XML HTTP request 객체의 프로그램 아이디 독립 버전은 Microsoft.XMLHTTP이며,
IE 5 이후에서 XML HttpRequest객체는 다음과 같이 생성한다.
var httpRequest = new ActiveXObject(‘Microsoft.XMLHTTP’);
프로그램 아이디 같은 실제 MSXML버전은 인스톨된 MSXML버전에 의존한다.Which actual MSXML version such a program id is bound to depends on the MSXML version(s) installed and even on the mode (side-by-side or replace mode) a version is installed in.
프로그램 의존 버전은 서버에
어떤 버전의 MSXML이 설치되었는지 알고 있는 상태로
스크립팅 작업을 할 경우,
인트라넷 속해 있는 모든 클라이언트에
어떤 버전의MSXML이 설치 되어있는지 알고있는 상태에서
작업할 경우,
마지막으로 특정 버전의 MSXML 에서만
지원되는 기능을 사용하기를 원할 때 사용할 수 있다.MSXML 3,4,5에 해당하는 XMLHttpRequest 객체의 프로그램 아이디 의존 버전은 각각 다음과 같다.
Msxml2.XMLHTTP.version.number
예) MSXML 3으로 구현된 XMLHttpRequest 객체 생성방법
var httpRequest = new ActiveXObject(‘Msxml2.XMLHTTP.3.0′);
MSXML 4으로 구현된 XMLHttpRequest 객체 생성방법
var httpRequest = new ActiveXObject(‘Msxml2.XMLHTTP.4.0′);
MSXML 5으로 구현된 XMLHttpRequest 객체 생성방법
var httpRequest = new ActiveXObject(‘Msxml2.XMLHTTP.5.0′);
NOTE >> MSXML 4 이후로는 프로그램 아이디 의존버전만이 존재한다.
따라서 그 이전의 프로그램 아이디 독립 버전은 MSXML 4 or 5에는 바운드 되지 않는다.원문 : http://www.faqts.com/knowledge_base/view.phtml/aid/35742
….
…..
………
2.6 버전 :
this.transport = new ActiveXObject(‘Msxml2.XMLHTTP.2.6′);
위와 같이 객체를 생성, 서버에 접속하여 XML을 리턴 받은 후에
this.transport .responseXML.documentElement로 접근할 경우
에러없이 DOM 객체가 리턴되었다.
3.0 버전 :
this.transport = new ActiveXObject(‘Msxml2.XMLHTTP.3.0′);
위와 같이 객체를 생성한 후 2.6과 같은 과정을 거친 후에
this.transport .responseXML.documentElement 로 접근할 경우
null이 리턴되는 현상이 발생했다.
또 ‘Microsoft.XMLHTTP’의 경우
1.0 버전만이 설치되 있었고 아래와 같이 객체를 생성한 후에
this.transport .responseXML.documentElement으로 접근할 때는
문제 없이 수행되었다.
this.transport = new ActiveXObject(‘Microsoft.XMLHTTP’)
이는 Microsoft.XMLHTTP과 Msxml2.XMLHTTP 2.6 버전이 바운드 됐기 때문으로 판단된다.














*Recent Comments