KR101224684B1 - 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처간의 매핑 방법 및 시스템 - Google Patents
패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처간의 매핑 방법 및 시스템 Download PDFInfo
- Publication number
- KR101224684B1 KR101224684B1 KR1020077022707A KR20077022707A KR101224684B1 KR 101224684 B1 KR101224684 B1 KR 101224684B1 KR 1020077022707 A KR1020077022707 A KR 1020077022707A KR 20077022707 A KR20077022707 A KR 20077022707A KR 101224684 B1 KR101224684 B1 KR 101224684B1
- Authority
- KR
- South Korea
- Prior art keywords
- mapping
- package
- physical
- packaging model
- content type
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Auxiliary Devices For And Details Of Packaging Control (AREA)
- Container Filling Or Packaging Operations (AREA)
Abstract
패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법 및 시스템이 제공된다. 패키징 모델의 컴포넌트는 파트 명, 콘텐츠 타입, 파트의 콘텐츠 및 성장 힌트를 포함할 수 있다(단지 예일 뿐임). 패키지의 물리적 표현은 물리적 지속 포맷 및/또는 다양한 트랜스포트, 예컨대, 네트워크 기반의 프로토콜을 포함할 수 있다(단지 예일 뿐임). 개시된 방법을 수행하도록 프로그램된 컴퓨터뿐만 아니라 개시된 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체도 제공된다.
매핑 방법, 패키징 모델, 물리적 표현, 패키지, 물리적 지속 포맷
Description
본 발명은 컴퓨팅 환경에 관한 것이다. 보다 구체적으로, 본 발명의 실시예는 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간의 매핑 방법에 관한 것이다. 패키징 모델의 컴포넌트는 파트 명(part name), 콘텐츠 타입(content type), 파트의 콘텐츠(the contents of a part), 및/또는 성장 힌트(growth hint)를 포함할 수 있다(단지 예일 뿐임). 패키지의 물리적 표현은 물리적 지속 포맷 및/또는 다양한 트랜스포트, 예컨대, 네트워크 기반의 프로토콜을 포함할 수 있다(단지 예일 뿐임).
전형적으로, 데이터를 체계화하기 위한 패키징 모델은 그것들이 직접 대응하는 물리적 포맷과 관련된다. 예를 들어, ZIP 아카이브를 패키징하기 위한 패키징 모델은 ZIP 아카이브의 포맷과 직접 관련되어서, 패키징 모델과 물리적 포맷 간의 직접적인 상관관계(correlation)가 쉽게 판정되게 된다. 하지만, 누군가가 이런 포맷을 갖는 패키지를 예컨대, 네트워크 기반의 프로토콜로 대신 변환하길 원한다면, 이를 달성하는 것은 상당히 어려운 일이 될 것이다.
따라서, 다양한 서로 다른 물리적 표현에 매핑될 수 있는, 임의의 특정 물리적 포맷과는 독립적인, 추상화(abstraction)를 규정하는 패키징 모델이 바람직할 것이다. 또한, 추상 패키징 모델을 다수의 물리적 표현 각각에 매핑시키는 방법도 유익할 것이다.
본 발명의 실시예는 패키징 모델의 컴포넌트와 적어도 하나의 파트를 갖는 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법에 관한 것이다. 일 실시예에서, 본 방법은 패키징 모델의 하나 이상의 컴포넌트를 식별하고, 식별된 하나 이상의 컴포넌트 각각에 대응하는 물리적 표현의 피처를 식별하고, 패키징 모델의 하나 이상의 컴포넌트를 물리적 표현의 대응하는 피처에 매핑시키는 것을 포함한다.
본 발명의 다른 실시예는 패키징 모델의 컴포넌트와 적어도 하나의 파트를 갖는 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법에 관한 것이며, 컴포넌트는 적어도 파트 명, 파트 콘텐츠 타입, 및 파트의 콘텐츠를 포함한다. 일 실시예에서, 본 방법은 파트 명, 파트 콘텐츠 타입, 및 파트의 콘텐츠 각각에 대응하는 물리적 표현의 피처를 식별하고, 파트 명, 파트 콘텐츠 타입, 및 파트의 콘텐츠 각각을 그것에 대응하는 물리적 표현의 피처에 매핑시키는 것을 포함한다. 원한다면, 패키징 모델의 컴포넌트는 성장 힌트를 더 포함한다. 이런 실시예에서, 본 방법은 성장 힌트에 대응하는 물리적 표현의 피처를 식별하고, 성장 힌트를 그 식별된 피처에 매핑시키는 것을 더 포함한다.
또한, 본 발명의 실시예는 본원에 개시된 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체뿐만 아니라, 개시된 방법을 수행하도록 프로그램된 컴퓨터에 관한 것이다.
본 발명의 다른 실시예는 패키징 모델의 컴포넌트와 적어도 하나의 파트를 갖는 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 컴퓨터 시스템에 관한 것이다. 일 실시예에서, 컴퓨터 시스템은 패키징 모델의 하나 이상의 컴포넌트를 식별하기 위한 수단, 식별된 하나 이상의 컴포넌트 각각에 대응하는 물리적 표현의 피처를 식별하기 위한 수단, 및 패키징 모델의 하나 이상의 컴포넌트를 물리적 표현의 대응하는 피처에 매핑시키기 위한 수단을 포함한다.
본 발명은 첨부된 도면을 참조하여 하기에 상세히 기술되어 있다.
도 1은 본 발명을 구현하는 데 사용되기에 적합한 예시적인 컴퓨팅 환경의 블록도이다.
도 2는 본 발명의 실시예에 따른 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법을 나타내는 흐름도이다.
도 3은 본 발명의 실시예에 따른 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑시킬 때 패키지를 오픈하기 위한 방법을 나타내는 흐름도이다.
도 4는 도 3에 도시된 방법보다 상세한 내용을 예시하는 것으로, 본 발명의 실시예에 따른 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑 시킬 때 패키지를 오픈하기 위한 방법을 나타내는 흐름도이다.
도 5는 본 발명의 실시예에 따라, 파일 명을 ASCII 파트 명에 매핑시키기 위한 방법을 나타내는 흐름도이다.
도 6은 본 발명의 실시예에 따라, 유니코드 스트링으로부터 파트의 콘텐츠를 획득하기 위한 방법을 나타내는 흐름도이다.
도 7은 본 발명의 실시예에 따라, 유니코드 스트링 및 콘텐츠 타입으로부터 파트를 생성하기 위한 방법을 나타내는 흐름도이다.
도 8은 본 발명의 실시예에 따라, 규정된 유니코드 스트링에 근거하여 파트를 제거하기 위한 방법을 나타내는 흐름도이다.
도 9A는 이미지를 참조하는 마크업, 도 9B는 단순한 순서화(simple ordering)를 이용하는 파트 레이아웃, 및 도 9C는 인터리빙을 이용하는 파트 레이아웃의 개략적 도면이다.
도 10은 ASCII 파트 명을 표준화된 유니코드 파트 명으로 표준화하기 위한 방법을 나타내는 흐름도이다.
본 발명의 대상은 규정된 요건을 충족시키도록 상세히 본원에 기술되어 있다. 하지만, 상세한 설명 그 자체가 본 특허의 범위를 제한하는 것으로 의도되진 않는다. 오히려, 발명자는 또한 청구된 대상이 다른 현존하는 혹은 미래의 기술에 관련하여 본 문서에 기술된 것과 유사한 다른 단계들 또는 단계들의 조합을 포함하도록 다른 방식으로 구체화될 수 있다고 생각하였다. 또한, "단계" 및/또는 "블 록"이라는 용어는 구체화된 방법의 서로 다른 요소를 내포하도록 본원에 사용될 수 있지만, 그 용어들이 단계별 순서가 명시적으로 기술되지 않는 한, 그리고 그런 경우 이외에는 본원에 개시된 다양한 단계들 사이에 또는 단계들 중에서 임의의 특정 순서를 의미하는 것으로 해석되어서는 안 된다.
본 발명의 실시예는 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법을 제공한다. 패키징 모델의 컴포넌트는 파트 명, 콘텐츠 타입, 파트의 콘텐츠, 및/또는 성장 힌트를 포함할 수 있다(단지 예일 뿐임). 패키지의 물리적 표현은 물리적 지속 포맷 및/또는 다양한 트랜스포트, 예컨대, 네트워크 기반의 프로토콜을 포함할 수 있다(단지 예일 뿐임).
본 발명의 개요를 간략히 기술하였으며, 본 발명의 예시적인 운영 환경은 하기에 기술되어 있다.
동일 참조 부호가 여러 도면들에서 동일 컴포넌트를 나타내는 도면들을 전반적으로 참조하면, 특히 처음에 도 1을 참조해 보면, 본 발명을 구현하기 위한 예시적인 운영 환경이 일반적으로 컴퓨팅 시스템 환경(100)으로 지칭되어 도시되어 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성 에서 동작할 수 있다. 본 발명에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명은 일반적으로 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시되도록 설계된다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성 들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예로서, 도 1은 비이동식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), 이동식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에 서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(110)를 위해, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이들 컴포넌트가 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 그와 다를 수 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162), 및 일반적으로 마우스, 트랙볼(trackball) 또는 터치 패드와 같은 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있 다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터 외에, 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함하지만, 도 1에는 메모리 저장 장치(181)만을 도시하였다. 도 1에 도시된 논리적 접속으로는 LAN(171) 및 WAN(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 네크워크 인터페이스(170) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
컴퓨터(110)의 수많은 다른 내부 컴포넌트가 도시되어 있지는 않지만, 당업자는 이런 컴포넌트 및 상호 연결 관계가 공지된 것임을 인식할 것이다. 따라서, 컴퓨터(110)의 내부 구성에 관한 추가 상세를 본 발명과 함께 개시할 필요는 없다.
컴퓨터(110)가 턴온 또는 리셋될 때, ROM(131)에 저장된 BIOS(133)가 처리 장치(120)에게 운영 체제를 로드할 것을 지시하거나, 그 필요 부분이 하드 디스크 드라이브(141)로부터 RAM(132) 내로 로드할 것을 지시한다. 일단 운영 체제(144)로 지정된, 운영 체제의 복제된 부분이 RAM(132)에 로드되면, 처리 장치(120)가 운영 체제 코드를 실행하고, 운영 체제(134)의 사용자 인터페이스와 연관된 비주얼 요소를 모니터(191)에 디스플레이되게끔 한다. 전형적으로, 애플리케이션 프로그램(145)이 사용자에 의해 오픈될 때, 프로그램 코드와 관련 데이터는 하드 디스크 드라이브(141)로부터 판독되고, 필요 부분이 RAM(132)에 복제되며, 복제된 부분은 본원에서 참조 부호(135)에 의해 표시되어 있다.
이전에 언급한 바와 같이, 일 실시예에서, 본 발명은 패키징 모델의 컴포넌 트와 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법에 관련된다. 전반적으로 도면들을 참조하면, 특히 처음에 도 2를 참조해 보면, 특히 본 발명의 실시예에 따른 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법(200)을 나타내는 흐름도가 예시되어 있다. 패키징 모델의 컴포넌트는 파트 명, 콘텐츠 타입, 파트의 콘텐츠, 및/또는 성장 힌트를 포함할 수 있다(단지 예일 뿐임). 패키지의 물리적 표현은 물리적 지속 포맷 및/또는 다양한 트랜스포트, 예컨대, 네트워크 기반의 프로토콜을 포함할 수 있다. 본원에 기술된 방법에 사용될 수 있는 예시적인 추상 패키징 모델은 이하에 보다 충분히 기술되어 있다(단지 예일 뿐임).
처음에, 단계(210)에 지시된 바와 같이, 패키징 모델의 하나 이상의 컴포넌트를 식별한다. 그 후에, 단계(212)에 지시된 바와 같이, 식별된 컴포넌트 각각에 대응하는 원하는 물리적 표현의 피처를 식별한다. 일단 패키징 모델 컴포넌트와 대응하는 물리적 표현의 피처가 식별되면, 단계(214)에 지시된 바와 같이, 하나 이상의 컴포넌트를 대응하는 피처에 매핑시킨다. 패키징 모델의 컴포넌트와 대응하는 물리적 표현의 피처 간에 매핑시키는 특정 메커니즘은 본원에 기술된 예시적인 추상 패키징 모델을 참조하여 하기에 보다 충분히 기술된다.
예시적인 추상 패키징 모델은 문서의 파트들(또는 콘텐츠의 다른 타입들)이 명명되고 관련된다. 본원에 기술된 예시적인 모델 내의 콘텐츠는 패키지 내에 포함된다. 패키지는 관련 파트들의 콜렉션을 포함하는 논리적 엔티티이다. 패키지의 목적은 프로그래머 및 최종 사용자가 사용하기 쉬운 하나의 객체로 문서의 모든 부분(piece)들을 집대성하는 것이다. 예를 들어, 화상으로 문서를 포함하는 패키지는 2개 파트, 즉 문서를 나타내는 XML(Extensible Markup Language) 마크업 파트 및 화상을 나타내는 또 다른 파트를 포함할 수 있다.
콘텐츠 외에, 파트는 공통 속성 및 바이트의 스트림으로 이루어진다. 이는 파일 시스템에서의 파일 또는 HTTP(Hypertext Transfer Protocol) 서버 상의 리소스와 유사하다. 공통 속성은 파트 명, 파트에 저장된 콘텐츠의 타입(콘텐츠 타입), 파트의 콘텐츠, 및 선택적으로 성장 힌트(파트가 적절하게(in-place) 성장하기 위해 예약된 소정 수의 바이트)를 포함한다. 이들 속성 각각은 하기에 보다 충분히 기술된다.
파트는 파트 명을 갖는다. 파일 시스템 등에서와 같이, 파트 명은 계층적이다. 파트 명은 세그먼트로 분할되고, 세그먼트 각각은 이런 계층구조에서 레벨을 나타낸다. 예를 들어, 파트 명 /hello/world/doc.xml은 이들 세그먼트들, 즉 "hello", "world", 및 "doc.xml"을 포함한다. 이들 세그먼트는 트리를 형성하는 것으로 보일 수 있다. 이는 트리에서 넌-리프(non-leaf) 노드 모두가 폴더이고, 리프(leaf) 노드가 콘텐츠를 포함하는 실제 파일인 파일 시스템에서 행해지는 것과 유사하다. 이름 트리에서 이들 폴더와 유사한 노드(즉, 넌 리프 노드)는 패키지에서 파트를 조직하는 유사한 기능을 한다. 주목할 점은 폴더와 유사한 노드, 또는 "폴더"는 명명(naming) 계층구조에서 단지 개념(concept)으로서 존재한다는 것이다. 폴더는 패키징 모델에서 명시적으로 표현되지 않고, 폴더의 어떤 디렉토리도 패키징 모델에 존재하지 않는다. 하지만, 물리적 표현은 폴더를 명시적으로 표현 할 수 있고, 이런 표현은 계층구조적 디렉토리의 형태로 존재할 수 있다.
파트 명이 취하는 그 형태는 이름이 사용되고 있는(예를 들어, 패키지의 외부로부터 파트를 참조하는 URI(Uniform Resource Indentifier)에서는, 물리적 패키지 포맷 등에서 파트의 데이터를 라벨링하는 데 사용됨) 문맥에 따른다. 파트는 패키지 내에서 파트를 식별하는 유니코드 스트링인 유니코드 파트 명을 가질 수 있다. 유니코드 파트 명은 국제적인 캐릭터(character)의 전체 범위를 올바르게 나타내고, 인간에 의해 판독가능하다. 유니코드 파트 명은 파트 명의 가장 국제적으로 친근한 표현을 제공하지만, 유니코드 캐릭터가 모든 문맥에서 허용되지는 않는다. 특히, 파트는 종종 URI를 사용하여 참조되고, URI는 유니코드 캐릭터를 포함할 수 없다. 대신에, 유니코드 캐릭터는 ASCII 호환가능 표현으로 변환되어야 한다. 따라서, 파트는 IRI/URI 스타일 이스케이핑(escaping)을 사용하여 ASCII로 인코드된 국제적인 캐릭터를 갖는 파트 명인 ASCII 파트 명을 대안으로 가질 수 있다. ASCII 파트 명은 패키지의 문맥에서 파트를 지칭하는 데 사용된다.
패키지 내에서 파트들은 고유하게 명명되어야 한다. 파트 명 내에 있는 국제적인 캐릭터에 대한 올바른 처리를 보장하기 위해서, 파트 명의 등가성이 유니코드 레벨로만 판정되어야 한다. 유니코드 파트 명이 동일하면, 그것들은 패키지 내에서 동일한 파트를 지칭한다. 유니코드 파트 명의 표준화된 형태가 바이트별로 일치하는 경우 유니코드 파트 명이 동일한 것으로 간주된다. ASCII 파트 명으로부터의 표준화는 도 10을 참조하여 이해될 수 있다.
도 10은 ASCII 파트 명을 표준화된 유니코드 파트 명으로 표준화하기 위한 방법을 나타내는 흐름도이고, 본 방법은 전반적으로 참조 부호(1000)로 지정되어 있다. 처음에, 단계(1010)에 지시된 바와 같이, ASCII 파트 명이 입력된다. 그 후에, 단계(1012)에 지시된 바와 같이, 모든 %HH 트라이그래프(trigraph)가 언-이스케이핑되고(un-escaped) 단계(1014)에 지시된 바와 같이, 대문자에 대해 단순 변환이 수행된다. 다음에, 단계(1016)에 지시된 바와 같이, 유니코드 정규 형태(Unicode Normal Form) "C" 내로 표준화가 수행된다.
종종 파트는 다른 파트에 대한 참조를 포함할 것이다. 단순한 예로서, 2개 파트, 즉 마크업 파일과 이미지를 갖는 패키지를 가정해 보자. 마크업 파일은 이미지에 대한 참조를 포함하길 원해서, 마크업 파일이 처리될 때, 관련 이미지가 식별되고 위치 찾기될 수 있게 된다.
전술된 파트의 제2 공통 속성은 콘텐츠 타입이다. 모든 파트는 파트 내에 어떤 콘텐츠의 타입이 저장되어 있는지 식별하는 콘텐츠 타입을 갖는다. 콘텐츠 타입은 image/jpeg, 및 application/xml을 포함할 수 있다. 콘텐츠 타입은 제한된 캐릭터 세트를 갖는 잘 구조화된 ASCII 스트링이다(단지 예일 뿐임).
전술된 파트의 제3 공통 속성은 파트 자체의 콘텐츠이다. 이 속성은 자가-설명적이다(self-explanatory).
전술된 파트의 제4 공통 속성은 성장 힌트이다. 일부 시나리오에서, 파트는 패키지 내로 배치된 후에 수정될 수 있다. 수정의 성질에 따라, 파트는 성장할 필요가 있을 것이다. 일부 물리적 패키지 포맷의 경우, 이것은 고가의 동작일 수 있고, 다른 경우 매우 효과적으로 인터리빙된 패키지에 손상을 입힐 수도 있다. 이 상적으로는, 패키지 내의 수많은 바이트를 이동시킴 없이 적절하게 파트를 확장시키는 것이 가능할 것이다.
이런 시나리오를 효율적으로 지원하기 위해, 성장 힌트가 각 파트와 연관될 수 있다. 이런 힌트는, 파트의 생성자(creator)가 생각하기에, 적절한 갱신의 효율성을 유지하면서 파트가 성장할 수 있도록 하는데 유용할 수 있는 수많은 바이트를 식별한다. 특정 물리적 패키지 포맷으로의 물리적 매핑에 있어서, 이런 정보는 파트가 성장하도록 해주는 공간을 예약하는데 이용될 수 있다. 특히, 이런 번호는 단지 힌트이며, 물리적 매핑은 이런 예약된 공간을 제공하지 않는 것, 또는 단지 느슨하게 힌트를 따를 것을 선택할 수 있다. 본원에 기술된 이런 예시적인 추상 패키징 모델에서, 성장 힌트는 선택적이며, 파트가 생성될 때 설정된다.
전술된 바와 같이, 파트는 종종 패키지 내의 다른 파트에 대한 참조 및 패키지 외부의 리소스를 포함할 것이다. 하지만, 일반적으로, 이들 참조는 파트의 콘텐츠 타입에 특정한 방식으로, 즉, 애플리케이션 특정의 인코딩에 대한 임의의 마크업으로, 참조 측 파트 내에 나타내질 것이다.
관계(Relationship)는 소스 파트와 타겟 리소스 간의 연결 종류를 나타내는 방식을 제공한다. 관계는 파트 내의 콘텐츠를 보지 않고 그 연결을 직접 "인지할 수 있게(discoverable)" 하여서, 그들이 콘텐츠 특정의 스키마와는 독립적이고, 신속히 결정되게 한다.
관계는 또한 파트들을 수정함 없이 파트들이 관계되도록 해주는 제2 주요 기능을 제공한다. 때때로, 이런 정보는 "주석이 달린(annotated)" 파트의 콘텐츠 타 입이 소정의 정보를 첨부하는 방식을 규정하지 않는 경우 "주석(annotation)"의 형태로서 기능한다. 최종적으로, 일부 시나리오는 그 파트를 수정함 없이 - 왜냐하면, 파트가 암호화되어 있어 해독할 수 없는 경우 또는 파트가 디지털 서명되어 있어 파트를 변경하는 것이 서명을 무효화하는 경우 중 한 경우이기 때문에 - 정보가 기존의 파트에 명확히 첨부되도록 요구한다.
관계는 관계 파트에서 XML을 사용하여 나타내져 있다. 하나 이상의 관계의 소스인 물리적 표현에서의 파트 각각은 소스 파트에 대한 관계의 리스트를 포함하는 연관된 관계 파트를 갖는다. 관계는 또한 일부 절대적 위치에 있는 패키지 외부의 리소스 및/또는 패키지 엔티티의 현재 위치에 관련되어 위치된 리소스를 목표로 할 수 있다.
관계는 또한 패키지 관계의 형태를 취할 수 있다. 패키지 관계는 패키지 내에서 공지된 파트를 검색하는 데 사용된다. 패키지 관계의 소스는 파트가 아니고 패키지 전체이다. 패키지 관계는 관계 파트에 적용될 수 있는 명명 협의체(conventions)를 사용하여 명명될 수 있다.
종종 패키지는 컨테이너(container)로서 지칭될 수 있는 단일 파일일 것이다. 이는 최종 사용자에게 예컨대, 문서의 컴포넌트 부분(예컨대, 이미지, 폰트, 데이터 등) 모두를 갖는 그들의 문서를 배포할 편리한 방법을 제시한다. 패키지가 종종 단일 파일에 직접 대응하지만, 반드시 항상 그러하지는 않는다. 패키지는 예컨대, 단일 파일에서, 느슨한 파일들의 콜렉션에서, 데이터베이스에서, 네트워크 접속을 통한 순간 전송 등에서, 다양한 방식으로 물리적으로 표현될 수 있는 논리 적 엔티티이다. 따라서, 모든 컨테이너는 패키지를 포함하지만, 모든 패키지가 컨테이너에 저장되지는 않는다.
패키지는 액세스 스타일, 레이아웃 스타일, 및 통신 스타일의 조합을 이용하여 본원에 기술된 예시적인 추상 패키징 모델에서 생성 또는 소비된다. 액세스 스타일은 판독자가 전체 패키지가 도달하기 전에 처리 파트를 개시하도록 해주는 스트리밍 소비(consumption), 기입될 파트 전부를 미리 알고 있지 않고도 기입자가 패키지에 대한 기입 파트를 개시하도록 해주는 스트리밍 생성, 또는 스트리밍 생성과 스트리밍 소비가 동일한 패키지 상에서 동시에 일어나도록 해주는 동시 스트리밍 생성과 소비를 포함한다(단지 예일 뿐임).
레이아웃 스타일은 파트 N+1을 위한 바이트가 패키지에 나타나기 전에 파트 N을 위한 바이트 전부가 패키지에 나타나는 단순한 순서화, 또는 여러 파트의 바이트들이 인터리빙되는 것을 포함한다(단지 예일 뿐임). 단순한 순서화와 리터리빙은 도 10A 내지 10C를 참조하여 이전에 기술되었다.
통신 스타일은 파트 N+1이 판독자에게 전송되기 전에 파트 N 전부가 판독자에게 전송되는 순차적 전송, 또는 판독자가 비순차적 파트의 전송을 요청할 수 있는 랜덤 액세스 전송을 포함한다(단지 예일 뿐임). 이들 3개의 카테고리 중 각각으로부터 적어도 하나의 스타일이 본원에 기술된 예시적인 추상 패키징 모델을 사용하여 매핑시키는 경우에 사용된다.
본원에 기술된 예시적인 추상 패키징 모델은 추상화만을 기술한다. 패키지의 물리적 표현은 본 발명의 방법의 실시예에 따라 패키징 모델의 컴포넌트를 특정 물피적 표현의 피처에 매핑시킴으로써 생성된다. 따라서, 본원에 기술된 방법이 사용될 수 있는 프레임워크의 구조 및 기능은 패키징 모델에 의해서 뿐만 아니라 물리적 모델에 의해서도 나타내진다. 물리적 모델은 패키지가 기입자 및 판독자에 의해 사용되는 다양한 방식을 규정한다.
물리적 모델은 일반적으로 3개의 컴포넌트, 즉 기입자, 판독자, 및 그들간의 파이프에 기초한다. 파이프는 기입자로부터 판독자에게 데이터를 수송한다. 여러 시나리오에서, 파이프는 단순히 판독자가 로컬 파일 시스템으로부터 패키지를 판독하게 하는 API(Application Programming Interface) 호출이다. 이는 직접 액세스라 불린다. 하지만, 종종, 판독자와 기입자는 일종의 프로토콜을 통해 서로 통신해야 한다. 이런 통신은 예컨대, 프로세스 경계에 걸쳐, 또는 서버와 데스크톱 컴퓨터 간에 일어날 수 있다. 이는 네트워크 액세스라 불린다.
모든 물리적 패키지는 파트의 콜렉션을 포함한다. 이들 파트는 2가지 스타일, 즉 단순한 순서화 또는 인터리빙되는 것 중 한 가지로 레이아웃될 수 있다. 단순한 순서화의 경우, 패키지 내의 파트들은 규정된 순서로 레이아웃된다. 이런 패키지가, 패키지 내의 첫번째 바이트에서 시작하여 마지막에 이르도록 완전히 선형으로 전송될 때, 제1 파트를 위한 모든 바이트가 먼저 도달하고, 그런 다음 제2 파트를 위한 모든 바이트 등이 도달한다. 인터리빙된 레이아웃의 경우, 여러 파트의 바이트들이 인터리빙되고, 특정의 시나리오에서 최적의 성능을 허용하게 된다. 인터리빙에서 상당한 이점을 얻는 2가지 시나리오는 멀티-미디어 재생(예컨대, 비디오 및 오디오를 동시에 전송하는 것)과, 인라인(inline) 리소스 참조(예컨대, 마 크업 파일의 중간에 있는 이미지에 대한 참조)이다.
인터리빙은 인터리빙된 파트의 콘텐츠를 집대성하기 위해 특별한 협의체를 통해 처리된다. 파트를 부분들로 나누고, 이들 부분을 인터리빙함으로써, 원하는 인터리빙의 결과를 달성하는 것이 가능하며, 동시에 보다 큰 원본 파트를 쉽게 재작성하는 것을 가능케 한다.
인터리빙이 동작하는 방법을 이해하기 위해서, 2개 파트, 즉 markup/page.xml 및 images/picture.jpeg을 포함하는 단순한 예를 가정해 보자(도 9A를 참조). markup/page.xml은 페이지의 콘텐츠를 기술하고, 페이지 상에 보이는 이미지에 대한 참조가 그 페이지의 중간에 존재한다. 인터리빙이 가치있는 이유를 이해하기 위해서, 이들 파트가 단순한 순서화를 사용하여 패키지 내에 어떻게 배열될 것인가를 생각해 보자(도 9B 참조). 이런 패키지를 처리하는(및 순차적으로 바이트를 수신하는) 판독자는 자신이 images/picture.jpeg 뿐만 아니라 markup/page.xml 파트 전부를 수신할 때까지 그 화상을 디스플레이할 수 없을 것이다. 일부 상황에서(예컨대, 작거나 단순한 패키지 또는 빠른 통신 링크), 이는 문제가 될 수 없다. 하지만, 다른 상황에서(예컨대, markup/page.xml 이 매우 크거나 통신 링크가 매우 느린 경우), 이미지를 얻기 위해 markup/page.xml 파트 전부를 다 판독할 필요성이 있기 때문에, 판독자 시스템상에서 용납할 수 없는 성능과 터무니없는 메모리 요구를 초래할 것이다.
이상적인 성능에 근접하기 위해서, markup/page.xml 파트를 분할하고, images/picture.jpeg 파트를 화상이 참조되는 곳 바로 다음에, 가운데로 삽입할 수 있는 것은 유익할 것이다. 이는 판독자가 일찍이 - 참조에 도달하자 마자, 이미지 데이터가 뒤따라 옴 - 이미지 처리를 시작하도록 해줄 것이다. 이는 도 9C에 도시된 패키지 레이아웃을 생성할 것이다.
성능 이점으로 인해, 인터리빙을 지원하는 물리적 패키지가 유리하다. 하지만, 사용되는 물리적 패키지의 종류에 따라, 인터리빙이 지원될 수도 있고 지원되지 않을 수도 있다. 또한, 서로 다른 물리적 패키지가 인터리빙의 내부 표현을 상이하게 처리할 수 있다. 물리적 패키지가 인터리빙을 처리하는 방법에 상관없이, 물리적 파일에서 수개의 부분으로 나눠지는 파트는 여전히 하나의 논리적 파트이며; 부분들 그 자체가 파트는 아니다.
물리적 패키지 포맷은 패키징 모델의 컴포넌트로부터 특정한 물리적 표현의 피처로 매핑시키는 것으로서 기술될 수 있다. 패키징 모델, 예컨대, 본원에 기술된 예시적인 추상 패키징 모델은 전형적으로 어떤 물리적 패키지 포맷이 아카이빙(archiving), 분배, 또는 스풀링 목적에 사용되어야 하는지를 지정하지 않는다. 단지 논리적 구조가 명시된다. 패키지는 느슨한 파일의 콜렉션, .ZIP 파일 아카이브, OLE 합성 파일, 또는 임의 다른 포맷에 의해, "물리적으로" 구체화될 수 있다. 하지만, 매핑을 성공시키도록, 선택된 포맷은 목표로 하는 소비 장치(consuming device)에 의해, 또는 장치의 드라이브에 의해 지원되어야 한다.
예시적인 추상 패키징 모델 컴포넌트에 피처가 부분적으로 일치하는 여러 물리적 패키지 포맷이 존재한다. 예시적인 추상 패키징 모델 컴포넌트로부터 이런 저장 포맷으로의 매핑을 규정함에 있어서, 물리적 패키지 매체에 고유하게 존재하 지 않는 추가 용량을 제공하기 위해 매핑 계층을 사용하면서, 예시적인 추상 패키징 모델과 물리적 패키지 매체 간에 어떤 유사성을 이용하는 것이 바람직할 수 있다. 예를 들어, 일부 물리적 패키지 포맷은 파일 시스템에서 각각의 파트를 각각의 파일로서 저장할 수 있다. 이런 물리적 포맷에서, 다수의 파트 명을 동일한 물리적 파일 명에 직접 매핑하는 것이 바람직할 수 있다. (주목할 점은 유효한 파일 시스템 파일 명이 아닌 캐릭터를 사용하는 파트 명은 일종의 이스케이핑 메커니즘을 요구할 수 있다는 것이다.)
여러 경우에, 서로 다른 물리적 패키지 포맷의 설계자는 단일 공통 매핑 문제에 직면할 수 있다. 공통 매핑 문제가 발생하는 2개의 예는, 임의의 콘텐츠 타입과 파트를 연관시킬 때와, 인터리빙된 레이아웃 스타일을 지원할 때이다. 이런 공통 매핑 문제에 대해, 설계자가 구현하기 위해 선택할 수 있는 예시적인 해법이 하기에 기술된다. 당업자는 그 해법들이 단지 예시적이며, 본 발명의 범위를 어느 방식으로든 제한하도록 의도되지 않았음을 이해할 것이다.
본원에 기술된 예시적인 추상 패키징 모델을 사용하는 모든 물리적 패키지 포맷 매핑은 콘텐츠 타입과 파트를 연관시키기 위한 메커니즘을 규정할 것이다. 일부 물리적 패키지 포맷은 콘텐츠 타입을 표현하기 위한 원시 메커니즘(예컨대, MIME(Multipurpose Internet Mail Extensions) 내의 콘텐츠 타입 헤더)을 가진다. 이런 물리적 패키지의 경우, 매핑을 위해 파트의 콘텐츠 타입을 나타내기 위해 원시 메커니즘을 사용하는 것이 바람직할 수 있다.
모든 다른 물리적 패키지 포맷의 경우, 일부 다른 메커니즘이 콘텐츠 타입을 나타내는데 필요로 된다. 이들 패키지에서 콘텐츠 타입을 나타내기 위한 한 메커니즘은 콘텐츠 타입 스트림으로서 공지된 특별히 명명된 XML 스트림을 패키지 내에 포함시킴으로써 존재한다. 이런 스트림은, 규정에 의해, 파트는 아니므로, 그 자체가 예시적인 추상 패키징 모델에서 어드레스될 수 없다. (하지만, 그것은 파트들을 인터리빙하기 위해 물리적 패키지에서 동일한 메커니즘을 사용하여 인터리빙될 수 있다.)
콘텐츠 타입 스트림은 탑(top) 레벨 "타입" 요소로 XML을 포함하고, 하나 이상의 "디폴트" 및 "오버라이드" 부요소(sub-element)를 포함한다. 디폴트 부요소는 파트 명의 확장(예컨대, 파일 확장)으로부터 콘텐츠 타입으로의 디폴트 매핑을 규정한다. 이는 파일 확장이 종종(항상은 아님) 콘텐츠 타입에 대응한다는 사실을 이용한다. 오버라이드 부요소는 디폴트 매핑에 의해 수용되지 않는, 또는 디폴트 매핑과 일치하지 않는 파트상의 콘텐츠 타입을 지정하는데 사용된다. 패키지 기입자는, 원할 경우, 디폴트 부요소를 파트별(per-part) 오버라이드 부요소의 수를 감축하는 데 사용할 수 있다.
디폴트 부요소는 어떤 일치하는 파트의 콘텐츠 타입을 지시하는 콘텐츠 타입 및 파트 명 확장을 포함한다(하기에 보다 충분히 기술되어 있는 바와 같이, 오버라이드 부요소에 의해 오버라이드되지 않는 한). 디폴트 부요소는 그 이름이 속성의 값이 수반되는 기간에서 종료되는 임의 파트와 일치한다. 오버라이드 부요소는 파트 명 URI, 및 일치하는 파트의 콘텐츠 타입을 지시하는 콘텐츠 타입을 포함한다. 오버라이드 부요소는 그 이름이 속성의 값과 동등한 파트와 일치한다.
패키지 내의 모든 파트에 대해, 콘텐츠 타입 스트림은 하나의 일치하는 디폴트 부요소, 하나의 일치하는 오버라이드 부요소, 또는 일치하는 디폴트 부요소와 일치하는 오버라이드 부요소 모두 중 어느 하나를 포함한다(이 경우 오버라이드 부요소가 우선한다). 어떠한 소정의 확장을 위한 기껏해야 하나의 디폴트 부요소와, 어떠한 소정의 파트 명을 위한 기껏해야 하나의 오버라이드 부요소가 있을 수 있다.
콘텐츠 타입 스트림 내에서 디폴트 및 오버라이드 부요소의 순서는 중요하지 않다. 하지만, 인터리빙된 패키지에서, 하기에 보다 충분히 기술된 바와 같이, 디폴트 및 오버라이드 부요소는 그것들이 대응하는 파트(들) 이전에 물리적 패키지에 기입된다. 디폴트 콘텐츠 타입 매핑은 비록 현재 존재하는 파트가 이것들을 사용하지 않더라도 콘텐츠 타입 스트림 내에 규정될 수 있다.
전술된 바와 같이, 임의의 콘텐츠 타입과 파트를 연관시키는 것 외에, 다른 공통 매핑 문제가 인터리빙된 레이아웃 스타일을 지원할 때에 발생한다. 모든 물리적 패키지가 파트의 데이터 스트림의 인터리빙을 원시적으로 지원하지 않는다. 스트리밍 소비를 지원하는 레이아웃 시나리오의 경우, 임의의 이런 물리적 패키지로의 매핑은 파트의 인터리빙을 허용하기 위해 본원에 기술된 일반적 메커니즘을 사용하는 것이 바람직할 수 있다.
현재 기술된 인터리빙된 메커니즘은 파트의 데이터 스트림을 수개의 부분으로 나누고, 그런 다음 수개의 부분이 다른 파트의 부분들과 인터리빙될 수 있거나, 전체 파트와 인터리빙될 수 있다. 각각의 부분은 하기에 보다 충분히 기술된 바와 같이, 파트 명으로부터의 고유한 매핑을 사용하여 명명된다. 이는 판독자가 부분들을 그것들의 원래 순서로 결합하여 파트의 데이터 스트림을 형성하는 것을 가능케 한다.
파트의 각각의 부분은 물리적 매핑에 존재할 뿐이고, 패키징 모델에서는 어드레스될 수 없다.
각각의 부분은 인터리빙되어 저장되거나 또는 넌-인터리빙(non-interleaving)되어 저장된다. 파트 각각에 대해 인터리빙과 넌-인터리빙을 혼합하는 것은 본원에 기술된 예시적인 추상 패키징 모델에서는 유효하지 않다.
소정의 파트에 대한 부분 명(piece name)을 유도하기 위한 문법은 다음과 같다:
상기 문법에 의해 생성된 piece_name은 여러 요건을 가진다. 첫째로, 부분 번호가 0으로 시작해야 하고, 음수가 아닌, 연속된 십진수이어야 한다. 부분 번호는 레프트 제로 패딩(left-zero-padding)될 수 없다. 둘째로, 파트의 한 세트의 부분들 중 마지막 부분은 "piece" 이전에 부분 명에 "last"를 포함해야 한다. 세째로, 부분 명은 물리적 패키지 내의 이름들에 매핑시키기 전에 논리적 파트 명으로터 생성된다. 그리고, 네째로 부분들을 그것들의 원래의 순서로 저장하는 것이 필수적은 아니지만, 이는 최적의 효율성을 제공하는 데에 바람직할 수 있다.
인터리빙된(부분들의) 파트들을 포함하는 물리적 패키지는 또한 원한다면, 넌-인터리빙된(하나의 부분) 파트를 포함할 수 있다.
인터리빙된 부분들로부터 원래의 데이터를 생성하기 위해, 소비 애플리케이션(consuming application)은 오름 차순의 부분 번호로 부분들을 순서화한다. 부분 [0].piece로부터 [N].last.piece까지의 모든 요구된 부분들은 갭 없이 획득되고 순서화되어야 한다. 그런 다음, 소비 애플리케이션은 각 부분 내에 포함된 이진 데이터를 연결할 수 있다.
예들(EXAMPLES)
이하에서는 본원에 전술된 예시적인 추상 패키징 모델과 수많은 물리적 표현, 즉, 워싱턴주 레드몬드 소재의 마이크로소프트사로부터 이용가능한 WINDOWS 파일 시스템에서의 느슨한 파일, 및 ZIP 아카이브에서의 아이템 간에 특정한 매핑의 예들이 있다. 또한, 매핑할 때 수행될 수 있는 다양한 동작들의 예들, 즉 패키지를 오픈하기, 지정된 유니코드 스트링에 기초하여 파트를 검색하기, 지정된 유니코드 스트링에 기초하여 파트를 생성하기 및 지정된 유니코드 스트링에 기초하여 파트를 삭제하기가 제공된다. 당업자는 그 예들이 단지 예시로서 제공되고, 어떤 방식으로든 본 발명의 범위를 제한하는 것으로 의도되진 않음을 이해하고 인식할 것이다.
물리적 포맷으로 저장될 때, 파트는 하나 이상의 아이템으로서 표현될 수 있다. 이들 아이템을 식별하는 데 사용되는 이름은 서로 다른 포맷을 가질 수 있지만, 그것들의 대응하는 파트에 신뢰성있게 매핑되기 위해서는 본원에 기술된 규칙을 따른다.
물리적 매핑 각각은 패키지 내의 파트와 물리적 엔티티로서 저장된 파트 간 에 1-대-1 매핑을 지원한다. 그 물리적 매핑 동작은 물리적 어댑터 및 엔티티에 특정된다. 또한, 물리적 매핑 각각은 인터리빙 시나리오를 지원하기 위해 패키지 내의 파트와 물리적 엔티티로서 저장된 파트 간에 1-대-다 매핑을 지원한다. 물리적 매핑 각각은 또한 저장소 내의 서로 다른 엔티티가 패키지 문맥에 매핑될 때 동일한 파트 명을 갖지 않고, 물리적 엔티티로부터 파트 명을 검색할 수 있도록 보장한다.
예 1
ZIP 아카이브에 매핑하기
ZIP 아카이브는 ZIP 아카이브 아이템을 포함한다. ZIP 아카이브 아이템은 전형적으로 아카이브가 언집될(unzipped) 때 파일이 된다. 사용자가 ZIP 기반의 패키지를 언집할 때, 사용자는 패키지 내의 파트들과 그것들의 계층구조적 명명 구조를 각각 대략적으로 반영하는 파일 및 폴더의 편성된 세트를 파일 시스템에서 볼 것이다. 즉, 논리적 파트 컴포넌트는 ZIP 아카이브 아이템에 의해 물리적으로 표현된다. 논리적 파트 명 컴포넌트는 ZIP 중앙의 디렉토리에 있는 아카이브 아이템 헤더에 물리적으로 저장된다. 변환 규칙은 하기에 보다 충분히 기술된 바와 같이, ASCII 파트 명과 ZIP 아카이브 아이템 명 간에 매핑하는데 이용될 수 있다. 논리적 파트 콘텐츠 타입 컴포넌트는 파트 각각에 대한 콘텐츠 타입을 식별하는 XML을 포함하는 ZIP 아카이브 아이템에 의해 물리적으로 표현된다. 그리고, 논리적 성장 힌트 컴포넌트는 아카이브 아이템에 선행하는 논리적 헤더 내의 ZIP 여분의 필드에 예약되어 패딩에 의해 물리적으로 표현된다.
ZIP 아카이브에서, 파트와 연관된 데이터는 하나 이상의 아카이브 아이템으로서 나타내진다. 넌-인터리빙된 파트는 ZIP 아카이브 아이템으로서 저장된다. 인터리빙될 때, 파트는 전술된 방법을 사용하여 하나 이상의 부분들로서 나타내진다. 부분들은 지정된 패턴을 사용하여 명명되어서, 그 구성하는 부분으로부터 전체 파트를 재작성하는 것을 가능케 한다. 부분 각각은 ZIP 아카이브 내에 단일 ZIP 아카이브 아이템으로서 저장된다.
ZIP 아카이브에서, 아이템을 나타내는 한 덩이의 비트들은 연속으로 저장되어 있다. ZIP 아이템의 시퀀스가 ZIP 아카이브에서 의도적으로 순서화될 수 있어, 파트 데이터의 효율적인 집대성(예컨대, 정확한 및/또는 최적의 인터리빙을 달성하는 것)을 가능케 한다.
다양한 동작을 위해, ASCII 파트 명이 ZIP 아카이브 아이템 명으로 변환되는 것이 필요할 수 있다. 이를 행하기 위해, ASCII 파트 명이 시작되는 곳의 선두의 "/" 캐릭터가 제거된다. 또한, ZIP 아카이브 아이템 명을 ASCII 파트 명으로 변환하는 것이 필요한 경우, "/"는 ASCII 파트 명이 시작되는 곳에 추가될 수 있다.
아이템 명, 여분의 필드, 및 코멘트 필드의 결합 길이는 ZIP 아카이브에서 65,535 바이트를 초과할 수 없다. 따라서, ZIP 아카이브에 저장된 파트 명은 여분의 필드와 코멘트 필드가 얼마나 큰지에 따라 65,535 캐릭터 보다 다소 짧은 길이로 제한된다.
또한, ZIP 파일에 저장될 수 있는 파트 명을 생성할 때 파일 시스템의 제한사항(limitations)이 수용되어야 한다. 서로 다른 파일 시스템상에서 서로 다른 제한사항이 존재할 때, 이들 제한사항의 2가지 예는, (A) WINDOWS 파일 시스템상에서, 캐릭터 "*" 및 ":"은 유효하지 않아서, 이들 캐릭터로 명명된 파트는 성공적으로 언집되지 않는 경우, 및 (B) WINDOWS 파일 시스템상에서, 여러 프로그램들이 256 캐릭터 길이 보다 짧은 전체(full) 파일 명 패스(패스를 포함함)를 다룰 수 있으며; 이보다 긴 이름을 갖는 파트는 일단 언집되어도 올바르게 거동할 수 없는 경우를 포함한다.
본원에 기술된 예시적인 추상 패키징 모델에서 파트 콘텐츠 타입은 콘텐츠 타입과 파트 데이터를 연관시키기 위해 사용된다. ZIP 아카이브에서, 콘텐츠 타입 정보는 이 정보를 단일 XML 스트림에 저장하는 매핑 패턴을 사용하여 저장된다. 콘텐츠 타입 데이터는 "[Content_Types].xml"이라고 명명된 아카이브 아이템에 저장된다. 이런 아카이브 아이템은 ASCII 파트 명을 콘텐츠 타입에 매핑시키는 XML 데이터를 포함한다. 이런 아카이브 아이템(파트가 아님)은 그 자신의 콘텐츠 타입을 갖지 않는다. "[Content_Types].xml" 아이템은 다수의 아이템으로 나뉘고, 본원에 전술된 "Piece" 명명 패턴을 사용함으로써 순차적으로 인터리빙될 수 있다.
ZIP 아카이브에서, 성장 힌트는 아카이브 아이템을 적절하게 성장시키는데 사용될 수 있는 추가 바이트를 비축하는데 사용된다. 패딩이 다음의 구조를 갖는 "여분의 필드"에 저장된다: [2 바이트] 헤더 ID, [2 바이트] 여분의 필드 길이, [2 바이트] 서명(검증용), [2 바이트] 패딩 초기 값, 및 [패딩 길이]<padding>. 이들 필드 각각의 값은 다음과 같다: ID = A220, 길이 = 서명 길이(2 바이트) + 패딩 초기 값 길이(2 바이트) + 패딩 길이(가변적), 서명 = A028, 패딩 초기 값 = 아이템 이 생성될 때 호출자에 의해 설정되는 16진수, 및 <padding>은 NULL 캐릭터로 채워진다.
패키지의 인터리빙 순서는 패키지로부터 파트를 추가 또는 제거하기 위해 ZIP 유틸리티를 사용하는 것과 같은 소정의 동작에 의해 잠재적으로 교란될 수 있다. 소비자(consumer)는 인터리빙된 패키지가 잘 순서화되어 있지 않은 것을 식별할 때, 소비자는 소비를 중단하고, 에러 메시지를 생성하거나 램덤 액세스 모드로 되돌아가가고(fall back), 전체 패키지가 도달하길 기다린다.
이전에 잘 순서화된 인터리빙된 패키지에 발생한 교란을 식별하기 위해, 첫번째 ZIP 아카이브 아이템의 ZIP 헤더 여분의(EXTRA) 필드가 생성자에 의해 사용되어 "인터리빙 헤더"를 저장할 수 있다.
EXTRA 헤더는 ZIP 아카이브를 인터리빙된 아카이브로서 식별하고, 생성자에 의해 행해진 가정에 대한 추가 정보, 예컨대, 장치의 작동 메모리 크기를 잠재적으로 포함한다. 다음의 아카이브 아이템 각각에 대해, 생성자는 연속 시퀀스 번호를 포함하는 ZIP 헤더 EXTRA 필드를 추가한다.
시퀀스 번호가 EXTRA 필드에 저장된 인터리빙된 패키지의 소비자 측에서, 패키지가 잘 순서화되도록 보장하기 위해 수많은 단계들이 취해질 수 있다. 첫째로, 첫번째 아카이브 아이템의 EXTRA 필드가 검사될 수 있다. 이것이 인터리빙을 지시하는 경우, 생성자에 의해 작성된 소비자에 대한 올바른 가정으로 안내하기 위해 추가 정보가 검사될 수 있다. 다음에, 후속하는 아카이브 아이템 각각에 대해, EXTRA 필드 내에 저장된 시퀀스 번호가 검사될 수 있다. 시퀀스 번호가 유실된 경우, (완벽한 패키지가 도달하길 기다려야 할 것이지만) 랜덤 액섹스 모드로의 전환이 행해질 수 있다. 시퀀스 번호의 순서가 뒤바뀐 경우, 스트리밍 모드로 아이템이 계속해서 수신될 수 있고, 시퀀스 번호의 갭이 채워지도록 시도될 수 있다. 갭이 채워지자 마자, 처리가 진행될 수 있다. 갭이 남아있는 경우, 이는 자동으로 랜덤 액세스 모드를 디폴트로 하게 된다.
예 2
WINDOWS 파일 시스템에서 느슨한 파일에 매핑하기
예시적인 추상 패키징 모델의 요소를 물리적 표현에 매핑시키는 방법을 보다 잘 이해하기 위해서, WINDOWS 파일 시스템에서 패키지를 느슨한 파일의 콜렉션으로 표현하는 기본 경우를 생각해 본다. 예시적인 패키지에서 파트 각각은 분리된 파일(스트림) 내에 포함될 것이다. 예시적인 추상 패키징 모델에서 파트 명 각각은 파일 명에 대응한다.
즉, 파트 논리적 컴포넌트는 물리적 표현의 파일(들)에 대응한다. 파트 명 논리적 컴포넌트는 물리적 표현의 패스를 포함하는 파일 명에 대응한다. 파트 콘텐츠 타입 논리적 컴포넌트는 파트 각각의 콘텐츠 타입을 식별하는 XML을 포함하는 파일에 대응한다. 성장 힌트 논리적 컴포넌트는 무시될 수 있다.
ASCII 파트 명을 WINDOWS 파일 시스템 명으로 변환하기 위해서, 첫번째 캐릭터("/"일 것임)는 제거된다. 그 후에, 모든 "/" 캐릭터는 "\" 캐릭터로 변환된다. 다음에, 콜론(colon) 및 별표(asterisk) 캐릭터는 정확히 2개의 16 진수를 사 용하여 이스케이핑된다. 콜론 캐릭터는 시퀀스 "^3a"로 변환되고, 별표 캐릭터는 시퀀스 "^2a"로 변환된다. 예를 들어, 파트 명 /a:b/c/d*xaml은 다음의 파일 명으로 된다: a^3ab\c\d^2a.xaml.
역(reverse) 매핑을 수행하기 위해서, 모든 "\"는 "/"으로 변환된다. "/"은 스트링의 시작에 추가된다. 콜론 및 별표 캐릭터는 언-이스케이핑된다(즉, 시퀀스 "^3a"는 콜론 캐릭터(":")로 변환되고, 시퀀스 "^2a"는 별표 캐릭터("*")로 변환된다).
느슨한 파일에 매핑할 때, 인터리빙된 파트는 넌-인터리빙된 파트와 조금도 다르게 저장되지 않는다. 즉, 파트 각각은 파일로서 저장된다.
예 3
패키지 오픈하기
본원에 기술된 예시적인 추상 패키징 모델로부터 물리적 표현으로 매핑할 때, 다양한 동작이 수행된다. 한가지 이런 동작은 패키지를 오픈하는 것이다. 도 3을 참조해 보면, 본 발명의 실시예에 따라 패키지를 오픈하기 위한 예시적인 방법(300)을 나타내는 흐름도가 예시되어 있다. 처음에, 단계(310)에 지시된 바와 같이, 물리적 저장소/표현(예컨대, ZIP 아카이브)을 오픈한다. 그 후에, 단계(312)에 지시된 바와 같이, 유효한 ASCII 파트 명으로 변환될 수 있는 파일 명이 획득되고, 변환될 수 없는 파일 명이 배제된다. 다음에, 단계(314)에 지시된 바와 같이, 인-메모리 데이터 구조가 획득된 ASCII 파트 명으로 작성된다. 이 방법은 도 4를 참조하여 보다 상세히 기술된다. 또한, 원한다면 표준화된 유니코드 스트링 그 자체가 저장될 수 있다.
도 4를 참조해 보면, 본 발명의 실시예에 따라, 본원에 기술된 예시적인 추상 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑시킬 때 패키지를 오픈하기 위한 방법(400)을 나타내는 흐름도가 예시되어 있고, 그 방법(400)은 도 3의 방법(300)을 보다 상세히 기술하고 있다. 처음에, 단계(410)에 지시된 바와 같이, 물리적 저장소/표현(예컨대, ZIP 아카이브)을 오픈한다. 그 후에, 단계(412)에 지시된 바와 같이, 물리적 저장소 내의 파일 명의 최초 세트를 오픈한다. 인터리빙된 파일 명의 경우, 인터리빙된 파일 명의 세트에 대응하는 실제 파일 명을 획득한다. 다음에, 파일 명의 최초 세트 중의 각각의 파일 명을 ASCII 파트 명으로 매핑시키는 것을 수행할 수 있는지 여부를 판정한다. 이는 단계(414)에 지시되어 있다. 이 판정은 최초 세트의 파일 명 각각에 대해 개별적으로 행해진다. 매핑이 수행될 수 없는 경우, 단계(416)에 지시된 바와 같이, 개별 파일 명은 후속 처리에서 배제된다.
하지만, 최초 세트의 파일 명을 ASCII 파트 명으로 매핑시키는 것을 수행할 수 있는 경우, 단계(418)에 지시된 바와 같이, ASCII 파트 명과 연관된 콘텐츠 타입이 존재하는지 하지 않는지 여부를 그 다음에 판정한다. ASCII 파트 명과 연관된 콘텐츠 타입이 존재하지 않는 경우, 단계(416)에 지시된 바와 같이, 파일 명은 후속 처리에서 배제된다.
콘텐츠 타입이 ASCII 파트 명과 연관되어 있다면, 단계(420)에 지시된 바와 같이, 그 파일 명을 유효한 ASCII 파트 명으로 변환될 수 있는 파일 명으로 간주하고, 단계(422)에 지시된 바와 같이, 콘텐츠 타입을 식별한다. 본 발명의 실시예에 따른, 파일 명을 ASCII 파트 명으로 매핑시키기 위한 방법(500)이 도 5의 흐름도에 도시되어 있다.
처음에, 단계(510)에 지시된 바와 같이, 유니코드 파일 명이 입력된다. 그 후에, 단계(512)에 지시된 바와 같이, 유니코드 스트링이 UTF-8 옥텟(octet)의 시퀀스로 변환된다. 다음에, 비 ASCII 옥텟 각각이 %HH 형태의 3개 캐릭터 시퀀스로 변환되고, HH는 옥텟 값의 16진수 표현이다. 이는 단계(514)에 지시되어 있다. 그 후에, 단계(516)에 지시된 바와 같이, 결과로서의 ASCII 스트링이 획득된다.
일부 경우에, 유효한 ASCII 파트 명으로 변환될 수 있는 파일 명이 직접 ASCII 스트링으로 획득되고 입력되어, ASCII 파트 명으로 변환된다. 이는 단계(518)에 지시되어 있다.
ASCII 스트링이 표준화된 유니코드 스트링으로부터 획득되든 또는 입력되든, 단계(520)에 지시된 바와 같이, 캐릭터 "/", "\", 및 "."에 대응하는 이스케이프-인코디드 트리플렛(escape-encoded triplet)은 어떤 것이든 이스케이핑되지 않는다. 그 후에, 단계(522)에 지시된 바와 같이, 모든 "\" 캐릭터가 "/" 캐릭터로 변환된다. 다음에, 단계(524)에 지시된 바와 같이, 패스 압축이 적용된다.
패스 압축 동안에, "."가 완료 패스 세그먼트인 모든 발생된 "./"는, 버퍼 스트링으로부터 제거된다. 버퍼 스트링이 어떤 것이든 "." 캐릭터로 종료하면, 그것들은 제거된다. 또한, "<segment>"가 ".."와 동일하지 않은 완료 패스 세그먼트 인, 모든 발생된 "<segment>/../"는 버퍼 스트링으로부터 제거된다. 이들 패스 세그먼트의 제거는 반복적으로 수행되어, 더 이상 일치하는 패턴이 없을 때까지 최 좌측으로부터 일치하는 패턴을 매회 반복 동안 제거하게 된다. 다음에, "<segment>"가 ".."와 동일하지 않은 완료 패스 세그먼트인, "<segment>/.."로 끝나면, 그 "<segment>/.."가 제거된다. 그 후에, 예약되지 않은 캐릭터에 대응하는 이들 이스케이프-인코디드 트리플렛은 이스케이핑되지 않는다.
등가성에 대해 ASCII 파트 명을 테스트할 때, 먼저 그 이름은 유니코드 파트 명으로 변환된다. 결과로서의 유니코드 파트 명이 동일하다면, ASCII 파트 명이 동일한 것으로 간주된다. 본원에 기술된 예시적인 추상 패키징 모델을 사용할 때, ASCII 파트 명 내에는 사본이 없어야 한다.
그 후에, 단계(526)에 지시된 바와 같이, 결과로서의 ASCII 파트 명이 획득된다.
도 4를 참조해 보면, 일단 표준화된 유니코드 스트링 각각에 대한 ASCII 파트 명이 획득되면, 단계(424)에 지시된 바와 같이, 인-메모리 데이터 구조가 ASCII 파트 명 및 연관된 콘텐츠 타입으로 작성된다. 성공적으로 오픈된 패키지에서는, ASCII 파트 명과 콘텐츠 타입을 갖는 인-메모리 구조가 있을 것이다.
예 4
유니코드 스트링으로부터 파트의 콘텐츠를 획득하기
도 6을 참조해 보면, ASCII 파트 명을 획득하고, 그 후에 유니코드 스트링으 로부터 파트의 콘텐츠를 획득하기 위한 방법을 도시하는 흐름도가 예시되어 있으며, 전반적으로 참조 부호(600)로 지정된다. 처음에, 단계(610)에 지시된 바와 같이, 유니코드 스트링은 파트 명을 위한 표준화된 유니코드 스트링으로 변환된다. 그 후에, 동일 이름이 인-메모리 데이터 구조에 포함되는지를 판정한다. 이 판정은 단계(612)에 지시되어 있다. 동일 이름이 인-메모리 데이터 구조에 없다면, 단계(614)에 지시된 바와 같이, 파트의 콘텐츠는 검색될 수 없다.
하지만, 동일 이름이 인-메모리 데이터 구조에 있다면, 단계(616)에 지시된 바와 같이, 파트가 반환된다. 그 후에, 단계(618)에 지시된 바와 같이, 파트의 콘텐츠가 획득될 수 있다.
예 5
유니코드 스트링 및 콘텐츠 타입으로부터 파트를 생성하기
도 7을 참조해 보면, 본 발명의 실시예에 따른 유니코드 스트링 및 콘텐츠 타입으로부터 파트를 생성하기 위한 방법(700)이 예시되어 있다. 처음에, 단계(710)에 지시된 바와 같이, 유니코드 스트링은 파트 명을 위한 표준화된 유니코드 스트링으로 변환된다(도 5 참조). 그 후에, 단계(714)에 지시된 바와 같이, 동일 파트 명을 찾기 위해 인-메모리 데이터 구조가 검색되고, 동일 이름이 인-메모리 데이터 구조에 있는지 여부가 판정된다. 이는 단계(716)에 지시되어 있다. 동일 이름이 인-메모리 데이터 구조에 있으면, 파트가 생성될 수 없다(복제 동일 파트 명은 허용되지 않기 때문).
하지만, 동일 이름이 인-메모리 데이터 구조에 없으면, 단계(720)에 지시된 바와 같이, 유니코드 스트링이 ASCII 파트 명을 생성하는데 사용된다(도 5 참조). 그 후에, 단계(722)에 지시된 바와 같이, ASCII 파트 명을 물리적 패키지 파일 명으로 변환한다. 다음에, 물리적 패키지 파일 명으로 패키지 파일을 생성한다. 이는 단계(724)에 지시되어 있다. 기본 파일 포맷에 지정된 케이싱(casing) 등을 유지하기 위해 표준화된 유니코드 스트링이 이 프로세스에서 사용되지 않음에 주목해야 한다. 인터리빙의 경우에, 파일은 인터리빙된 이름으로 생성된다.
그 후에, 단계(726)에 지시된 바와 같이, ASCII 파트 명으로부터 파일 명 확장이 획득되고, 지정된 콘텐츠 타입이 파일 명 확장을 위해 이미 등록되어 있는지가 판정된다. 이는 단계(728)에 지시되어 있다. 지정된 콘텐츠 타입이 파일 명 확장으로 이미 등록되어 있지 않으면, 파일 확장에 대응하는 콘텐츠 타입 스트링에 디폴트 엔트리가 생성된다. 대안으로서, 디폴트 엔트리가 있지만, 지정된 콘텐츠 타입에 일치하지 않으면, 콘텐츠 타입 스트링에 오버라이드 엔트리가 생성된다. 이는 단계(730)에 지시되어 있다.
일단 디폴트 또는 오버라이드 엔트리가 생성되거나, 지정된 콘텐츠 타입이 이미 파일 명 확장을 위해 등록되어 있는 경우, 단계(732)에 지시된 바와 같이, ASCII 명을 갖는 새로운 파트가 인-메모리 데이터 구조에 추가된다. 그 후에, 단계(734)에 지시된 바와 같이, 새로이 추가된 파트를 사용자에게 반환한다.
예 6
지정된 유니코드 스트링에 기초하여 파트를 제거하기
도 8을 참조해 보면, 본 발명의 실시예에 따른 지정된 유니코드 스트링에 기초하여 파트를 제거하기 위한 방법(800)을 나타내는 흐름도가 예시되어 있다. 처음에, 단계(810)에 지시된 바와 같이, 유니코드 스트링은 파트 명을 위한 표준화된 데이터 구조로 변환된다(도 5 참조). 그 후에, 단계(814)에 지시된 바와 같이, 인-메모리 데이터 구조가 동일 이름을 찾기 위해 검색되고, 동일 이름이 인-메모리 데이터 구조에 있는지가 판정된다. 이 판정은 단계(816)에 지시되어 있다. 동일 이름이 인-메모리 데이터 구조에 있지 않으면, 단계(818)에 지시된 바와 같이, 제거가 불필요하다.
하지만, 동일 이름이 인-메모리 데이터 구조에 있으면, 단계(820)에 지시된 바와 같이, 대응하는 파일(들)을 패키지로부터 제거한다. 그 후에, 단계(822)에 지시된 바와 같이, 인-메모리 데이터 구조로부터 대응하는 엔트리가 제거된다. 다음에, 단계(824)에 지시된 바와 같이, ASCII 파트 명을 찾기 위해 콘텐츠 타입 스트림의 오버라이드 엔트리가 검색되고, 단계(826)에 지시된 바와 같이, ASCII 파트 명이 오버라이드 엔트리에 있는지 없는지 여부가 판정된다.
ASCII 파트 명이 오버라이드 엔트리에 없으면, 단계(828)에 지시된 바와 같이, 동작이 완료된다. 하지만, ASCII 파트 명이 오버라이드 엔트리에 있으면, 단계(830)에 지시된 바와 같이, ASCII 파트 명을 오버라이드 엔트리로부터 제거한다.
본 발명의 실시예는 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처 간에 매핑시키기 위한 방법을 제공하는 것으로 이해될 수 있다. 패키징 모델의 컴 포넌트는 파트 명, 콘텐츠 타입, 파트의 콘텐츠, 및/또는 성장 힌트를 포함할 수 있다(단지 예일 뿐임). 패키지의 물리적 표현은 물리적 지속 포맷 및/또는 다양한 트랜스포트, 예컨대, 네트워크 기반의 프로토콜을 포함할 수 있다(단지 예일 뿐임).
본 발명은 모든 면에서 제한적이라기 보다는 예시적인 것으로 의도되는 특정 실시예에 관련하여 기술되었다. 당업자는 본 발명이 그 범위를 일탈하지 않는 다른 실시예를 분명히 알 수 있을 것이다.
상기로부터, 본 발명은, 시스템과 방법에 분명하고 고유한 다른 장점들과 함께, 전술된 목적 및 대상을 획득하도록 잘 적응된 것임을 알 수 있다. 소정의 특징 및 하부결합이 이용되고 다른 특징과 하부결합을 참조함 없이 사용될 수 있음을 이해할 것이다. 이는 청구항의 범위 내에 있고, 청구항들에 의해 고려된다.
Claims (20)
- 추상 패키징 모델의 컴포넌트와, 패키지의 - 각 패키지는 적어도 하나의 파트를 가짐 - 복수 개의 대응하는 물리적 표현들의 각각의 피처(feature) 간에 매핑시키기 위한 방법으로서,상기 추상 패키징 모델의 하나 이상의 컴포넌트를 식별하는 단계 - 상기 추상 패키징 모델의 하나 이상의 컴포넌트를 식별하는 단계는 파트 성장 힌트(part growth hint) 및 파트 명, 파트 콘텐츠 타입, 및 파트의 콘텐츠 중 하나 이상을 식별하는 단계를 포함하고, 상기 추상 패키징 모델은 각각이 상이한 물리적 포맷을 가지는 복수 개의 물리적 표현들로 매핑될 수 있음 -;식별된 상기 하나 이상의 컴포넌트 각각에 대응하는 상기 복수 개의 물리적 표현들 중의 적어도 하나의 물리적 표현의 피처를 식별하는 단계; 및상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계를 포함하는 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제1항에 있어서,상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계는,적어도 하나의 액세스 스타일, 적어도 하나의 레이아웃 스타일, 및 적어도 하나의 통신 스타일을 사용하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제2항에 있어서,상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계는,스트리밍 소비(streaming consumption), 스트리밍 생성, 및 동시적인 스트리밍 소비와 생성으로 이루어지는 그룹으로부터 선택된 적어도 하나의 액세스 스타일을 사용하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제2항에 있어서,상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계는,단순한 순서화(ordering) 및 인터리빙으로 이루어지는 그룹으로부터 선택된 적어도 하나의 레이아웃 스타일을 사용하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제4항에 있어서,상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계는,상기 인터리빙 레이아웃 스타일을 사용하는 단계;인터리빙 메커니즘을 사용하여 상기 적어도 하나의 파트를 다수의 부분(piece)으로 나누는 단계; 및상기 다수의 부분 각각에 상기 적어도 하나의 파트의 파트 명으로부터 유래된 부분 명을 제공하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제2항에 있어서,상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계는,순차적 전송 및 랜덤 액세스로 이루어지는 그룹으로부터 선택된 적어도 하나의 통신 스타일을 사용하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제1항에 있어서,상기 추상 패키징 모델의 하나 이상의 컴포넌트를 식별하는 단계는 파트 콘텐츠 타입을 식별하는 단계를 포함하고, 상기 적어도 하나의 물리적 표현은 상기 파트 콘텐츠 타입을 나타내기 위한 원시 메커니즘(native machanism)을 포함하며, 상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계는 상기 원시 메커니즘을 사용하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제1항에 있어서,상기 추상 패키징 모델의 하나 이상의 컴포넌트를 식별하는 단계는 파트 콘텐츠 타입을 식별하는 단계를 포함하고, 상기 적어도 하나의 물리적 표현은 상기 파트 콘텐츠 타입을 나타내기 위한 원시 메커니즘을 포함하지 않으며, 상기 추상 패키징 모델의 상기 하나 이상의 컴포넌트를 상기 적어도 하나의 물리적 표현의 대응하는 피처에 매핑시키는 단계는,파트 콘텐츠 타입 스트림을 상기 적어도 하나의 물리적 표현으로 정의하는 단계; 및상기 파트 콘텐츠 타입을 상기 파트 콘텐츠 타입 스트림에 매핑시키는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제8항에 있어서,상기 파트 콘텐츠 타입 스트림은 일치하는 디폴트 요소 및 일치하는 오버라이드 요소 중 적어도 하나를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제9항에 있어서,상기 일치하는 디폴트 요소는 파트 명의 확장으로부터 컨텐츠 타입으로의 디폴트 매핑의 적어도 하나의 정의를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 추상 패키징 모델의 컴포넌트와, 패키지의 - 각 패키지는 적어도 하나의 파트를 가짐 - 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법으로서 - 상기 컴포넌트는 적어도 파트 명, 파트 콘텐츠 타입, 파트의 콘텐츠, 및 성장 힌트를 포함함 -,상기 추상 패키징 모델의 복수 개의 컴포넌트들을 식별하는 단계 - 상기 복수 개의 컴포넌트들은 파트 명, 파트 콘텐츠 타입, 및 파트의 콘텐츠를 포함하고, 상기 추상 패키징 모델은 각각이 상이한 물리적 포맷을 가지는 복수 개의 물리적 표현들로 매핑될 수 있음 -;상기 파트 명, 상기 파트 콘텐츠 타입, 및 상기 파트의 콘텐츠 각각에 대응하는 상기 복수 개의 물리적 표현들 중의 적어도 하나의 물리적 표현의 피처를 식별하는 단계;상기 성장 힌트에 대응하는 상기 적어도 하나의 물리적 표현의 피처를 식별하는 단계;상기 성장 힌트를 상기 적어도 하나의 물리적 표현의 상기 식별된 피처에 매핑시키는 단계;상기 적어도 하나의 물리적 표현이 상기 파트 콘텐츠 타입을 나타내기 위한 원시 메커니즘을 포함하는지를 판정하는 단계; 및상기 파트 명, 상기 파트 콘텐츠 타입, 및 상기 파트의 콘텐츠 각각을 그것에 대응하는 상기 적어도 하나의 물리적 표현의 피처에 매핑시키는 단계를 포함하고,상기 적어도 하나의 물리적 표현이 상기 파트 콘텐츠 타입을 나타내기 위한 원시 메커니즘을 포함하지 않으면, 상기 파트 명, 상기 파트 콘텐츠 타입, 및 상기 파트의 콘텐츠 각각을 그것에 대응하는 적어도 하나의 물리적 표현의 피처에 매핑시키는 단계는,파트 콘텐츠 타입 스트림을 상기 적어도 하나의 물리적 표현으로 정의하는 단계; 및상기 파트 콘텐츠 타입을 상기 파트 콘텐츠 타입 스트림에 매핑시키는 단계를 포함하는 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제11항에 있어서,상기 적어도 하나의 물리적 표현이 상기 파트 콘텐츠 타입을 나타내기 위한 원시 메커니즘을 포함하면, 상기 파트 명, 상기 파트 콘텐츠 타입, 및 상기 파트의 콘텐츠 각각을 그것에 대응하는 적어도 하나의 물리적 표현의 피처에 매핑시키는 단계는, 상기 원시 메커니즘을 이용하여 상기 파트 콘텐츠 타입을 매핑하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제11항에 있어서,상기 파트 명, 상기 파트 콘텐츠 타입, 및 상기 파트의 콘텐츠 각각을 그것에 대응하는 적어도 하나의 물리적 표현의 피처에 매핑시키는 단계는,적어도 하나의 액세스 스타일, 적어도 하나의 레이아웃 스타일, 및 적어도 하나의 통신 스타일을 사용하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제13항에 있어서,상기 파트 명, 상기 파트 콘텐츠 타입, 및 상기 파트의 콘텐츠 각각을 그것에 대응하는 적어도 하나의 물리적 표현의 피처에 매핑시키는 단계는,인터리빙 레이아웃 스타일을 사용하는 단계;인터리빙 메커니즘을 사용하여 상기 적어도 하나의 파트를 다수의 부분으로 나누는 단계; 및상기 다수의 부분 각각에 상기 적어도 하나의 파트의 파트 명으로부터 유래된 부분 명(piece name)을 제공하는 단계를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제13항에 있어서,상기 적어도 하나의 액세스 스타일은 스트리밍 소비를 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 제13항에 있어서,상기 적어도 하나의 액세스 스타일은 동시적인 스트리밍 소비와 생성을 포함하는, 추상 패키징 모델의 컴포넌트와 패키지의 복수 개의 대응하는 물리적 표현들의 각각의 피처 간에 매핑시키기 위한 방법.
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/112,602 US7523392B2 (en) | 2005-04-22 | 2005-04-22 | Method and system for mapping between components of a packaging model and features of a physical representation of a package |
US11/112,602 | 2005-04-22 | ||
PCT/US2006/009899 WO2006115615A2 (en) | 2005-04-22 | 2006-03-16 | Method and system for mapping between components of a packaging model and features of a physical representation of a package |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080014737A KR20080014737A (ko) | 2008-02-14 |
KR101224684B1 true KR101224684B1 (ko) | 2013-01-21 |
Family
ID=37188555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077022707A KR101224684B1 (ko) | 2005-04-22 | 2006-03-16 | 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처간의 매핑 방법 및 시스템 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7523392B2 (ko) |
KR (1) | KR101224684B1 (ko) |
CN (1) | CN101189594B (ko) |
WO (1) | WO2006115615A2 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7933874B2 (en) * | 2006-11-14 | 2011-04-26 | Microsoft Corporation | Maintaining tracking information for electronic documents |
US8125481B2 (en) | 2008-03-21 | 2012-02-28 | Google Inc. | Lightweight three-dimensional display |
US8886669B2 (en) * | 2008-03-21 | 2014-11-11 | Trimble Navigation Limited | File access via conduit application |
US10732782B1 (en) * | 2015-07-29 | 2020-08-04 | Intuit Inc. | Context-aware component styling in user interfaces of electronic devices |
US10402035B1 (en) | 2015-07-29 | 2019-09-03 | Intuit Inc. | Content-driven orchestration of multiple rendering components in user interfaces of electronic devices |
US10802660B1 (en) | 2015-07-29 | 2020-10-13 | Intuit Inc. | Metadata-driven binding of platform-agnostic content to platform-specific user-interface elements |
KR102397494B1 (ko) * | 2021-11-17 | 2022-05-13 | (주)에스엠시스템 | 로우(Low) 코드 웹 개발 및 운영 시스템 및 이를 이용한 서비스 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126128A1 (en) * | 2001-10-31 | 2003-07-03 | Mike Watson | Systems and methods of generating interactive electronic reference materials |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8006177B1 (en) * | 1998-10-16 | 2011-08-23 | Open Invention Network, Llc | Documents for commerce in trading partner networks and interface definitions based on the documents |
JP4712191B2 (ja) * | 1998-10-16 | 2011-06-29 | オープン インヴェンション ネットワーク リミテッド ライアビリティ カンパニー | トレーディングパートナネットワークにおける商業のためのドキュメント及びそのドキュメントを基にしたインターフェースの定義 |
US20030004971A1 (en) * | 2001-06-29 | 2003-01-02 | Gong Wen G. | Automatic generation of data models and accompanying user interfaces |
US7032125B2 (en) * | 2002-04-25 | 2006-04-18 | Lsi Logic Corporation | Method for loosely coupling metadata and data in a storage array |
TWI360083B (en) * | 2003-05-09 | 2012-03-11 | Jda Software Group Inc | System, method and software for managing a central |
-
2005
- 2005-04-22 US US11/112,602 patent/US7523392B2/en active Active
-
2006
- 2006-03-16 KR KR1020077022707A patent/KR101224684B1/ko active IP Right Grant
- 2006-03-16 WO PCT/US2006/009899 patent/WO2006115615A2/en active Application Filing
- 2006-03-16 CN CN2006800136503A patent/CN101189594B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126128A1 (en) * | 2001-10-31 | 2003-07-03 | Mike Watson | Systems and methods of generating interactive electronic reference materials |
Also Published As
Publication number | Publication date |
---|---|
KR20080014737A (ko) | 2008-02-14 |
US20060242566A1 (en) | 2006-10-26 |
CN101189594B (zh) | 2010-12-08 |
WO2006115615A2 (en) | 2006-11-02 |
US7523392B2 (en) | 2009-04-21 |
CN101189594A (zh) | 2008-05-28 |
WO2006115615A3 (en) | 2008-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101137171B1 (ko) | 문서 처리용 방법 및 장치 | |
US8631041B2 (en) | Secondary lazy-accessible serialization of electronic content | |
KR101224684B1 (ko) | 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처간의 매핑 방법 및 시스템 | |
KR101109307B1 (ko) | 모듈러 문서 포맷 | |
US6523046B2 (en) | Infrastructure and method for supporting generic multimedia metadata | |
US8122350B2 (en) | Packages that contain pre-paginated documents | |
US7418652B2 (en) | Method and apparatus for interleaving parts of a document | |
US7263654B2 (en) | System and method for generating optimized binary representation of an object tree | |
KR101109280B1 (ko) | 선택 가능 및/또는 시퀀스 가능 파트들을 갖는다큐먼트들을 정의하기 위한 방법 및 시스템 | |
US8005847B2 (en) | Pattern-based file relationship inference | |
JP2014002757A (ja) | バイナリにエンコードされたxmlデータの効率的な区分的アップデート | |
US20110161808A1 (en) | Method and system for processing electronic data | |
US20090024640A1 (en) | Apparatus and method for improving efficiency of content rule checking in a content management system | |
US20060184576A1 (en) | System and method for extensible metadata architecture for digital images | |
US20060184554A1 (en) | System and method for extensible metadata architecture for digital images using in-place editing | |
US9129035B2 (en) | Systems, methods, and apparatus for accessing object representations of data sets | |
US7814408B1 (en) | Pre-computing and encoding techniques for an electronic document to improve run-time processing | |
US9201838B2 (en) | Systems and methods for the efficient exchange of hierarchical data | |
US20120109911A1 (en) | Compression Of XML Data | |
Gallagher et al. | DAP data model specification DRAFT | |
Troelsen | File and Directory Manipulation | |
AU9724501A (en) | Browsing electronically-accessible resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151217 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161220 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20171219 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20181226 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20191217 Year of fee payment: 8 |