'AMF'에 해당되는 글 3건

  1. 2008.12.27 AMF 직렬화 방식 사용법
  2. 2008.12.23 바이너리 데이터
  3. 2008.09.22 IT용어


플래시 플레이어는 기본적으로 AMF데이터를 지원하고 있다. 이 AMF라는 것은 오브젝트 인코딩 데이터로서 액션스크립트에서 사용되는 데이터들을 바이트 형태로 저장 / 전송 할 수 있는 방식이다.
가령 액션스크립트의 NetConnection을 사용하여 리모트 콜을 하면 데이터는 자동으로 AMF 형태로 직렬화 하고 사용하는 객체나 클래스에서는 이를 다시 AMF 형태에서 역직렬화 하여 사용한다. 마찬가지로 Shared Object 에 저장을 할때는 자동으로 AMF로 저장되고 Shared Object에서 읽어올 때는 액션스크립트 객체로 역직렬화 한다.

[ AMF 통신 구조 ]
[액션스크립트 객체] <- [AMF] -> [시스템이나 서버 등]


AMF 방식에는 AMF0과 AMF3의 두 종류가 있다.
AMF0은 AVM1과의 호환성을 지원하고 AMF3은 AVM2와 AIR를 지원한다.

보통 런타임 초기에 AMF데이터로 사용할 객체를 registerClassAlias로 매핑해야 한다.
registerClassAlias( "별명" , 실제 클래스 이름 )

이후 런타임시 필요한 데이터를 AMF로 사용할 객체에 데이터를 저장하고 사용하다가 필요할 때 해당 객체를 생성하여 대괄호 연산식([]) 등을 사용하여 꺼내쓴다.

Flex인 경우에는 [RemoteClass(alias="별명") 메타 태그를 AMF로 사용할 객체에 코딩하여 액션스크립트 객체를 매핑하고, 이 후 [Bindable]을 사용하여 등록한 매핑 클래스를 가져와 사용하여야 한다.

Posted by 버터백통
AIR/파일시스템 연동2008. 12. 23. 11:01


AS3의 가장 큰 장점중에 하나는 지금껏 AS에서 지원이 불가능했던 low level작업이 가능한 점이다. 이는 AS3와 AIR를 통하여 바이너리 데이터를 직접 만들거나 수정 또는 zip알고리즘과 jpg와 png등 이미지 처리 알고리즘을 제공함과 동시에 기타 doc와 ppt... 등 파일 형태만 알고 있다면 모든 파일을 직접 만들 수 있기 때문이다.
이와 같은 작업을 가능케하는 것이 IDataInput, IDataOutput 인터페이스를 구현한 ByteArray라는 클래스이다. 또는 flash.netURLStream(IDataInput만 구현)과 URLLoader를 사용하여도 바이너리 데이터로 접근(만) 할  수 있다.

   - ByteArray는 읽고 쓰기가 모두 가능한 바이너리 관리 전용 클래스이다.
   - URLLoader인 경우에는 바이트배열에 특화되진 않았다. data를 모두 받은 후에 접근 하여 관리한다. 
   - URLStream는 delegator에서 직접 바이트 배열을 읽을 수 있지만 IDataInput만 구현하여 기록은 불가능 하다.
     data를 받는 중에도 접근 가능하다.


ByteArray는 기본적인 바이너리 데이터를 기록하거나 읽기 위한 기본적인 클래스이며 외부 파일데이터를 가져오는 통신 클래스에서는 URLStream를 사용한다. AIR에서는 앞서 살펴본 FileStream(IDataInput, IDataOutput 인터페이스를 구현)를 사용한다.

FileStream은 ByteArray처럼 읽고 쓰기가 모두 가능한 클래스 이다. 따라서 AIR에서는 FileStream만으로 파일을 읽어 들여와 기록까지 가능해 졌다. 복잡한 바이너리 작업이라면 ByteArray를 활용하면 중간에 벌어진 틈을 부드럽게 처리 할 수 있을 것이다.


IDataInput, IDataOutput를 구현한 ByteArray 속성과 메서드 *

[ Public 속성 ]

bytesAvailable : uint
[읽기 전용] 바이트 배열의 현재 위치에서 배열 끝까지 읽을 수 있는 데이터 바이트 수입니다.

defaultObjectEncoding : uint
[정적] 새 ByteArray 인스턴스에 사용할 ByteArray 클래스의 기본 객체 인코딩을 나타냅니다.

endian : String
데이터의 바이트 순서를 Endian.BIG_ENDIAN 또는 Endian.LITTLE_ENDIAN으로 변경하거나 읽습니다.

length : uint
ByteArray 객체의 바이트 단위 길이입니다.

objectEncoding : uint
ByteArray 인스턴스에서 쓰거나 읽을 때 ActionScript 3.0, ActionScript 2.0 또는 ActionScript 1.0 형식을 사용할지 여부를 확인하는 데 사용합니다.

position : uint
ByteArray 객체에 대한 파일 포인터의 현재 위치를 바이트 단위로 옮기거나 반환합니다.

[ Public 메서드 ]
ByteArray()
이 클래스의 메서드와 속성을 사용하여 데이터 저장소 및 스트림을 최적화할 수 있도록 압축된 바이트 배열을 나타내는 ByteArray 인스턴스를 만듭니다.

clear():void
바이트 배열의 내용을 지우고 길이 및 위치 속성을 0으로 재설정합니다.

compress(algorithm:String):void
바이트 배열을 압축합니다.

deflate():void
DEFLATE 압축 알고리즘을 사용하여 바이트 배열을 압축합니다.

inflate():void
바이트 배열의 압축을 해제합니다.

readBoolean():Boolean
바이트 스트림에서 부울 값을 읽습니다.
포맷타입 : Boolean
포맷 : Boolean
0인 경우 false , 기타인 경우 true

readByte():int
바이트 스트림에서 부호 있는 바이트를 읽습니다.
포맷타입 : raw바이트
포맷 : Byte 
하나 또는 여러개의 raw바이트

readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
바이트 스트림에서 length 매개 변수로 지정된 데이터 바이트 수를 읽습니다.
포맷타입 : raw바이트
포맷 : Byte 
하나 또는 여러개의 raw바이트

readDouble():Number
바이트 스트림에서 IEEE 754 배정밀도 64비트 부동 소수점 숫자를 읽습니다.
포맷타입 :  숫자
포맷 : Double
Double-precision 64비트 부동 소수점 수

readFloat():Number
바이트 스트림에서 IEEE 754 단정밀도 32비트 부동 소수점 숫자를 읽습니다.
포맷타입 :  숫자
포맷 : Float
Single-precision 32비트 부동 소수점 수


readInt():int
바이트 스트림에서 부호 있는 32비트 정수를 읽습니다.
포맷타입 :  숫자
포맷 : Integer

readMultiByte(length:uint, charSet:String):String
지정된 문자 세트를 사용하여 바이트 스트림에서 지정된 길이의 멀티바이트 문자열을 읽습니다.
포맷타입 :  문자열
포맷 : Multibyte
디폴트 시스템 코드페이지 사용하지 않고 특정 문자 세트 사용

readObject():*
바이트 배열에서 AMF 직렬 형식으로 인코딩된 객체를 읽습니다.
포맷타입 :  객체
포맷 : Object
AMF를 사용한 직렬화/역직렬화된 객체

readShort():int
바이트 스트림에서 부호 있는 16비트 정수를 읽습니다.
포맷타입 :  숫자
포맷 : Short
16비트정수

readUnsignedByte():uint
바이트 스트림에서 부호 없는 바이트를 읽습니다.
포맷타입 : raw바이트
포맷 : Byte 
하나 또는 여러개의 raw바이트

readUnsignedInt():uint
바이트 스트림에서 부호 없는 32비트 정수를 읽습니다.
포맷타입 :  숫자
포맷 : Integer
32비트정수

readUnsignedShort():uint
바이트 스트림에서 부호 없는 16비트 정수를 읽습니다.
포맷타입 :  숫자
포맷 : Short
16비트정수

readUTF():String
바이트 스트림에서 UTF-8 문자열을 읽습니다.
포맷타입 :  문자열
포맷 : UTF-8
디폴트 시스템 코드페이지 사용

readUTFBytes(length:uint):String
바이트 스트림에서 length 매개 변수에 지정된 길이의 UTF-8 바이트 시퀀스를 읽고 문자열을 반환합니다.
포맷타입 :  문자열
포맷 : UTF-8
디폴트 시스템 코드페이지 사용

toString():String
바이트 배열을 문자열로 변환합니다.

uncompress(algorithm:String):void
바이트 배열의 압축을 해제합니다.

writeBoolean(value:Boolean):void
부울 값을 씁니다.
포맷타입 : Boolean
포맷 : Boolean
0인 경우 false , 기타인 경우 true

writeByte(value:int):void
바이트 스트림에 바이트를 씁니다.
포맷타입 : raw바이트
포맷 : Byte 
하나 또는 여러개의 raw바이트

writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
지정된 바이트 배열 bytes에서 offset(0부터 시작하는 인덱스)부터 시작하여 length만큼의 바이트 시퀀스를 데이터 스트림에 씁니다.
포맷타입 : raw바이트
포맷 : Byte 
하나 또는 여러개의 raw바이트

writeDouble(value:Number):void
바이트 스트림에 IEEE 754 배정밀도 64비트 부동 소수점 숫자를 씁니다.
포맷타입 :  숫자
포맷 : Double
Double-precision 64비트 부동 소수점 수

writeFloat(value:Number):void
바이트 스트림에 IEEE 754 단정밀도 32비트 부동 소수점 숫자를 씁니다.
포맷타입 :  숫자
포맷 : Float
Single-precision 32비트 부동 소수점 수

writeInt(value:int):void
바이트 스트림에 부호 있는 32비트 정수를 씁니다.
포맷타입 :  숫자
포맷 : Integer

writeMultiByte(value:String, charSet:String):void
지정된 문자 세트를 사용하여 멀티바이트 문자열을 바이트 스트림에 씁니다.
포맷타입 :  문자열
포맷 : Multibyte
디폴트 시스템 코드페이지 사용하지 않고 특정 문자 세트 사용

writeObject(object:*):void
객체를 바이트 배열에 AMF 직렬 형식으로 씁니다.
포맷타입 :  객체
포맷 : Object
AMF를 사용한 직렬화/역직렬화된 객체

writeShort(value:int):void
바이트 스트림에 16비트 정수를 씁니다.
포맷타입 :  숫자
포맷 : Short
16비트정수

writeUnsignedInt(value:uint):void
바이트 스트림에 부호 없는 32비트 정수를 씁니다.
포맷타입 : raw바이트
포맷 : Byte 
하나 또는 여러개의 raw바이트

writeUTF(value:String):void
UTF-8 문자열을 바이트 스트림에 씁니다.
포맷타입 :  문자열
포맷 : UTF-8
디폴트 시스템 코드페이지 사용

writeUTFBytes(value:String):void
UTF-8 문자열을 바이트 스트림에 씁니다.
포맷타입 :  문자열
포맷 : UTF-8
디폴트 시스템 코드페이지 사용

통상적으로 IDataInput와 IDataOutput 인터페이스는 바이트 데이터를 관리하는 속성과 메서드를 선언하였으므로 이를 구현한 ByteArray와 FileStream을 이용하면 간단하게 데이터 읽기와 기록이 가능하다.
읽고 쓰기 작업시에 유효 바이트의 길이를 넘지 않기 위해 bytesAvailable속성을 이용하여 현재 위치에서 데이터 끝까지의 데이터 수를 읽어와 길이를 자르거나 필요한 만큼 읽어오며 작업을 하며, 현재 위치를 이동하거나 읽어오는 position속성과 함께 사용한다. 바로 이 둘( bytesAvailable , position )이 리드버퍼를 이용하는 속성이다.

리드버퍼란 바이트 묶음으로 구성된 컨테이너 정도라고 정의하면 된다. 데이터가 읽을 수 있는 상태가 되면 데이터는 이러한 리드 버퍼 안으로 들어오게 된다. 실제로 위의 readXXX() 메서드들은 리드버퍼의 데이터를 읽어 오는 것이며 open(동기)을 사용하면 리드버퍼에 데이터를 모두 담은 상태에서 데이터에 접근이 가능해지며 동기적 작업에서는 데이터의 모든 바이트를 바로 읽을 수 있기 때문에 사용가능한 유효 바이트를 초과하는 경우가 거의 없지만 openAsync(비동기)를 사용하면 리드버퍼에 데이터는 읽혀짐과 동시에 삭제가 되므로 다른 ByteArray의 delegator에 저장한 다음 작업하여야 한다.


참고) 1 바이트는 256가지 값의 표현이 가능하다. 1bit는 0,1로 2개의 값을 표현하고 이것이 모여 8bit(2^8)가 1바이트가 된다. 8비트는 2의 8승이며 0부터 255까지의 값을 표현 할 수 있다.

참고)
**** 오브젝트 인코딩 데이터 : AMF ****
ObjectEncoding 클래스는 객체를 직렬화하는 클래스(예: NetStream, NetConnection, SharedObject 및 ByteArray)가 이전 버전의 ActionScript와 작동할 수 있도록 합니다. 
객체 인코딩은 객체가 AMF(Action Message Format)에서 표현되는 방식을 제어합니다.
Flash Player는 AMF를 사용하여 Flash 응용 프로그램과 원격 서버 간의 효율적인 통신을 가능하게 합니다.
AMF는 원격 프로시저 호출을 압축된 이진 표현으로 인코딩하여 Flash Media Server에서 사용되는 HTTP/HTTPS 또는 RTMP/RTMPS 프로토콜을 통해 전송될 수 있도록 합니다.
ActionScript 객체 및 데이터 값은 이진 형식으로 직렬화됩니다.
이것은 일반적으로 XML 등과 같은 표현보다 더 압축된 형식입니다.
    
Flash Player 9는 AMF3 및 AMF0의 두 가지 다른 형식으로 직렬화할 수 있습니다.
AMF3은 ActionScript 3.0에서 사용되는 기본 직렬화로 ActionScript 1.0 및 2.0에서 사용되는 AMF0보다 다양한 장점을 제공합니다. AMF3은 AMF0보다 네트워크를 통해 더 효율적으로 데이트를 전송합니다.
또한, int 및 uint 객체를 정수로 전송하는 것을 지원하며, ByteArray, XML 및 IExternalizable 등 ActionScript 3.0에서만 사용 가능한 데이터 유형을 지원합니다. 이것은 ActionScript 3.0 및 Flex 2와 같은 AMF3 인코딩을 사용하는 서버에서만 사용할 수 있습니다.

ByteArray, NetConnection, NetStream, SharedObject, Socket 및 URLStream 클래스에는 ObjectEncoding 클래스로부터 상수가 할당되는 objectEncoding 속성이 포함되어 있습니다. objectEncoding 속성의 비헤이비어는 객체에 따라 달라집니다.

참고) endian자료 보기
Posted by 버터백통
Computing2008. 9. 22. 18:03

RPC[Remote Procedure Call]
분산 처리 방식에서, 어떤 컴퓨터의 프로그램에서 다른 컴퓨터에서 동작하고 있는 프로그램의 절차(C 언어에서는 function)를 직접 불러내는 것. 이 기능으로 두 컴퓨터의 프로그램 사이에서 직접 통신이 가능하며, 통신망을 통해 실행 결과의 값을 주고받는다. 네트워크 파일 시스템(NFS), NCS(Network Computing System) 등 분산 처리 기능을 실현하는 소프트웨어에서 사용된다.

AMF[Action Message Format]
- AMF 채널: AMF는 ActionScript 객체를 효율적으로 직렬화하기 위해 사용되는 바이너리 메시지 형식입니다. AMFChannel은 Flash Player용 flash.net.NetConnection 클래스를 사용하여 HTTP를 통해 AMF 형식의 메시지를 AMFEndpoint로 비동기적으로 전송합니다. Flash Player 8.5에서는 AMF 3으로 알려진 새로운 버전의 AMF를 도입하여 새로운 ActionScript 3.0 언어를 제공하지만 이전 버전인 AMF 0도 계속 지원됩니다. 새로운 ActionScript 3 데이터 유형에 대한 지원 외에도 AMF 3에서는 공통적으로 발생하는 클래스 설명과 참조 문자열을 직렬화하여 보다 간결한 인코딩 형식을 사용하고 중복된 정보를 줄입니다. NetConnection(및 AMFChannel)은 기본적으로 AMF 3을 사용합니다. AMFChannel은 HTTP를 통한 바이너리 정보 사용이 가능하고 보안을 위해 암호화 기능을 사용할 필요가 없는 환경에서 모든 RPC 서비스에 대해 권장되는 채널입니다.

- 보안 AMF 채널: 이 채널은 AMFChannel와 동일하지만 HTTPS를 사용하여 AMF 형식의 메시지를 AMFEndpoint로 전송하는 점이 다릅니다

SOAP (Simple Object Access Protocol)
SOAP (Simple Object Access Protocol)은 웹상의 객체들을 액세스하기 위한 마이크로소프트의 프로토콜이다. 이 프로토콜은 HTTP를 사용하여 인터넷에 텍스트 명령어를 보내기 위해 XML 구문을 쓴다.
SOAP은 COM, DCOM, 인터넷 익스플로러, 마이크로소프트의 자바 이행 등 내에서 지원되면, XML과 HTTP 통신을 기반으로 하여 네트워크 상에 존재하는 각종 컴포넌트간의 호출을 효율적으로 실현하기 위한 방법을 제시하는 규약이다.

EAI (Enterprise Application Integration)
전사적 애플리케이션 통합. 미들웨어를 이용해 비즈니스 로직을 중심으로 기업내 각종 애플리케이션을 통합하는 과정. 전통적인 미들웨어가 개별적인 애플리케이션 간의 통합과 그들 간의 불연속적인 트랜잭션을 용이하게 하는 반면, EAI는 기업이 여러 애플리케이션 간의 관계와 비즈니스 프로세스의 근간을 이루는 트랜잭션 네트워크를 관리할 수 있도록 한다. EAI는 말 그대로 기업의 레거시 애플리케이션을 포함해 모든 애플리케이션을 통합하는 것이 목적이다. 이런 EAI의 기본 목적은 어느 업체나 동일하지만 실제로 EAI 솔루션을 제공하는 업체들의 접근 방법은 그 업체가 갖고 있는 기반 기술, 그리고 접근 방법에 따라 다소 달라진다. 

SAP[Service Access Point]
계층화된 프로토콜에서 하나의 계층은 서비스 제공자이며 몇 개의 서비스 기능들로 구성된다. 하나의 서비스 기능은 어떤 계층의 서브시스템이다. 각 서브시스템은 또한 엔티티들로 구성될 수 있다. 계층의 기본 개념은 자신의 상위 계층에 서비스를 제공하는 것을 의미하며 상위 계층이 하위 계층에 서비스를 요청함으로써 실제적인 서비스가 제공된다. 계층간의 인터페이스에서 프리미티브(primitives)라는 4개의 트랜잭션이 서비스 접근점(SAP)이라 불리는 식별자를 통해 계층 사이에서 호출된다. 서비스 접근점은 특정 서비스 기능의 주소나 식별자를 포함한다.

프리미티브에는 요구(request), 지시(indication), 응답(response), 확인(confirm)이 있다. 이중 요구는 서비스 사용자가 기능을 호출하기 위해서 사용하고, 지시는 서비스 제공자가 기능을 호출하기 위해 또는 서비스 접근점에서 기능이 호출되었음을 지시하기 위해 사용하며, 응답은 서비스 사용자가 지시에 의해 이미 호출된 기능을 완료시키기 위해 사용하고, 확인은 서비스 제공자가 요구에 의하여 이미 호출된 기능을 완료시키기 위해 사용한다.

HTTP [hypertext transfer protocol]
인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약이다. 하이퍼텍스트는 문서 중간중간에 특정 키워드를 두고 문자나 그림을 상호 유기적으로 결합하여 연결시킴으로써, 서로 다른 문서라 할지라도 하나의 문서인 것처럼 보이면서 참조하기 쉽도록 하는 방식을 의미한다.
http는 1989년 팀 버너스 리(Tim Berners Lee)에 의하여 처음 설계되어 인터넷을 통한 월드 와이드 웹(World-Wide Web) 기반에서 전 세계적인 정보공유를 이루는데 큰 역할을 하였다. http의 첫번째 버전은 인터넷을 통하여 가공되지 않은 데이터를 전송하기 위한 단순한 프로토콜이었으나, 데이터에 대한 전송과 요구·응답에 대한 수정 등 가공된 정보를 포함하는 프로토콜로 개선되었다.
인터넷 주소를 지정할 때 'http://www....'와 같이 하는 것은 www로 시작되는 인터넷 주소에서 하이퍼텍스트 문서의 교환을 http 통신규약으로 처리하라는 뜻이다.


HTTPS
HTTPS는 월드 와이드 웹통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 통신에서의 인증과 암호화를 위해 넷스케이프 커뮤니케이션즈 코퍼레이션이 개발했으며, 전자 상거래에서 널리 쓰인다.

- HTTP 채널: 이 채널은 flash.net.URLLoader를 사용하여 XML 형식의 메시지를 HTTP를 통해 HTTPEndpoint로 비동기적으로 전송하는 텍스트 기반 채널입니다. XML 형식은 강력한 형식의 ActionScript 3.0 데이터를 지원하며 공통적으로 발생하는 객체, 클래스 정의 및 문자열에 대한 참조별 직렬화와 같은 AMF 3의 다양한 최적화 기술을 포함합니다. 이 채널은 텍스트 전용 통신 요구 사항이 있는 환경에서 유용합니다.

참고: flash.utils.IExternalizable 인터페이스는 아직 HTTPChannel에서 완전히 지원되지 않습니다. 따라서 객체 참조를 복구할 필요가 있는 mx.utils.ObjectProxy 및 mx.collections.ArrayCollection 인스턴스는 이 채널을 사용하여 직렬화하면 안 됩니다. - Secure HTTP 채널: 이 채널은 HTTPChannel 클래스와 동일하지만 HTTPS를 사용하여 메시지를 HTTPEndpoint에 전송한다는 점이 다릅니다.

HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 따라서 데이터의 적절한 보호를 보장한다. HTTPS의 기본 TCP/IP 포트는 443이다.
보호의 수준은 웹 브라우저에서의 구현 정확도와 서버 소프트웨어, 지원하는 암호화 알고리즘에 달려있다.

HTTPS를 사용하는 웹페이지의 URL은 'http://'대신 'https://'로 시작한다.
간혹, 웹에서 신용카드를 사용하는 사람들은 HTTPS가 "완벽하게" 정보를 보호해준다고 오해하기도 한다. 그러나 실제로 이것은 웹 서버와 브라우저 사이에 전송되는 카드 정보만이 암호화될 뿐이다. 카드 정보는 보통 서버 데이터베이스에 저장되며(대개 신용카드 처리기에는 전송되지도 않는다), 정보 유출은 대부분 내부 인력이 일으킨다.

 

RTMP[Macromidia Real-Time Messaging Protocl ]
RTMP도 AMF를 사용하여 ActionScript 객체를 직렬화하지만 RTMPEndpoint와의 영구적인 연결을 유지 관리하고 실시간 통신이 가능합니다. RPC 서비스는 단일 클라이언트/서버 요청/응답 모델을 사용하여 비동기적으로 만들어지기 때문에 실시간 통신은 필요하지 않습니다


WSDL(Web Services Description Language)
WSDL은 문서 지향적 또는 프로시저 지향적인 정보를 포함한 메시지에서 작동하는 종점 집합으로서의 네트워크 서비스를 설명하는 XML 형식입니다. 이러한 작동 및 메시지에 대해 대략적으로 설명한 다음, 구체적인 네트워크 프로토콜 및 메시지 형식으로 연결하여 종점에 대해 정의합니다. 관련된 구체적인 종점은 추상 종점(서비스)과 결합되어 있습니다. WSDL은 통신에 사용되는 메시지 형식 또는 네트워크 프로토콜과는 상관 없이 종점 및 종점의 메시지를 설명하도록 확장할 수 있습니다. 하지만, 이 문서에 설명된 바인딩만이 SOAP 1.1, HTTP GET/POST 및 MIME과 함께 WSDL을 사용하는 방법을 설명합니다.

이 WSDL 언어 버전은 종점의 컴퍼지션 및 결합을 설명하는 프레임워크를 포함하지 않는 첫 번째 단계입니다. 계약을 설명하는 전체 프레임워크는 메시지를 받거나 보내는 순서 규칙과 같이 서비스의 동작을 표현하는 방법과 서비스를 작성하는 방법을 포함합니다. 서비스의 컴퍼지션은 모든 형식을 지원해야 하지만 런타임에 교환되고 바운드되는 서비스 참조와 함께 전달되는 참조를 허용해야 합니다. 특히, 후자는 런타임 계약 협상의 중요한 요소이며 참조 동작을 캡처하고 서비스를 중개합니다.

WSDL 스펙 작성자들은 (1)서비스를 작성하는 프레임워크 및 (2)서비스의 동작을 설명하는 프레임워크를 포함하는 WSDL의 수정된 버전 및/또는 추가 문서를 적시에 게시하고 있습니다.

Posted by 버터백통