KR20040111140A - 모듈러 오브젝트 직렬화 아키텍처 - Google Patents
모듈러 오브젝트 직렬화 아키텍처 Download PDFInfo
- Publication number
- KR20040111140A KR20040111140A KR1020040045356A KR20040045356A KR20040111140A KR 20040111140 A KR20040111140 A KR 20040111140A KR 1020040045356 A KR1020040045356 A KR 1020040045356A KR 20040045356 A KR20040045356 A KR 20040045356A KR 20040111140 A KR20040111140 A KR 20040111140A
- Authority
- KR
- South Korea
- Prior art keywords
- serialization
- serializer
- user interface
- custom
- standard
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
맞춤형 오브젝트 타입 및 직렬화 포맷을 가진 사용자 인터페이스 오브젝트를 직렬화하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제품을 제공한다. 직렬화 관리자는 표준 오브젝트 타입 또는 직렬화 포맷에 대한 표준 직렬화기를 식별하도록 표준 직렬화 제공자를 조정할 수 있으며, 필요에 따라, 표준 직렬화 제공자에 의해 커버될 수 없는 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 맞춤형 직렬화기를 식별하기 위한 맞춤형 직렬화 제공자를 로딩하는 것에 의해 확장될 수 있다. 이용가능한 직렬화 제공자들로부터, 직렬화 관리자는 특정한 직렬화 포맷 및 오브젝트 타입에 대한 직렬화기를 식별한다. 맞춤형 또는 표준 오브젝트는 식별된 직렬화기를 사용해, 소스 코드 표현, XML 표현 등을 포함하는 맞춤형 또는 표준 포맷으로 직렬화된다. 소정의 직렬화 포맷은 오브젝트의 클래스 표현을 생성하지 않으면서 코드의 단편을 생성한다. 직렬화기들간의 모듈성을 조정하고 향상시키기 위해, 직렬화 관리자는 문맥 정보를 유지하고 공유할 수 있다.
Description
본 발명은 오브젝트 직렬화(object serialization)에 관한 것이다. 보다 구체적으로, 본 발명은 맞춤형(custom) 사용자 인터페이스 오브젝트를 맞춤형 직렬화 포맷으로 직렬화하는 방법, 시스템, 및 컴퓨터 프로그램 제품에 관한 것이다.
넓은 의미에서, 직렬화는 하나의 표현 또는 포맷으로부터 다른 표현 또는 포맷으로의 오브젝트 변환이다. 직렬화는 일반적으로, 오브젝트를 초기 표현으로부터 소정의 다른 표현으로 변환한 다음, 그 다른 표현을 초기 표현으로 재변환하는 두 방향 프로세스를 의미한다. 간혹, 초기 표현으로의 재변환을 반직렬화(deserialization)라고도 하지만, 직렬화는 초기 표현의 초기 변환 및 후속하는 초기 표현으로의 재변환 모두를 포함하는 포괄적인 용어이다.
예를 들어, 인-메모리 또는 라이브 오브젝트(in-memory or live objects)는 영구 저장이나 네트워크를 통한 전송에 적합한 지속적 오브젝트 또는 임시적 오브젝트로 직렬화될 수 있다. 현재로는, 저장 및 데이터 전송 양자를 위한 직렬화 포맷으로서 XML(eXtensible Markup Language)을 사용하는 것이 일반적이다. 일단 저장되거나 전송되면, 오브젝트의 XML 표현은 다시 XML 표현으로부터 인-메모리 또는 라이브 오브젝트로 직렬화(또는 반직렬화)될 수 있다. 직렬화를 수행하는 소프트웨어를 통상적으로 직렬화기(serializer)라 한다.
코드 생성은 직렬화에 대한 또 하나의 예이다. 도 1은 인-메모리 또는 라이브 사용자 인터페이스 오브젝트(110)를 가진 비주얼(visual) 사용자 인터페이스 설계기(100)의 일례를 도시한다. 비주얼 사용자 인터페이스 설계기(100)는, 사용자가 사용자 인터페이스 오브젝트의 비주얼 외양을 정의한 다음, 컴파일되어 프로그램내에 포함될 수 있는 사용자 인터페이스 오브젝트의 소스 코드 표현을 생성할 수 있게 해준다. 이 예에서, 사용자 인터페이스 오브젝트(110)는 이 오브젝트를 About 박스로 식별하는 타이틀(112), About 박스의 최소화, 최대화, 및 닫기를 위한 윈도우 컨트롤(114), 및 About 박스를 감소시키는 OK 버튼(118)을 가진 간단한 About 박스이다. 통상적인 비주얼 사용자 인터페이스 설계기는 표 1에 나타낸 의사 코드와 유사한 코드를 생성한다.
표 1의 의사 코드는 비주얼 사용자 인터페이스 설계기내에서 종래 직렬화가 갖는 몇가지 문제점들을 나타낸다. 첫째, 비주얼 사용자 인터페이스 설계기내의 종래의 직렬화는 통상적으로, 코드 생성과 같은 하나의 직렬화 포맷에 한정된다. 코드 생성이 비주얼 사용자 인터페이스 설계기에 대한 중요한 목적인 것은 확실하지만, 다른 타입의 직렬화가 필요할 수도 있다. 하나의 비주얼 사용자 인터페이스 설계기에서 생성된 사용자 인터페이스 오브젝트가 다른 비주얼 사용자 인터페이스 설계기에 이입될 수 있게 해주는 범용 포맷으로서, 예를 들어, About 박스의 XML 표현이 바람직할 수 있다. 그러나, 비주얼 사용자 인터페이스 설계기 내의 종래의 직렬화는 하나의 포맷과 밀접하게 연결되어 상이한 직렬화 포맷에는 허용되지 않는다.
표 1의 의사 코드에 의해 나타난 두번째 문제점은, 비주얼 사용자 인터페이스 설계기내의 종래 직렬화는 통상적으로, 표 1에 나타낸 새로운 About 클래스와 같은 새로운 클래스를 생성한다. 코드 생성의 경우에는, 새로운 클래스내의 멤버 오브젝트와 직접적 상호작용을 허용하므로, 이것이 대체로 바람직한 거동이다. 그러나, 많은 동작의 경우, 직렬화시에 새로운 클래스를 생성하는 것은 비효율성을 초래한다. 예를 들어, 대부분의 디자인 시간 동안, 오브젝트의 비주얼 표현만이 의미가 있거나 가장 의미가 있으며, 비주얼 표현이 디스크에 저장될 때에는 소스 코드만이 필요하다. 표 2는 표 1에 나타낸 의사 코드에 대한 등가 표현을 나타낸다. 표 1은 새로운 타입을 생성하는 반면, 표 2는 기존 타입을 구성한다는 것이 차이점이다. 이러한 두번째 표현은 종결된 소스 코드로서 유용하지 않을 수도 있지만, 되살리기 또는 복사하기 및 붙여넣기(undo or copy and paste)와 같은 사양(features)을 위해 라이브 오브젝트 상태를 지속시키기 위한 포괄적인 방법으로서 비주얼 설계기내에서 사용될 수 있다.
세번째 문제점은, 비주얼 사용자 인터페이스 설계기내의 종래 직렬화는 일반적으로, 직렬화기가 새로운 타입 및/또는 새로운 직렬화 포맷을 위해 확장되는 방법에 한정된다는 것이다. 새로운 타입 또는 포맷을 위해 직렬화 제공자를 호출하는 것이 가능하긴 하지만, 종래 직렬화는 직렬화 제공자에 대한 타입으로 컴파일될 메타데이터 속성이 공지될 것을 요한다. 따라서, 새로운 직렬화 포맷을 제공하고 오브젝트 개발자에 의해 예상되지 않은 새로운 오브젝트 타입을 직렬화하기 위해 재컴파일이 필요하다. 불편한 것은 차치하고, 제3자 오브젝트가 직렬화되는 때와 같이, 일부 환경에서는 재컴파일이 불가능할 수도 있다.
당연히, 비주얼 사용자 인터페이스 설계기는 오브젝트의 그래프에 대해 코드를 생성하는 소프트웨어의 일례일 뿐이다. 많은 환경에서, 코드 생성은 오브젝트의 그래프를 개조(recreation)하는 가장 빠르고 효율적인 방법일 수 있다. 그러나, 상술한 바와 같이, 종래 직렬화, 특히 코드 생성이 관계되는 종래 직렬화는 그 유용성을 제한하는 여러가지 단점들을 가질 수 있다.
본 발명은 오브젝트 타입 또는 직렬화 포맷을 가진 오브젝트를 직렬화하는 방법, 시스템, 및 컴퓨터 프로그램 제품에 관한 것이다. 본 발명의 예시적 실시예에 따르면, 직렬화 관리자는 표준 오브젝트 타입 또는 직렬화 포맷에 대한 표준 직렬화기를 식별하기 위해 표준 직렬화 제공자를 조정한다. 필요에 따라, 직렬화 관리자는, 표준 직렬화 제공자에 의해 커버(cover)될 수 없는 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 맞춤형 직렬화기를 식별하기 위해 맞춤형 직렬화 제공자를 로딩하는 것에 의해, 확장될 수 있다. 이용가능한 직렬화 제공자들로부터, 직렬화 관리자는 특정한 직렬화 포맷 및 오브젝트 그래프에 대한 직렬화기를 식별한다. 적합한 직렬화기가 식별되고 나면, 이 직렬화기를 사용하여 오브젝트 그래프가 직렬화된다.
오브젝트 그래프는, 맞춤형 또는 표준 오브젝트 타입일 수 있는 복수개의 관련 오브젝트를 포함할 수 있으며, 직렬화 포맷은 표준 또는 맞춤형 포맷일 수 있다. 예시적 직렬화 포맷은 라이브 또는 인-메모리 표현, 소스 코드 표현, XML 표현 등을 포함한다. 소정의 직렬화 포맷은 오브젝트 그래프의 클래스 표현을 생성하지 않으면서 오브젝트 그래프에 대한 코드의 단편(snippet of code)을 생성할 수 있다. 이들 코드의 단편들은 비주얼 사용자 인터페이스 설계기내에서의 오려두기/복사하기/붙여넣기 및 되살리기/다시하기(undo/redo) 동작에 특히 유용하다. 일부 구현에서는, 맞춤형 직렬화 제공자로부터의 직렬화기가 표준 직렬화기를 대체하는데 사용될 수 있다. 직렬화기와 그 제공자들간의 모듈성을 조정하고 향상시키기 위해, 직렬화 관리자는 문맥 정보를 유지하고 공유할 수 있다.
도 1은 본 발명에 따라 직렬화될 수 있는 예시적인 사용자 인터페이스 오브젝트를 가진 예시적인 비주얼 사용자 인터페이스 설계기를 도시하는 도면.
도 2는 본 발명에 따른 예시적인 직렬화 관리자를 도시하는 도면.
도 3은 본 발명에 따른 사용자 인터페이스 오브젝트를 직렬화하는 방법에 대한 예시적인 동작 및 단계를 나타내는 도면.
도 4는 본 발명에 적당한 동작 환경을 제공하는 예시적인 시스템을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : 비주얼 사용자 인터페이스 설계기
110 : 사용자 인터페이스 오브젝트
112 : 타이틀
114 : 윈도우 컨트롤
200 : 직렬화 관리자
220 : 표준 직렬화 제공자
240 : 맞춤형 직렬화 제공자
420 : 컴퓨터
본 발명의 부가적 특징 및 이점들을 다음의 상세한 설명에 기술하며, 이들은 상세한 설명으로부터 어느 정도 명백하고, 본 발명의 실시에 의해 학습될 수도 있다. 본 발명의 특징 및 이점들은 첨부된 청구항에 구체적으로 지적된 도구 및 조합을 이용하여 실현되고 획득될 수 있다. 본 발명의 이들 및 다른 특징들은 다음의 상세한 설명 및 첨부된 청구항으로부터 보다 명백해지거나 이하에 기술한 본 발명의 실시에 의해 학습될 수 있다.
본 발명에 대해 상기한 그리고 다른 이점들 및 특징들이 획득될 수 있는 방식을 설명하기 위해, 지금까지 간단히 설명한 본 발명을, 첨부된 도면에 도시되어 있는 구체적인 실시예를 참조하여 보다 상세히 설명한다. 이들 도면들은 본 발명의 통상적인 실시예들만을 도시할 뿐이므로 본 발명의 범위를 한정하는 것으로 간주되지 않는다는 것을 알 수 있으며, 첨부된 도면을 사용하여 본 발명의 부가적인 특징 및 세부사항을 기술하고 설명한다.
본 발명은 맞춤형 오브젝트 타입 및 직렬화 포맷을 가진 사용자 인터페이스오브젝트를 직렬화하는 방법, 시스템, 및 컴퓨터 프로그램 제품에 관한 것이다. 본 발명의 실시예는, 후술하는 바와 같이, 다양한 컴퓨터 하드웨어를 포함하는 하나 이상의 특수 목적 및/또는 하나 이상의 범용 컴퓨터를 구비할 수 있다.
도 2는 본 발명에 따른 예시적 직렬화 관리자(200)를 도시한다. 직렬화 관리자(200)는 표준 직렬화기(224)를 가진 표준 직렬화 제공자(240) 및 맞춤형 직렬화기(244)를 가진 맞춤형 직렬화 제공자(240)를 포함한다. 표준 직렬화기(224) 또는 맞춤형 직렬화기(244)와 같은 직렬화기는 특정한 오브젝트 타입 또는 오브젝트 타입의 범위를 특정한 직렬화 포맷으로 직렬화할 수 있는 오브젝트이다. 일반적으로, 하나의 오브젝트 타입을 상이한 직렬화 포맷들로 직렬화하는데는 상이한 직렬화기가 사용되며, 일부 구현예에서는, 특이한 직렬화 포맷을 제공하는 직렬화 제공자에 대해 개개의 베이스 클래스들(base classes)이 존재한다. 예를 들어, 다음에서 상술하는 바와 같이, XmlSerializer 베이스 클래스는 오브젝트를 XML로 변환하는데 사용될 수 있다. 상이한 직렬화기 및 직렬화 제공자 또한, 상이한 오브젝트 타입들을 하나의 직렬화 포맷으로 직렬화하는데 사용될 수 있다.
표준 직렬화 제공자(220) 및 맞춤형 직렬화 제공자(240)와 같은 직렬화 제공자는 특정한 오브젝트 타입 및 직렬화 포맷을 위한 개개의 직렬화기를 식별한다. 예를 들어, 표준 직렬화 제공자(220)는 표준 오브젝트를 표준 직렬화 포맷으로 직렬화하기 위해 표준 직렬화기(224)를 식별한다. 상이한 오브젝트 타입을 동일한 표준 직렬화 포맷으로 직렬화하거나 표준 오브젝트 타입을 상이한 표준 직렬화 포맷으로 직렬화하기 위해 다른 표준 직렬화기(226)가 사용될 수 있다. 마찬가지로,맞춤형 직렬화 제공자(240)는 맞춤형 오브젝트를 맞춤형 직렬화 포맷으로 직렬화하기 위해 맞춤형 직렬화기(244)를 식별할 수 있으며, 상이한 오브젝트 타입을 동일한 맞춤형 직렬화 포맷으로 직렬화하거나 동일한 맞춤형 오브젝트를 상이한 맞춤형 직렬화 포맷으로 직렬화하기 위해 다른 맞춤형 직렬화기(246)가 사용될 수 있다. 당연히, 직렬화 관리자(200)는 다른 맞춤형 직렬화 제공자(250) 뿐만 아니라 다른 표준 직렬화 제공자(230)를 포함할 수 있다.
직렬화 관리자(200)는 또한 오브젝트 그래프의 직렬화에 사용하기 위한 다양한 직렬화기에 대한 직렬화 문맥 정보(210;serialization context information)의 정보 저장을 제공한다. 예를 들어, 다수의 오브젝트를 가진 오브젝트 그래프는, 각각이 각자의 출력을 생성하는 다수의 직렬화기를 필요로 할 수 있다. 직렬화 관리자(200)는 필요에 따라 이들 직렬화기들간의 통신을 조장한다.
직렬화 관리자(200)내에서, 메타데이터 속성은 개별적인 오브젝트 타입을 특정한 직렬화기에 관련짓는데 사용될 수 있다. 예를 들어, 다음에서 상술하는 바와 같이, 직렬화기를 갖지 않은 오브젝트 타입에 대한 직렬화 제공자를 로드하거나 설치하는데 또는 기존의 직렬화기를 대체하는데 디폴트 직렬화 제공자 속성이 사용될 수 있다. 표준 직렬화 제공자(220) 또는 맞춤형 직렬화 제공자(240)와 같은 직렬화 제공자내에서, 메타데이터 속성은 소정의 오브젝트 타입 및 직렬화 포맷에 적당한 직렬화기를 식별하는데 사용될 수도 있다.
일례로서, 표 3에 나타낸 XML 포맷을 고려한다.
이 XML 포맷은 표 4에 나타낸 의사 코드 클래스, XmlSerializer를 사용해 직렬화된다.
XmlSerializer는 더 작은 조각들로부터 스트링을 구성하는 모듈러 클래스이다. 예를 들어, 5의 정수값을 가진 Int32 데이터 타입을 통과할 경우, XmlSerializer는 "5"를 리턴한다.
표 3의 XML 포맷은, 속성을 가진 오브젝트 및 텍스트로 변환될 수 있는 오브젝트와 같은, 직렬화하기 위한 2개의 기본적 오브젝트 타입을 제시한다. 대부분의 환경에서, 모든 클래스에 그 클래스를 텍스트 또는 XML 태그로 변환할 수 있는 방법을 인지하고 있는 맞춤형 직렬화기를 제공하는 것은 과도한 수고를 요하며 새로운 직렬화 포맷이 도입될 경우 유지보수의 문제를 초래한다. (기존 클래스를 새로운 직렬화 포맷으로 직렬화하기 위해, 클래스에 새로운 속성이 도입되는데, 이는 기존 클래스의 재컴파일을 요한다.) 직렬화 제공자는 이 문제를, 소정 타입에 대한 직렬화기를 제공할 수 있는 기회가 제공자에게 부여되는 콜백 메커니즘(callback mechanism)을 통해 해결한다.
현재의 예에서, 타입들의 이용가능한 세트는 다음과 같이 한정된다.
1. 타입이 기존의 IConvertible 인터페이스를 통해 스트링으로 변환될 수 있다면, StringXmlSerializer가 식별된다.
2. 타입이 스트링으로 변환될 수는 없지만, 공동(public)이며 공백 구성자(empty constructor)를 가지면, ObjectXmlSerializer가 식별된다.
3. 이들 중 어디에도 해당되지 않으면, 직렬화 제공자는 그 오브젝트에 대한 직렬화기가 존재하지 않음을 지시하는 널(null)을 리턴한다. (이 오류 조건을 처리하는 방법은 호출 직렬화기(calling Serializer)에 달려 있다.)
상기 기준을 구현하는 의사 코드를 다음의 표 5에 나타낸다.
직렬화 제공자가 정의된 후, 이것을 사용할 수 있다. 직렬화 관리자(200)에는 명시적 부가 방법(explicit add method)을 통해 이 직렬화 제공자가 부여될 수 있지만, 이러한 접근에서는 누군가가 명시적 호출을 수행해야 한다. 다른 방법으로, DefaultSerializaionProviderAttribute를 직렬화기 베이스 클래스에 부가하는 것에 의해, 직렬화 관리자가 직렬화 관리자(200)에 자동적으로 부가될 수 있다. 이 예의 경우, 속성은, 직렬화 제공자가 공동의 공백 구성자(empty constructor)를 가질 것을 요한다. 따라서, 표 4의 의사 코드는 다음의 표 6에 나타낸 바와 같이 변경된다.
이제, 직렬화 관리자(200)가 임의 타입의 XmlSerializer에 대해 요청될 때마다, 이전에 부가되지 않았다면, 디폴트 직렬화 제공자가 직렬화 관리자에 자동적으로 부가된다. 이 속성은 오브젝트보다는 직렬화기에 관련되므로, 새로운 속성을 사용하기 위한 클래스의 재컴파일없이 새로운 직렬화 포맷을 부가할 수 있다.
상기한 바와 같이, 예시적인 XmlSerializer는, StringXmlSerializer 및 ObjectXmlSerializer와 같은 2개의 구체적인 직렬화기 클래스를 가진다. 표 7은 StringXmlSerializer에 대한 의사 코드 구현을 나타낸다.
표 8은 ObjectXmlSerializer에 대한 의사 코드 구현을 나타내는데, 이는 그것이 직렬화하는 오브젝트의 공동 속성들(public properties)을 검토한다.
ObjectXmlSerializer는 각각의 속성값에 대해 다른 직렬화기를 호출한다. 이는 2가지 이상의 장점을 가진다. 첫번째, 이로 인해 ObjectXmlSerializer는 아주 간단해질 수 있다. 두번째, 이는 제3자 타입에 대한 확장가능성을 제공한다. 이들 직렬화기 중 어느 것에 의해서도 기입될 수 없는 타입이 등장하면, 이 타입에 대해 맞춤형 직렬화기가 제공될 수 있다.
표 9는, 모두가 스트링 변환을 위한 IConvertible을 지원하는 공백 구성자 및 4개의 속성을 가진 System.Drawing.Rectangle 오브젝트에 대한 상기 직렬화기의 예시적인 사용을 나타낸다. 표 9에서는, IDesignerSerializationManager의 인스턴스인 직렬화 관리자가 생성되어 직렬화기를 식별하도록 요청된다. 그 다음, 식별된 직렬화기는 오브젝트를 직렬화한다.
표 9에 도시된 예시적 사용은 표 10에 나타낸 XML을 생성한다.
이 예는 XML 인덴팅(indenting)을 전혀 포함하지 않는다. 그러나, 인덴팅은 직렬화 관리자(200)의 직렬화 문맥 정보(210)를 사용해 손쉽게 실현될 수 있다. 각각의 직렬화기 레벨은 현재의 인덴트 레벨을 포함하고 있는 문맥 스택에 오브젝트를 부가할 수 있으며, 그 다음, 각각의 직렬화기는 스택에서 레벨 문맥 오브젝트를 검색하여 적절한 인덴트를 제공하는데 사용할 수 있다.
직렬화 관리자(200)는 오브젝트를 상이한 직렬화 포맷으로 직렬화할 수 있다. 상기 XML 직렬화와 달리, 다음의 예는 코드 생성 포맷에 관한 것이다. 본 발명의 예시적 구현에 따르면, XML을 생성하는 직렬화 제공자 및 소스 코드를 생성하는 직렬화 제공자가 직렬화 관리자(200)에 공존할 수 있다. 도 1을 참조하여 상기한 바와 같이, 오브젝트를 소스 코드로 직렬화하기 위한 다수의 방법이 존재한다. 예를 들어, 하나의 OK 버튼을 가진 형태의 경우를 생각한다. 이러한 형태를 정의하는 하나의 표준적인 방법을 다음의 표 11에 나타낸다.
표 11의 의사 코드는 "Form1" 오브젝트 타입의 새로운 클래스를 정의한다. 그러나, 오브젝트 그래프의 루트가 새로운 타입을 정의하게 하는 것은 임의적인 선택이다. 코드는 표 12에 나타낸 바와 같이 표현될 수도 있다.
어느 경우이든, 결과는 하나의 버튼을 가진 형태이다. 그러나, 일반적으로 표 12에 도시한 코드의 단편이 오브젝트 그래프의 "루트"를 제외한 모든 오브젝트에 대해 좀더 바람직하며, 비주얼 설계기내의 잘라내기/복사하기/붙여넣기 및 되살리기/다시하기 동작에 좀더 유용하다. 이들 동작을 위해, 새로운 오브젝트의 생성이, 적어도 처음에는, 불필요하고 바람직하지 않을 수 있으므로, 약간의 부가적인 노력을 덜 수 있다. 많은 경우에, 형태는 표 12에 나타낸 포맷으로 아주 손쉽게 표현될 수 있다. 따라서, 예시적 구현에서, 직렬화 관리자(200)는, 단순히 소정 오브젝트를 생성하고 구성하는 CodeDomSerializer 및 새로운 타입을 정의하는 TypeCodeDomSerializer의 2가지 상이한 베이스 직렬화 타입(base serialization types)을 가진다. 양자의 직렬화기가 직렬화 관리자(200)에 공존할 수 있다.
예시적인 CodeDomSerializer 클래스를 다음의 표 13에 나타낸다.
본 직렬화 방법은 소정의 오브젝트를 직렬화한다. 그 리턴값은 필요한 직렬화 타입에 의존하며 다음의 것들 중 어느 하나일 수 있다.
CodeExpression: 오브젝트가 단순한 표현으로 직렬화될 수 있다면,
CodeExpression이 리턴된다. 타입이 그들의 구성자에 생성되고 구성될
수 있는 프리미티브들(primitives)은 이 카테고리에 해당한다.
CodeStatementCollection: 오브젝트가 텍스트의 집합으로 직렬화될 수 있다
면, CodeStatementCollection이 리턴된다. 구성 및 하나 이상의 속성
이 설정되어야 하는 복잡한 오브젝트가 이 카테고리에 해당한다.
SerializerProperty 방법은 소정 오브젝트에 관한 속성을 직렬화한다. 이러한 직렬화 타입을 사용하는 하나의 모델은 다음과 같다.
1. 소정의 속성 타입에 대해 직렬화 관리자에게 직렬화기를 요청한다.
2. 리턴된 직렬화기에 SerializeProperty를 호출한다.
3. 그 결과를 고유한 직렬화 데이터에 통합한다.
SerializeProperty에 대한 리턴값은 필요한 직렬화 타입에 의존하며 다음의 것들 중 어느 하나일 수 있다.
CodeStatement: 속성이 하나의 텍스트로 직렬화될 수 있다면, CodeStatement
가 리턴된다. 대부분의 속성이 이 카테고리에 해당한다.
CodeStatementCollection: 속성이 텍스트의 집합으로 직렬화될 수 있다면,
CodeStatementCollection이 리턴된다. 집합과 같은 복잡한 속성들이
이 카테고리에 해당될 수 있다.
반직렬화 방법은 소정의 직렬화 데이터로부터 구성된 라이브 오브젝트를 리턴한다. "state"로서 전달된 오브젝트는 이전의 직렬화 호출로부터 리턴된 오브젝트 타입과 동일해야 한다.
TypeCodeDomSerializer 클래스는 CodeDomSerializer와 동일한 태스크를 수행하지만, 이 클래스를 통한 오브젝트의 직렬화는 새로운 타입을 정의한다. 예시적인 TypeCodeDomSerializer 클래스를 다음의 표 14에 나타낸다.
본 직렬화 방법은 새로운 타입 정의를 생성하기 위해 소정의 루트 오브젝트 및 멤버들의 선택적인 집합을 직렬화한다. 멤버들의 집합은 널 또는 공백일 수 있다. 멤버들의 집합이 값을 포함하면, 이 값들은 타입에 대한 멤버 변수로서 정의된다. 편의를 위해, 멤버들의 집합이 루트 오브젝트를 포함할 수 있다. 이 경우, 루트 오브젝트는 멤버로서 부가되지도 않는다. 반직렬화 방법은 이전에 직렬화된 코드 타입 선언을 반직렬화한다. 이는 타입 선언의 베이스 타입에 대한 인스턴스를 생성하고, 속성들을 설정하며 방법들을 실행함으로써, 그것을 구성한다.
또한, 본 발명은 기능적 단계들 및/또는 비기능적 동작들을 구비하는 방법의 관점에서 설명될 수 있다. 다음은 본 발명의 실행시에 수행될 수 있는 동작들 및 단계들의 설명이다. 일반적으로, 기능적 단계들은 실현된 결과의 관점에서 본 발명을 설명하는 반면, 비기능적 동작들은 특정한 결과를 실현하기 위한 보다 구체적인 동작들을 설명한다. 기능적 단계들 및 비기능적 동작들을 특정한 순서로 설명하거나 청구할 수 있지만, 본 발명이 반드시 동작들 및/또는 단계들의 임의적인 특정 순서 또는 조합에 한정되는 것은 아니다.
도 3은 본 발명에 따라 사용자 인터페이스 오브젝트를 직렬화하는 방법에 대한 예시적 동작들 및 단계들을 나타낸다. 각각이 표준 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 표준 직렬화기를 식별하는 하나 이상의 표준 직렬화 제공자를 조정하는 단계(310) 및, 필요에 따라, 각각이 하나 이상의 표준 직렬화 제공자에 의해 커버될 수 없는 하나 이상의 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 맞춤형 직렬화기를 식별하는 하나 이상의 맞춤형 직렬화 제공자를 로딩하는 단계(310)는 직렬화 관리자를 제공하는 동작(312)을 포함할 수 있다.
특정한 직렬화 포맷 및 특정한 오브젝트 타입의 오브젝트를 구비하는 오브젝트 그래프에 대한 직렬화기를 식별하는 단계(320)는 직렬화 관리자로부터 직렬화기를 요청하는 동작(322)을 포함할 수 있다. 직렬화 단계(330)는 오브젝트 그래프를 직렬화하기 위해 직렬화 관리자에 의해 리턴된 직렬화기를 호출하는 동작(332)을 포함할 수 있다. 문맥 정보를 유지하는 (나타내지 않은) 단계는 문맥 정보를 직렬화 관리자에 저장하는 (나타내지 않은) 동작을 포함할 수 있다. 표준 직렬화기를 맞춤형 직렬화기로 대체하는 (나타내지 않은) 단계는 각각이 하나 이상의 맞춤형 직렬화기를 식별하는 하나 이상의 맞춤형 직렬화 제공자를 로드하기 위해 직렬화 관리자를 제공하는 동작(312)을 포함할 수 있다.
맞춤형 직렬화기 및 직렬화 제공자는 직렬화기에 대한 요청에 응답하여 로드될 수 있다. 직렬화될 오브젝트 그래프는 복수개의 관련 오브젝트를 구비할 수 있다. 직렬화기는 잘라내기/복사하기/붙여넣기 또는 되살리기/다시하기 동작의 일부로서 오브젝트 그래프의 클래스 표현이 아니라 코드의 단편들을 생성할 수 있다. 직렬화기는 오브젝트 그래프를 직렬화 또는 반직렬화하여, 라이브 또는 인-메모리, XML, 소스 코드, 또는 오브젝트의 다른 표현들을 생성할 수 있다.
본 발명의 범위내의 실시예들은 그에 저장되어 있는 컴퓨터-실행가능 명령 또는 데이터 구조를 수행하거나 갖는 컴퓨터-판독가능 매체를 포함할 수도 있다. 이러한 컴퓨터-판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 이용가능한 임의의 매체일 수 있다. 한정이 아닌 일례로써, 이러한 컴퓨터-판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 소정의 프로그램 코드 수단을 컴퓨터-실행가능 명령 또는 데이터 구조의 형태로 전달하거나 저장하는데 사용될 수 있으며 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 구비할 수 있다. (유선, 무선, 또는 유선이나 무선의 조합인) 네트워크 또는 다른 통신 접속을 통해 컴퓨터로 정보가 전달되거나 제공될 경우, 컴퓨터는 당연히 그 접속을 컴퓨터-판독가능 매체로 본다. 따라서, 이러한 임의의 접속은 당연히 컴퓨터-판독가능 매체라 한다. 상기한 것들의 조합 또한 컴퓨터-판독가능 매체의 범위내에 포함되어야 한다. 컴퓨터-실행가능 명령은, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적의 프로세싱 장치로 하여금 소정 기능 또는 기능들의 그룹을 수행하게 하는 명령 및 데이터를 구비한다.
도 4 및 다음의 논의는, 본 발명이 구현될 수 있는 적당한 컴퓨팅 환경에 대해 간략하고 일반적인 설명을 제공하려는 것이다. 요청되지는 않았지만, 본 발명은, 네트워크 환경의 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은, 컴퓨터-실행가능 명령의 일반적인 문맥에서 설명된다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추상적 데이터형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 데이터 구조와 관련된 컴퓨터-실행가능 명령 및 프로그램 모듈은 여기에 개시된 방법들의 단계들을 실행하는 프로그램 코드 수단의 예들을 나타낸다. 이러한 실행가능 명령 또는 관련된 데이터 구조의 특정한 시퀀스는 이러한 단계들에 설명된 기능들을 구현하는 동작들에 대응되는 예들을 나타낸다.
당업자는, 본 발명이, 퍼스널 컴퓨터, 핸드-헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 상용 전자 장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는, 많은 타입의 컴퓨터 시스템 구성을 가진 네트워크 컴퓨팅 환경에서 실행될 수 있다는 것을 알 수 있다. 본 발명은, 태스크들이 통신 네트워크를 통해 (유선 링크, 무선 링크, 또는 유선이나 무선 링크의 조합에 의해) 링크되어 있는 로컬 및 원격 프로세싱 장치들에 의해 수행되는 분산형 컴퓨팅 환경에서도 실행될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 모두에 배치될 수 있다.
도 4를 참조하면, 본 발명을 구현하기 위한 예시적 시스템은, 프로세싱 유닛(421), 시스템 메모리(422), 및 시스템 메모리(422)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(421)에 결합하는 시스템 버스(423)를 포함하는 종래 컴퓨터(420) 형태의 범용 컴퓨팅 장치를 포함한다. 시스템 버스(423)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 및 다양한 버스 아키텍처 중 어느 하나를 사용하는 로컬 버스를 포함하는 몇가지 타입의 버스 구조들 중 하나일 수 있다. 시스템 메모리는 ROM(424) 및 RAM(425)을 포함한다. 예를 들어, 스타트-업(strat-up) 동안에, 컴퓨터(420)내의 요소들 사이에서 정보 전달을 돕는 기본적 루틴을 유지하는 기본적 입/출력 시스템(BIOS;426)은 ROM(424)에 저장된다.
컴퓨터(420)는 또한, 자기 하드 디스크(439)로부터 판독하고 그에 기입하는 자기 하드 디스크 드라이브(427), 분리형 자기 디스크(429)로부터 판독하고 그에 기입하는 자기 디스크 드라이브(428), 및 CD-ROM 또는 다른 광학 매체와 같은 분리형 광학 디스크(431)로부터 판독하고 그에 기입하는 광학 디스크 드라이브(430)를 포함할 수 있다. 자기 하드 디스크 드라이브(427), 자기 디스크 드라이브(428), 및 광학 디스크 드라이브(430)는 하드 디스크 드라이브 인터페이스(432), 자기 디스크 드라이브-인터페이스(433), 및 광학 드라이브 인터페이스(434)에 의해 각각 시스템 버스(423)에 접속된다. 드라이브들과 그에 관련된 컴퓨터-판독가능 매체는 컴퓨터(420)에 대한 컴퓨터-실행가능 명령, 데이터 구조, 프로그램 모듈 및 다른 데이터의 비휘발성 저장을 제공한다. 여기에서 설명한 예시적 환경이 자기 하드 디스크(439), 분리형 자기 디스크(429) 및 분리형 광학 디스크(431)를 이용하지만, 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지(Bernoulli catridges), RAM, ROM 등을 포함하여, 데이터를 저장하는 다른 타입의 컴퓨터 판독가능 매체가 사용될 수 있다.
오퍼레이팅 시스템(435), 하나 이상의 애플리케이션 프로그램(436), 다른 프로그램 모듈(437), 및 프로그램 데이터(438)를 포함하는 하나 이상의 프로그램 모듈을 구비하는 프로그램 코드 수단은 하드 디스크(439), 자기 디스크(429), 광학 디스크(431), ROM(424) 또는 RAM(425)에 저장될 수 있다. 사용자는 키보드(440), 포인팅 장치(442), 또는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등과 같은 (나타내지 않은) 다른 입력 장치를 통해 컴퓨터(420)에 명령 및 정보를 입력할 수 있다. 이들 및 다른 입력 장치들은 흔히 시스템 버스(423)에 결합되어 있는 직렬 포트 인터페이스(446)를 통해 프로세싱 유닛(421)에 접속된다. 다른 방법으로, 입력 장치들은 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스에 의해 접속될 수도 있다. 모니터(447) 또는 다른 타입의 디스플레이 장치 또한 비디오 어댑터(448)와 같은 인터페이스를 통해 시스템 버스(423)에 접속된다. 모니터 이외에, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터와 같은 (나타내지 않은) 다른 출력 주변장치를 포함한다.
컴퓨터(420)는 원격 컴퓨터(449a 및 449b)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(449a 및 449b)는 각각 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있으며, 도 4에는 메모리 저장 장치(450a 및 450b) 및 이들과 관련된 애플리케이션 프로그램(436a 및 436b)만이 도시되어 있지만, 통상적으로 컴퓨터(420)에 관해 상술한 요소들 중 많은 것을 또는 그 모두를 포함한다. 도 4에 도시된 논리적 접속은, 여기에서 한정이 아닌 일례로써 제시된 LAN(local area network;451) 및 WAN(wide area network;452)을 포함한다. 이러한 네트워크 환경은 사무실-범위나 기업-범위의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔히 볼 수 있다.
LAN 네트워크 환경에 사용될 경우, 컴퓨터(420)는 네트워크 인터페이스 또는 어댑터(453)를 통해 로컬 네트워크(451)에 접속된다. WAN 네트워크 환경에 사용될 경우, 컴퓨터(420)는 모뎀(454), 무선 링크, 또는 인터넷과 같은 WAN(452)에 대해 통신을 확립하는 다른 수단을 포함할 수 있다. 내장형이거나 외장형일 수 있는 모뎀(454)은 직렬 포트 인터페이스(446)를 통해 시스템 버스(423)에 접속된다. 네트워크 환경에서, 컴퓨터(420)에 관련하여 도시된 프로그램 모듈(420) 또는 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 나타낸 네트워크 접속은 예시적인 것이며 WAN(452)에 대해 통신을 확립하는 다른 수단이 사용될 수 있다는 것을 알 수 있다.
본 발명은 그 정신 또는 중요한 특징들로부터 벗어나지 않으면서 특정한 다른 형태로 구체화될 수 있다. 기재된 실시예들은 모든 측면에서 한정이 아닌 일례로써 간주된다. 따라서, 본 발명의 범위는 상기한 설명에 의해서가 아니라 첨부된 청구항들에 의해 지시된다. 청구항과 등가의 의미 및 범위에 해당하는 모든 변화는 그 범위내에 포함되어야 한다.
따라서, 본 발명에 따른 직렬화 관리자는 표준 오브젝트 타입 또는 직렬화 포맷에 대한 표준 직렬화기를 식별하도록 표준 직렬화 제공자를 조정할 수 있으며,필요에 따라, 표준 직렬화 제공자에 의해 커버될 수 없는 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 맞춤형 직렬화기를 식별하기 위한 맞춤형 직렬화 제공자를 로딩하는 것에 의해 확장될 수 있고, 소정의 직렬화 포맷은 오브젝트의 클래스 표현을 생성하지 않으면서 코드의 단편을 생성할 수 있다.
Claims (46)
- 오브젝트에 대한 소스 코드를 생성할 수 있는 직렬화 엔진(serialization engine)을 지원하는 컴퓨터 시스템에서, 하나 이상의 오브젝트를 초기 표현(representation)으로부터, 하나 이상의 표준 오브젝트 타입 및 직렬화 포맷에 대하여, 하나 이상의 맞춤형(custom) 오브젝트 타입 및 직렬화 포맷을 수용(cover)하도록 확장될 수 있는 하나 이상의 임의의 후속 표현들로 직렬화하는 방법에 있어서,(ⅰ) 각각이 표준 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 표준 직렬화기(serializer)를 식별하는 하나 이상의 표준 직렬화 제공자를 조정하고, (ⅱ) 필요에 따라, 각각이 상기 하나 이상의 표준 직렬화 제공자에 의해 수용되지 않는 하나 이상의 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 맞춤형 직렬화기를 식별하는 하나 이상의 맞춤형 직렬화 제공자를 로드하는 직렬화 관리자를 제공하는 단계;상기 직렬화 관리자로부터, 특정한 오브젝트 타입의 오브젝트를 구비하는 오브젝트 그래프, 및 특정한 직렬화 포맷에 대한 직렬화기를 요청하는 단계; 및상기 오브젝트 그래프를 직렬화하기 위해 상기 직렬화기를 호출하는 단계를 포함하는 직렬화 방법.
- 제1항에 있어서,상기 직렬화기는 맞춤형 직렬화기인 직렬화 방법.
- 제2항에 있어서,상기 직렬화 관리자는 상기 요청에 응답하여 상기 하나 이상의 맞춤형 직렬화 제공자를 자동적으로 로드하는 직렬화 방법.
- 제1항에 있어서,상기 컴퓨터 시스템은 또한 비주얼(visual) 사용자 인터페이스 설계기를 지원하며, 상기 직렬화 엔진은 상기 비주얼 사용자 인터페이스 설계기내에 생성된 하나 이상의 사용자 인터페이스 오브젝트에 대한 소스 코드를 생성할 수 있으며, 상기 오브젝트 그래프는 상기 하나 이상의 사용자 인터페이스 오브젝트를 구비하는 직렬화 방법.
- 제1항에 있어서,상기 직렬화 관리자는 상기 하나 이상의 표준 직렬화 제공자들과, 상기 직렬화 관리자에 의해 로드된 임의의 맞춤형 직렬화 제공자들 사이에서 공유될 수 있는 문맥(context) 정보를 유지하는 직렬화 방법.
- 제1항에 있어서,상기 초기 표현은 상기 하나 이상의 사용자 인터페이스 오브젝트를 지속시키는데 사용되는 표현을 구비하고, 상기 하나 이상의 후속 표현은 상기 하나 이상의 사용자 인터페이스 오브젝트를 상기 비주얼 사용자 인터페이스 설계기 내에서 표현하는데 사용되는 직렬화 방법.
- 제1항에 있어서,상기 오브젝트 그래프는 복수개의 관련 오브젝트를 구비하는 직렬화 방법.
- 제1항에 있어서,상기 직렬화기를 요청하는 단계는 되살리기(undo) 또는 다시하기 동작(redo)의 일부이고, 상기 직렬화기는, 상기 오브젝트 그래프의 클래스 표현을 생성하지 않으면서, 상기 비주얼 사용자 인터페이스 설계기내에서 만들어진 상기 오브젝트 그래프로의 변화를 되살리거나 다시하기에 충분한 코드의 단편(snippet of code)을 생성하는 직렬화 방법.
- 제1항에 있어서,상기 하나 이상의 표준 직렬화 제공자는 복수개의 직렬화기를 식별할 수 있고, 상기 복수개의 직렬화기 중 2개 이상은 서로 다른 직렬화 포맷으로 상기 오브젝트 그래프를 직렬화하기 위한 직렬화 방법.
- 제1항에 있어서,상기 직렬화기는 상기 오브젝트 그래프의 XML(eXtensible Markup Language) 표현을 생성하는 직렬화 방법.
- 비주얼 사용자 인터페이스 설계기, 및 상기 비주얼 사용자 인터페이스 설계기내에 생성된 사용자 인터페이스 오브젝트에 대한 소스 코드를 생성할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 하나 이상의 사용자 인터페이스 오브젝트를 초기 표현으로부터, 하나 이상의 표준 오브젝트 타입 및 직렬화 포맷에 대하여, 하나 이상의 맞춤형 오브젝트 타입 및 직렬화 포맷을 수용하도록 확장될 수 있는 하나 이상의 임의의 후속 표현으로 직렬화하는 방법을 구현하는 컴퓨터 실행가능 명령을 전달하는 하나 이상의 컴퓨터 판독가능 매체를 구비하는 컴퓨터 프로그램 제품에 있어서,상기 방법은,(ⅰ) 각각이 표준 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 표준 직렬화기를 식별하는 하나 이상의 표준 직렬화 제공자를 조정하고, (ⅱ) 필요에 따라, 각각이 하나 이상의 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 맞춤형 직렬화기를 식별하는 하나 이상의 맞춤형 직렬화 제공자를 로드하는 직렬화 관리자를 제공하는 단계;상기 직렬화 관리자로부터, 특정한 오브젝트 타입의 오브젝트를 구비하는 오브젝트 그래프, 및 특정한 직렬화 포맷에 대한 직렬화기를 요청하는 단계; 및상기 오브젝트 그래프를 직렬화하기 위해 상기 직렬화기를 호출하는 단계를 포함하는 컴퓨터 프로그램 제품.
- 제11항에 있어서,상기 하나 이상의 맞춤형 오브젝트 타입 또는 직렬화 포맷은 상기 하나 이상의 표준 직렬화 제공자에 의해 수용되지 않는 컴퓨터 프로그램 제품.
- 제11항에 있어서,상기 직렬화기는 맞춤형 직렬화기인 컴퓨터 프로그램 제품.
- 제13항에 있어서,상기 직렬화 관리자는 상기 요청에 응답하여 상기 맞춤형 직렬화기를 로드하는 컴퓨터 프로그램 제품.
- 제11항에 있어서,상기 직렬화 관리자는 상기 하나 이상의 표준 직렬화 제공자들과, 상기 직렬화 관리자에 의해 로드된 임의의 맞춤형 직렬화 제공자들 사이에서 공유될 수 있는 문맥 정보를 유지하는 컴퓨터 프로그램 제품.
- 제11항에 있어서,상기 초기 표현은 상기 비주얼 사용자 인터페이스 설계기 내에서 상기 하나이상의 사용자 인터페이스 오브젝트를 표현하는데 사용되는 라이브 표현을 구비하고, 상기 하나 이상의 후속 표현은 상기 하나 이상의 사용자 인터페이스 오브젝트를 지속시키는데 사용되는 타깃 표현(target representation)을 구비하는 컴퓨터 프로그램 제품.
- 제11항에 있어서,상기 직렬화기를 요청하는 단계는, 잘라내기, 복사하기, 또는 붙여넣기 동작의 일부이고, 상기 직렬화기는, 상기 오브젝트 그래프의 클래스 표현을 생성하지 않으면서, 상기 비주얼 사용자 인터페이스 설계기 내에 만들어진 상기 오브젝트 그래프로의 변화를 되살리거나 다시하기에 충분한 코드의 단편을 생성하는 컴퓨터 프로그램 제품.
- 제11항에 있어서,상기 하나 이상의 맞춤형 직렬화 제공자는 복수개의 직렬화기를 식별할 수 있고, 상기 복수개의 직렬화기 중 2개 이상은 상기 오브젝트 그래프를 서로 다른 직렬화 포맷으로 직렬화하기 위한 컴퓨터 프로그램 제품.
- 제11항에 있어서,상기 직렬화기는 상기 오브젝트 그래프의 소스 코드 표현을 생성하는 컴퓨터 프로그램 제품.
- 비주얼 사용자 인터페이스 설계기, 및 상기 비주얼 사용자 인터페이스 설계기 내에 생성된 사용자 인터페이스 오브젝트에 대해 소스 코드를 생성할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 하나 이상의 사용자 인터페이스 오브젝트를 초기 표현으로부터, 하나 이상의 맞춤형 오브젝트 타입 및 직렬화 포맷을 수용하도록 확장될 수 있는 하나 이상의 확장가능한 임의의 후속 표현으로 직렬화하는 방법에 있어서,각각이 표준 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 표준 직렬화기를 식별하는 하나 이상의 표준 직렬화 제공자를 조정하는 단계;필요에 따라, 각각이 상기 하나 이상의 표준 직렬화 제공자에 의해 수용되지 않는 하나 이상의 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 맞춤형 직렬화기를 식별하는 하나 이상의 맞춤형 직렬화 제공자를 로드하는 단계;특정한 직렬화 포맷, 및 특정한 오브젝트 타입의 오브젝트를 구비한 오브젝트 그래프에 대한 직렬화기를 식별하는 단계; 및상기 식별된 직렬화기로 상기 오브젝트 그래프를 직렬화하는 단계를 포함하는 직렬화 방법.
- 제20항에 있어서,상기 특정한 오브젝트 타입은 맞춤형 오브젝트 타입을 구비하는 직렬화 방법.
- 제20항에 있어서,상기 특정한 직렬화 포맷은 맞춤형 직렬화 포맷인 직렬화 방법.
- 제20항에 있어서,상기 하나 이상의 표준 직렬화 제공자들과, 상기 직렬화 관리자에 의해 로드된 임의의 맞춤형 직렬화 제공자들 사이에서 공유될 문맥 정보를 유지하는 단계를 더 포함하는 직렬화 방법.
- 제20항에 있어서,상기 초기 표현은 상기 비주얼 사용자 인터페이스 설계기 내에서 상기 하나 이상의 사용자 인터페이스 오브젝트를 표현하는데 사용되는 라이브 표현을 구비하고, 상기 하나 이상의 후속 표현은 상기 하나 이상의 사용자 인터페이스 오브젝트를 지속시키는데 사용되는 타깃 표현을 구비하는 직렬화 방법.
- 제20항에 있어서,상기 오브젝트 그래프에 대한 상기 직렬화기를 식별하는 동안, 표준 직렬화기를 로드된 맞춤형 직렬화 제공자로부터의 맞춤형 직렬화기로 교환하는 단계를 더 포함하는 직렬화 방법.
- 제20항에 있어서,상기 오브젝트 그래프는 복수개의 관련 오브젝트를 구비하는 직렬화 방법.
- 제20항에 있어서,상기 직렬화기를 식별하는 단계는, 잘라내기, 복사하기, 또는 붙여넣기 동작의 일부이고, 상기 직렬화기는 상기 오브젝트 그래프의 클래스 표현을 생성하지 않으면서 상기 오브젝트 그래프에 대한 코드의 단편을 생성하는 직렬화 방법.
- 제20항에 있어서,상기 직렬화기는 상기 오브젝트 그래프의 소스 코드 표현 또는 XML 표현을 생성하는 직렬화 방법.
- 비주얼 사용자 인터페이스 설계기, 및 상기 비주얼 사용자 인터페이스 설계기내에 생성된 사용자 인터페이스 오브젝트에 대해 소스 코드를 생성할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 하나 이상의 사용자 인터페이스 오브젝트를 초기 표현으로부터, 하나 이상의 맞춤형 오브젝트 타입 및 직렬화 포맷을 수용하도록 확장될 수 있는 하나 이상의 확장가능한 임의의 후속 표현들로 직렬화하는 방법을 구현하는 컴퓨터 실행가능 명령을 전달하는 하나 이상의 컴퓨터 판독가능 매체를 구비하는 컴퓨터 프로그램 제품에 있어서,상기 방법은,각각이 표준 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 표준 직렬화기를 식별하는 하나 이상의 표준 직렬화 제공자를 조정하는 단계;필요에 따라, 각각이 상기 하나 이상의 표준 직렬화 제공자에 의해 수용되지 않는 하나 이상의 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 맞춤형 직렬화기를 식별하는 하나 이상의 맞춤형 직렬화 제공자를 로드하는 단계;특정한 직렬화 포맷, 및 특정한 오브젝트 타입의 오브젝트를 구비한 오브젝트 그래프에 대한 직렬화기를 식별하는 단계; 및상기 식별된 직렬화기로 상기 오브젝트 그래프를 직렬화하는 단계를 포함하는 컴퓨터 프로그램 제품.
- 제29항에 있어서,상기 하나 이상의 맞춤형 직렬화 제공자는 상기 오브젝트 그래프에 대한 상기 직렬화기를 식별하는 단계에서 로드되는 컴퓨터 프로그램 제품.
- 제29항에 있어서,상기 방법은, 하나 이상의 표준 직렬화 제공자들과, 상기 직렬화 관리자에 의해 로드된 임의의 맞춤형 직렬화 제공자들 사이에서 공유될 문맥 정보를 유지하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
- 제29항에 있어서,상기 초기 표현은 상기 하나 이상의 사용자 인터페이스 오브젝트를 지속시키는데 사용되는 표현을 구비하고, 상기 하나 이상의 후속 표현은 상기 비주얼 사용자 인터페이스 설계기 내에 상기 하나 이상의 사용자 인터페이스 오브젝트를 표현하는데 사용되는 표현을 구비하는 컴퓨터 프로그램 제품.
- 제29항에 있어서,상기 방법은, 상기 오브젝트 그래프에 대한 상기 직렬화기를 식별하는 동안, 표준 직렬화기를 로드된 맞춤형 직렬화 제공자로부터의 맞춤형 직렬화기로 교환하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
- 제29항에 있어서,상기 직렬화기를 식별하는 단계는 되살리기 또는 다시하기 동작의 일부이고, 상기 직렬화기는 상기 오브젝트 그래프의 클래스 표현을 생성하지 않으면서 상기 오브젝트 그래프에 대한 코드의 단편을 생성하는 컴퓨터 프로그램 제품.
- 제29항에 있어서,상기 직렬화기는 상기 오브젝트 그래프의 소스 코드 표현 또는 XML 표현을 생성하는 컴퓨터 프로그램 제품.
- 비주얼 사용자 인터페이스 설계기, 및 상기 비주얼 사용자 인터페이스 설계기내에 생성된 사용자 인터페이스 오브젝트에 대해 소스 코드를 생성할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 하나 이상의 사용자 인터페이스 오브젝트에 대한 비주얼 동작을 수행할 때, 상기 하나 이상의 사용자 인터페이스 오브젝트를 보다 효율적으로 직렬화하는 방법을 구현하는 컴퓨터 실행가능 명령을 전달하는 하나 이상의 컴퓨터 판독가능 매체를 구비하는 컴퓨터 프로그램 제품에 있어서,상기 방법은,각각이 소정의 오브젝트 타입 및 직렬화 포맷에 대한 하나 이상의 직렬화기를 식별하는 하나 이상의 직렬화 제공자를 로드하는 단계;상기 하나 이상의 직렬화 제공자들로부터, 상기 사용자 인터페이스 오브젝트에 대해 수행될, 요청된 비주얼 동작에 대응되는 직렬화 포맷으로 사용자 인터페이스 오브젝트를 직렬화할 수 있는 직렬화기를 식별하는 단계; 및상기 요청된 동작을 보다 효율적으로 수행하기 위해 상기 사용자 인터페이스 오브젝트의 클래스 표현을 생성하지 않으면서 코드의 단편을 생성하도록, 상기 사용자 인터페이스 오브젝트를 상기 식별된 직렬화기로 직렬화하는 단계를 포함하는 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 하나 이상의 직렬화 제공자를 조정하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 하나 이상의 직렬화 제공자는, 각각이 표준 오브젝트 타입 및 직렬화 포맷에 대한 하나 이상의 표준 직렬화기를 식별하는 하나 이상의 표준 직렬화 제공자를 구비하는 컴퓨터 프로그램 제품.
- 제38항에 있어서,상기 하나 이상의 직렬화 제공자는, 각각이 상기 하나 이상의 표준 직렬화 제공자에 의해 수용되지 않는 하나 이상의 맞춤형 오브젝트 타입 또는 직렬화 포맷에 대한 하나 이상의 맞춤형 직렬화기를 식별하는 하나 이상의 맞춤형 직렬화 제공자를 구비하는 컴퓨터 프로그램 제품.
- 제39항에 있어서,상기 하나 이상의 맞춤형 직렬화 제공자는 상기 직렬화기를 식별하는 단계 중에 로드되는 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 직렬화기는 맞춤형 직렬화기인 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 방법은, 상기 하나 이상의 직렬화 제공자들 사이에서 공유될 문맥 정보를 유지하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 요청된 비주얼 동작은 되살리기 또는 다시하기 동작을 구비하는 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 요청된 비주얼 동작은 잘라내기, 복사하기, 또는 붙여넣기 동작을 구비하는 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 방법은,상기 하나 이상의 직렬화 제공자들로부터, 상기 사용자 인터페이스 오브젝트의 소스 코드 표현에 대응되는 직렬화 포맷으로 사용자 인터페이스 오브젝트를 직렬화할 수 있는 코드 직렬화기를 식별하는 단계; 및상기 사용자 인터페이스 오브젝트의 클래스 표현을 생성하기 위해 상기 사용자 인터페이스 오브젝트를 상기 식별된 코드 직렬화기로 직렬화하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
- 제36항에 있어서,상기 방법은,상기 하나 이상의 직렬화 제공자들로부터, 상기 사용자 인터페이스 오브젝트의 XML 표현에 대응되는 직렬화 포맷으로 상기 사용자 인터페이스 오브젝트를 직렬화할 수 있는 XML 직렬화기를 식별하는 단계; 및상기 사용자 인터페이스 오브젝트의 XML 표현을 생성하기 위해 상기 사용자 인터페이스 오브젝트를 상기 식별된 XML 직렬화기로 직렬화하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/600,256 US7325226B2 (en) | 2003-06-19 | 2003-06-19 | Modular object serialization architecture |
US10/600,256 | 2003-06-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040111140A true KR20040111140A (ko) | 2004-12-31 |
KR101159310B1 KR101159310B1 (ko) | 2012-06-22 |
Family
ID=33418568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040045356A KR101159310B1 (ko) | 2003-06-19 | 2004-06-18 | 직렬화 방법 및 이 방법을 구현하는 컴퓨터 실행가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7325226B2 (ko) |
EP (1) | EP1489495A3 (ko) |
JP (1) | JP4855656B2 (ko) |
KR (1) | KR101159310B1 (ko) |
CN (1) | CN100405292C (ko) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7207034B2 (en) * | 2003-06-23 | 2007-04-17 | Microsoft Corporation | Undo infrastructure |
US7681114B2 (en) * | 2003-11-21 | 2010-03-16 | Bridgeborn, Llc | Method of authoring, deploying and using interactive, data-driven two or more dimensional content |
US7676481B2 (en) * | 2005-02-24 | 2010-03-09 | Microsoft Corporation | Serialization of file system item(s) and associated entity(ies) |
US7877366B2 (en) * | 2004-03-12 | 2011-01-25 | Oracle International Corporation | Streaming XML data retrieval using XPath |
US7996443B2 (en) * | 2005-02-28 | 2011-08-09 | Microsoft Corporation | Schema grammar and compilation |
US8032657B2 (en) * | 2005-09-12 | 2011-10-04 | Microsoft Corporation | Preservation of type information between a client and a server |
US7627852B1 (en) * | 2006-01-17 | 2009-12-01 | Xilinx, Inc. | Embedding an interpreter within an application written in a different programming language |
US7801926B2 (en) * | 2006-11-22 | 2010-09-21 | Microsoft Corporation | Programmable logic and constraints for a dynamically typed storage system |
US9311082B2 (en) | 2006-12-29 | 2016-04-12 | Sap Se | System and method for processing graph objects |
US8640086B2 (en) * | 2006-12-29 | 2014-01-28 | Sap Ag | Graphical user interface system and method for presenting objects |
US8117601B2 (en) * | 2007-11-14 | 2012-02-14 | Microsoft Corporation | Internal test and manipulation of an application |
CN101903869B (zh) * | 2007-12-21 | 2013-12-18 | 海坎普系统公司 | 用于统一处理结构化数据和数据压缩的分层区块标识的数据通信 |
US8626720B2 (en) * | 2008-02-11 | 2014-01-07 | International Business Machines Corporation | System and method of reconstructing complex custom objects |
US8245186B2 (en) * | 2008-04-03 | 2012-08-14 | Microsoft Corporation | Techniques for offering and applying code modifications |
US20090276795A1 (en) * | 2008-04-30 | 2009-11-05 | Microsoft Corporation | Virtual automata |
US8990768B2 (en) * | 2008-09-30 | 2015-03-24 | Rockwell Automation Technologies, Inc. | Software object property return method and system |
US8635331B2 (en) | 2009-08-05 | 2014-01-21 | Microsoft Corporation | Distributed workflow framework |
US8661408B2 (en) * | 2009-11-23 | 2014-02-25 | Michael James Psenka | Integrated development environment and methods of using the same |
US8949783B2 (en) | 2010-06-30 | 2015-02-03 | International Business Machines Corporation | Method and system for lazy data serialization in computer communications |
US20130117326A1 (en) * | 2011-11-08 | 2013-05-09 | Microsoft Corporation | External serialization and deserialization |
CN103019689B (zh) * | 2012-11-21 | 2017-02-15 | 上海富欣智能交通控制有限公司 | 通用的对象序列化的实现方法 |
US9858052B2 (en) * | 2013-03-21 | 2018-01-02 | Razer (Asia-Pacific) Pte. Ltd. | Decentralized operating system |
CN105408942A (zh) * | 2013-08-16 | 2016-03-16 | 界标制图有限公司 | 确定并显示储层的储量估计 |
US20150082208A1 (en) * | 2013-09-16 | 2015-03-19 | Uwe D. Klinger | Multi-level user interface theming |
US9826000B2 (en) | 2014-12-12 | 2017-11-21 | Microsoft Technology Licensing, Llc | Effecting communication events |
US9881070B2 (en) * | 2014-12-12 | 2018-01-30 | Microsoft Technology Licensing, Llc | Controlling service functions in response to service instigation and service reactivation messages |
CN104899316A (zh) * | 2015-06-17 | 2015-09-09 | 北京奇虎科技有限公司 | 游戏数据的序列化与反序列化处理方法及装置 |
US11347704B2 (en) * | 2015-10-16 | 2022-05-31 | Seven Bridges Genomics Inc. | Biological graph or sequence serialization |
CN105468793B (zh) * | 2016-01-20 | 2019-02-22 | 北京华如科技股份有限公司 | 一种仿真模型数据的自动化管理方法 |
US10140119B2 (en) * | 2016-03-17 | 2018-11-27 | Oracle International Corporation | Modular serialization |
CN107438112B (zh) * | 2016-05-27 | 2020-06-30 | 北京京东尚科信息技术有限公司 | 基于xml的移动端接口地址管理方法、装置及存储介质 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05225012A (ja) * | 1992-02-12 | 1993-09-03 | Fuji Xerox Co Ltd | データ列変換復元方法 |
US5675801A (en) * | 1994-09-30 | 1997-10-07 | International Business Machines Corporation | Object oriented system and method for generating target language code |
US5692184A (en) * | 1995-05-09 | 1997-11-25 | Intergraph Corporation | Object relationship management system |
US5956728A (en) * | 1996-07-17 | 1999-09-21 | Next Software, Inc. | Object graph editing context and methods of use |
US5946493A (en) * | 1997-03-28 | 1999-08-31 | International Business Machines Corporation | Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions |
US6263492B1 (en) * | 1997-06-06 | 2001-07-17 | Microsoft Corporation | Run time object layout model with object type that differs from the derived object type in the class structure at design time and the ability to store the optimized run time object layout model |
GB2335514B (en) * | 1998-03-18 | 2003-01-22 | Ibm | A method and component for serialisation of images |
US6292938B1 (en) * | 1998-12-02 | 2001-09-18 | International Business Machines Corporation | Retargeting optimized code by matching tree patterns in directed acyclic graphs |
US7127724B2 (en) * | 1999-02-03 | 2006-10-24 | International Business Machines Corporation | Method and apparatus for providing protocol independent naming and life cycle services in an object-oriented system |
US6301585B1 (en) * | 1999-03-17 | 2001-10-09 | Sun Microsystems, Inc. | Redundancy elimination in the persistence of object graphs |
US6477701B1 (en) | 1999-09-30 | 2002-11-05 | Seiko Epson Corporation | Version-adaptive serialization and deserialization of program objects in an object-oriented environment |
CA2329559A1 (en) * | 2000-12-22 | 2002-06-22 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for generating serialization code for representing a model in different type systems |
US7096419B2 (en) * | 2001-02-16 | 2006-08-22 | Sas Institute Inc. | System and method for object state persistence |
US6928488B1 (en) * | 2001-06-27 | 2005-08-09 | Microsoft Corporation | Architecture and method for serialization and deserialization of objects |
US7020641B2 (en) * | 2001-10-22 | 2006-03-28 | Sun Microsystems, Inc. | Method, system, and program for maintaining a database of data objects |
US7509248B2 (en) * | 2001-11-14 | 2009-03-24 | Intel Corporation | Generic persistence engine |
US7246358B2 (en) * | 2002-04-09 | 2007-07-17 | Sun Microsystems, Inc. | Methods, system and articles of manufacture for providing an extensible serialization framework for an XML based RPC computing environment |
-
2003
- 2003-06-19 US US10/600,256 patent/US7325226B2/en not_active Expired - Fee Related
-
2004
- 2004-05-28 EP EP04012786A patent/EP1489495A3/en not_active Ceased
- 2004-06-18 KR KR1020040045356A patent/KR101159310B1/ko active IP Right Grant
- 2004-06-18 CN CNB200410062813XA patent/CN100405292C/zh not_active Expired - Fee Related
- 2004-06-21 JP JP2004183072A patent/JP4855656B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1489495A3 (en) | 2007-01-31 |
EP1489495A2 (en) | 2004-12-22 |
JP4855656B2 (ja) | 2012-01-18 |
US7325226B2 (en) | 2008-01-29 |
CN1609789A (zh) | 2005-04-27 |
JP2005011362A (ja) | 2005-01-13 |
CN100405292C (zh) | 2008-07-23 |
KR101159310B1 (ko) | 2012-06-22 |
US20040261008A1 (en) | 2004-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101159310B1 (ko) | 직렬화 방법 및 이 방법을 구현하는 컴퓨터 실행가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체 | |
RU2364918C2 (ru) | Средства сопряжения типов | |
US7194683B2 (en) | Representing and managing dynamic data content for web documents | |
US7836439B2 (en) | System and method for extending a component-based application platform with custom services | |
US9600243B2 (en) | Sharing of first class objects across multiple interpreted programming languages | |
US7194729B2 (en) | Dynamic conversion of object-oriented programs to tag-based procedural code | |
US7752598B2 (en) | Generating executable objects implementing methods for an information model | |
US7406682B2 (en) | Translator-compiler for converting legacy management software | |
US7523461B2 (en) | Modification of logic in an application | |
US20040268249A1 (en) | Document transformation | |
US7653914B2 (en) | Handling different service versions in a server | |
JP2000515281A (ja) | インターフェイス定義言語によって定義されたインターフェイス、オペレーションおよびデータ型を記述するための方法および装置 | |
US20060010419A1 (en) | Providing information to an isolated hosted object via system-created variable objects | |
US7003773B2 (en) | Dynamic interface aggregation on demand | |
US20050216508A1 (en) | Systems and methods that transform constructs from domain to domain | |
US6763361B1 (en) | Object-oriented database abstraction and statement generation | |
Liu et al. | Engineering information service infrastructure for ubiquitous computing | |
US7500248B2 (en) | Systems and methods for implementing aggregation containers | |
CN115291850B (zh) | 基于java语言的自定义交互数据的管理方法、系统、存储介质 | |
JP2007510210A (ja) | コンピュータ装置におけるダイナミック・リンク・ライブラリのマッピング | |
Dedo | Command Line Arguments & Environment Variables |
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: 20150515 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160517 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170522 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180516 Year of fee payment: 7 |