다음을 통해 공유


데이터 표현

컴퓨팅 환경은 네트워크 아키텍처와 마찬가지로 크게 다를 수 있습니다. 이러한 차이를 수용하기 위해 MIDL을 사용하면 데이터를 나타내는 방식을 수정할 수 있습니다. 경우에 따라 데이터를 애플리케이션에서 더 쉽게 처리할 수 있는 형식으로 변환하여 개발을 간소화할 수 있습니다. 네트워크를 통해 보다 효율적으로 전송될 수 있도록 애플리케이션의 데이터 형식을 변경할 수 있습니다.

[transmit_as][represent_as] 특성은 스텁이 클라이언트와 서버 간에 전달하는 허용되는 형식을 클라이언트 및 서버 애플리케이션에서 사용하는 사용자 형식과 연결하도록 컴파일러에 지시합니다. 사용자 형식과 변환 가능한 형식 간의 변환을 수행하는 루틴과 변환된 데이터를 보유하는 데 사용된 메모리를 해제하는 루틴을 제공해야 합니다. [transmit_as] IDL 특성 또는 [represent_as] ACF 특성을 사용하면 스텁이 전송 전후에 이러한 변환 루틴을 호출하도록 지시합니다. [transmit_as] 특성을 사용하면 네트워크를 통해 전송하기 위해 한 데이터 형식을 다른 데이터 형식으로 변환할 수 있습니다. [represent_as] 특성을 사용하면 네트워크의 데이터가 애플리케이션에 표시되는 방식을 제어할 수 있습니다.

[wire_marshal][user_marshal] 특성은 OSF-DCE IDL에 대한 Microsoft 확장입니다. 해당 구문과 기능은 각각 DCE 지정 [transmit_as][represent_as] 특성의 구문과 비슷합니다. 차이점은 데이터를 한 형식에서 다른 형식으로 변환하는 대신 데이터를 직접 마샬링한다는 것입니다. 이렇게 하려면 클라이언트 및 서버 쪽에서 데이터 버퍼 크기를 조정하고, 클라이언트와 서버 쪽에서 데이터를 마샬링 및 구분 해제하고, 서버 쪽에서 데이터를 해제하기 위한 외부 루틴을 제공해야 합니다. MIDL 컴파일러는 필요할 때 이러한 외부 루틴을 호출하도록 NDR 엔진에 지시하는 형식 코드를 생성합니다.

[wire_marshal][user_marshal] 특성을 사용하면 프로세스 경계를 넘어 전송할 수 없는 데이터 형식을 마샬링할 수 있습니다. 또한 형식 변환과 관련된 오버헤드가 적기 때문에 [wire_marshal][user_marshal][transmit_as] 및 [represent_as]에 비해 런타임에 향상된 성능을 제공합니다. [wire_marshal][user_marshal] 특성은 서로에 대해, 그리고 지정된 형식의 [transmit_as] 및 [represent_as] 특성과 관련하여 상호 배타적입니다.

[wire_marshal][user_marshal] 특성의 구현은 OSF-DCE 사양에 따라 결정되는 마샬링 규칙을 따라야 합니다. 따라서 유선 프로토콜에 익숙하지 않은 경우 이러한 특성을 사용하지 않는 것이 좋습니다. NDR 구문 전송에 대한 자세한 내용은 www.opengroup.org.

이 섹션에서는 다음 topics MIDL 특성에 대한 간략한 개요를 제공합니다.