본 장에서는 Tmax에서 지원하는 버퍼 유형에 대해 설명한다.
다수의 서버를 운영하면서 서로 다른 하드웨어 및 운영체제 간에 데이터를 교환할 필요가 있을 경우 플랫폼마다 메모리 할당 방식의 차이로 발생하는 문제점을 극복하기 위해서 모든 플랫폼에 대한 상세한 지식과 더불어 데이터를 전환하는 복잡한 과정이 필요하다.
Tmax는 다양한 종류의 표준 버퍼를 제공하여 이러한 문제를 해결하며 불필요한 네트워크 부하를 줄이고 개발자의 선택의 폭을 넓히며 개발기간을 단축하는 등의 부가적인 장점을 가지고 있다. Tmax 애플리케이션 개발자는 Tmax에서 제공하는 다양한 버퍼를 사용하여 다음과 같은 효과를 얻을 수 있다.
애플리케이션은 다양한 버퍼로 업무 프로그램을 보다 유연하게 개발할 수 있도록 한다.
데이터 변환에 필요한 프로그램을 필요로 하지 않는다.
네트워크 부하를 감소시킨다. 초기에 설정한 데이터 유형을 송, 수신할 수 있게 하여 문자형 데이터로 변환하는 데 따르는 네트워크 부하를 감소시킨다.
Tmax에서는 네트워크 부하의 감소와 개발의 용이성을 위하여 다음의 버퍼를 지원한다.
STRING 버퍼
NULL 값으로 끝나는 문자열로서 별도로 버퍼의 길이를 명시할 필요가 없다. 플랫폼의 차이로 인한 문제는 발생하지 않는다.
CARRAY, X_OCTET 버퍼
길이가 지정된 Byte 열로서 보통 바이너리 타입의 데이터를 보낼 때 사용되며 데이터를 교환할 때에는 반드시 길이를 명시해야 한다. 플랫폼의 차이로 인한 문제는 발생하지 않는다.
STRUCT, X_C_TYPE 버퍼
C 언어의 구조체를 데이터 통신에 사용할 때 사용한다. 구조체의 멤버로는 모든 원시 타입을 사용할 수 있으며 선언된 구조체 자체도 멤버로 사용할 수 있다. 또한 구조체의 배열도 사용할 수 있다.
X_COMMON 버퍼
멤버 타입이 char, int, long으로 한정된 C 구조체이다.
FIELD 버퍼
필드키와 데이터 값을 한 쌍으로 관리하는 데이터 버퍼로 모든 원시 타입의 데이터를 담을 수 있다. 교환되는 데이터형이 유동적일 경우 사용하며 다양한 방법의 데이터 접근 및 변환 API를 제공한다.
다음은 각 버퍼의 통신 유형을 나타낸 그림이다.
버퍼의 무결성을 보장하기 위해 표준 통신형 버퍼를 사용한다. 표준 통신형 버퍼는 통신 이전에 데이터 타입과 메모리 할당 방식에 기준을 정하여 사용하는 것이다. 송신하기 전에 버퍼의 데이터를 표준 통신형으로 변환하고 수신하기 전에 역변환한다. 데이터의 변환/역변환을 통해 Tmax는 이기종 간 통신할 경우 문자형뿐만 아니라 구조체 버퍼도 사용이 가능하다.
표준 통신형으로의 변환을 위해 Tmax에서는 sdlc 프로그램이 사용된다. sdlc 프로그램을 이용하면 클라이언트에는 표준 통신형 데이터로의 변환을 위한 정보 테이블이, 서버에서는 표준 통신형으로의 변환/역변환 프로그램이 생성된다. 이 과정을 통해 이기종 간의 통신할 경우에도 문자열이나 Byte 열 뿐만 아니라 플랫폼마다 다른 원시 타입의 데이터형을 사용하는 구조체 버퍼나 필드 버퍼를 아무런 제약 없이 사용할 수 있게 된다.
구조체 버퍼인 STRUCT, X_C_TYPE, X_COMMON은 표준 통신형으로 변환되어야 하고 컴파일할 때 추가되어야 한다. STRING, CARRAY, X_OCTET 버퍼는 이기종 간에도 string형 통신이 가능하므로 표준 버퍼형으로의 변환이 필요없다.
버퍼와 관련된 함수에 대한 자세한 설명은 “9.8. 버퍼 관리”나 "Tmax Reference Guide"를 참고한다.
개발자는 사용하고자 하는 구조체를 구조체 파일에(xxx.s) 기록하며 이 파일은 변환 테이블과 변환 프로그램을 만드는 기반이 된다. 구조체 파일에는 typdef나 include와 같은 명령어는 사용할 수 없으며 구조체의 멤버는 모든 원시 타입 데이터와 구조체를 사용할 수 있다.
구조체 버퍼를 표준 통신형으로 사용하기 위해서는 Tmax에서 제공하는 sdlc 프로그램을 사용하여 표준 통신형 데이터로의 변환을 위한 정보 테이블과 표준 통신형 변환/역변환 프로그램을 생성해야 한다. 변환/역변환 프로그램은 개발된 서비스 루틴과 함께 컴파일해서 사용하며 정보 테이블은 구조체 버퍼를 사용할 때 자동으로 사용된다.
다음 그림은 구조체 버퍼(STRUCT, X_C_TYPE, X_COMMON)를 이용하여 애플리케이션을 개발할 때 서버/클라이언트 프로그램의 컴파일 순서이다. 구조체 버퍼의 이름은 demo.s이다.