동적 데이터 교환

컴퓨팅에서 동적 데이터 교환(Dynamic Data Exchange, DDE)은 마이크로소프트 윈도우 및 OS/2 초기 버전에서 사용된 프로세스 간 통신 기술이다. DDE는 프로그램이 다른 프로그램에서 제공하는 개체를 조작하고, 해당 개체에 영향을 미치는 사용자 작업에 응답할 수 있도록 한다. DDE는 객체 연결 삽입(OLE)에 의해 부분적으로 대체되었으며, 현재는 하위 호환성을 위해서만 윈도우 시스템에서 유지되고 있다.

 역사 및 아키텍처 
동적 데이터 교환은 1987년 윈도우 2.0 출시와 함께 한 프로그램이 다른 프로그램과 통신하거나 제어할 수 있도록 하는 프로세스 간 통신 방법으로 처음 도입되었다. 이는 선 RPC(원격 프로시저 호출)와 다소 유사하다. 당시 운영 체제와 클라이언트 애플리케이션 간의 유일한 통신 방법은 "윈도우 메시징 레이어"였다. DDE는 이 프로토콜을 확장하여 메시지 브로드캐스트를 통해 클라이언트 애플리케이션 간의 피어 투 피어 통신을 허용했다.

DDE는 메시지 브로드캐스트를 통해 실행되기 때문에 메시지 펌핑을 하지 않는 모든 창 관리 코드에 취약하다. 이 문제는 마이크로소프트 윈도우에서 선점형 멀티태스킹이 등장하기 전에 DDE가 설계되었기 때문에 고려되지 않았다.

또한, 윈도우 핸들을 관리하는 모든 코드는 DDE 브로드캐스트에 응답할 수 있다. DDE 시작자는 예상되는 응답과 예상치 못한 응답을 구별해야 한다. DDE 대화자는 일반적으로 계층적 문자열 키를 사용하여 원하는 정보를 표현한다. 예를 들어, 마이크로소프트 엑셀의 셀은 "애플리케이션" 이름으로 DDE에 알려졌다. 각 애플리케이션은 "토픽"으로 알려진 그룹으로 정보를 추가로 구성할 수 있었고, 각 토픽은 "아이템"으로 개별 데이터 조각을 제공할 수 있었다. 예를 들어, 사용자가 "Book1.xls"라는 스프레드시트의 첫 번째 행, 첫 번째 열에 있는 셀의 값을 마이크로소프트 엑셀에서 가져오려면, 애플리케이션은 "Excel"이 되고, 토픽은 "Book1.xls", 아이템은 "r1c1"이 된다. 엑셀 작업으로 인한 셀 내부의 변경 사항은 추가 메시지 브로드캐스트를 통해 호출 애플리케이션에 (역방향으로) 신호로 전달된다.

 최신 자동화 기술과의 관계 
DDE의 일반적인 용도는 사용자 정의 개발 애플리케이션이 상용 소프트웨어를 제어하는 것이다. 예를 들어, 사용자 정의 사내 애플리케이션은 DDE를 사용하여 마이크로소프트 엑셀 스프레드시트를 열고, 엑셀과 DDE 대화를 열고 DDE 명령을 보내 데이터를 채울 수 있다. 이 기능은 주로 컴포넌트 오브젝트 모델 기술 제품군으로 대체되었다. 마이크로소프트는 윈도우 95 출시 이후 DDE를 내부적으로 사용하지 않았다. 예를 들어, 엑셀은 이제 엑셀과 통신하기 위한 권장 방법인 광범위한 OLE 자동화 객체 모델을 노출한다. 그러나 이 기술은 특히 금융 데이터 배포에 여전히 사용되고 있다. DDE는 기존 윈도우 GUI 프로그램보다 더 많은 운영 체제 구성 요소를 요구하지 않으므로, 종속성을 최소화하려는 프로그램에 대한 [거의 사용되지 않는] 대안이기도 하다.

 NetDDE 
원더웨어는 DDE의 확장 기능인 NetDDE를 개발했는데, 이는 네트워크의 다른 컴퓨터에서 실행되는 DDE 인식 애플리케이션 간에 DDE 대화에 필요한 네트워크 연결을 시작하고 유지하며 데이터를 투명하게 교환하는 데 사용될 수 있었다. DDE 대화는 클라이언트 및 서버 애플리케이션 간의 상호 작용이다. NetDDE는 DDE 및 DDE 관리 라이브러리(DDEML)와 함께 애플리케이션에서 사용될 수 있었다.

/Windows/SYSTEM32
    DDESHARE.EXE (DDE Share Manager)
    NDDEAPIR.EXE (NDDEAPI Server Side)
    NDDENB32.DLL (Network DDE NetBIOS Interface)
    NETDDE.EXE (Network DDE - DDE Communication)
NetDDE 라이브러리 파일

마이크로소프트는 Windows for Workgroups부터 윈도우 XP까지 다양한 버전의 윈도우에 포함하기 위해 기본(NetBIOS 프레임만 해당) 버전의 제품에 대한 라이선스를 획득했다. 또한, 원더웨어는 TCP/IP 지원을 포함하는 향상된 버전의 NetDDE를 자체 고객에게 판매했다. 이 기술은 스카다 분야에서 광범위하게 사용된다. NetDDE를 사용하는 기본 윈도우 애플리케이션으로는 클립북 뷰어, 윈챗 및 하트 (윈도우)가 있다.

NetDDE는 윈도우 서버 2003 및 윈도우 XP 서비스 팩 2에 여전히 포함되었지만 기본적으로 비활성화되어 있었다. 윈도우 비스타에서는 완전히 제거되었다.NetDDE has been removed in Windows Vista. 그러나 이는 기존 버전의 NetDDE가 이후 버전의 윈도우에 설치되고 작동하는 것을 막지는 않는다.

 같이 보기 
 액티브X
 컴포넌트 오브젝트 모델 (COM)
 분산 컴포넌트 오브젝트 모델 (DCOM)
 마이크로소프트 .NET
 옵서버 패턴

 각주 

 출처 
 찰스 페졸드. "Dynamic Data Exchange" in Programming for Windows 95. Microsoft Press.

 외부 링크 
 MSDN: About Dynamic Data Exchange (DDE)
 NetDDE
 Clojure Bindings for DDE, for use in Clojure or Java Applications

분류:프로세스 간 통신
분류:마이크로소프트 API