KR20040079336A - 분산형 컴퓨팅 시스템을 위한 아키텍쳐 및 분산형애플리케이션의 자동화된 설계, 배치 및 관리 - Google Patents

분산형 컴퓨팅 시스템을 위한 아키텍쳐 및 분산형애플리케이션의 자동화된 설계, 배치 및 관리 Download PDF

Info

Publication number
KR20040079336A
KR20040079336A KR1020040015343A KR20040015343A KR20040079336A KR 20040079336 A KR20040079336 A KR 20040079336A KR 1020040015343 A KR1020040015343 A KR 1020040015343A KR 20040015343 A KR20040015343 A KR 20040015343A KR 20040079336 A KR20040079336 A KR 20040079336A
Authority
KR
South Korea
Prior art keywords
relationship
definition
definitions
schema
sdm
Prior art date
Application number
KR1020040015343A
Other languages
English (en)
Other versions
KR101117945B1 (ko
Inventor
갈렌씨. 헌트
제프리 아드레드
바삼 타바라
케빈 그릴리시
롭 멘싱
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040079336A publication Critical patent/KR20040079336A/ko
Application granted granted Critical
Publication of KR101117945B1 publication Critical patent/KR101117945B1/ko

Links

Classifications

    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02BHYDRAULIC ENGINEERING
    • E02B3/00Engineering works in connection with control or use of streams, rivers, coasts, or other marine sites; Sealings or joints for engineering works in general
    • E02B3/04Structures or apparatus for, or methods of, protecting banks, coasts, or harbours
    • E02B3/10Dams; Dykes; Sluice ways or other structures for dykes, dams, or the like
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • EFIXED CONSTRUCTIONS
    • E02HYDRAULIC ENGINEERING; FOUNDATIONS; SOIL SHIFTING
    • E02DFOUNDATIONS; EXCAVATIONS; EMBANKMENTS; UNDERGROUND OR UNDERWATER STRUCTURES
    • E02D29/00Independent underground or underwater structures; Retaining walls
    • E02D29/02Retaining or protecting walls
    • E02D29/0225Retaining or protecting walls comprising retention means in the backfill
    • E02D29/0233Retaining or protecting walls comprising retention means in the backfill the retention means being anchors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Structural Engineering (AREA)
  • Civil Engineering (AREA)
  • Environmental & Geological Engineering (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Life Sciences & Earth Sciences (AREA)
  • Mining & Mineral Resources (AREA)
  • Paleontology (AREA)
  • Ocean & Marine Engineering (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

분산형 컴퓨팅 시스템 상으로의 분산형 애플리케이션을 설계, 배치 및 관리하기 위한 아키텍쳐 및 방법이 기술된다.

Description

분산형 컴퓨팅 시스템을 위한 아키텍쳐 및 분산형 애플리케이션의 자동화된 설계, 배치 및 관리{ARCHITECTURE FOR DISTRIBUTED COMPUTING SYSTEM AND AUTOMATED DESIGN, DEPLOYMENT, AND MANAGEMENT OF DISTRIBUTED APPLICATIONS}
본 발명은 분산형 컴퓨팅 시스템용 아키텍쳐에 관한 것이다.
지난 수년간 인터넷 사용은 폭발적으로 증가하였으며 계속적으로 성장하고 있다. 사람들은 전자 메일, 온라인 쇼핑, 뉴스 및 정보 수집, 음악 감상, 비디오 클립 관람, 구직 등의 월드 와이드 웹(또는 간략히, "웹") 상에 제공되는 많은 서비스에 만족하게 되었다. 인터넷 기반 서비스에 대한 성장 요구에 맞추어, 호스팅 웹사이트에 사용되며 이들 사이트에 대한 백엔드 서비스(backend service)를 제공하고 그 사이트와 관련된 데이터를 저장하는 컴퓨터 시스템이 급격히 성장하여 왔다.
분산형 컴퓨터 시스템의 하나의 형태는 네트워크 기반 서비스를 호스팅하는 많은 컴퓨터를 하우징하는 특수 설계된 컴플렉스인 {인터넷 데이터 센터(IDC) 등의} 데이터 센터 또는 엔터프라이즈 데이터 센터(EDC)이다. "웹팜(Webfarm)" 또는 "서버 팜(sever farm)"이라고도 지칭될 수 있는 데이터 센터는 통상 분위기 제어된(climate-controlled) 물리적으로 안전한 빌딩에서 수백 내지 수천의 컴퓨터를 하우징한다. 데이터 센터는 통상 신뢰성있는 인터넷 액세스, 신뢰성있는 전력 공급 및 안전한 오퍼레이팅 환경을 제공한다.
현재, 큰 데이터 센터는 복잡하고, 종종 다수의 애플리케이션을 호스팅하기 위하여 호출된다. 예를 들어, 어떤 웹 사이트는 수천 컴퓨터를 동작시킬 수 있고 많은 분산형 애플리케이션을 호스팅할 수 있다. 이들 분산형 애플리케이션은, 종종 오퍼레이터가 컴퓨터를 소정의 네트워크 스위치에 물리적으로 접속할 뿐만 아니라 데이터 센터 내에 유선 구성을 수동으로 배열하여 복잡한 애플리케이션을 지원하도록 하는 것을 요구하는 복잡한 네트워킹 요구사항을 갖는다. 결과적으로, 애플리케이션 요구사항에 따르도록 물리적 네트워크 토폴로지(topology)를 확립하는 이 태스크는 사람의 실수가 발생하기 쉽고 성가시며 시간을 소비하는 프로세스일 수 있다. 따라서, 물리적 컴퓨팅 시스템 상에 분산형 애플리케이션을 설계하고 배치하는 향상된 기술이 필요하다.
분산형 컴퓨팅 시스템 상으로의 분산형 애플리케이션을 설계, 배치 및 관리하기 위한 아키텍쳐 및 방법이 기술된다.
도 1은 네트워크 세팅의 일례를 나타내는 도면.
도 2는 SDM 정의 모델을 사용하는 아키텍쳐의 일례를 나타내는 블록도.
도 3은 SDM 개략적 설계 스팩에서 정의된 정의 구조의 일례를 나타내는 도면.
도 4는 SDM 개략적 설계 스팩에서 정의된 관계 구조의 일례를 나타내는 도면.
도 5는 웹 서버 호스트에 웹 애플리케이션을 맵핑한 일례를 나타내는 도면.
도 6은 SDM 런타임을 사용하는 아키텍쳐의 일례를 나타내는 도면.
도 7은 계층화된 세팅(layered setting)의 일례를 나타내는 도면.
도 8은 SDM 문서의 일례를 나타내는 도면.
도 9는 기본 정의와 멤버를 나타내는 도면.
도 10은 멤버의 일례를 나타내는 도면.
도 11은 세팅 값과 값 리스트의 예를 나타내는 도면.
도 12는 소정의 실시예에 따른 SDM 애플리케이션의 라이프사이클의 일례를나타내는 도면.
도 13은 웹 서버 호스트에 웹 애플리케이션을 맵핑하는 일례를 나타내는 도면.
도 14는 내장 데이터타입 계층의 일례를 나타내는 도면.
도 15는 추상 객체 정의의 암시적 확장의 일례를 나타내는 도면.
도 16는 추상 관계의 암시적 확장의 일례를 나타내는 도면.
도 17는 변경 요구의 일례를 나타내는 도면.
도 18은 새로운 정의를 런타임으로 로딩하는 프로세스의 일례를 나타내는 도면.
도 19은 변경 요구를 수행하는 일례를 나타내는 도면.
도 20은 접속된 멤버의 예를 나타내는 도면.
도 21은 접속과 관련된 구조의 예를 나타내는 도면.
도 22는 인스턴스 공간의 개요를 제공하는 UML 다이어그램의 일례를 나타내는 도면.
도 23은 여기에 기재된 기술을 구현하는 데 사용될 수 있는 일반적인 컴퓨터 환경을 나타내는 도면.
<도면의 주요 부분에 대한 간단한 설명>
200: 아키텍쳐
202: 개발 시스템
204: SDM 문서
206: 컨트롤러
208: 배치 모듈
210: 관리 모듈
212: 타겟 장치
다음의 설명은 대규모 애플리케이션 서비스를 갖는 분산형 컴퓨팅 시스템을 설계하고 실행하기 위한 아키텍쳐에 관한 다수의 양태를 기술한다. 상기 설명은 서비스 정의 모델이라고도 하는 시스템 정의 모델(SDM) 및 SDM 런타임 환경의 논의를 포함한다. 상기 설명은 또한 각종 데이터 센터 컴포넌트를 모델링하는 방법 등의 설계 양태를 포함한다.
여기에서 이용된 바와 같이, 용어 "유선(wire)"은 또한 "접속", "통신" 또는 "통신 관계"로도 지칭될 수 있다. 또한, 용어 "시스템"은 "모듈"로도 지칭될 수 있으며, 용어 "리소스 공간"은 "리소스"로 지칭될 수 있다. 또한, 용어 "애플리케이션 공간"은 "애플리케이션"으로도 지칭되고, 용어 "인스턴스 공간"은 "인스턴스"로도 지칭될 수 있다. 또한, 용어 "클래스"는 "추상 정의"로도 지칭되고, 용어 "포트"는 또한 "엔드포인트"로 지칭되고, 용어 "타입"은 "정의"로 지칭될 수 있다.
도 1은 네트워크 세팅(100)의 일례를 나타낸다. 세팅(100)에서, 다수(x)의 컴퓨팅 장치{102(1), 102(2), ..., 102(x)}는 네트워크(106)에 결합된다. 네트워크(106)는 (유선 및/또는 무선 네트워크를 포함하여) 종래의 다양한 네트워크 토폴로지 및 타입 중의 임의의 것을 표시하고, (공중 및/또는 개인 프로토콜을 포함하여) 종래의 다양한 네트워크 프로토콜 중의 임의의 것을 사용하는 것으로 한다. 네트워크(106)는 예를 들어, 기본리 통신망(LAN), 원거리 통신망(WAN), 인터넷의 부분 등을 포함할 수 있다. 세팅(100)은 예를 들어 데이터 센터{예를 들어, 인터넷 데이터 센터(IDC)}, 오피스 또는 비즈니스 세팅, 홈 세팅, 교육 또는 연구 설비, 소매 또는 판매 세팅, 데이터 저장 세팅 등을 포함하는 다양한 세팅 중의 임의의 것을 나타낸다.
컴퓨팅 장치(102)는 데스크탑 PC, 워크스테이션, 메인프레임 컴퓨터, 서버 컴퓨터, 인터넷 장비(Internet appliance), 게임 콘솔, 핸드헬드 컴퓨터, 셀룰러 전화, 개인 휴대용 단말기(PDA)를 포함하는 종래의 다양한 컴퓨팅 장치 중의 임의의 것일 수 있다. 하나 이상의 장치(102)는 동일 타입의 장치 또는 다른 타입의 장치일 수 있다. 또한, 다수의 장치가 동일 타입의 장치이더라도, 다수의 장치가 다르게 구성될 수 있다 {예를 들어, 2개의 장치(102)가 서버 컴퓨터일 수 있지만, 다른 프로세서, 다른 용량의 RAM, 다른 사이즈의 하드 디스크 드라이브 등의 다른 하드웨어 구성을 가질 수 있다}.
하나 이상의 컴퓨팅 장치(102)는 또한 세팅(100)에 부가된 후 재구성될 수 있다. 예를 들어, 특정 컴퓨팅 장치(102)는 하나의 기능을 수행하는 기간(예를 들어, 분, 시, 일, 달 등)동안 동작할 수 있고, 그후, 관리자가 다른 기능이 바람직하다는 것을 결정할 수 있다(예를 들어, 서버 컴퓨터로부터 워크스테이션 컴퓨터로의 변경, 웹 서버로부터 로컬 파일 서버로의 변경 등).
도 2는 시스템 정의 모델을 사용하는 아키텍쳐(200)의 일례를 나타내는 블록도이다. SDM은 시스템의 전체 라이프사이클에 걸쳐 사용되도록 설계된다. 시스템은, 함께 작업하여 공통 기능을 달성할 수 있는 관련된 소프트웨어 및/또는 하드웨어 리소스의 세트이다. 이러한 시스템의 일례는, 컴퓨팅 시스템에 의해 운영되거나 실행되어 다양한 기능을 수행할 수 있는 명령의 세트로 지칭되는 애플리케이션이다. 애플리케이션의 예는 게임과 같은 엔터테인먼트 애플리케이션, 워드 프로세서와 같은 생산성 애플리케이션, 전자 사전과 같은 참조 애플리케이션, 웹 서비스 또는 금융 분석에 사용될 수 있는 분산형 애플리케이션 등을 포함한다. 이러한 시스템의 다른 예는 애플리케이션(또는 또다른 환경)이 배치될 수 있는 환경이다. 환경은 애플리케이션(또는 또다른 환경)이 배치되는 소프트웨어 및/또는 하드웨어리소스를 지칭한다. 이러한 환경은 이하에서 상세히 설명하는 바와 같이 계층화(layered)된다.
시스템의 라이프사이클은 통상 3개의 주요 페이즈(스테이지로도 지칭됨), 즉, 설계 또는 개발 페이즈, 그 후의 배치 또는 설치 페이즈, 그 후의 동작 또는 관리 페이즈를 포함한다. 모델이 시스템의 라이프사이클의 세가지 모든 페이즈에 적용됨에 따라, 모델은 시스템의 라이프사이클의 다양한 페이즈에 대한 통합 포인트로서 간주될 수 있고, 이들 페이즈의 각각을 용이하게 한다. 또한, 모델을 사용하여, 이들 페이즈들간에, 시스템의 관리에 대한 지식(예를 들어, 미래의 버전을 위하여 설계 및 개발 팀에 피드백되어 설계 및 개발 팀이 시스템을 변경하도록 하거나, 현재 버전의 성능을 개선하도록 함), 시스템의 구조, 배치 요구사항 및 동작 거동(behavior)에 관한 지식, 데스크탑으로부터 데이터 센터로의 동작 환경에 대한 지식, 최종 사용자에 의해 관찰되는 서비스 레벨에 대한 지식 등의 지식이 전달될 수 있다.
일반적으로, 설계 페이즈 동안, SDM에 영향을 주는 개발 툴이 통신 소프트웨어 및 하드웨어 컴포넌트로 구성된 시스템을 정의하는 데 사용된다. 시스템 정의는 요구된 리소스, 구성, 동작 특징, 정책 등을 포함하는 분산형 시스템을 배치하고 동작하는데 필요한 모든 정보를 포함한다. 배치 페이즈 동안, 시스템 정의는 시스템을 자동적으로 배치하고 요구된 소프트웨어 및 하드웨어(예를 들어, 서버, 기억장치 및 네트워킹) 리소스를 동적으로 할당하고 구성하는 데 사용된다. 동일한 시스템 정의는 다른 호스트 환경 및 다른 스케일로의 배치에 사용될 수 있다.관리 페이즈 동안, 오퍼레이팅 시스템 내의 SDM 서비스는 시스템을 관리하는 시스템 레벨 뷰(system-level view)를 제공한다. 이것은 새로운 관리 툴이 리소스 할당, 구성 관리, 업그레이드 및 시스템의 견지로부터 프로세스 자동화의 유도를 가능하게 한다.
아키텍쳐(200)는 SDM 정의 모델 내의 기능 동작을 정의하는 스키마뿐만 아니라 SDM 정의 모델을 사용한다. 정의 모델은 총괄하여 "정의"로 지칭되는 다양한 종류의 데이터 구조를 포함한다. SDM의 기능은 애플리케이션 프로그램 인터페이스(API) 등의 하나 이상의 플랫폼 서비스를 통해 노출된다.
시스템에 대한 설계 페이즈 동안, 개발 시스템(202)은 SDM 문서(204) 등의 시스템 정의를 포함하는 문서를 생성한다. 개발 시스템(202)은 워싱턴주 레드몬드의 마이크로소프트 코포레이션(MicrosoftCorporation)으로부터 이용가능한 비주얼 스튜디오(Visual Studio) 개발 시스템 등의 다양한 개발 시스템 중의 임의의 것일 수 있다. SDM 문서(204)는 시스템의 배치 및 관리에 관련된 모든 정보(지식으로도 지칭됨)를 정의한다. 시스템을 배치하거나 시스템을 관리할 때 사용되거나 필요한 지식은 SDM 문서(204)에 포함된다. 단일 문서로서 여기에 기재되었지만, 지식은 다수의 문서에서 전개되고 유지될 수 있음이 자명하다.
SDM 문서(204)는, 시스템이 배치되고 및/또는 실행되는 환경이 만족해야 하는 시스템의 하나 이상의 제한(또한 요구사항으로 지칭됨)을 포함한다. 환경 자체는 SDM 문서를 사용하여 기술된다. 이러한 환경은 단일 컴퓨팅 장치일 수 있거나 대안으로 컴퓨팅 장치(예를 들어, 데이터 센터), 애플리케이션 호스트 등의 집합일수 있다. 다른 시스템은 다른 환경에 설치될 수 있다. 예를 들어, 데이터 센터는 50개의 컴퓨팅 장치를 포함할 수 있고, 하나의 시스템은 이들 컴퓨팅 장치 중의 5개에 배치되고 나머지 시스템이 이들 컴퓨팅 시스템 중의 35개에 배치될 수 있다. 이들 요구 사항은, 시스템이 배치되는 컴퓨팅 장치(들)에 관한 하드웨어 요구사항(예를 들어, 최소 프로세서 속도, 최소량의 메모리, 최소량의 프리 하드 드라이브 공간, 최소량의 이용가능한 네트워크 대역폭, 이용가능한 특정 보안 메커니즘 등), 시스템이 배치되는 컴퓨팅 장치(들)에 관한 소프트웨어 요구사항(예를 들어, 특정 오퍼레이팅 시스템, 또한 설치되어야 하는 하나 이상의 다른 애플리케이션, 특정 시스템 및/또는 오퍼레이팅 시스템이 구성되는 방법에 관한 스펙, 특정 타입의 보안 및 사용의 암호화 등), 시스템이 배치되는 컴퓨팅 장치(들)에 관한 다른 요구사항(예를 들어, 이용가능한 특정 보안 키, 실시되어야 하는 데이터 센터 정책, 사용되는 인증, 환경 토폴로지 등) 등의 다양한 형태를 취할 수 있다.
요구사항은 또한 다른 방향으로 향할 수 있다. 즉, 환경은 설치되는 시스템의 구성에 대한 제한 또는 요구사항(예를 들어, 환경의 표준 또는 정책을 구현하기 위함)을 가질 수 있다. 이들은 시스템이 가져야 하는 특정 세팅 또는 구성, 시스템이 제공하거나 지원해야 하는 특정 기능, 및 시스템이 지원해야 하는 특정 보안 메커니즘 등의 환경의 오퍼레이터에 의해 생성된 "명시적(explicit)" 요구사항일 수 있다. 이들은 또한 환경의 특정 구성 때문에 발생하는 "암시적(implicit)" 요구사항일 수 있다. 예를 들어, 그 환경에서의 호스트 컴퓨팅 장치가 특정 타입의 파일 시스템을 사용하면, (비록 그 동일한 액션이 다른 파일 시스템을 사용하여 수행될 수 있을지라도)일부의 액션이 그 파일 시스템을 사용하여 수행되는 것이 가능하지 않을 수 있다.
시스템의 설계 및 개발 페이즈 동안, SDM 문서(204)는 하나 이상의 특정 환경(들)에 대한 시스템을 유효화(validate)하는 데 사용될 수 있다. 이것은 시스템이 환경에 대하여 유효화되는 것과 환경이 시스템에 대하여 유효화되는 2가지의 유효화가 있다. 환경은 SDM 문서(204)에서 식별된 요구사항과 환경을 비교하고 모든 요구사항이 환경에 의해 만족되는 지를 결정함으로써 시스템에 대하여 유효화될 수 있다. 시스템은 환경에 대한 SDM 문서에서 식별된 요구사항과 시스템을 비교하고 모든 요구사항이 시스템에 의해 만족되는 지를 결정함으로써 환경에 대하여 유효화될 수 있다. 모든 요구사항이 환경 및 시스템에 의해 만족되면, 설계자 또는 개발자는 시스템이 환경 내에 배치되거나 환경 내에서 운영될 수 있는 것으로 인식한다. 그러나, 모든 요구사항이 환경 및/또는 시스템에 의해 만족되지 않으면, 만족되지 않은 요구사항을 선택적으로 알림으로써, 설계자 또는 개발자에게 시스템이 그 환경에서 배치되고 운영되도록 SDM 문서(204)(및 대응하여 시스템) 및/또는 환경에 어떠한 변경이 수행되어야 하는지를 알린다.
SDM 문서(204) 내에 포함된 시스템의 배치에 관한 지식은 하나 이상의 환경에서 시스템이 배치되는 방법을 기재한다. SDM 문서(204)는 컨트롤러(206)에 이용가능하게 작성되고, 컨트롤러는 배치 모듈(208)과 관리 모듈(210)을 포함한다. 소정의 실시예에서, 시스템을 설치하기 위하여 필요한 시스템의 모든 파일(예를 들어, 바이너리, 데이터, 라이브러리 등) 뿐만 아니라 SDM 문서(204)는 SDU(SystemDefinition Unit)로서 지칭되는 단일 컨테이너(예를 들어, 단일 파일)로 함께 패키징된다. 컨트롤러(206)는 도 1의 하나 이상의 컴퓨팅 장치(102)일 수 있다. 예를 들어, 도 1의 단일 장치(102)는 특정 데이터 센터를 위한 컨트롤러일 수 있거나 또는 대안으로 컨트롤러 책임(controller resposibilities)이 다수의 장치(102)에 걸쳐 분산될 수 있다.
배치 모듈(208)은 환경(들) 내에 시스템을 배치하는 데 사용되는 서비스를 포함한다. 도 2에서, 시스템이 그 내부에 (또는 그 위에) 배치되는 환경은 하나 이상의 타겟 장치(212)이다. 시스템은 또한 컨트롤러(206)에 배치될 수 있다. 배치 모듈(208)의 이들 서비스는 환경에 하나 이상의 시스템을 설치하거나 배치하기 위하여 호출되거나 인보크(invoke)될 수 있는 하나 이상의 기능을 포함한다.
다른 환경에서의 배치를 위한 다른 지식은 SDM 문서(204)에 포함될 수 있다. 이 배치 지식은, 환경내에 수행되어야 하는 임의의 변경(예를 들어, 생성되어야 하는 시스템 레지스트리, 폴더, 디렉토리, 또는 파일에 대한 변경, 특정 값으로 세팅되어야 하는 컴퓨팅 환경의 다른 세팅 또는 구성 파라미터 등), 환경 내의 컴퓨팅 장치(들)에 복사될 필요가 있는 어떤 파일(예를 들어, 프로그램 및/또는 데이터 파일) 및 이들 파일 상에서 수행되어야 하는 임의의 동작(예를 들어, 임의의 파일은 압축해제 및/또는 암호해독되어야 할 필요가 있을 수 있다)을 기술한다. 많은 구현예에서, SDM 문서(204) 내의 배치 지식은 예를 들어 시스템에 대한 일반적인 셋업 또는 설치 프로그램에서 현재 발견되는 것과 유사한 정보를 포함한다.
배치 프로세스 동안, 컨트롤러(206)는 배치 내에 포함된 소프트웨어 및 하드웨어 리소스들의 레코드 또는 저장뿐만 아니라 그들 간의 관계를 발생시킨다. 이들 레코드 또는 저장은 후에 관리 페이즈 동안 컨트롤러에 의해 사용될 수 있다.
관리 모듈(210)은 시스템이 일단 환경(들)에 설치되면 그 시스템을 관리하는 데 사용되는 서비스를 포함한다. 관리 모듈(210)의 이들 서비스는 환경 내의 시스템을 관리하기 위하여 호출되거나 인보크될 수 있는 하나 이상의 기능을 포함한다. SDM 문서(204) 내에 포함된 시스템의 관리에 관한 지식은 시스템이 하나 이상의 환경에서 관리되는 방법을 기재한다.
다른 환경에서 시스템을 관리하는 다른 지식은 SDM 문서(204) 내에 포함될 수 있다. 관리 지식은 시스템의 관리 또는 동작에 사용되는 임의의 지식을 포함한다. 관리는 예를 들어 구성(및 선택적으로 후속하는 재구성), 패칭(patching) 및 업그레이드, 유지 태스크(예를 들어, 백업), 헬스 또는 성능 모니터링 등을 포함한다.
배치되는 시스템에 대한 변경은 관리 모듈(210)을 통해 수행된다. 관리 모듈(210)의 서비스들은 환경에 배치되는 하나 이상의 시스템에 변경을 수행하기 위하여 호출되거나 인보크될 수 있는 하나 이상의 기능을 포함한다. 관리 모듈(210)을 통한 이러한 변경을 수행함으로써, 몇개의 이점이 실현될 수 있다. 이러한 이점 중의 하나는 컨트롤러(206)가 수행된 변경의 레코드를 유지할 수 있다는 것이다. 컨트롤러(206)는 시스템을 위한 SDM 문서(204)의 복사본을 유지하고 시스템에 수행되는 임의의 변경을 SDM 문서(204)에 레코딩할 수 있다. 다른 방법으로, 컨트롤러(206)는 시스템에 수행되는 변경에 대한 별도의 레코드를 유지할 수 있다.
컨트롤러(206)에 의해 유지되는 이 변경의 레코드는 시스템 및/또는 환경에 발생하는 문제점을 해결하거나, 또는 하드웨어 불량에 의해 시스템을 재설치(시스템이 재설치되어 불량 발생시와 동일한 파라미터/세팅으로 운영되도록 복귀될 수 있게 함)해야만 할 때 등의 후속 동작을 간략화할 수 있다. 이러한 변경이 컨트롤러(206)를 통해 수행되게 하고, 컨트롤러(206)가 레코드를 유지하게 함으로써, 일부 사람의 실수가 환경으로부터 제거될 수 있다(예를 들어, 변경을 수행하는 관리자가 그 변경을 장부에 기입할 것으로 예상되지만 그렇게 하는 것을 잊어버리면, 그 변경에 관한 레코드는 존재하지 않을 것이다. - 이 문제는 컨트롤러(206)가 레코드를 유지하게 함으로써 해결된다).
또한, 컨트롤러(206)를 통해 시스템을 배치할 뿐만 아니라 컨트롤러(206)를 통해 시스템의 변경을 수행함으로써, 컨트롤러(206)는 환경, 환경에 배치되는 시스템, 그들 사이의 상호작용에 관한 지식의 저장소로서의 역할을 할 수 있다. 환경 및/또는 그 환경에 배치되는 시스템에 관한 지식은 컨트롤러(206)로부터 용이하게 얻을 수 있다. 이 지식은 그 환경 내의 제어된 장치가 중앙 컨트롤러(206)에 저장된 상태를 반영하는 것을 확인함으로써 제어된 환경의 지속성을 확보하는 데 사용될 수 있다.
임의의 상황 변경이 시스템 및/또는 환경에 수행될 수 있지만, 컨트롤러(206)를 통해 수행되는 것이 아님을 주의해야 한다. 예를 들어, 컴퓨팅 장치는 갑작스럽게 오프되거나 고장날 수 있다. 이들 상황에서, 컨트롤러(206) 내의 변경을 반영하려는 시도가 이루어진다. 이들 변경은 컨트롤러(260)에서 자동적으로 반영될 수도 있고{예를 들어, 장치 고장을 검출하고 관리 모듈(210)의 서비스를 이용하여 이러한 고장을 컨트롤러(206)에 알리는 시스템이 운영될 수 있다}, 또는 컨트롤러(206) 내에서 수동적으로 반영될 수 있다{예를 들어, 관리자는 관리 모듈(210)의 서비스를 이용하여 이러한 변경을 컨트롤러(206)에 알릴 수 있다}. 다른 방법으로, 수행된 변경이 역전(reverse)되어 환경의 시스템 및/또는 부분이 컨트롤러(206)에 의해 레코딩된 바와 같이 시스템의 소망의 상태와 일치하도록 회복시킬 수 있다.
SDM 문서(204)는 "라이브(live)" 문서로서 간주될 수 있으며, 이것은 시스템의 라이프사이클 전반에서 환경에 대한 변경 및/또는 시스템에 대한 변경에 기초하여 항상 변경될 수 있다.
시스템 정의 모델(SDM)
시스템 정의 모델(SDM)은 시스템의 정의를 생성하는 데 사용된 모델링 기술이다. 시스템은 함께 작업하여 공통 기능을 수행하는 관련 소프트웨어 및/또는 하드웨어 리소스 세트이다. 예시적 시스템은 비지니스 애플리케이션의 멀티티어(multitier) 라인, 웹 서버, 전자 상거래(e-commerce) 사이트 및 기업 데이터 센터를 포함한다. SDM은 애플리케이션 아키텍트, 네트워크 아키텍트, 데이터센터 아키텍트 또는 다른 개발자가 추상적 방식으로 분산형 컴퓨터 애플리케이션 및 데이터 센터를 설계할 수 있도록 툴 및 컨텍스트(context)를 제공한다. SDM은 물리 컴퓨터 리소스 및 소프트웨어에 의해 실제로 수행될 시스템의 기능적 유닛을 나타내는 요소 세트를 정의한다. SDM은 또한 시스템을 관리할 오퍼레이터 또는 다른 개인과 관련한 요소를 정의한다. 또한, SDM은 개발, 배치 및 동작에 관련된 데이터를 캡쳐한다. SDM 요소는 컴포넌트에 의해 표시되는 기능적 동작이 지정되는 방법을 언급하는 스키마와 관련된다.
시스템은 리소스, 엔드포인트, 관계 및 서브시스템으로 구성된다. 이들 각각의 아이템 정의는 SDM 문서에서 선언된다. SDM 문서는 시스템, 리소소, 엔드포인트 및 관계의 하나 이상의 정의를 포함하는 XML 문서이다. 리소스는 하드웨어 리소스 또는 소프트웨어 리소스일 수 있다. 엔드포인트는 시스템 간의 통신을 나타낸다. 관계는 시스템, 리소스 및 엔트포인트 간의 연관(association)을 정의한다. 서브시스템은 완성 시스템으로서 처리될 수 있으며 통상적으로 대규모 시스템의 일부이다.
시스템 정의는 동적 시스템의 기본 구조를 캡쳐한다. 이것은 다른 모든 정보가 추가되는 골격(skeleton)으로서 관찰될 수 있다. 이 구조는 통상적으로 아키텍트 및 개발자에 의해 개발 프로세스 동안 지정되며 통상적으로 자주 변경되지 않는다. 상기 구조 이외에, SDM은 배치 정보, 설치 프로세스, 구성을 위한 스키마, 이벤트 및 인스트루먼테이션(instrumentation), 자동화 태스크, 헬스(health) 모델, 동작 정책 등을 포함할 수 있다. 다른 정보는 동작 스태프, 벤더(vendor) 및/또는 분산형 시스템의 수명에 걸친 관리 시스템에 의해 추가될 수 있다.
SDM 스키마 설계 스팩
SDM은 분산형 시스템(예를 들어, 모델링된 시스템)에서 컴포넌트에 대한 구성, 상호작용 및 변경의 기술(description)을 지원하도록 설계된다. "정의"는 시스템에 존재하는 엔티티를 나타내며 "관계"는 각종 엔티티 간의 링크를 식별한다. 정의 및 관계는 또한 SDM에 관련된 의미(semantic) 정보를 캡쳐하도록 정의된다. 도 3에서 도시된 바와 같이, SDM 정의(302)는 리소스 정의(304), 컴포넌트 정의(306) 및 엔드포인트 정의(308) 등 3개의 서브정의를 포함한다.
도 4에서 도시된 바와 같이, SDM 관계(402)는 포함(containment) 관계(404), 델리게이션(delegation) 관계(406), 접속 관계(408), 호스팅 관계(410) 및 참조 관계(412) 등 5개의 서브관계를 포함한다. 접속 관계(408)는 또한 "통신 관계"라고도 한다. 정의 및 관계에 대한 보다 상세한 사항이 이하 제공된다.
SDM은 시스템 부분의 공통 카테고리화를 제공하고, 광범위한 애플리케이션용 툴 지원을 제공하며 설계 시 정의 검사를 위한 기본을 제공하는 "추상적 정의(abstract definition)"를 포함한다. 추상적 정의 세트는 서비스 설계를 위한 포괄적인 기본을 제공한다. "구체적 정의(concrete definition)"는 실제 애플리케이션 또는 데이터 센터 설계의 일부를 나타낸다. 구체적 정의는 추상적 정의를 선택하고 구체적 정의의 멤버를 정의하는 실행을 제공하며 그 속성에 대한 값을 세팅함으로서 생성된다. 분산형 애플리케이션은 이들 구체적 정의의 수집을 이용하여 생성된다.
SDM은 또한 관계의 인스턴스가 관련될 수 있는 허용된 세트의 관계에 기초하여 한정을 모델링하는 "제한"을 포함한다. 제한은 관계에 포함된 객체의 구성에 의존하는 요구사항을 기술하는 데 유용하다. 예를 들어, 제한은 통신 프로토콜의 각 엔드 상의 참여자가 호환 가능한 보안 세팅을 이용하고 있는 지의 여부를 결정하는 데 사용될 수 있다.
플로우(flow)는 정의 및/또는 리소스의 일부로서 식별될 수 있다. 이 플로우는 시스템, 서브시스템 또는 이러한 세팅을 이용하는 다른 컴포넌트에 오퍼레이터 세팅을 전달함으로써 런타임에서 애플리케이션 거동을 제어하는 데 사용된다.
추상적 정의 및 관계
추상적 정의는 설계 시 애플리케이션 구성을 검사한 후 런타임에서 애플리케이션을 배치 및 관리하는 빌딩 블럭을 정의한다. 이들 빌딩 블럭은 모델링된 시스템에 존재하는 엔티티를 나타낸다. 예를 들어, 추상적 정의가 파일 및 디렉토리, 웹 서버 내부의 구성 또는 SQL 서버 내부의 데이터베이스를 모델링할 수 있다.
추상적 관계는 추상적 정의들 사이에서 발생할 수 있는 상호작용을 모델링한다. 관계는 바이너리이며 관계의 명시(manifestation)에 참여하는 인스턴스의 정의를 식별하도록 유도된다. 관계는 엔티티를 서로 연관시키는 방법을 제공하고, 이에 의해 엔티티 간의 포함, 구축(construction) 및 통신 링크의 모델링을 가능하게 한다.
제한은 이것들이 참여하는 관계를 제한하는 정의에 의해 사용된다. 제한은 또한 링크될 수 있는 정의를 제한하는 관계에 의해 사용된다. 이들 제한은 관계에 참여하는 정의 및 세팅을 타겟으로 할 수 있다.
추상적 정의 공간은 컴포넌트, 엔드포인트 및 리소스 등 3개의 카테고리로 나누어진다. 추상적 컴포넌트 정의는 애플리케이션의 자체 포함된(self-contained) 독립적으로 배치 가능한 부분을 기술한다. 이들 정의는 프로세스와 머신 경계에 걸친 잘 정의된(well-defined) 통신 채널을 통해 상호작용하는 애플리케이션의 일부를 나타낸다. 추상적 엔드포인트 정의는 컴포넌트가 노출될 수 있는 통신 엔드포인트를 기술한다. 이들 추상적 엔드포인트 정의는 설계 시 시스템 접속을 검증(verify)하고 런타임에 접속을 가능하게 하는 것을 시스템이 인식하는 모든 형태의 통신을 모델링할 수 있다. 추상적 리소스 정의는 컴포넌트 내에 포함된 거동을 기술한다. 리소스 정의는 다른 리소스 정의에 대한 강한 의존도를 가질 수 있다. 이들 의존도는 구체적 설치 순서(order)를 요구하고 각종 통신 메카니즘을 통해 런타임 상호작용을 개시하는 것을 포함할 수 있다.
추상적 정의는 세팅을 노출시키는 능력을 포함한다. 일례에서, 이들 세팅은 XML 스키마를 이용하여 세팅의 정의를 정의하는 네임-밸유 쌍(name-value pair)이다. 세팅은 동적 또는 정적일 수 있다. 정적 세팅은 배치 프로세스 동안 세팅된다. 동적 세팅은 배치 후에 변경될 수 있다. 동작 중인(running) 시스템에 세팅 값을 적용하여야 하는 코드는 SDM 런타임에 호스트된다.
SDM 모델은 추상적 정의에 대한 상속(inheritance)을 지원한다. 유도된(derived) 정의는 그 부모(parent)에 의해 노출된 속성을 확장할 수 있으며, 그 부모의 속성에 대한 값을 세팅할 수 있다. 유도된 정의는 참여자로서 그 부모를 식별하는 관계에 참여할 수 있다.
전술한 바와 같이, 관계는 통신(또는 접속), 포함, 델리게이션, 호스팅 및 참조 등 5개의 카테고리로 나누어진다. 통신 관계는 추상적 엔드포인트 정의들 간의 잠재적인 통신 상호작용을 캡쳐한다. 통신 관계의 존재는 식별된 정의의 엔드포인트를 노출시키는 컴포넌트가 통신하는 것을 가능하게 할 수 있다는 것을 나타낸다. 링크의 실제 구현은 엔드포인트에 대한 제한 및 엔드포인트의 노출이 요구된다.
포함(containment) 관계는 다른 추상적 정의의 멤버를 포함하는 추상적 정의의 능력을 기술한다. 보다 구체적으로, 2개의 추상적 정의 A와 B 간의 포함 관계는 A를 실행하는 구체적 정의가 B를 실행하는 정의의 멤버를 포함하는 것을 가능하게 한다. 포함 관계는 개발자가 애플리케이션을 구축할 때 발생되는 자연적인 네스팅(nesting) 구조를 모델링한다. 다른 정의의 멤버를 포함함으로써, 부모는 포함된 정의의 수명 및 가시도(visibility)을 제어할 수 있다. 런타임 공간에서의 모든 정의 인스턴스는 다른 정의 인스턴스의 멤버로서 존재하며, 인스턴스의 완전히 접속된 세트를 형성한다. 따라서, 포함 관계 세트는 런타임 공간에서 발생되는 허용된 포함 패턴을 기술한다.
델리게이션(delegation) 관계는 포함된 멤버를 선택적으로 노출시킨다. 예를 들어, 델리게이션은 컴포넌트 정의로부터 엔드포인트 멤버를 노출시킬 수 있다. 내부 컴포넌트로부터 엔드포인트를 델리게이팅함으로써, 외부 컴포넌트가 프로토콜 이면에(behind) 실행을 노출시키지 않고 특정 프로토콜을 이용하여 통신하는 능력을 노출시킨다.
호스팅 및 참조 관계는 2가지 형태의 의존 관계를 나타낸다. 호스팅 관계는 특정 호스트에 대한 정의 인스턴스를 생성하는 방법에 관한 지식을 캡쳐하는 데 사용된다. 호스팅 관계는 특정 호스트의 동작으로부터 독립된 방식으로 개발자가 그정의를 생성하는 것을 가능하게 한다. 이 관계는 또한 게스트 정의를 재기입하지 않고 단일 정의가 다수의 호스트 타입에 대해 배치되는 것을 가능하게 한다. 호스팅 관계는 구체적 정의의 인스턴스가 생성되기 전에 존재하는 추상적 정의들 간의 주요 의존도를 기술한다. 각 인스턴스는 호스팅 관계에서 게스트로서 참여하여, 호스팅 관계를 통해 인스턴스 공간에 대해 접속된 트리(tree)를 형성하게 한다. 참조 관계는 파라미터 플로우 및 구축 순서(ordering)을 위해 사용된 추가 의존도를 캡쳐한다.
구체적 정의 및 관계
구체적 정의는 추상적 정의로부터 생성된다. 구체적 관계는 추상적 관계로부터 생성된다. 추상적 정의와 추상적 관계의 조합은 타겟 시스템을 모델링하기 위한 스키마를 정의한다. 구체적 정의는 추상적 정의 공간의 서브셋트를 이용하여 하나 이상의 추상적 정의의 재사용 가능한 구성을 생성한다. 추상적 정의 공간은 데이터베이스의 스키마에 비교될 수 있다. 이를 유추하면, 구체적 정의 공간은 데이터베이스에서 로우(row) 세트를 위한 재사용 가능한 템플릿(template)을 나타낸다. 구체적 정의는 데이터베이스의 로우가 외래(foreign) 키 등의 스키마의 제한에 대해 유효화되는 것과 동일한 방식으로 추상적 정의 공간에 대해 유효화된다. 개발자는 추상적 정의의 지식으로부터 구체적 정의의 지식을 유추할 수 있다. 따라서, 추상적 정의와 관련된 툴은 그 추상적 정의로부터 유도되는 다수의 실행으로 동작될 수 있다. 예를 들어, 추상적 웹 서비스에 대해 인지하는 툴은 개발자로부터 추가의 정보를 요구하지 않고 데이터센터에 배치된 임의의 웹 서버로 동작될 수있다.
각각의 구체적 정의는 세팅 스키마에 대한 확장, 세팅 값, 정의 및 관계 멤버의 선언 및 정의가 참여할 수 있는 관계에 대한 제한을 포함하는 특정의 추상적 정의에 대한 실행을 제공한다. 구체적 정의의 거동은 추상적 정의의 정의를 추종한다. 특히, 추상적 컴포넌트 정의는 컴포넌트 정의가 되고, 추상적 엔드포인트 정의는 엔드포인트 정의가 되며 추상적 리소스 정의는 리소스 정의가 된다.
각각의 구체적 관계는 세팅 스키마 및 세팅 값, 동일 관계 카테고리의 네스팅된 멤버(예를 들어, 호스팅, 포함 또는 통신) 및 관계에 참여할 수 있는 정의에 대한 제한을 포함하는 특정의 추상적 관계에 대한 실행을 제공한다.
구체적 호스팅 관계는 하나의 구체적 정의의 멤버를 다른 구체적 정의 상에 맵핑할 수 있는 호스팅 관계 세트를 정의한다. 예를 들어, 구체적 호스팅 관계는 웹 애플리케이션 및 배치될 IIS 호스트 간의 결합을 식별할 수 있다. 하나 이상의 호스팅 관계가 특정 정의에 대해 존재하여, 개발자가 특정 토폴로지에 대한 배치를 정의하는 것을 가능하게 한다.
구체적 정의는 "정의 멤버"라고 하는 다른 구체적 또는 추상적 정의의 멤버를 선언할 수 있다. 이때, 이들 정의 멤버는 정의 멤버들 간의 관계를 정의하는 "관계 멤버"로부터 참조된다. 정의 멤버는 특정 정의의 인스턴스에 대한 참조를 포함한다. 세팅 플로우는 정의에 대한 값을 제공할 수 있거나 정의를 생성할 때 사용된 구축 파라미터를 제한할 수 있다. 정의 멤버를 선언할 때, 사용자(예를 들어, 개발자)는 외부 컴포넌트가 생성됨과 동시에 정의 멤버가 생성되는 지의여부("값 의미(semantics)"라고 함) 또는 추후에 발생되는 명시적인 새로운 동작에 의해 정의 멤버가 생성되는 지의 여부("참조 의미"라고 함)를 결정할 수 있다.
관계 멤버는 이들이 생성될 때 정의 멤버가 참여할 관계를 정의한다. 정의 멤버가 구체적 정의에 포함되는 경우, 포함 관계 멤버는 정의 멤버와 외부 정의를 위한 이 참조 간에 정의된다. 정의 멤버가 델리게이팅되는 경우, 델리게이션 관계 멤버는 정의 멤버와 네스팅된 정의 멤버 간에 정의될 것이다. 통신 관계 멤버는 정의 멤버에 대한 엔드포인트 간에 선언될 수 있으며 의존 관계 멤버(참조 및 호스팅)는 정의 멤버들 또는 네스팅된 정의 멤버들 간에 선언될 수 있다.
관계 제한은 특정 정의가 자발적으로 참여하는 관계 세트를 축소(narrow)시킨다. 관계 제한은 특정 관계 및 관계의 다른 엔드에서의 참여자에 대한 제한을 식별한다.
인스턴스 공간
SDM 런타임에 기억된 인스턴스 공간은 모델링된 시스템의 현재 상태를 식별한다. SDM 런타임은 생성된 인스턴스 및 이들 인스턴스 간의 관계의 기록을 포함한다. 각각의 인스턴스는 각각의 버젼을 변경 요구에 링크하는 해당 버젼 히스토리를 갖는다. 변경 요구는 새로운 인스턴스를 생성하는 프로세스이다. 변경 요구는 현재의 인스턴스의 특정 멤버와 관련된 정의 및 관계에 대한 생성, 갱신 및 삭제 요구 세트를 정의한다. 루트는 특별한 경우로서 처리된다.
변경 요구는 런타임에 의해 확장되고, 하나 이상의 제한에 대해 검증된 후 구축된다. 확장 프로세스는 포함하고 있는 정의의 구축 요구의 일부로서 암시적으로 구축되는 정의 및 관계 인스턴스를 식별한다. 확장 프로세스의 일부로서, 세팅 플로우는 모든 관계에 걸쳐 평가된다. 검증 단계는 모든 요구된 관계가 존재하며 상기 관계가 필요한 제한을 이행하는 지를 검사한다. 마지막으로, 구축 프로세스는 각 인스턴스의 배치, 갱신 또는 제거에 대한 적절한 순서를 결정한다. 다음으로, 정확한 시퀀스에서의 구축 프로세스는 각각의 인스턴스를 인스턴스 매니저(manager)로 통과시켜 적절한 액션을 수행한다.
데이터 센터는 다수의 소프트웨어 컴포넌트를 이용하여 생성될 수 있다. 하나 이상의 접속은 다수의 소프트웨어 컴포넌트 간에 구성된다. 이들 소프트웨어 컴포넌트 중 일부는 애플리케이션 계층에 대한 호스트로서 기능할 수 있다. 호스트 계층에서의 컴포넌트 정의의 예는 IIS, SQL, AD, EXCHANGE, DNS 및 Biztalk를 포함한다.
네트워크/OS/스토리지 계층은 데이터 센터 네트워크 및 플렛폼의 구축을 지원한다. 이 계층은 또한 네트워크 보안 모델의 구성, 오퍼레이팅 시스템 플렛폼의 구성 및 오퍼레이팅 시스템 플렛폼과 하나 이상의 스토리지 디바이스의 연관을 지원한다. 네트워크/OS/스토리지 계층에서의 컴포넌트 정의의 예는 VLAN, Windows, Filter 및 Storage를 포함한다.
하드웨어 계층은 데이터 센터에 존재하는 시스템의 정의 및 이들 시스템 간에 존재하는 물리 접속을 식별한다. 특정 컴포넌트에 의해 요구되는 관계를 만족시키기 위하여, 이 컴포넌트는 일치 캐이퍼빌러티를 갖는 호스트 컴포넌트에 속한다. 이 프로세스는 "논리 배치(placement)"라고 한다. 배치 시 게스트 컴포넌트의 인스턴스는 호스트 컴포넌트의 인스턴스 상에 위치된다. 이 프로세스는 "물리 배치"라고 한다.
도 5는 웹 애플리케이션(502)을 웹 서버 호스트(504)에 맵핑하는 일례를 나타낸다. 점선(506)에 의해 식별되는 경계는 애플리케이션 계층와 호스트 계층을 분리시킨다. 웹 애플리케이션(502)은 원격 서비스 엔드포인트(508), 웹 서비스 엔드포인트(510) 및 웹 사용자 인터페이스 엔드포인트(512)를 포함하며, 이들 모두는 웹 서버(504) 내의 웹 사이트(522)에 맵핑된다. 또한, 웹 애플리케이션(502) 내의 가상 디렉토리(516)가 웹 사이트(522)에 맵핑된다. 웹 애플리케이션(502)은 또한 웹 서버(504) 내의 컨슈머(consumer) 엔트포인트(524)에 맵핑되는 컨슈머 엔트포인트(514)를 포함한다. 웹 애플리케이션(502)의 어셈블리 부분(518)은 웹 서버(504)의 런타임 부분(528)에 맵핑된다. 웹 애플리케이션(502) 내의 콘텐트 디렉토리(520)는 웹 서버(504) 내의 웹 루트 디렉토리(526)에 맵핑된다.
분산형 시스템에 대한 변경을 관리하는 프로세스는 SDM 모델과 연관된다. 분산형 시스템에 대한 변경은 요구에서의 액션이 분산되고 타겟 시스템에 대해 실행되기 전에 하나 이상의 처리 단계를 통과하는 변경 요구에 의해 유도된다.
도 6는 SDM 런타임을 사용하는 아키텍쳐(600)의 일례를 나타낸다. 아키텍쳐(600)는 SDM 런타임(610)을 사용하는 도 2의 아키텍쳐(200)의 예뿐만 아니라 섹션 "SDM 구현의 예"에서 후술하는 SDM의 구현예이다. SDM 런타임(610)은, SDM 파일을 수락 및 유효화하고, SDU(System Definition Units - 하나이상의 SDM 파일 및 그들의 관련 파일의 패키지임)를 로딩하고, SDM 변경 요구를 생성 및 실행하고 SDM 기반 시스템을 타겟 환경에 배치하는 컴포넌트 및 프로세스의 세트를 포함한다. 런타임 기능은, SDM을 사용하여 기재된 시스템이 정의되고 유효화되고 컴퓨팅 장치의 세트에 배치되고 관리되도록 한다.
도 6의 컴포넌트가 함께 작동되는 방법의 간략하고, 기능적인 논의가 이어진다. 오퍼레이터 또는 관리자는 데이터 센터의 토폴로지 등의 애플리케이션이 배치될 수 있는 환경을 기술할 수 있다. 오퍼레이터 또는 관리자는 환경을 기술하는 SDM 파일을 형성하고, 상기 파일은 "논리적 하부구조"(LIM : 602) 또는 데이터 센터 기술 또는 데이터 센터 모델이라고 한다. 이 SDM 파일은 워싱턴 레드몬드에 소재한 마이크로소프트사로부터 입수 가능한 Visual Studio?개발 시스템 등의 각종 개발 시스템 중 임의의 것을 이용하여 생성될 수 있다.
또한, 애플리케이션 개발자는 비주얼 스튜디오 개발 시스템과 같은 다양한 개발 시스템 중 임의의 것을 사용하여 그들의 애플리케이션을 설계 및 개발할 수 있다. 개발자가 애플리케이션의 컴포넌트와 이들 컴포넌트가 서로 어떻게 관련되는지를 정의함에 따라, 개발자는 데이터센터 기술(602)에 대한 애플리케이션의 기술을 유효화할 수 있다. 이것은 또한 "설계 시간 유효화(Design Time Validation)"로서 지칭된다.
애플리케이션이 완성되면, 개발자는 SDM에 기술을 저장하고, 애플리케이션이 SDU(604)로서 배치되기 위해 패키징될 것을 요구한다. SDU는 애플리케이션 SDM 뿐만 아니라 애플리케이션 바이너리 및 애플리케이션을 설치하는 데 사용되는 다른참조 파일을 포함한다.
LIM(602) 및 SDU(604)는 배치를 위하여 컨트롤러 장치(620)의 배치 툴(606)에 공급된다. 배치 툴(606)은 사용자 인터페이스(UI)를 포함하여 오퍼레이터가 소망의 SDU(604)를 로드할 수 있게 한다. 배치 툴(606)은 생성 CR 모듈(630)로 작업하여 SDU(604)의 SDM 내의 정보에 따라 SDU(604)와 관련된 애플리케이션을 설치한다. 또한, SDU(604)로부터의 SDM 정의와 인스턴스는 SDM 런타임(610)의 저장부(608)에 저장된다. SDU는 SDU 관리 모듈(640)에 의해 SDM 런타임(610)에서 관리되고, SDU 관리 모듈은 SDU의 적절한 부분들이 런타임(610) 및 타겟(들)(622)의 다른 컴포넌트들에 이용가능하도록 한다.
오퍼레이터는 또한 애플리케이션이 배치되는 타겟(622; 예를 들어, 타겟 컴퓨팅 장치) 상에서 그가 취하기를 원하는 액션이 무엇인지를 지정할 수 있다. 오퍼레이터는 여기에서 변경 요구(CR)로도 지칭되는 배치 파일을 통해 배치를 수행할 수 있다. CR은 하나 이상의 엔진(612, 614, 616, 618)을 통해 운영된다. 일반적으로 확장 CR 엔진(612)은 CR을 확장하여 관련된 모든 컴포넌트 뿐만 아니라 그들 접속 및 액션을 식별하고, 플로우 값 엔진(614)은 컴포넌트들에 대한 값(접속 스트링 등)을 플로우(flow)하고, 제한 검사 엔진(616)은 환경 및 애플리케이션 간의 제한을 검사하고, 액션 순서 엔진(618)은 CR에 대해 필요한 모든 액션에 대한 순서를 지정한다.
시스템에 대한 변경(애플리케이션의 배치를 포함) 또는 모델의 유효화를 개시하기 위하여, 오퍼레이터 또는 프로세스는 CR을 제출한다. CR은 오퍼레이터가런타임(610) 내의 인스턴스를 통해 수행하기를 원하는 액션의 세트를 포함한다. 이들 액션은 예를 들어 생성 액션, 갱신 액션, 및/또는 삭제 액션일 수 있다.
사용자 또는 오퍼레이터가 변경 요구를 개시하는 것에 더하여, 후술하는 바와 같이, 확장 프로세스의 부분으로서 발생된 확장/자동 발생된 변경 요구가 있을 수 있다. 그들의 소스에 관계없이, 일단 완전히 확장되고 검사되면, 변경 요구는 타겟(622)에 타겟 인스턴스를 탐색, 설치, 설치해제 및 변경하는 등의 액션을 송신함으로써 실행된다.
CR은 그룹으로서 완료하거나 실패한 작은(atomic) 세트의 액션으로서 취급된다. 이것은 예를 들어 제한 검사 엔진(616)이 유효성을 검사할때 모든 액션을 고려하도록 한다.
설계 시간 유효화시에, CR은 SDM 컴파일러(628)에 의해 생성될 것이며 SDM 파일 내의 각각의 SDM 컴포넌트의 하나 또는 최소를 포함할 것이다. 이러한 생성 인스턴스 코맨드의 CR은 확장 엔진(612), 플로우 값 엔진(614), 및 제한 검사 엔진(616)을 통해 플로우한다. 이들 세개의 페이즈에서 탐색된 에러는 사용자가 사용하고 있는 개발 시스템을 통해 그 사용자에게 리턴될 것이다.
배치에 있어서, 오퍼레이터는 개발 툴(606)에 의해 부여된 UI를 사용하여 CR을 생성할 것이다. CR은 SDM 런타임(610) 내의 모든 엔진(612, 614, 616 및 618)을 통해 플로우하고, 적절한 액션 및 정보가 CR 모듈(632)에 의해 요구가 실행되는(예를 들어 애플리케이션이 설치되는) 적절한 타겟(들)(622)에 송신될 것이다. 특정 설치를 위한 적절한 타겟(들)(622)은 통상 애플리케이션이 설치되는타겟(들)이다.
정의 분석(resolution) 페이즈에서, CR을 처리하기 시작하면, 생성 CR 모듈(630)은 변경 요구에서 참조되는 모든 정의와 멤버를 분석한다. 변경 요구는, 이들이 런타임(610)에 의해 이미 로딩된 것으로 추정할 것이며, 그들이 존재하지 않으면 생성 CR 모듈(630)이 로드/컴파일 액션을 개시한다. 생성 CR 모듈(630)은 또한 기존의 인스턴스 및 변경 요구 내의 생성 액션에 의해 정의된 인스턴스에 대한 참조가 분석되는 경로 분석 페이즈를 실시한다.
확장 엔진(612)에 의해 수행되는 확장은, 변경 요구가 주어지면, 요구를 실행하는 데 필요한 나머지 모든 액션이 파퓰레이트되는 프로세스이다. 일반적으로, 이들 액션은 정의 및 관계 인스턴스에 대한 구축 및 해체 액션이다. 오퍼레이터는 인스턴스의 구축 또는 해체에 필요한 모든 액션에 대한 세부사항을 제공할 수 있고, 다르게는 프로세서의 부분들이 자동화될 수 있다: 예를 들어, 오퍼레이터는 멤버(예를 들어, byReference 멤버)에 관한 액션을 식별함으로써 그가 원하는 변경에 대한 키 정보를 제공하고, 액션의 나머지는 네스트된 멤버(예를 들어, byReference 및 byValue 멤버) 및 관계 에 제공된다. 다른 예에 의해, 자동화된 확장은, 또한 가용한 리소스를 갖는 장치를 선택하고 요구하는 데이터에 근접하여 애플리케이션을 위치시키는 것 등에 기초하여 배치 결정을 할 수 있는 외부 리소스 매니저로 지칭될 수 있다.
확장 엔진(612)은 또한 "자동 기록"을 수행한다. 자동 기록 동안, 엔진(612)은 SDM 내에 지정된 합성 컴포넌트 및 컴포넌트의 스케일 불변 그룹화를분석하고 컴포넌트가 요구된 레벨로 스케일링될 때 어떻게 그룹화되고 상호 접속될지를 결정한다.
확장 엔진(612)은 또한 값 멤버 확장, 참조 멤버 확장 및 관계 확장을 수행한다.
값 멤버 확장은 모든 비참조(non-reference) 정의 멤버의 식별을 지칭한다. 이들 멤버의 카디널리티(cardinality)가 인식되고, 모든 요구된 파라미터가 공지되므로, 각각의 멤버에 대하여, 생성 요구는 그 부모가 생성중인 멤버들에 대한 변경 요구에 부가된다. 변경 요구가 해체 동작을 포함하면, 해체 동작은 그들의 모든 포함 인스턴스에 대하여 부가된다.
참조 멤버 확장은 (비참조 정의 멤버와 반대로) 참조 멤버로 지칭된다. 참조 멤버의 카디널리티는 종종 정의되지 않으며 참조 멤버는 인스턴스가 구성되도록 값을 요구하는 배치 시간 세팅을 가질 수 있다. 그래서, 참조 멤버(예를 들어, byReference 멤버)를 확장하는 프로세스는 제공하기 위한 위치에 있는 런타임보다 인스턴스에 대하여 더 많은 정보를 요구할 수 있다.
참조 멤버 확장은, 이미 배치된 인스턴스를 찾는 데 사용되는 탐색(discovery)으로서 지칭되는 프로세스와 관련된다. 탐색은 환경의 오퍼레이터에 의해 통상 개시되는 액션이다. 예를 들면, 설치 요구 동안, 확장 엔진(612)은 인스턴스가 이미 존재하는지를 판정하고, 이미 존재하는 것으로 판정된 경우에는 어떤 것이 존재하는지를 판정하며, 존재하지 않는 것으로 판정된 경우에는 인스턴스를 생성한다. 컨트롤러(620) 상의 인스턴스 매니저(IM)(634)는 타겟 장치(622)상의 인스턴스 매니저(626)와 통신하여 탐색 프로세스를 개시한다. 탐색 프로세스는 인스턴스에 관한 데이터를 타겟 장치(622)로부터 컨트롤러(620)로 리턴한다.
탐색 프로세스는 구축 또는 갱신 액션의 부분으로서 참조 정의 멤버를 파퓰레이트한다. 통상, 탐색을 지원하는 객체 매니저(또한 탐색을 수행하는 인스턴스 매니저)를 갖는 참조 멤버만이 이 프로세스에 참여한다.
새로운 인스턴스가 탐색될 때, 인스턴스 특정 키 값을 사용하여 인스턴스가 SDM 데이터베이스 내에 이미 존재하지 않는지를 검사한다. 일단 그것이 새로운 인스턴스인 것으로 알려지면, 인스턴스는 탐색된 멤버들의 정의에 따라 분류된다. 인스턴스가 멤버와 일치하지 않거나 확실하지 않게 일치되면, 멤버 참조는 블랭크 상태로 남고 인스턴스는 오프라인 및 비완료로서 표시된다.
구축될 모든 정의 인스턴스가 공지되면, 관계 확장은 정의 인스턴스를 함께 결합하는 생성 관계 인스턴스를 참조한다. 정의 인스턴스가 해체되면, 정의 인스턴스를 참조하는 모든 관계 인스턴스는 제거된다.
관계를 생성하기 위하여, 멤버 공간은 인스턴스들 사이에서 존재해야 하는 관계의 구성을 식별하는 데 사용된다. 정의 멤버가 1보다 큰 카디널리티를 가지면, 관계 토폴로지는 기본 관계 정의로부터 추론된다. 예를 들어, 통신 관계에 대하여, "자동 기록"이 수행될 수 있고, 호스트 관계에 대하여, 호스팅 관계와 관련된 알고리즘에 기초하여 호스트가 얻어질 수 있다.
플로우 스테이지 동안, 플로우 값 엔진(614)은 모든 관계 인스턴스에 걸친 플로우를 평가한다. 플로우 값 엔진(614)은 변경된 임의의 파라미터 플로우에 의해 영향을 받은 인스턴스에 대한 변경 요구에 갱신 요구를 부가할 수 있다. 엔진(614)은 변경 요구의 결과로서 갱신된 세팅을 갖는 인스턴스의 세트를 결정함으로써 플로우를 평가한다. 이들의 각각에 대하여, 변경된 세팅에 의존하는 임의의 아웃고잉 세팅이 평가되고 타겟 노드는 변경된 인스턴스의 세트에 부가된다. 프로세스는 세트가 비워지거나 세트가 한 사이클을 포함할 때까지 계속된다.
플로우 스테이지 이후에, 이중 검출의 프로세스가 수행된다. 이중 검출은 도 6에 도시된 엔진{예를 들어, 플로우 값 엔진(614) 또는 제한 검사 엔진(616)} 중의 하나 또는 도 6에 도시되지 않은 또다른 엔진에 의해 수행될 수 있다(예를 들어, 이중 검출 엔진은 SDM 런타임(610)에 포함될 수 있다). 이중 검출의 프로세스는 SDM 데이터 저장부에 이미 존재하는 인스턴스에 대하여 확장된 인스턴스를 일치시킨다. 예를 들어, 프로세스는 또다른 애플리케이션이 공유 파일을 설치했는지를 검출한다. 이미 존재하는 인스턴스가 검출되면, 몇개의 액션 중 하나가 기존의 인스턴스의 버전에 의존하여 수행될 수 있다. 설치가 실패할 수 있고; 인스턴스가 카운트된 참조일 수 있거나; 인스턴스가 업그레이드될 수 있거나; 또는 설치가 나란히 수행될 수 있다.
제한 검사 엔진(616)은 변경 요구가 처리된 후에 모든 제한이 여전히 유효한지를 보기 위하여 모델 내의 모든 제한이 검사되는 제한 평가 페이즈를 실시한다.
제한 검사 엔진(616)이 제한 평가 페이즈를 종료한 후, 액션의 완전한 리스트가 이용가능하다. 그래서, 액션 순서 엔진(618)은 컴포넌트들 사이의 관계를 사용하여 유효한 변경 순서를 결정한다. 많은 알고리즘 중의 임의의 것이 사용되어이 결정을 수행한다.
순서를 결정하는 액션 순서 엔진(618)이 완료되면, 머신 특정인 순서화된 액션의 세트의 서브세트를 분산함으로써 배치가 수행될 수 있다. 일단 머신에 의해 액션들이 순서화되고 그룹화되면, 액션 뿐만 아니라 인스턴스 정보를 갖는 SDM 런타임 저장부(608)의 필요한 부분의 복사본이 타겟 컴퓨팅 장치(622)로 송신된다. SDM은 저장 캐시(638) 내의 타겟 장치에서 일시적으로 저장된다.
타겟 컴퓨팅 장치는 SDM 런타임(610)과 통신하는 SDM 런타임의 타겟 부분(636)을 포함한다. 타겟 컴퓨팅 장치(622)는, 또한 실행 엔진(624)을 포함하고 타겟 장치 상의 적절한 인스턴스 매니저(IM; 626)와 통신하여 생성, 갱신 및 삭제 액션 등의 타겟에 대한 변경을 수행하는 에이전트를 포함한다. 각각의 액션은 인스턴스 매니저(626)로의 호출로서 송신되고 인스턴스 매니저(626)는 상태 메시지를 리턴하고, 일부 액션에 대해서는 데이터를 리턴한다(예를 들어, 탐색을 위하여). 모든 액션이 타겟(622) 상에서 완료되면, 타겟의 에이전트는 임의의 에러 및 상태를 컨트롤러(620)로 리턴한다. 그후, 컨트롤러(610)는 이 정보를 사용하여 SDM 런타임 저장부(608)를 갱신한다.
상술한 바와 같이, 변경은 영향을 받은 관계에 기초하여 변경 요구를 분산가능한 부분으로 분류함으로써 수행된다. 모든 부분이 완료되면(또는 하나 이상이 실패한 후) 결과는 런타임(610)에서 대조되고 요약이 오퍼레이터에 리턴된다. 실패한 경우, 모든 액션은 "롤백(rolled back)"되고, 시스템은 변경이 개시되기 전의 상태로 리턴된다.
소정의 실시예에서, 상술한 설계 시간 유효화 동안, SDM 컴파일러(628)는 SDM 파일을 수신하고, 테스트 CR을 생성하고, SDM 런타임의 확장, 플로우 값 및 제한 검사 엔진을 통해 테스트 CR을 운영하고, 임의의 에러를 개발 시스템에 리턴한다. 이 프로세스는 개발자를 위하여 설계 시간동안 배치에 대한 SDM 유효화를 제공한다.
SDM 런타임(610) 및/또는 컨트롤러(620)로의 공중 인터페이스는 객체 모델(API) 라이브러리를 통한다. 라이브러리는 관리된 코드 객체 모델이며 다음이 수행되도록 한다.
런타임 내에서 SDM을 관리 - SDM 파일은 런타임으로 로딩될 수 있다. SDM은 불변이며 한번에 하나씩 로딩된다 {즉, 파일의 부분(예를 들어, SDM 파일로부터의 개별 정의, 클래스 또는 맵핑로부터의 하나)보다는 오히려 하나의 SDM 파일이 로딩될 수 있다}. SDM은 런타임으로부터 삭제될 수 있고 런타임 내의 SDM에 대한 XML 문서가 생성될 수 있다.
런타임에 의해 공지된 SDU를 관리.
SDM 정의를 관리 - (런타임 내에 로딩된 SDM으로부터) SDM 요소를 탐색하고 반영. 새로운 SDM을 작성하는 데 제공되는 공중 API는 없다(즉, 이것은 SDM의 불변 요소를 통한 판독 전용 객체 모델이다). 이것은 SDM, SDU, 식별정보(identity), 버전, 클래스, 정의, 결합/맵핑 및 버저닝 정책(versioning policy)을 포함한다.
SDM 인스턴스를 관리 - 컴포넌트, 엔드포인트, 리소스 및 관계의 인스턴스를 탐색하고 반영. 인스턴스 공간에서, 각각의 인스턴스는 GUID, 안정한 경로 또는 어레이 기반 경로에 의해 식별될 수 있다. 경로는 스트링이며 상대적일 수 있다. 상대적인 경로를 포함하는 이들 식별자는 인스턴스가 변경 요구 문서 등의 문서 내에서 탐색되고 참조될 수 있도록 한다.
인스턴스 조작 - 생성, 토폴로지 변경, 업그레이드, 세팅 변경 및 삭제를 포함하는 SDM 인스턴스에 대한 변경을 수행. 인스턴스 변경은 갱신의 최소 유닛을 제공하는 변경 요구의 경계 내에서 수행되어, 어떠한 에러 또는 제한 위반에 의해서도 전체 요구가 실패하게 한다. 요구가 커미트(commit)되면 인스턴스가 호스트를 가져야 하므로, 인스턴스 요구는 또한 호스트로의 결합없이 인스턴스가 일시적으로 존재하도록 한다. 또한 단일 컴포넌트의 설치 또는 세팅에 영향을 주는 많은 동작이 수행되고, 설치 또는 세팅 갱신을 커미트시까지 연기시켜, 단일 갱신이 컴포넌트 상에서 발생하게 한다. SDM 모델 검사는 변경 요구 커미트 시간 이전 또는 그 시간에 수행되고 커미트는 임의의 모델 또는 제한 위반으로 실패할 것이다.
변경 요구를 로드 - 변경 요구는 인스턴스 공간 동작의 세트를 나타내는 문서, 예를 들어, XML 파일이다. 이 문서는 애플리케이션 인스턴스를 생성 또는 삭제하기 위한 재사용가능한 '스크립트'가 되도록 상대적인 경로를 이용할 수 있다.
변경 요구에 대한 탐색 및 반영 - 설치/갱신 태스크 및 모든 에러 정보의 획득, 및 요구에 의해 영향을 받은 컴포넌트의 설치/갱신의 재시도를 포함.
데이터베이스 내의 변경 요구로부터 변경 요구 문서 발생. 이러한 문서는어느 정도는 이식가능(portable)하다.
프로그레스, 로그 또는 상태 갱신 등의 변경 요구 태스크에 대한 이벤트에 가입. 이들 이벤트 가입의 수명은 클라이언트를 로드한 프로세스의 수명에 의해 제한된다(즉, 이들은 규칙적인 CLR 이벤트이다).
SDM 런타임 엔진은 SDM 모델에 관한 증명 및 API에 의해 표면화된 기능을 수행한다. 라이브러리는 (SDM 엔티티상에 반영하기 위하여) SDM 로드, 컴포넌트 인스턴스 생성 및 전체 SDM 획득과 같이 상당히 정밀하지 않은 호출(fairly coarse call)로 웹 서비스로서 런타임 엔진과 통신한다. 이 웹 서비스를 위한 파라미터의 다수의 포맷은 SDM 파일을 위한 동일 스키마를 갖는 XML이다. 엔진은 또한 허가(permission)에 대하여 검사를 수행할 수 있다.
컨트롤러(620)는 인스턴스 매니저(IM)를 사용할 수 있고, 인스턴스 매니저는 모델 내의 임의의 정의 또는 관계와 관련될 수 있다. IM은 다음의 규칙 중의 하나 이상을 수행할 수 있다.
인스턴스의 배치 지원.
일단 배치되면{감사(audit)}, 인스턴스의 유효화 지원.
이미 배치된 인스턴스들 중에서 런타임을 통해 배치되지 않은 인스턴스를 탐색 지원.
세팅 값의 플로우 지원.
제한의 평가 지원.
변경 요구의 확장 지원.
API를 통한 CLR 클래스로서 사용자에게 인스턴스 제공 지원.
배치를 위하여, 컨트롤러(620) 상의 인스턴스 매니저(IM) 플러그인은, 클래스 호스트 관계와 관련되고, 클래스를 위한 설계 경험을 제공하고 SDU(640) 내의 관련 바이너리 및 세팅 스키마를 생성하는 개발 시스템 내에서 사용되는 플러그인으부터 분리된다. 인스턴스 매니저는, 인스턴스 매니저 인터페이스를 구현하거나 추상 클래스로부터 받은 (예를 들어 dll 어셈블리 내의) CLR 클래스로서 SDM 런타임(610)에 공급된다. 인스턴스 매니저(IM) 플러그인으로서도 지칭되는 SDM 인스턴스 매니저는 컨트롤러(620)에 다음의 기능을 제공한다.
파일 및 코맨드(태스크)를 발생하여 그들의 호스트 상에 컴포넌트 인스턴스를 설치, 설치해제 또는 재설치함 - 변경 요구가 새로운 컴포넌트 인스턴스, 컴포넌트 인스턴스의 제거, 또는 설치해제 또는 재설치를 요구하는 컴포넌트로의 변경을 발생시키면, SDU(204) 내에서 인스턴스, 호스트 인스턴스, 컴포넌트와 관련된 정의 및 이들 정의와 관련된 바이너리에 대한 세팅을 획득하고, 배치 엔진을 통한 수동 실행 또는 디스패치(dispatch)를 위해 준비된 타겟 서버 상에 설치 또는 설치해제를 수행하는 데에 필요한 파일 및 코맨드를 생성하는 것을 인스턴스 매니저이다.
파일 및 코맨드(예를 들어, 태스크)를 발생하여 그 세팅 변경시 또는 그 엔드포인트 중의 하나로부터의 관찰이 변경될 때 (예를 들어, 통신 관계 토폴로지 변경 또는 가시적인 엔드 포인트가 세팅 변경을 갖는 것에 의해) 컴포넌트 인스턴스를 갱신.
컴포넌트 인스턴스의 엔드포인트 상의 가시적인 엔드포인트 인스턴스를 컴포넌트 인스턴스 상의 세팅으로 맵핑 - SDM에서, 컴포넌트 인스턴스는, 일부의 통신 관계 토폴로지의 결과로서, 다른 엔드 포인트 인스턴스를 볼 수 있는 엔드포인트 인스턴스를 갖는다. 다른 엔드포인트 인스턴스의 세부사항은 컴포넌트 인스턴스가 런타임에서 페칭(fetch)되어 결합할 수 있도록 하는 세팅으로 맵핑된다. 예를 들어, 웹 사이트는 데이터베이스 클라이언트 엔드포인트 인스턴스를 가질 수 있고, 따라서 통신 관계가 데이터베이스로서 확립될 수 있다. 정확하게 확립되면, 그 데이터베이스 클라이언트 엔드포인트는 단일 데이터베이스 서버 엔드포인트 인스턴스 및 그 서버 엔드포인트 상의 세팅을 관찰할 수 있다. 이 정보는 인스턴스 매니저에 의해 사용되어 클라이언트 엔드포인트의 이름하에 구성 파일 내의 서버에 대한 접속 스트링을 배치한다. 최종 결과는 코드가 그 구성 세팅으로부터 데이터베이스에 대한 접속 스트링을 간단히 판독하는 것이다.
파일 및 코맨드(태스크)를 발생하여 컴포넌트 인스턴스를 편집 - 편집은 존재 및 정확한 세팅을 확인한다. 이것은 또한 호스트 인스턴스 세팅에 적용될 수 있다.
임의의 태스크에 대하여 상태를 보고함 - IM은 캡쳐된 부분 또는 완전한 출력을 변형하고 그 태스크의 상태를 성공, 실패, 불완전 및 불완전에 대한 선택적 제공 프로그레스(% 또는 최종 응답), 실패에 대한 세부사항(에러 메시지) 및 임의의 상태에 대한 인간 판독가능 로그로서 제공한다. 인스턴스 매니저로 되돌아가서 태스크의 출력을 해석함으로써, 인스턴스 매니저는 인간 판독가능한 채로 유지되면서 진단을 위한 충분한 로깅을 생성해야 하도록 시도하기 보다는 그 태스크 로그 구조화 정보(예를 들어 XML 또는 심지어 SOAP)를 자유롭게 갖는다.
인스턴스 매니저는 또한 호스트와 그들의 게스트들간의 제한 검사를 수행하는 코드를 포함할 수 있다. 설치자는 예를 들어, XML, XPath 및 XQuery에 기초한 공통 제한 언어를 사용할 수 있다.
계층화(Layering)
SDM 모델은 애플리케이션의 개발자, 소프트웨어 하부구조의 설계자 및 데이터 센터의 아키텍트 간의 관심을 분리시킨다. 이들 그룹의 각각은 특정 서비스에 초점을 맞추고 일련의 다른 관심사를 갖는다. 예를 들어, 개발자는 그들이 SQL, IIS 및 CLR 등을 이용하는 호스트 간의 구성 및 접속에 주로 관심을 가질 수 있다. 호스트 구성 설계자는 주로 네트워크 토폴로지와 OS 구성에 관심을 가질 수 있다. 네트워크 토폴로지, OS 구성 및 스토리지 맵핑을 개발하는 아키텍트는 데이터 센터에 존재하는 하드웨어에 주로 관심을 가질 수 있다.
SDM은 수평 및 수직 축에 걸쳐 시스템의 기능적 조합을 가능하게 한다. 수직 축에 따른 조합은 시스템 및 서브시스템으로 수행된다. 수직 축에 따른 조합은 "계층"으로 수행된다. 애플리케이션, 서비스, 네트워크 토폴로지 및 하드웨어는 분산형 시스템에서 역할을 다하지만, 통상적으로 상이한 팀 또는 조직에 의해 독립적으로 정의되고 소유된다. 계층화는 호스트에 대한 제한 세트를 정의하는 컴포넌트에 의해 또는 그 반대에 의해 달성된다.
관심의 이러한 분리를 지원하기 위하여, SDM은 계층화 개념을 노출시킨다.계층화는 애플리케이션의 포함 구조의 일부로서 이들 서비스를 선언하지 않고 그것이 의존하는 서비스에 애플리케이션을 결합하기 위해 호스팅 관계를 이용하는 것을 의미한다. 계층화는 상이한 시간 및 상이한 레벨로 상이한 개체에 의해 시스템이 개발되는 것을 가능하게 한다.
도 7은 계층화된 세팅을 나타낸다. 4개의 계층, 즉, 계층(702), 계층(704), 계층(706) 및 계층(708)이 도 7에 도시된다. 도 7에는 4개의 계층이 도시되었지만, 계층의 실제 수는 변경될 수 있으며 4개보다 많을 수도 있고 적을 수도 있다. 또한, 다른 계층의 콘텐츠는 다른 실시예에서 변경될 수 있다. 도 7에 도시된 바와 같이, 상이한 계층들은 각기 다른 계층들의 상부 및/또는 하부에 놓인다{예를 들어, 계층(706)은 계층(704)의 위에 놓이지만 계층(708)의 아래에 놓인다}.
계층 내의 상이한 시스템들 및 서브시스템들은 서로 상호작용할 수 있고 다른 계층의 시스템 및 서브시스템과 상호작용할 수 있다. 예를 들어, 계층(708) 내의 서브시스템(710)은 계층(708) 내의 서브시스템(712)과 상호작용할 수 있고 계층(706) 내의 서브시스템(714)과도 상호작용할 수 있다. 또한, 각 계층은 후속하는 상위 계층에 대한 환경으로서 간주될 수 있다. 예를 들어, 계층(706)은 계층(708) 내의 시스템 및 서브시스템에 대한 환경인 한편, 계층(704)은 계층(706) 내의 시스템 및 서스시스템에 대한 환경이다. 계층(702, 704, 706, 708)의 각각은 그 고유의 관련된 SDM 문서를 갖는다.
상이한 계층(702, 704, 706, 708)들은 상이한 콘텐츠를 나타낼 수 있다. 소정의 실시예에서, 계층(702)은 하드웨어 계층이고, 계층(704)은 네트워크 토폴로지및 오퍼레이팅 시스템 계층이고, 계층(706)은 애플리케이션 호스트 계층이고, 계층(708)은 애플리케이션 계층이다. 하드웨어 계층은 계층화된 시스템이 설치된 물리적 장치(예를 들어, 컴퓨팅 장치)를 나타낸다{예를 들어, 도 1의 장치(102)}. 네트워크 토폴로지 및 오퍼레이팅 시스템 계층은 컴퓨팅 장치의 네트워크 토폴로지 및 이들 컴퓨팅 장치 상에 설치되는 오퍼레이팅 시스템을 나타낸다{예를 들어, 도 1의 네트워크 세팅(100)}. 애플리케이션 호스트 계층은 다른 애플리케이션을 호스팅할 수 있는 컴퓨팅 장치상에 설치된 애플리케이션을 나타낸다(예를 들어, SQL 서버, IIS 등). 애플리케이션 계층은 다른 애플리케이션을 호스팅하지 않는 컴퓨팅 장치 상에 설치된 애플리케이션을 나타낸다(예를 들어, 게임 등의 엔터테인먼트 애플리케이션, 워드 프로세서 등의 생산성 애플리케이션, 전자 사전 등의 참조 애플리케이션, 웹 서비스 또는 금융 분석에 사용될 수 있는 분산형 애플리케이션 등).
SDM 구현예
다음의 설명은 SDM의 요소를 정의하는 스키마의 실시예를 기재한다.
1. 정의
용어 정의
변경 요구 변경의 세트를 모델링된 시스템으로 설명하는 선언적 문서
완전히 인가된 변경 요구 모델 평가 스테이지를 통과하고 현재 타겟 시스템에 대하여 실행될 준비가 된 변경 요구
추상 타입 모델링된 시스템 객체에 대하여 작동하기 위하여 필요한 세팅을 정의하는 데 사용되는 타입
구체적 타입 멤버 타입과 관계에 대한 정의를 포함하는 모델링된 시스템 객체의 재사용가능한 정의
관계 모델링된 시스템 요소들간의 상호작용을 설명하는 데 사용되는 sdm 객체
시스템 정의 모델(SDM) 문서 추상 객체, 구체적 타입 및 관계에 대한 정의를 포함하는 xml 문서
소프트웨어 분산 유닛(SDU) 타입을 SDM 관리 시스템에 배치하는 데 사용되는 관련 바이너리 정보(파일) 및 SDM 문서의 세트의 조합
SDM 층 층은 그 층 내에 모델링된 객체에 지정된 추상 객체의 세트이다. 예를 들어, 애플리케이션 층 타입은 웹 애플리케이션 및 데이터베이스를 포함할 수 있지만, 오퍼레이팅 시스템 층은 파일 시스템 및 네트워크 장치를 위한 타입을 포함할 수 있다. 어떤 타입은 층에 할당되지 않고 대신에 층의 범위에 걸쳐 사용될 수 있다.
SDM 인스턴스 공간 모델링된 시스템을 나타내는 구체적 타입과 관계 인스턴스의 세트
2. 아키텍쳐 개요
시스템 정의 모델(SDM)은 분산형 시스템(모델링된 시스템) 내의 컴포넌트들의 구성, 상호 작용 및 변경의 설명을 지원하기 위하여 설계된다.
SDM은 객체 관계 모델에 기초한다. 우리는 객체를 사용하여 시스템 내에 존재하는 엔티티와 관계를 설명하여 그들간의 링크를 식별한다. SDM은 또한 객체 및 관계를 구별하고 SDM에 중요한 시멘틱을 캡쳐한다. 특히, 우리는 객체를 시스템, 엔드포인트 및 리소스로 분할하고, 관계를 통신, 포함(containment), 호스팅, 델리게이션(delegation) 및 참조로 분할한다.
우리는 추상 정의를 사용하여 광범위한 애플리케이션을 위한 툴 지원을 허용하고 설계 시간에 검사하는 타입에 대한 기본을 제공하는 시스템 부분의 공통 카테고리화를 제공한다. 우리는 추상 정의의 세트를 예상하여 시스템 설계에 대한 포괄적인 기본을 제공하고 그들이 시간에 따라 천천히 변경될 것을 예상한다.
우리는 실제 애플리케이션의 부분 또는 데이터센터 설계를 나타내는 구체적 객체 정의를 작성한다. 우리는 추상 객체 정의를 취하고 구체적 타입의 멤버 및 그 특성에 대한 세팅 값을 정의하는 구현을 제공한다. 그후, 우리는 이들 정의의 수집으로부터 시스템을 작성한다.
제한은 인스턴스가 참여할 수 있는 관계의 허용된 세트에 관한 한정을 모델링하는 데 사용된다. 우리는 제한을 사용하여 관계에 포함된 객체의 구성에 의존하는 미세한 요구사항(fine-grained requirements)을 캡쳐한다. 예를 들어, 제한은 통신 프로토콜의 각각의 엔드 상의 참여자가 호환가능한 보안 세팅을 사용하는 것을 유효화하는 데 사용될 수 있다.
타겟 시스템 상의 변경을 달성하기 위하여, SDM은 변경 요구라 불리우는 요구된 변경의 선언적 설명을 사용한다. SDM은 SDM 실행 모델의 부분으로서 변경 요구를 확장, 유효화 및 실행하는 데 사용되는 프로세스를 정의한다.
인스턴스 공간은 관리된 애플리케이션의 원하는 및 현재의 상태 모두를 캡쳐한다. 우리는 인스턴스 공간의 변경을 추적하고 이들을 변경을 개시하는 변경 요구와 관련시킨다.
다음의 uml 다이어그램은 sdm 모델 내의 객체들 사이의 광대한 상호작용을 캡쳐한다. 간략화를 위하여, 이들 상호작용 중의 일부는 베이스 타입들 사이에 정의되었으며, 실제 상호 작용은 도출된 타입(derived type)들 사이에 존재하고 따라서 더 특수화된다. 예를 들어, 통신 관계는 추상 엔드포인트 정의만을 참조할 수 있다.
Sdm 문서는 문서를 설명하는 정보, 문서 내의 정의에 대한 매니저, 다른 문서를 참조하는 임포트 명령문(import statement) 및 정의 세트를 포함한다.
도 8은 문서의 일례를 나타낸다.
모든 sdm 정의는 공통 기본 정의로부터 도출되고 도 9에 도시된 바와 같이 멤버를 포함할 수 있다. 정의와 멤버 간의 관계는 다음의 도면에 도시된 것보다 더 복잡할 수 있다.
멤버는 도 10에 도시된 것을 참조한 정의의 종류에 의해 분할된다.
세팅 선언은 세팅 정의를 참조한다. 세팅 값과 값 리스트는 도 11에 도시된 바와 같이 세팅을 위한 값을 제공한다.
2.1 SDM 애플리케이션의 라이프사이클
소정의 실시예에 따른 SDM 애플리케이션의 라이프사이클의 일례가 도 12에 도시된다.
애플리케이션은 비쥬얼 스튜디오 환경 내에서 설계되고 구현된다(블록 1202). 개발자는 컴포넌트들을 구현한 후 그들을 복합 컴포넌트들 내에서 결합한다. 애플리케이션은 SDM 파일 내에 설명된다. 그들의 애플리케이션이 특정 데이터센터 내에 배치되는 것을 검증하기 위하여, 개발자는 그들의 애플리케이션을 SDM 파일 내에 설명된 데이터센터의 표시에 결합할 것이다(블록 1204). 이 표시는 그들의 애플리케이션 컴포넌트들의 호스트들에 대한 정의와 그들의 애플리케이션의구성에 대한 제한을 포함할 것이다. 결합이 실패하면, 개발자는 그들의 애플리케이션 설계를 변경할 수 있다.
개발자가 일단 그들의 애플리케이션으로 만족하면, 애플리케이션과 관련된 강력한 이름과 버전으로 그 애플리케이션을 서명하여 공표한다(블록 1206). 애플리케이션의 공표된 형태는 소프트웨어 분산 유닛(SDU)이라 불리운다. 오퍼레이터는 개발자로부터 SDU를 얻어 애플리케이션을 SDM 런타임으로 로딩한다(블록 1208). 애플리케이션을 로딩하는 프로세스에서, 오퍼레이터는 그들이 애플리케이션을 결합하기를 원하는 데이터센터의 모델을 선택한다. 오퍼레이터가 애플리케이션을 배치할 것을 선택하면, 그들은 배치 시간 파라미터를 애플리케이션에 공급하고, 그들은 애플리케이션의 스케일을 결정한다(블록 1210). 이것은 변경 요구를 사용하여 수행된다.
일단 애플리케이션이 배치되면, 오퍼레이터는 런타임과 상호작용하여 애플리케이션의 구성과 애플리케이션의 각 부분에 대한 세팅을 결정할 수 있다(블록 1212). 런타임은 또한 애플리케이션의 실제 구성이 런타임 내에 레코딩된 원하는 구성과 일치하는지를 검증할 수 있다. 오퍼레이터는 변경 요구를 제출함으로써 배치된 애플리케이션을 제거할 수 있다(블록 1214). 오퍼레이터는 또한 서비스 팩을 제거하는 등의 실행 애플리케이션에 수행되는 개별 변경을 롤백(rollback)할 수 있다. 블록(1216)에서, 실행 애플리케이션의 구성은 웹 프론트엔드(web frontends) 등에 배치된 애플리케이션의 부분을 부가 또는 제거함으로써 변경될 수 있다. 애플리케이션은 또한 애플리케이션 컴포넌트들 중 하나 이상의 더 새로운 버전을 설치함으로써 업그레이드될 수 있다.
2.2 추상 객체와 관계 정의
추상 객체 정의는 설계 시간에 애플리케이션 구성을 검사한 후 배치하기 위하여 필요한 빌딩 블록을 정의하고 런타임에서 애플리케이션을 관리한다. 이들 빌딩 블록은 모델링된 시스템 내에 존재하는 엔티티를 나타낸다. 예를 들어, 우리는 추상 객체 정의를 사용하여 파일 및 디렉토리, 웹 서버 내의 구성 또는 sql 서버 내의 데이터베이스를 모델링한다.
우리는 추상 관계 정의를 사용하여 추상 객체 정의 사이에서 발생할 수 있는 상호작용을 모델링한다. 관계는 바이너리이고 관계의 표명에 참여하는 인스턴스를 정의하는 객체 정의를 식별하도록 지시된다. 관계는 객체들을 함께 결합하는 방법을 제공하여 포함, 구성 및 객체간의 통신 링크를 모델링할 수 있다.
제한은 그후 객체에 의해 사용되어 그들이 관계에 의해 참여하여 링크될 수 있는 객체를 제한하는 관계를 제한한다. 이들 제한은 정의 및 관계에 참여하는 세팅을 목표로 할 수 있다. 이것은 제한이 특정 정의로부터 도출되는 인스턴스로 관계의 참여자를 좁히도록 하고 인스턴스가 특정 범위내에 있는 세팅 값을 갖는 것을 요구한다.
우리는 객체 정의를 세가지 카테고리, 즉, 시스템, 엔드포인트 및 리소스로 분할한다.
추상 시스템 정의는 애플리케이션의 자기 포함 독립 배치가능 부분(self-contained independently deployable parts)을 설명하는 데 사용된다. 이들 정의는 프로세스 및 머신 경계를 횡단할 수 있는 잘 정의된 통신 채널을 통해 상호작용하는 애플리케이션의 부분을 나타낸다.
추상 엔드포인트 정의는 시스템이 노출할 수 있는 통신 엔트포인트를 설명하는 데 사용된다. 이들은 설계 시간에 시스템 접속성을 검증하고 런타임에서 접속을 가능하게 하기 위하여 시스템이 알아야 하는 통신의 모든 형태를 모델링하는 데 사용된다.
추상 리소스 정의는 시스템 내에 포함된 거동을 설명한다. 리소스 정의는 다른 리소스 정의에 대한 강한 종속성을 가질 수 있다. 이들 종속성은 특정 설치 순서를 요구하고 증명되지 않은 통신 메카니즘을 통해 런타임 상호작용을 개시하는 것을 포함할 수 있다.
모든 추상 객체 정의는 세팅을 노출하는 능력을 공유한다. 이들 세팅은 세팅의 타입을 정의하기 위하여 xml 스키마를 사용하는 간단한 이름-값 쌍이다. 세팅은 동적이거나 정적일 수 있으며, 정적인 경우에는 배치 프로세스동안만 세팅될 수 있을 뿐이고, 동적인 경우에는 배치 후에 변경될 수 있다. 운영 시스템에 세팅 값을 적용하는 코드는 SDM 런타임 내에 호스팅된다.
SDM은 추상 객체 정의에 대하여 상속(inheritance)을 지원한다. 도출된 정의는 그 부모들에 의해 노출된 특성을 확장할 수 있고 그들 부모의 특성에 대한 값을 세팅할 수 있다. 도출된 정의는 참여자로서 그들의 부모를 식별하는 관계들 중의 임의의 것에 참여할 수 있다.
관계 정의는 5가지의 카테고리, 즉, 통신, 포함, 델리게이션, 호스팅 및 참조로 분할된다.
통신 관계는 추상 엔드포인트 정의 간의 잠재적인 통신 상호작용을 캡쳐하는 데 사용된다. 통신 관계의 존재는 시스템이 통신하기 위하여 식별된 정의의 엔드포인트를 노출하는 것이 가능함을 표시한다. 링크의 실제 확립은 엔드포인트에 대한 제한과 엔드포인트의 노출에 종속된다.
포함 관계는 추상 객체 정의가 또다른 추상 객체 정의의 멤버를 포함하는 능력을 설명한다. 더 상세하게는, 2개의 추상 객체 정의 A와 B 간의 포함 관계는 A를 구현하는 구체적 객체 정의가 B를 구현하는 구체적 객체 정의의 멤버를 포함하도록 한다.
우리는 포함을 사용하여 개발자가 애플리케이션을 작성할 때 발생하는 자연적 네스트된(nested) 구조를 모델링한다. 멤버 객체를 포함함으로써, 부모는 포함된 객체의 수명 및 가시성을 제어할 수 있다. 런타임 공간 내의 모든 객체 인스턴스는 다른 객체 인스턴스의 멤버로서 존재하고, 완전히 접속된 인스턴스의 세트를 형성한다. 따라서, 포함 관계의 세트는 인스턴스 공간 내에 발생하는 허용된 포함 패턴을 설명한다.
델리게이션 관계는 포함된 객체 멤버를 선택적으로 노출하는 데 사용되고, 특히, 우리는 델리게이션을 사용하여 시스템 정의로부터 엔드포인트 멤버를 노출한다. 서브시스템으로부터 엔드포인트를 델리게이트함으로써, 외부 시스템은 프로토콜을 초월하는 구현을 노출하지 않고 특정 프로토콜에 의한 통신 능력을 노출한다.
호스팅 및 참조 관계는 2가지 형태의 종속성 관계이다. 호스팅 관계는 구체적 객체의 인스턴스가 생성될 수 있기 전에 존재해야 하는 추상 객체 사이의 1차 종속성을 설명한다. 모든 인스턴스는 게스트로서 정확히 하나의 호스팅 관계에 참여해야 하고, 인스턴스 공간을 통해 완전히 접속된 트리를 형성하는 호스팅 관계를 발생시킨다. 참조 관계는 파라미터 플로우 및 구성 순서화를 위하여 사용될 수 있는 추가의 종속성을 캡쳐한다.
2.3 구체적 객체 및 관계 정의
우리는 추상 객체 정의로부터 구체적 객체 정의를 작성하고 추상 관계 정의로부터 구체적 관계 정의를 작성한다.
추상 객체 정의와 추상 관계 정의의 조합은 타겟 시스템을 모델링하기 위한 스키마를 정의한다. 구체적 객체 정의의 역할은 하나 이상의 추상 정의에 기초하여 재사용가능한 구성을 생성하도록 추상 정의 공간의 서브세트를 사용하는 것이다. 간단한 유추로서, 추상 정의 공간은 데이터베이스에 대한 스키마에 비교될 수 있고, 구체적인 객체 정의는 데이터베이스 내의 행의 세트에 대한 재사용가능 템플릿을 나타낸다. 행은 단지 구체적 객체의 인스턴스가 생성될 때 데이터베이스 내에 생성된다. 설계 시간 유효화를 수행하기 위하여, 우리는 스키마(예를 들어, 이질적인 키 등)의 제한에 대한 데이터베이스 내의 행을 유효화하는 것과 동일한 방법으로 추상 정의 공간에 대하여 구체적 객체 정의를 유효화할 수 있다.
각각의 구체적인 객체 정의는 특정 추상 객체 정의에 구현을 제공한다. 구현은 세팅 스키마에 대한 확장, 세팅을 위한 값 및 객체 멤버를 위한 선언, 관계 멤버 및 제한 멤버 및 플로우 멤버를 포함한다. 구체적인 객체의 거동은 추상 객체의 정의를 따른다: 추상 시스템 정의는 구체적 시스템 정의가 되고, 추상 엔드포인트 정의는 구체적 엔드포인트 정의가 되고, 추상 리소스 정의는 구체적 리소스 정의가 된다.
각각의 구체적 관계 정의는 특정 추상 관계 정의에 구현을 제공한다. 구현은 세팅 선언 및 값, 동일한 관계 카테고리의 네스트된 멤버(호스팅, 포함, 통신 등), 및 관계에 참여할 수 있는 타입에 관한 제한을 포함할 수 있다.
구체적인 호스팅 관계는 하나의 구체적 객체의 멤버의 또다른 구체적 객체에 대한 맵핑을 정의하는 데 사용된다. 예를 들어, 구체적 호스팅 관계는 웹 애플리케이션과 배치될 IIS 호스트 간의 결합을 식별하는 데 사용될 수 있다. 하나 이상의 구체적 호스팅 관계는 개발자가 특정 토폴로지에 대한 다른 배치 구성을 정의하도록 하는 주어진 타입을 위하여 존재할 수 있다.
2.4 멤버
구체적 타입은 다른 구체적 또는 추상 객체의 멤버를 선언할 수 있다. 우리는 이들을 객체 멤버라 부른다. 이들 멤버는 객체 멤버 사이의 관계를 정의하는 관계 멤버로부터 참조된다.
객체 멤버는 특정 객체 정의의 인스턴스를 생성하는 데 사용된다. 세팅 플로우는 객체에 대한 값을 제공하는 데 사용된다. 객체 멤버를 선언할 때, 사용자는 객체 멤버가 외부 시스템이 생성되는 것과 동시에 생성되는지(값 시멘틱), 또는 나중에 발생하는 명시적인 새로운 동작에 의해 생성되는지(참조 시멘틱)를 결정할 수 있다.
관계 멤버는 객체 멤버가 생성될 때 참여하는 관계를 정의한다. 객체 멤버가 그 부모에 의해 포함되면, 포함 관계 멤버는 타입 멤버와 외부 타입 사이에서 선언될 것이다. 객체 멤버가 델리게이트되면, 델리게이션 관계 멤버는 객체 멤버 및 네스트된 객체 멤버 사이에서 정의된다. 통신 관계 멤버는 객체 멤버 상의 엔드포인트 사이에서 선언될 수 있고 종속성 관계 멤버(참조 및 호스팅)는 객체 멤버 또는 네스트된 객체 멤버 사이에서 선언될 수 있다.
관계 제한은 특정 객체가 자발적으로 참여하는 관계의 세트를 좁히는 데 사용된다. 이들은 특정 관계에 대한 제한 및 관계의 다른 엔드에서의 참여자에 대한 제한을 식별한다.
2.5 인스턴스 공간
SDM 런타임에 저장된 인스턴스 공간은 모델링된 시스템의 현재 상태를 반영한다. 런타임은 생성된 인스턴스의 완전한 레코드 및 이들 인스턴스들간의 관계를 포함한다. 각각의 인스턴스는 각각의 버전이 변경 요구에 링크된 관련된 버전 히스토리를 갖는다.
새로운 인스턴스를 생성하는 프로세스는 변경 요구에 의해 개시된다. 변경 요구는 타입에 대한 생성, 갱신 및 삭제 요구의 세트 및 기존의 인스턴스의 특정 멤버와 관련된 관계를 정의하고, 루트(root)는 특별한 경우이다.
변경 요구는 런타임에 의해 확장되고 모든 제한에 대하여 검증된 후 구성된다. 확장 프로세스는 객체를 포함하는 구성 요구의 부분으로서 암시적으로 구성되는 객체 및 관계 인스턴스를 식별하고 그후 세팅 플로우가 모든 관계에 걸쳐 평가된다. 검증 단계는 모든 요구된 관계들이 존재하는지, 그리고 그 관계들이 모든 제한을 이행하는지를 검사한다. 마지막으로, 구성 프로세스는 각각의 인스턴스의 배치, 갱신 또는 제어에 대하여 적절한 순서를 결정하고 그후 정확한 시퀀스로 각각의 인스턴스를 인스턴스 매니저에 전달하여 적절한 액션을 수행한다.
2.6 계층화(layering)
SDM 모델의 목표는 애플리케이션의 개발자, 소프트웨어 인프라스트럭쳐의 설계자 및 데이터센터의 기획자 간의 관심의 분리를 허용하는 것이다. 이들 그룹의 각각은 특정 서비스에 초점을 맞추고 다른 종속성 세트를 갖는다.
예를 들어, 개발자는 주로 구성 및 SQP, IIS 및 CLR 등에 의존하는 호스트들간의 접속성에 대하여 관심을 갖는다. 호스트 구성의 설계자는 네트워크 토폴로지 및 OS 구성에 대하여 관심을 갖는 한편, 네트워크 토폴로지, OS 구성 및 저장 맵핑을 개발하는 기획자는 데이터센터에 존재하는 하드웨어에 대하여 알 필요가 있다.
관심의 분리를 지원하기 위하여, SDM은 계층화의 개념을 노출한다. 계층화는 호스팅 관계를 사용하여, 애플리케이션이 종속하는 서비스들을 애플리케이션의 포함 구조의 부분으로서 선언하지 않고서, 애플리케이션을 그러한 서비스들에 결합시킨다.
우리는 SDM 모델의 부분으로서 4개의 층을 식별한다.
애플리케이션 층
애플리케이션 층은 제한된 컨텍스트 내에서 애플리케이션의 구성을 지원한다. 컨텍스트는 호스트 층 내에 식별된 호스트의 구성에 의해 정의된다.
애플리케이션 층 내의 시스템 정의의 예는 웹 서비스, 데이터베이스 및 비즈토크 스케쥴(biztalk schedules)을 포함한다.
호스트 층
소프트웨어 컴포넌트들 중에서 데이터센터를 작성. 컴포넌트들 사이의 접속을 구성. 이들 컴포넌트들의 일부가 애플리케이션 층에 대한 호스트로서 활동한다.
이러한 층 내의 시스템 정의의 예 - IIS, SQL, AD, EXCHANGE, DNS 및 비즈토크(Biztalk).
네트워크/OS/저장 층
데이터 센터 네트워크 및 플랫폼 작성. 네트워크 보안 모델 및 오퍼레이팅 시스템 플랫폼 구성을 구성. 저장장치를 오퍼레이팅 시스템 구성에 부가.
이러한 층 내의 시스템 정의의 예 - VLAN, Windows, 필터, 저장장치
하드웨어 층
하드웨어 층은 데이터센터 내에 존재하는 머신의 타입 및 이들 머신들 사이에 존재하는 물리적 접속을 식별한다.
도 13은 층 4 웹 애플리케이션을 층 3 웹 서버에 맵핑한 예를 나타낸다. 각층의 외부 박스는 시스템을 나타내고, 경계 상의 박스는 엔드포인트를 나타내고 내부의 박스는 리소스를 나타낸다. 우리는 호스팅 관계를 통해 이들 요소의 각각을 이하의 층의 호스트에 맵핑한다.
시스템의 요구된 관계를 만족하기 위하여, 우리는 그 시스템을 일치 능력을갖는 호스트 시스템에 결합한다. 우리는 이 프로세스를 플레이스먼트(placement)라 부른다. 설계시에, 우리는 가능한 플레이스먼트를 나타내는 구체적 호스트 관계를 구성한다. 배치시에, 우리는 구체적 호스팅 관계의 인스턴스를 실증하여 게스트 시스템 인스턴스를 호스트 시스템 인스턴스에 결합한다.
2.7 모델 평가
SDM 모델은 분산된 시스템으로의 변경을 관리하는 잘 정의된 프로세스와 관련된다.
각각의 변경은 요구의 액션이 분산된 후 타겟 시스템에 대하여 실행되기 전에 몇개의 처리 단계를 통과한 선언적 변경 요구에 의해 유도된다.
3. 구현 세부사항
3.1 명명
SDM 내에는, 객체를 식별하는 강력한 명명 시스템을 필요로 하는 다수의 장소가 있다. 다음의 명명 시스템은, 정의의 사용자가, 해당 정의가 개발자가 원래 공표한 것과 동일하다는 것을 확인할 수 있는 방법으로 타입의 생성자가 정의에 서명할 수 있게 한다.
다음의 헤더는 sdm 이름공간(namespace)에 대한 식별자의 예이다.
또다른 이름공간 내의 타입을 참조하기 위하여 이름공간을 임포트시킬 필요가 있다.
그후, 이름공간 내에서 타입을 지칭하는 별칭(alias)을 사용할 수 있다.
3.1.1 식별정보(Identity)
SDM 이름은 그들이 정의되는 이름공간에 의해 제한된다. 이름공간은 이름, 버전, 언어 및 공개 키 토큰에 의해 식별되고 단일 파일 내에 포함된다.
식별의 기본 형태는 이름, 버전, 컬쳐(culture), 플랫폼 및 공개 키 토큰을 포함한다.
속성/요소 설명
name sdm 파일의 이름은 개발자가 파일의 콘텐츠를 참조하는 데 사용할 수 있는 친근한 이름이다. 공개 키 토큰과 결합된 이름은 파일에 대한 강력한 이름을 제공한다.
version 버전은 파일의 콘텐츠의 버전을 식별하는 데 사용된다. 파일의 모든 요소는 동일한 버전 번호를 채택한다.
PublicKeyToken 공개 키 토큰은 파일과 관련된 공개 키에 대한 짧은 이름이다.
culture 바이너리의 컬쳐. 중립에 대한 디폴트.
platform 바이너리에 대한 지원된 플랫폼.
기본 식별정보는 기존의 식별정보 또는 서명 및 공개 키를 결합하여 참조하는 데 사용되어, 새로운 강력한 식별정보를 생성한다. 문서는 개인 키를 사용하여서명되고 문서의 사용자가 공개 키를 사용하여 그 콘텐츠를 검증하도록 허용한다.
속성/요소 설명
signature 포함된 sdm 타입 정의의 서명된 해쉬(hash)
publickey 파일의 서명을 검사하는 데 사용될 수 있는 공개 키
공개 키 토큰은 공개/개인 키 쌍의 공개 부분을 식별하는 16 문자 헥스 스트링(16 character hex string)이다. 이것은 공개 키가 아니고, 단순히 공개 키의 64 비트 해쉬이다.
3.1.2 버전
파일 버전은 형태 N.N.N.N의 4개의 부분 번호에 의해 정의된다. 여기서, 0<=N<65535이다. 협약(convention)에 의해 번호는 Major.Minor.Build.Revision를 지칭한다.
3.1.3 간단한 이름
간단한 이름은 영숫자 문자 및 제한된 구두점으로 구성된다. 이름은 수가아닌 문자로 시작해야 한다.
우리는 식별자에 대한 C# 정의에 맞추는 계획을 세웠다; 적절한 섹션(2.4.2)이 이하에서 삽입되었다. 스펙은 다음에서 찾을 수 있다.
http://devidiv/SpecTool/Documents/Whidbey/VCSharp/Formal%20Language%20Sepcification/Csharp%20Language%Specification.doc
우리는 sdm 모델 내에서 "@" 접두어를 갖는 이름을 지원하지 않음을 주의한다.
이 섹션에 주어진 식별자의 규칙은, 언더스코어(underscore)가 초기 문자로서 허용되는 것(C 프로그래밍 언어에서 일반적임), 유니코드 이스케이프 시퀀스가 식별자 내에서 허용되는 것, "@" 문자가 접두어로서 허용되어 키워드가 식별자로서 사용되도록 하는 것을 제외하고, 정확하게 유니코드 표준 부록 15(UnicodeStandard Annex 15)에 에 의해 추천된 것에 대응한다.
상술한 바와 같은 유니코드 문자 클래스에 관한 정보에 대하여, 유니코드 표준 부록, 버전 3.0, 섹션 4.5를 참조하기 바란다.
유효 식별자의 예는 "idenfifier1", "_identifier2", 및 "@if"를 포함한다. 합치 프로그램(conforming program) 내의 식별자는 유니코드 표준 부록 15에 의해 정의된 바와 같이 유니코드 정규화 양식 C(Unicode Normalization Form C)에 의해 정의된 정규의 포맷 내에 있어야 한다. 정규화 양식 C에 있지 않은 식별자와 마주칠 때의 거동은 구현에 따라 정의되지만, 진단은 요구되지 않는다.
접두어 "@"는 식별자로서 키워드의 사용을 가능하게 하고, 다른 프로그래밍 언어와 인터페이스할 때 유용하다. 문자@는 실질적으로 식별자의 부분이 아니며, 따라서, 식별자는 접두어없이 정상 식별자로서 다른 언어로 표시될 수 있다. @ 접두어를 갖는 식별자는 축어적 식별자(verabtim idenfifier)라 불리운다. 키워드가 아닌 식별자를 위한 @ 접두어의 사용은 허용되지만, 스타일의 문제로서 강력하게 방해된다.
예:
는 "boo1"으로 명명된 파라미터를 취하는 "static"으로 명명된 정적 방법(static method)을 갖는 "class"로 명명된 클래스를 정의한다. 유니코드 이스케이프(Unicode escape)는 키워드 내에서 허용되지 않으므로, 토큰"c1\u0061ss"은 식별자이고, "@class"와 동일한 식별자이다.
2개의 식별자가 다음의 변환이 순서대로 적용된 후에 동일한 경우, 이러한 2개의 식별자는 동일한 것으로 간주된다.
접두어"@"는 사용되면 제거된다.
각각의 unicode-escape-sequence는 그 대응하는 유니코드 문자로 변환된다.
임의의 formatting-character들이 제거된다.
2개의 연속된 유니코드 문자(U+005F)를 포함하는 식별자는 구현에 의해 사용하도록 저장된다. 예를 들어, 구현은 2개의 언더스코어로 시작하는 확장된 키워드를 제공한다.
3.1.4 저장된 이름(Reserved names)
다음은 저장된 이름의 리스트이며, SDM 모델 내의 객체에 대한 이름을 생성할 때 사용자는 이러한 저장된 이름들을 이용할 수 없다.
소정의 컨텍스트 내에서, 소정의 이름이 저장될 것이다.
콘텍스트 이름
추상 및 구체적 정의 이것
추상 및 구체적 호스팅 관계 정의 게스트, 호스트
추상 및 구체적 포함 관계 정의 부모, 멤버
추상 및 구체적 통신 관계 정의 클라이언트, 서버
추상 및 구체적 참조 관계 정의 소스, 종속
추상 및 구체적 델리게이션 관계 정의 프록시, 델리게이트
이들 이름은 CLR과의 통합 때문에 저장된다.
3.1.5 다른 이름공간에 대한 참조
우리는 이름공간을 현재의 이름공간에 임포트하고, 별칭을 이름공간에 관련시킴으로써, 이름공간이 다른 이름공간을 참조하는 것을 허용한다. 임포트된 이름공간은 이름, 버전 및 공개 키 토큰에 의해 참조된다. 버저닝은 섹션 3.16에 설명될 것이다.
속성/요소 설명
alias 별칭은 현재의 sdm 파일의 범위 내의 외부 sdm 파일을 참조하는 데 사용된다.
3.1.6 인가된 경로(Qualified Path)
인가된 경로는 현재의 이름공간 또는 별칭을 갖는 이름공간(aliased namespace)에 정의된 정의 또는 매니저로 지칭되는 이름이다.
[<alias>:]<simpleName>(.<simpleName>)*
별칭은 임포트 명령문 내에 정의된다. 다음의 간단한 이름은 타입, 또는 경로의 경우에서의 네스트된 타입을 식별한다.
3.1.7 정의 및 멤버 경로
경로는 멤버 또는 세팅을 식별하는 이름의 시퀀스이다. 경로는 자신과 관련된 관계 또는 객체에 의해 정의된 공지된 이름 또는 멤버 이름으로 시작해야 한다.
<simpleName>(.<simpleName>)*
3.1.8 인스턴스 경로
인스턴스 공간 내의 경로는 x경로에 기초하며, 이 때 x경로 내의 요소 이름은 멤버 이름에 대응하고, x경로 내의 속성은 세팅에 대응한다.
3.1.9 이름 분석(Name Resolution)
별칭으로 시작하지 않는 이름은 완전히 인가되지 않는다. 이것은 그들이 평가되는 범위가 결과적인 결합을 변경할 수 있는 것을 의미한다. 이 예는 네스트된 정의이다. 네스트된 정의 이름을 분석할 때, 로컬 범위 내의 정의는 더 넓은 범위 내의 정의를 은폐한다.
3.2 세팅
모든 정의는 세팅 선언을 노출시킬 수 있다. 이들 세팅은 구체적인 정의가 추상 정의로부터 생성될 때 또는 정의가 또다른 정의 내의 멤버로부터 참조될 때 제공될 수 있는 값을 설명하는 데 사용된다.
세팅을 정의하기 위하여, 먼저 xsd를 사용하여 세팅의 정의를 정의하는 것이 필요하다.
그후, 그러한 정의를 사용하고 그 거동을 정의하기 위한 속성의 세트를 포함하는 세팅을 선언할 수 있다.
일단 세팅 선언을 가지면, 세팅에 대한 값을 제공할 수 있다.
3.2.1 세팅 정의
우리는 XSD 스키마를 사용하여, 세팅을 선언함으로써 사용되는 세팅 정의를 정의한다. 비록 다른 스키마 요소가 심플 및 컴플렉스 타입의 사용을 지원하기 위해 존재하더라도, 우리는 하나의 스키마로부터 이러한 유형들의 사용을 지원할 수 있다.
세팅 정의 섹션은 이름공간 선언 및 이름공간 임포트를 포함하는 완전한 xml 스키마를 포함해야 한다. 우리는 xsd 스키마 이름공간을 제외하고 xsd 스키마 내의 임포트가 sdm 파일 내의 임포트와 일치하는지를 검사할 것이다. 이것은 참조된 모든 타입이 또다른 sdm 파일 내에서 정의되어야 하는 것을 의미하고, 스키마는 보조적 xsd 파일 내에 정의되는 타입을 참조할 수 없다.
속성/요소 설명
xs:schema http://www.w3.org/2001/XMLSchma이름공간 내의 스키마
manager 이 스키마를 위해 구조자 클래스(helper class)를 포함하는 clr 어셈블리
clrNameSpace 이들 클래스가 정의되는 clr 이름공간. 모든 세팅 타입은 CLR 직렬화를 통해 그들의 맵핑에 기초하여 clr로 분석될 것이다.
세팅은 3개의 별개의 이름공간으로부터 분석가능해야 한다.
a) sdm 이름공간 - 우리가 시스템, 리소스, 엔드포인트, 관계, 제한 또는 플로우 타입 내의 세팅 타입을 지칭할 때.
b) clr 이름공간 - 우리가 clr 내의 강력한 타입 클래스를 사용하여 세팅을 지칭할 때 및 세팅 타입이 다른 세팅 타입 상에 작성될 때.
c) XSD 이름공간 - 세팅 타입이 다른 세팅 타입을 사용하여 작성될 때.
이것이 제대로 행해지게 하기 위하여, 우리는 세팅을 선언하는 방법에 다수의 제한을 배치해야 한다.
a) 모든 세팅은 clr, sdm 및 xsd 이름공간의 각각의 동일한 그룹에 있어야 한다. 즉, 2개의 세팅이 함께 하나의 이름공간에 있으면, 그들은 3개의 모든 이름공간 내에 함께 있어야 한다.
b) xsd 스키마 정의 내의 임포트된 이름공간은 SDM 파일 내의 임포트된 이름공간 및 관련된 구조자 어셈블리 내의 임포트된 이름공간과 일치해야 한다.
c) xsd 이름공간을 제외하고, xsd 스키마 내의 모든 임포트된 이름공간은 sdm 파일 내에서 정의되어야 한다.
임포트된 SDM 문서로부터의 XSD 타입은 QNames를 사용하여 액세스가능하다:
따라서, 예를 들면, Foo.sdm이 Bar.sdm을 임포트시키면, Bar.sdm의 세팅 타입은 이 예가 다음과 같이 예시한 것처럼 Foo.sdm의 세팅 타입 요소 내에서 참조될수 있다.
3.2.2 내장 심플 데이터 타입(Built in simple data types)
SDM은 XSD와 C# 이름공간의 교차부에 있는 데이터 유형을 작성하는 제한된 세트를 지원한다. 이들 타입은 SDM 런타임에 의해 본래 지원되고 다음의 테이블 내에 정의된다. 이들 타입에 더하여, 사용자는 xsd 및 cls 타입 간의 맵핑을 자유롭게 구성하여 사용한다.
타입 설명 XSD 타입 C# 타입
string 스트링은 유니코드 문자의 시퀀스이다. string string
integer 64 비트 부호의 정수 타입 long long
float 단일 정밀도(single precision) 부동 소수점 타입 float float
double 배정밀도(double precision) 부동 소수점 타입 double double
boolean 불린 값은 참 또는 거짓이다. boolean bool
any 모든 다른 타입의 기본 타입 anyType object
Date 간단한 날짜 Date dateTime
이들 타입은 c# 및 xsd 타입 공간 내의 이들 타입의 호환가능한 도출(compatible derivations)로 플로우될 수 있다. 예를 들어, 스트링을 위한 값은 스트링 상의 한정을 정의한 xsd 타입으로 플로우되고, 임의의 값은 type="any"을 수락하는 세팅으로 플로우될 수 있다.
3.2.2.1 XSD 내장 타입
도 14는 내장 데이터타입 계층의 일례를 나타낸다.
3.2.2.2 C# 데이터 타입
타입 설명
object 모든 다른 타입의 궁극적인 기본 타입 object 0 = null;
string 스트링 타입; 스트링은 유니코드 문자의 시퀀스이다. string s = "hello";
stype 8 비트 부호 표시 정수(signed integral) 타입 sbyte val = 12;
short 16 비트 부호 표시 정수 타입 short val = 12;
int 32 비트 부호 표시 정수 타입 int val = 12;
long 64 비트 부호 표시 정수 타입 long val1 = 12;long val2 = 34L;
byte 8 비트 부호 미표시 정수(unsigned integral) 타입 byte val1 = 12;
ushort 16 비트 부호 미표시 정수 타입 ushort val1 = 12;
uint 32 비트 부호 미표시 정수 타입 uint val1 = 12;uint val2 = 34U;
ulong 64 비트 부호 미표시 정수 타입 ulong val1 = 12;ulong val2 = 34U;ulong val3 =56L;ulong val4 = 78UL;
float 단일 정밀도 부동 소수점 타입 float val = 1.23F;
double 배정밀도 부동 소수점 타입 double val1 = 1.23;double val2 = 4.56D;
boo1 불린 타입; boo1 값은 참 또는 거짓임 bool val1 = true;bool val2 = false;
char 문자 타입; char 값은 유니코드 문자 char val = 'h';
decimal 28 상위 디지트를 갖는 정밀 십진 타입 decimal val = 1.23M;
3.2.2.3 지원된 변환
이들은 xsd 타입 및 cls 타입간에 존재하는 변환이다.
XML 스키마 (XSD) 타입 .NET 프레임워크 타입
anyURI System.Uri
base64Binary System.Byte□
Boolean System.Boolean
Byte System.SByte
Date System.DateTime
dateTime System.DateTime
decimal System.Decimal
Double System.Double
duration System.TimeSpan
ENTITIES System.String□
ENTITY System.String
Float System.Single
gDay System.DateTime
gMonthDay System.DateTime
gYear System.DateTime
gYearMonth System.DateTime
hexBinary System.Byte□
ID System.String
IDREF System.String
IDREFS System.String□
int System.Int32
integer System.Decimal
language System.String
long System.Int64
month System.DateTime
Name System.String
NCName System.String
negativeInteger System.Decimal
NMTOKEN System.String
NMTOKENS System.String□
nonNegativeInteger System.Decimal
nonPositiveInteger System.Decimal
normalizedString System.String
NOTATION System.String
positiveInteger System.Decimal
QName System.Xml.XmlQualifiedName
short System.Int16
string System.String
time System.DateTime
timePeriod System.DateTime
token System.String
unsignedByte System.Byte
unsignedInt System.UInt32
unsignedLong System.UInt64
unsignedShort System.UInt16
3.2.3 세팅 선언(Setting Declaration)
세팅 선언 섹션은 이전의 섹션으로부터의 세팅 정의를 사용하여 명명된 세팅을 생성한다. 속성은 각각의 세팅에 관한 또다른 정보를 제공하기 위하여 사용된다.
속성/요소 설명
settingsAttributes 개별 세팅 선언에 적용될 수 있는 속성의 세트
list 이 속성은 이 세팅이 단일 값이 아닌 값의 리스트인 것을 표시하는데 사용된다.
3.2.4 리스트 지원
다치 세팅(multivalued settings)의 조작을 지원하기 위하여, 우리는 세팅 값의 간단한 리스트를 지원한다. 리스트는 세팅 선언과 동일한 정의의 값의 시퀀스이다. 리스트들은 그들이 대체되거나 병합될 수 있는 다른 리스트들로 플로우될 수 있다. 값을 리스트로 병합할 때 중복 검출(duplication detection)을 지원하지 않는데, 그 이유는 이것은 세팅 플로우를 사용하여 더 유연하게 수행될 수 있기 때문이며, 또한 순서화의 임의의 형태를 보증하지 않는다.
리스트 선언은 참(true)으로 세팅된 속성 리스트를 포함한다.
다음으로, 값은 settingValueList를 사용하여 제공된다. 리스트를 제공할 때, 사용자는 이전의 값으로 대체되거나 병합될지를 지정할 수 있다.
sdm은 값의 리스트의 간단한 조작을 지원한다. 플로우 멤버로부터의 경로가 세팅 선언을 목적으로 할 때, 그 결과적인 거동은 경로의 어느 한쪽 끝에서의 정의에 종속된다.
소스 목적지 결과
요소 리스트 대체=거짓 - 요소는 리스트에 부가된다.대체=거짓 -단일 요소를 갖는 리스트
리스트 리스트 대체=거짓 - 소스 및 목적지 리스트가 병합된다.대체=참 -소스 리스트
리스트 요소 sdm은 리스트로부터 어떤 요소가 선택되는지를 분석할 수 없으므로, 이 조합은 지원되지 않는다.
3.2.5 세팅 속성
세팅 속성은 런타임에 의해 사용되어 특정 세팅의 거동을 설명한다.
속성 이름 설명 디폴트
access 세팅의 액세스 속성은 세팅의 값을 판독 및 기록하는 것이 허용되는지를 지정한다; SDM 런타임 액세스 제어를 제공하고 설계자에게 규칙을 표시/편집한다. 판독 기입
속성 SDM내의 의미 표시/편집값 런타임 규칙판독기입 세팅값이 판독되고 값이 표시되고기입될 수 있는 것을 편집될 수 있다.표시판독전용 세팅값이 판독될수 값이 표시되지만,있지만, 기입될 수 편집될 수 없다.기입될 수 없는 것을표시. 이 값은플로우를 위한 타겟일수 없다.일반적으로, 판독전용세팅은 실세계 인스턴스에 의해 제공되거나계산될 수 있는 것이다.예: 서버 상의 접속의수를 나타내는 값.기록전용 세팅 값이 기입되지만, 값이 마스크되지만,판독되지 않음을 표시. 편집될 수 있다.이 값은 플로우를 위한소스일 수 없다.예: 서비스 어카운트를위한 패스워드
deploymentTime 인스턴스를 위한 배치 프로세스의 부분으로서만 제공될 수 있는 값. 설계 시간 제한은 이 값에 대하여 평가될 수 없다. 정의 또는 멤버는 이 세팅에 대한 고정 값을 공급할 수 없다. 거짓
required required가 참이면, 인스턴스가 배치되기 전에 값은 이 세팅에 제공되어야 한다. 이 세팅은 판독전용일 수 없다. 거짓
dynamic dynamic이 참이면, 인스턴스가 배치된 후에, 인스턴스 매니저는 이 값에 대한 변경을 지원한다.
keyValue Keyvalue는 그 호스팅 범위 내에서 세팅이 고유하다는 것을 표시하는 데 사용된다. 인스턴스 매니저는 경로 내의 이 세팅을 사용하여 객체 인스턴스를 식별하고 기존의 인스턴스와의 충돌을 검출한다 거짓
Secure 세팅의 secure 속성은 SDM 문서에 저장될 때 세팅의 값이 암호화(참 또는 거짓)되어야 하는지를 지정한다. 또한 설치 등의 조작 동안 툴이 이 값을 로그해야 하는지를 표시. 거짓
nillable 세팅의 nillable 속성은 이름공간http:www.w3.org/2002/XMLSchema-instance로부터 이름공간-인가된 속성xsi:nil을 전달하면, 세팅 값이 유효한지를 표시 거짓
3.2.6 세팅 값
세팅이 단일 값으로서 선언되는지 또는 리스트로서 선언되는지에 따라, 세팅에 대한 값은 세팅 값 요소 또는 세팅 값 리스트 요소를 사용하여 제공될 수 있다.
3.2.6.1 세팅 값
세팅 값은 특정 세팅 선언을 위한 값을 제공하는 데 사용된다. 값은 선언과 관련된 정의를 일치해야 한다. 값이 선언 고정되면, 제공된 값은 값이 고정된 포인트에 의존하여 모든 도출된 정의 또는 참조 멤버에 사용될 것이다. 값이 고정되면 오버라이드(override)될 수 없다.
속성/요소 설명
name 이 값이 적용될 세팅 선언의 이름
fixed 고정(fixed) 속성은 제공된 값이 새로운 값에 의해 후속으로 오버라이드될 수 있는지를 제어한다. 참의 고정 값은 세팅에 제공된 값이 오버라이드될 수 없다는 것을 표시한다.고정 값이 구체적인 정의 멤버의 세팅 값에 대하여 참이면, 그 멤버의 모든 배치에 고정된다. 그렇지 않고, 고정 값이 거짓이면, 그 멤버의 각각의 배치에 오버라이드 가능이다.고정 값이 구체적인 정의의 세팅 값에 대하여 참이면, 그 구체적인 정의의 모든 멤버(즉, 사용)에 대하여 고정된다. 그렇지 않고, 고정 값이 거짓이면, 그 구체적인 정의의 각각의 멤버(즉, 사용)로 변경될 수 있다.고정 값이 추상 정의의 세팅 값에 대하여 참이면, 그 추상 정의를 확장하는 추상 객체 또는 구현하는 구체적인 정의에 대하여 고정된다. 그렇지 않고, 고정 값이 거짓이면, 도출된 추상 정의 또는 멤버 선언에서 구체적인 정의에 의해 오버라이드될 수 있다.
Nil 마지막으로, 값 true를 갖는 속성xsl:nil을 가지면, 세팅 값은 콘텐츠 없이 유효한 것으로 간주된다. 레이블된 요소가 비어야 하지만, 세팅 정의에 의해 허용되면 속성을 가질 수 있다.
3.2.6.2 세팅 값 리스트
세팅 값 리스트는 리스트로서 선언된 세팅을 위한 하나 이상의 값을 제공하는 데 사용된다. 값을 선언할 때, 사용자는 이전의 값과 병합하거나 이전의 모든 값을 중복 기입하도록 결정할 수 있다.
속성/요소 설명
name 이 값이 적용될 세팅 선언의 이름
fixed 고정(fixed) 속성은 제공된 값이 새로운 값에 의해 후속으로 오버라이드될 수 있는지를 제어한다. 참의 고정 값은 세팅에 제공된 값이 오버라이드될 수 없다는 것을 표시한다.고정 값이 구체적인 정의 멤버의 세팅 값에 대하여 참이면, 그 멤버의 모든 배치에 고정된다. 그렇지 않고, 고정 값이 거짓이면, 그 멤버의 각각의 배치에 오버라이드 가능이다.고정 값이 구체적인 정의의 세팅 값에 대하여 참이면, 그 구체적인 정의의 모든 멤버(즉, 사용)에 대하여 고정된다. 그렇지 않고, 고정 값이 거짓이면, 그 구체적인 정의의 각각의 멤버(즉, 사용)로 변경될 수 있다.고정 값이 추상 정의의 세팅 값에 대하여 참이면, 그 추상 정의를 확장하는 추상 객체 또는 구현하는 구체적인 정의에 대하여 고정된다. 그렇지 않고, 고정 값이 거짓이면, 도출된 추상 정의 또는 멤버 선언에서 구체적인 정의에 의해 오버라이드될 수 있다.
replace 대체(replace) 속성은 세팅을 위한 새로운 값이 세팅을 위한 이전의 고정되지 않은 값으로 대체하거나 병합해야 하는지를 표시하는 데 사용된다.대체가 참이면, 이전의 모든 값은 무시될 것이다. 대체가 거짓이면, 새로운 및 이전의 값은 단일 리스트로 결합될 것이다. 중복은 병합 프로세스 동안 검출되지 않을 것이다.
3.2.7 세팅 상속(Setting Inheritance)
세팅 상속은 도출된 정의가 암시적으로 기본 정의로부터 세팅 선언 모두를 포함하는 것을 의미한다. 세팅 상속의 임의의 중요한 형태는 다음과 같다.
세팅 상속은 옮겨가는 것이다(transitive). C가 B로부터 도출되고 B가 A로부터 도출되면, C는 B 내에 선언된 세팅 뿐만 아니라 A 내에 선언된 세팅을 상속한다.
도출된 정의는 기본 정의로부터 상속되는 것에 새로운 세팅 선언을 부가할 수 있다. 이것은 확장되지만, 상속된 세팅의 정의를 제거할 수 없다.
3.2.8 타입 변환
우리는 내장 타입들 사이의 손실없는 변환을 지원한다. 다른 타입 변환은 적절한 변환을 실행하기 위하여 플로우를 필요로 한다.
3.3 속성
SDM 내의 객체의 다수는 객체의 거동을 코어(core)하기 위하여 직교인 거동을 캡쳐하도록 귀착될 수 있다. 우리는 다음과 같이 정의된 일반적인 속성 모델을 사용한다.
3.4 정의 및 멤버
3.4.1 정의
정의는 객체, 관계, 제한 및 플로우 정의가 도출되는 베이스이다. 모든 정의는 세팅 스키마 및 설계 표면 데이터를 포함할 수 있다. 각각의 정의는 간단한이름에 의해 식별되고 매니저를 참조한다. 매니저는 이 특정 정의에 대한 SDM 런타임에 확장 지원을 제공한다.
세팅 스키마는 이 정의의 인스턴스에서 찾을 수 있는 값을 정의한다. DesignData 요소는 설계 표면 상의 이 정의의 표시 및 편집에 특정인 데이터를 포함시키는 데 사용된다.
속성/요소 설명
SettingDeclaration 세팅의 선언
SettingValue 정의에 대한 세팅 또는 그 기본 정의에 대한 값. 값이 정의 내의 세팅 선언을 위해서 한번 제공될 수 있다.
SettingValueList 정의 또는 그 기본 정의 상에 기록가능한 리스트 세팅에 대한 값의 리스트
DesignData 설계 표면 특정 데이터
name 포함하는 sdm 파일의 범위내에서 고유한 이 정의에 대한 이름
Manager 이 정의에 대한 매니저 선언에 대한 참조. 매니저의 정의에 대한 섹션:3.10 참조
CirClassName 런타임 내의 이 정의를 지원하는 clr 클래스의 이름. 클래스는 매니저에 의해 식별되는 어셈블리 내에 존재해야 한다. 이 속성이 부여되면, 매니저 속성이 부여되어야 한다.
Description 정의의 텍스트 설명
3.4.2 멤버
멤버는 런타임에서 존재할 수 있는 정의 인스턴스를 식별하는 데 사용된다. 모든 멤버는 타입의 범위 내의 고유한 이름에 의해 식별되고, 멤버가 참조하는 정의에 대한 세팅을 제공할 수 있고, 설계 표면 특정 데이터를 포함할 수 있다.
속성/요소 설명
Description 멤버의 설명
DesignData 멤버에 대한 설계 표면 특정 정보
SettingValue 참조된 타입에 대한 기록가능 세팅에 대응하는 세팅의 값. 이들 값이 고정되도록 마크되면, 값은 인스턴스가 멤버를 위해 생성될 때 사용되어야 하며, 값이 고정되지 않으면,값은 배치 또는 플로우 파라미터에 의해 오버라이드될 수 있다.
SettingValueList 참조된 타입에 대한 기록 가능 세팅을 위한 값의 리스트
Name 포함 타입의 범위 내의 멤버에 대한 고유의 이름
Definition 이 멤버가 참조하는 정의의 이름
3.5 세팅 플로우
세팅 플로우는 객체 정의의 멤버들 사이에서, 그리고 관계 내의 참여자들 사이에서 파라미터를 전달하는 데 사용된다. 플로우의 부분으로서, 사용자는 변환(transformation)을 사용하여 세팅 값을 결합하거나 분리하고 새로운 세팅 값을 산출한다.
모든 세팅 플로우 멤버가 플로우 정의를 사용하여 변환을 구현한다. 플로우 정의는 sdm 파일 내에서 선언된다. 다음은 url을 구문 분석(parse)하는 플로우 타입이다.
플로우 멤버는 그후 객체 또는 관계 내에서 선언된다. 플로우 멤버는 플로우 정의에 대한 입력을 제공하고, 그후 플로우로부터 타겟 세팅으로 출력을 보낸다.
3.5.1 플로우 정의
우리는 플로우 정의를 사용하여 우리가 세팅 값의 세트에 적용하고자 하는 특정 변환을 정의한다. 플로우 정의는 입력 세팅(기록 전용 세팅) 및 출력 세팅(판독 전용 세팅)을 정의하는 세팅 스키마, 변환을 정의하는 입력 인터페이스 등의 설계 표면 특정 정보에 대한 설계데이터 섹션 및 sdm 파일을 브라우징(browsing)할 때 사용하기 위한 설명을 노출시킨다. 플로우 정의는 그것이 정의되는 이름공간 내의 이름에 의해 식별된다. 정의는 또한 플로우를 평가할 때 런타임을 지원하는 매니저를 식별한다.
우리는 직진 변환(straightforward transformations)이 요구되는 플로우 요소의 구성을 간략화시키기 위하여, 런타임이 몇개의 표준 플로우 정의를 포함할 것을 기대한다. 예는 카피, 병합 및 스트링 대입(substitution)을 포함할 수 있다.플로우 정의가 파라미터화될 수 있으므로, 우리는 또한 구성 파라미터에 기초하여 다른 액션을 수행하는 간단한 하나 이상의 변환이 있음을 기대한다.
3.5.2 플로우 멤버
각각의 플로우 요소는 하나 이상의 소스 노드, 하나 이상의 목적지 노드, 임의의 정적 세팅 및 플로우 정의를 식별한다, 플로우가 평가될 때, 소스 데이터는 소스 노드로부터 수집되고 플로우 요소로부터의 세팅과 결합되고 변환을 위한 플로우 정의로 전달된다. 출력 데이터는 정의 노드로 전달된다.
플로우의 재평가는 소스 값 중의 어느 하나가 변경될 때마다 트리거될 것이다. 이 때문에, 우리는 값을 플립플롭하는 순환 플로우를 회피할 필요가 있다. 값이 일정한 채로 유지되면, 루프는 종료할 것이다. 런타임은 스택 깊이의 추적을 유지하면서 무한 루프를 검출하고 종료할 것이다.
속성/요소 설명
input 플로우로의 입력으로서 사용되는 세팅 값으로의 경로의 리스트. 각각의 입력은 플로우 정의에 대한 기록 전용 세팅을 식별해야 한다.
output 이 플로우의 결과로서 세팅될 세팅으로의 경로의 리스트. 각각의 출력은 플로우 정의에 대한 판독 전용 세팅을 식별해야 한다.
3.5.3 세팅 타겟
세팅 타겟은 플로우가 정의된 컨텍스트 내의 잘 알려진 이름에 관련된 멤버 또는 네스트된 멤버 내의 세팅 값으로의 경로를 식별한다. 잘 알려진 이름의 예는정의 또는 기준 선언 내의 this, 호스팅 관계 선언 내의 host 및 guest, 또는 제한 선언 내에서 정의된 target를 포함한다. 세팅 타겟은 또한 경로에 의해 식별된 세팅의 목적지 세팅 또는 소스 값으로서 사용될 관련된 플로우 정의에 대한 세팅을 식별한다.
속성/요소 설명
Name 경로에 의해 식별된 세팅의 소스 또는 목적지인 플로우 또는 제한 정의에 대한 세팅의 이름
Path 플로우가 정의된 컨텍스트에 관련된 소스 또는 목적지 세팅으로의 경로. 경로는 단일 세팅을 식별해야 한다. - 이것은 경로 상의 모든 멤버의 최대 카디널리티(cardinality)가 1 또는 0이어야 한다는 것을 의미한다.
출력 경로는 타겟 값을 고정하고 대체하는 시멘틱을 지원하는 세팅 타겟에 대한 변수이다.
속성/요소 설명
Fix 이것은 타겟 값이 고정되는 것을 선언할 것이다. 이것은 값을 후속으로 변경하려는 임의의 시도가 에러를 발생시키는 것을 의미한다.
Replace 리스트가 경로의 타겟일 때, 우리는 리스트의 현재 콘텐츠를 병합하거나 대체할 것을 선택할 수 있다. 디폴트 거동은 현재의 콘텐츠와 병합되는 것이다.
3.6 세팅 제한(Settings Constraints)
제한은 정의의 멤버의 세팅 값 또는 관계 내의 참여자에 대한 한정을 식별하는 데 사용된다. 이들 한정은 설계 시간 및 배치 시간에 인스턴스 공간 내에서 평가된다.
모든 세팅 제한은 제한 정의를 사용하여 세팅 값을 평가한다. 제한 정의는 세팅 선언을 사용하여 그것이 제한하는 값을 식별한다. 다음의 제한 정의는 2개의 독립 변수(argument) 및 연산자를 취하는 간단한 비교 함수를 구현하고, 그후 제한을 평가하고, 마지막으로 성공 또는 에러를 리턴한다.
제한 멤버는 평가에 대한 제한 타입에 값을 제공하는 데 사용된다.
3.6.1 제한 정의
제한 정의는 입력 값의 세트에 동작하는 제한을 정의한다. 제한은 파라미터화되어 고객 거동을 선택하거나 파라미터를 사용하여 그 거동을 정의하는 간단한 제한 엔진에 대하여 지원할 수 있다. 우리는 표준 제한 정의의 세트가 간단한 파라미터 값 제한 및 컴플렉스 제한의 세트에 대하여 기록되어 추상 객체 사이의 공지된 관계를 지원하는 것을 기대한다.
3.6.2 제한 멤버
제한 멤버는 특정 제한 정의에 대한 입력 값의 세트를 식별한다. 멤버는 세팅 값에 대한 정적 값을 식별할 수 있고, 입력 명령문을 사용하여 경로에 제한 세팅을 결합시킬 수 있다.
속성/요소 설명
input 제한으로의 입력 리스트. 입력은 제한에 전달될 소스 세팅 값과 결과로서 세팅될 제한 세팅으로의 경로를 식별한다. 소스 세팅 정의와 제한 세팅 저의는 호환가능해야 한다.
3.7 시스템 엔드포인트 및 리소스 정의
이 섹션은 추상 및 구체적 객체 정의에 대한 스키마를 설명한다.
추상 객체 정의는 세팅 선언 세트를 나타내고, 자신이 참여하는 관계에 대한 제한을 포함할 수 있으며, 런타임 내에 관련 매니저를 갖는다.
다음은 웹 서버에 대한 추상 시스템 정의이다. 웹 서버는 2개의 세팅을 가지며 적어도 vsite 타입에 포함하는 것을 요구하는 관계 제한을 갖는다.
vsite는 서버 결합 정보를 포함하는 추상 엔드포인트 정의이다.
프론트엔드 웹서버에 대한 구체적 시스템 정의는 정적 콘텐츠로서 웹서버 카테고리를 식별하고, 1과 100 사이의 엔드포인트 인스턴스를 표현할 수 있는 단일 byReference 엔드포인트를 포함한다. 엔드포인트에 대한 구체적인 엔드포인트는 시스템 정의 내에 네스트되고, vsite에 대한 엔드포인트가 엔드포인트 80이 되는 것을 정의한다.
3.7.1 객체 정의
추상 및 구체적 객체는 다음의 베이스 객체 정의를 확장한다. 베이스 타입정의의 요소에 더하여, 객체가 참여하는 관계를 제한하는 능력을 공유한다.
속성/요소 설명
Flow 플로우 멤버 선언
RelationshipConstraint 이들 타입이 참여할 수 있는 관계에 대한 제한
RelationshipConstraintGroup 이들 타입이 참여할 수 있는 관계에 대한 제한
3.7.2 추상 객체 정의
추상 객체 정의는 설계 표면이 노출되고 모든 구체적 객체가 도출되는 빌딩 블록을 정의하는 데 사용된다: 구체적 객체 정의는 추상 객체 정의를 구현해야 한다.
추상 객체 정의는 간단한 상속을 부가함으로써 SDM 객체를 확장한다: 확장 속성은 추상 객체 정의에 대한 베이스 객체 정의를 식별하는 데 사용된다. 추상 객체 정의는 그후 베이스 객체 정의로부터 세팅 및 관계 제한을 상속한다. 상속을 통해, 객체 정의는 새로운 세팅 및 제한을 부가함으로써 추상 객체 정의의 세팅 및 제한을 확장할 수 있다.
추상 객체 정의는 또한 그들이 참여하기를 원하는 관계에 대한 제한을 부가할 수 있다. 예를 들어, 추상 객체 정의는 소정의 관계의 존재를 요구할 수 있거나, 관계의 다른 엔드 상에 배치될 수 있는 객체 정의를 제한할 수 있거나, 주어진관계에 참여하는 인스턴스에 대한 세팅을 제한할 수 있다.
3.7.2.1 추상 객체 정의
모든 추상 객체는 그들이 관련되기를 원하는 층을 식별할 수 있다. 이것이 제공되지 않으면, 객체 정의는 임의의 층에 사용될 수 있는 것으로 가정한다. 추상 객체 정의는 그들의 확장하는 베이스 객체 정의를 식별할 수 있고, 어떤 경우, 그 객체 정의의 세팅과 제한을 상속하고, 베이스 객체 정의가 참여하는 관계 내의 베이스 객체 정의에 대하여 대체될 수 있다.
속성/요소 설명
layer 층(layer) 속성은 이 추상 객체 정의가 사용될 수 있는 층을 식별한다. 이것이 제공되지 않으면, 추상 객체 정의가 임의의 층에서 사용될 수 있다.
extends 이 객체 정의가 도출되는 추상 객체 정의를 식별
3.7.2.2 추상 엔드포인트, 시스템 및 리소스 객체 정의
SDM 모델 내에 추상 객체 정의의 3가지 분류 - 즉, 추상 엔드포인트 정의, 추상 시스템 정의 및 추상 리소스 정의가 있다. 이들의 각각은 추상 객체 정의의간단한 재명명이다.
엔드포인트 정의는 통신 엔드포인트를 나타낸다. 엔드포인트에 대한 세팅은 결합 프로세스 내에서의 그 사용에 관련된다. 예를 들어, 클라이언트 서버 프로토콜로, 서버 엔드포인트 정의는 세팅 스키마를 사용하여 엔드포인트에 결합될 필요가 있는 세팅을 식별하고, 클라이언트 엔드포인트 정의는 클라이언트 특정 접속 속성을 노출한다.
시스템 정의는 데이터, 소프트웨어 또는 하드웨어 요소의 수집을 나타내는 데 사용된다. 예는 웹 서비스, 데이터베이스 및 스위치를 포함한다. 리소스 정의는 시스템 정의의 부분으로서 식별될 수 있는 특정 요소를 캡쳐하는 데 사용된다.
3.7.3 암시적 베이스 정의(Implicit base definitions)
또다른 추상 객체 정의를 확장하지 않는 모든 추상 객체 정의는, 도 15에 도시된 바와 같이 엔드포인트, 시스템 또는 리소스 베이스 정의 중의 하나를 암시적으로 확장한다. 이들 베이스 정의는 관계 및 제한 선언에 사용될 수 있는 트리의각각에 대한 루트를 형성한다. 이것은 관계 또는 제한으로 하여금 루트로부터 도출된 임의의 타입이 식별된 루트 정의 대신에 사용될 수 있다는 것을 표시하도록 한다. 이들 루트 타입은 항상 추상적이며 직접 실증될 수 없다.
이들 타입의 정의는 모델 내의 그 실증을 제어하는 베이스 제한을 포함한다. 이들은 System.sdm에서 탐색될 수 있다.
3.7.4 구체적인 객체 정의
구체적인 객체 정의는 추상 객체 정의에 대한 구현을 제공한다. 구현은 객체 및 관계 멤버, 구현된 추상 정의의 세팅을 위한 값, 새로운 세팅 선언, 멤버들 간의 플로우, 및 멤버에 대한 제한으로 구성된다.
구체적인 정의는 또한 네스트된 정의의 선언을 포함할 수 있다. 이들 정의는 포함 정의의 범위 내의 멤버에 대하여 사용될 수 있고, 정의의 범위 밖의 제한에서 참조될 수 있다.
3.7.4.1 베이스 구체적 객체 정의
베이스 구체적 타입은 객체 정의, 상속 세팅 선언, 설계 데이터, 선택적 매니저 참조, 이름, 그것이 참여할 수 있는 관계에 대한 제한, 추상 정의의 세팅에 대한 값을 제공하는 능력 및 그 세팅과 그 멤버의 세팅 간의 플로우를 설명하는 능력을 확장한다. 구체적 정의는 그후 그것이 구현하는 추상 정의를 식별하는 능력을 부가하고 몇개의 선택적 속성은 정의의 결합 거동을 커스토마이즈하는 능력을부가한다.
속성/요소 설명
Implements 이러한 구체적인 타입을 구현하는 추상 타입을 식별
3.7.4.2 객체 멤버
객체 멤버는 추상 또는 구체적 객체 정의를 참조해야 한다. 객체 멤버는 어떤 경우 어레이에 대한 상부 및 하부 경계를 정의할 수 있는 인스턴스의 어레이를 표현할 수 있다. 객체 멤버가 참조 멤버이면, 객체를 실증하는 사용자는 멤버에 대한 인스턴스를 명시적으로 구성해야 한다. 객체 멤버가 참조 멤버가 아니면, 런타임은 외부 객체가 생성되는 것과 동시에 인스턴스를 생성할 것이다.
속성/요소 설명
MinOccurs 이 멤버와 관련된 인스턴스의 번호에 대한 하한. 하한이 0이면, 수는 선택적이다. 디폴트는 1이다.
MaxOccurs 이 멤버와 관련된 인스턴스의 번호에 대한 상한. 1보다 커야한다. 디폴트는 1이다.
IsReference 이 값이 참이면, 멤버와 관련된 인스턴스는 오퍼레이터에 의해 명시적으로 생성되어야 하거나 또다른 타입에서 참조되어야 한다. 이 값이 거짓이면, 타입이 생성될 때 인스턴스가 생성된다.
sdm 모델에서, 우리는 부모가 구성될 때 생성되고 부모가 파괴될 때 파괴되는 멤버들과, 부모로부터 독립된 수명을 가질 수 있는 멤버들을 구별할 필요가 있다. 우리는 이 목적으로 IsReference 속성을 사용한다. new가 인스턴스를 생성하는 데 사용되는지에 기초하여 스택 기반 및 더미(heap) 기반 구성을 허용하는 C++ 선언과 유사하다. 멤버가 IsReference로서 마크되면, 명시적인 새로운 동작은 오퍼레이터의 부분에서 요구되어 인스턴스를 생성하고 그를 멤버와 관련시킨다.
이것을 수행하는 다수의 이유가 있다.
1. 오퍼레이터가 시스템을 구성할 때, 우리는 isReference 멤버를 구성하는 능력을 노출시킨다. 이것은 오퍼레이터 경험을 크게 간략화시킨다.
2. 우리는 sdm 문서를 처리할 때, 문서의 인스턴스 공간이 구체적 정의 공간으로부터 변경될 수 있는 명백한 경계를 갖는다.
3.7.4.3 관계 멤버(Relationship Member)
관계 멤버는 생성될 때 객체 멤버들 사이에 존재할 관계를 식별한다. 관계 인스턴스는 오퍼레이터에 의해 명시적으로 생성되거나 런타임에 의해 암시적으로 생성된다. 전자의 예는 인스턴스들 사이의 호스팅 관계이고, 후자는 시스템 간의 통신 관계이다.
3.7.4.3.1 호스팅 멤버
호스트 멤버는 2개의 객체 멤버 사이의 호스팅 관계를 선언하는 데 사용된다. 객체 멤버는 포함 정의를 갖는 직접 멤버(direct member)일 수도 있고, 멤버쉽 관계를 갖는 네스트된 멤버일 수도 있다. 참조된 멤버와 포함 정의 간의 멤버쉽 체인이 있어야 한다.
속성/요소 설명
GuestMember 관계의 게스트와 호환가능한 정의를 갖는 멤버를 식별. 멤버는 네스트될 수 있다.
HostMember 관계의 호스트와 호환가능한 정의를 갖는 멤버를 식별. 멤버는 네스트될 수 있다.
3.7.4.3.2 통신 멤버
통신 멤버는 정의의 중간 시스템 멤버의 엔드포인트 멤버들간의 통신 관계를 선언하는 데 사용된다.
속성/요소 설명
ClientMember 관계의 클라이언트 정의와 호환가능한 정의를 갖는 엔드포인트 멤버를 식별. 엔드포인트 멤버는 정의의 중간 시스템 멤버의 멤버이어야 한다.
ServerMember 관계의 서버 정의와 호환가능한 정의를 갖는 엔드포인트 멤버를 식별. 엔드포인트 멤버는 정의의 중간 시스템 멤버의 멤버이어야 한다.
3.7.4.3.3 포함 멤버
포함 멤버는 타입 멤버가 타입에 의해 포함된 것을 선언하는 데 사용된다. 각각의 타입 멤버는 포함되거나 델리게이트될 수 있다. 포함 멤버는 관계의 "this" 포인터가 되도록 포함 관계의 부모 값을 자동적으로 설정한다.
속성/요소 설명
ChildMember 부모에 의해 포함될 인접 객체 멤버를 식별
3.7.4.3.4 델리게이션 멤버
델리게이션 멤버는 외부 타입에 대한 엔드포인트 정의 멤버와, 외부 타입의 인접 시스템 멤버에 대한 엔드포인트 정의 멤버 간의 델리게이션 관계를 셋업하는 데 사용된다.
속성/요소 설명
ProxyMember 프록시는 시스템에 대한 포함 관계를 갖지 않는 시스템에 대한 인접 엔드포인트 멤버를 식별한다. 멤버의 정의는 델리게이션 관계에 대한 프록시의 정의에 일치해야 한다.
DelegateMember 델리게이트는 타입의 인접 멤버에 대한 엔드포인트 멤버를 식별한다. 엔드포인트 멤버의 타입은 델리게이션 관계에 대한 델리게이트 타입에 일치해야 한다.
3.7.4.3.5 참조 멤버
참조 멤버는 외부 시스템의 2개의 인접 또는 네스트된 참조 관계를 셋업하는 데 사용된다.
속성/요소 설명
dependentMember 소스 멤버에 의존하는 객체 멤버. 참조 관계 내의 종속 객체의 정의에 일치되어야 한다.
sourceMember 소스 객체 멤버. 참조 멤버 내의 소스 객체의 정의에 일치되어야 한다.
3.7.4.4 엔드포인트 정의
엔드포인트 정의는 네스트된 리소스 타입, 리소스 멤버 및 호스트, 포함 및 참조 관계 멤버를 선언하는 능력을 부가함으로써 베이스 객체 정의를 확장한다.
속성/요소 설명
ResourceDefinition 외부 타입 정의의 범위 내의 타입 멤버에 의해 사용될 수 있는 네스트된 리소스 정의
Resource 리소스 타입을 참조하는 리소스 멤버 선언
Hosting 호스팅 관계 멤버 선언
Containment 포함 관계 멤버 선언
Reference 참조 관계 멤버 선언
3.7.4.5 서비스 정의
시스템 타입은 네스트된 엔드포인트, 시스템 및 리소스 타입; 엔드포인트, 시스템 및 리소스 멤버, 및 호스트, 포함, 접속, 델리게이션 및 참조 관계에 대한 지원을 부가함으로써 베이스 타입을 확장한다.
속성/요소 설명
EndpointDefinition 외부 서비스 정의의 범위 내의 멤버에 의해 사용될 수 있는 네스트된 엔드포인트 정의
ResourceDefinition 외부 타입 정의의 범위 내의 타입 멤버에 의해 사용될 수 있는 네스트된 리소스 정의
SystemDefinition 외부 시스템 정의의 범위 내의 멤버에 의해 사용될 수 있는 네스트된 시스템 정의
Endpoint 엔드포인트 정의를 참조하는 엔드포인트 멤버 선언
Subsystem 시스템 정의를 참조하는 서브시스템 멤버 선언
Resource 리소스 정의를 참조하는 리소스 멤버 선언
Containment 포함 관계 멤버 선언
Hosting 호스팅 관계 멤버 선언
Connection 접속 관계 멤버 선언
Delegation 델리게이션 관계 멤버 선언
Reference 참조 관계 멤버 선언
3.7.4.6 리소스 정의
리소스 타입은 네스트된 리소스 타입 정의, 리소스 멤버, 및 호스트, 포함 및 참조 관계 멤버를 포함할 수 있다.
속성/요소 설명
ResourceDefinition 외부 리소스 정의의 범위 내의 멤버에 의해 사용될 수 있는 네스트된 리소스 정의
Resource 리소스 정의를 참조하는 리소스 멤버 선언
Hosting 호스팅 관계 멤버 선언
Containment 포함 관계 멤버 선언
Reference 참조 관계 멤버 선언
3.7.4.7 관계 규칙
객체 정의의 특정 인스턴스에 대하여, 다음의 표는 인스턴스가 할 수 있는 역할의 각각과 관련된 카디널리티(cardinality)를 식별한다.
3.7.4.7.1 시스템 규칙
정의 역할 시스템 엔드포인트 리소스
System Parent(0...*) 포함(Contains) 포함 포함
Member(1...1) ContainedBy 허용되지 않음 허용되지 않음
Proxy(0...*) 허용되지 않음 허용되지 않음 허용되지 않음
Delegae(0...*) 허용되지 않음 허용되지 않음 허용되지 않음
Client(0...*) 허용되지 않음 허용되지 않음 허용되지 않음
Server(0..*) 허용되지 않음 허용되지 않음 허용되지 않음
Guest(1..1) HostedBy HostedBy(??) HostedBy
Host(0..*) 호스트(Hosts) 호스트 호스트
Source(0..*) 제공(Provides) 허용되지 않음 허용되지 않음
Dependent(0..*) 소비(Consumes) 허용되지 않음 허용되지 않음
3.7.4.7.2 엔드포인트 규칙
역할 시스템 엔드포인트 리소스
Endpoint Parent(0...*) 허용되지 않음 허용되지 않음 포함
Member(1...1) ContainedBy 허용되지 않음 허용되지 않음
Proxy(0...*) 허용되지 않음 DelegateTo 허용되지 않음
Delegae(0...*) 허용되지 않음 구현(Implements) 허용되지 않음
Client(0...*) 허용되지 않음 ConnectsTo 허용되지 않음
Server(0..*) 허용되지 않음 ProvidesService 허용되지 않음
Guest(1..1) HostedBy HostedBy HostedBy
Host(0..*) 호스트(Hosts) 호스트 호스트
Source(0..*) 허용되지 않음 제공 제공
Dependent(0..*) 허용되지 않음 소비 소비
3.7.4.7.3 리소스 규칙
역할 시스템 엔드포인트 리소스
Resource Parent(0...*) 허용되지 않음 허용되지 않음 포함
Member(1...1) ContainedBy ContainedBy ContainedBy
Proxy(0...*) 허용되지 않음 허용되지 않음 허용되지 않음
Delegae(0...*) 허용되지 않음 허용되지 않음 허용되지 않음
Client(0...*) 허용되지 않음 허용되지 않음 허용되지 않음
Server(0..*) 허용되지 않음 허용되지 않음 허용되지 않음
Guest(1..1) HostedBy HostedBy HostedBy
Host(0..*) 호스트(Hosts) 호스트 호스트
Source(0..*) 허용되지 않음 제공 제공
Dependent(0..*) 허용되지 않음 소비 소비
3.7.4.7.4 주의
모든 인스턴스는 하나 이상의 호스팅 관계와 하나의 포함 관계를 정확히 참여시켜야 한다.
이것은 다음을 의미한다.
A) 비참조 멤버가 포함 관계를 식별해야 한다.
B) 구성되기 위하여, 참조 멤버는 포함 관계를 식별해야 한다.
C) 포함 관계를 갖지 않는 참조 멤버는 다른 멤버를 델리게이트할 수 있을 뿐이다.
3.8 관계
관계는 타입들 간의 가능한 상호 작용을 식별하는 데 사용된다. 관계는 바이너리이며 명령되고, 각각 관계 내에 참여할 수 있는 인스턴스의 타입을 식별한다. 관계는 또한 관계에 참여하는 인스턴스의 세팅을 포함할 수 있고 관계에 걸쳐 세팅 값을 플로우할 수 있다.
다음은 타입 섹션에 설명된 웹서버에 대한 웹애플리케이션을 위한 가능한 호스팅 관계이다. 관계는 2개의 시스템의 보안 모델이 호환가능하다는 것을 검증하는 제한을 포함하고, vsite로부터 vdir로 서버 이름을 복사하는 세팅 플로우 멤버를 포함한다.
관계는 관계에 참여할 타입 멤버를 식별하는 관계 멤버를 선언함으로써 사용된다.
3.8.1 관계 정의
베이스 관계 정의는 정의에 객체 제한 및 플로우를 부가한다. 객체 제한은 이 관계의 인스턴스에 참여하는 객체 인스턴스에 대한 세팅 값에 관한 명령문이다. 예를 들어, DCOM 접속을 나타내는 통신 관계는 클라이언트 및 서버에 대한 보안 세팅이 호환가능한 것을 검사할 수 있다. 이 경우, 설계 프로세스의 부분으로서 쉽게 캡쳐될 수 있는 세팅들 간의 엄격한 관계가 있다; 관계에 대한 4 계승(4 factorial)개의 세팅 조합이 있지만, 더 적은 수의 유효 조합이 있을 수 있다.
플로우는 하나의 인스턴스로부터 또다른 인스턴스로 값을 포워드하는 능력을 관계 개발자에게 제공한다. 이것은 객체 정의들이 그들의 가능한 상호작용으로부터 독립적으로 개발되도록 하고, 인스턴스가 특정 인스턴스를 완전히 설명하기 위하여 관계 그래프의 서브세트를 요구하기 보다는 정보에 대한 참조 포인트로서 독립하도록 한다.
관계에 대한 이름은 관계를 포함하는 이름공간 내에서 고유해야 한다.
속성/요소 설명
ObjectConstraint(group) 이 관계에 참여하는 인스턴스에 대한 제한. 섹션 3.5.3 참조.
Flow 이 관계에 참여하는 인스턴스들 간의 플로우
3.8.2 추상 관계
추상 관계는 2개의 추상 객체 정의 사이에서 정의된 관계이다. 추상 관계는 2개의 정의 사이의 가능한 상호작용을 나타낸다.
3.8.2.1 추상 통신 관계
통신 관계는 엔드포인트 정의들 간의 가능한 통신 링크를 캡쳐하는 데 사용된다. 통신 관계는 독립적으로 배치된 소프트웨어 요소들 사이의 상호작용을 설명하는 데 사용된다. 통신 관계 스키마는 클라이언트 및 서버 엔드포인트 참조를 부가함으로써 베이스 관계 스키마를 확장한다.
속성/요소 설명
clientDefinition 통신 관계에 포함된 클라이언트 인스턴스의 정의
ServerDefinition 관계에 포함된 서버 인스턴스의 타입
추상 타입 쌍의 다음의 조합은 통신 관계에 대하여 유효하다
클라이언트 타입 서버 타입
엔드포인트 엔드포인트
3.8.2.2 추상 호스팅 관계
호스팅 관계는 게스트가 구성되기 위해 호스트를 요구한다는 사실을 캡쳐하는 데 사용된다. 게스트에 대한 가능한 호스트보다 더 많을 수 있기 때문에, 호스팅 관계는 또한 호스트에 대한 게스트의 구성을 담당한다. 객체의 인스턴스를 생성하기 위하여, 호스팅 관계는 게스트로부터 호환가능한 호스트로부터 존재해야 한다.
예를 들어, 웹서비스 객체 정의와 IIS 객체 정의 사이에 호스팅 관계가 존재할 수 있다. 이 경우, MyWebservice 및 MyIIS가 웹서비스 및 IIS를 각각 구현하는 것으로 가정하면, 관계는 호스팅 관계에 대한 매니저를 사용하여 시스템 MyIIS의 인스턴스에 대한 시스템 MyWebservice의 인스턴스를 생성할 수 있다는 것을 표시한다. 우리는 시스템과 관계에 대하여 존재하는 제한을 평가할 때까지 관계를 생성할 수 있는지를 모른다.
속성/요소 설명
GuestDefinition 게스트 인스턴스의 정의를 식별
HostDefinition 호스트 인스턴스의 정의를 식별
추상 정의 쌍의 다음의 조합은 호스팅 관계에 대하여 유효하다.
게스트 타입 호스트 타입
엔드포인트 엔드포인트
리소스 리소스
리소스 시스템
시스템 리소스
시스템 시스템
3.8.2.3 추상 포함 관계(Abstract Containment Relationship)
2개의 추상 객체들 간의 포함 관계는 parentType에 기초한 구체적 타입이 memberType에 기초한 멤버를 포함할 수 있다는 사실을 캡쳐한다. 포함은 부모 인스턴스가 멤버 인스턴스의 수명을 제어할 수 있고 멤버 인스턴스에 거동을 델리케이트할 수 있다는 것을 암시한다.
속성/요소 설명
ParentDefinition 멤버를 포함하는 인스턴스의 정의를 식별
MemberDefinition 포함된 멤버가 될 인스턴스의 정의를 식별
추상 정의 쌍의 다음의 조합은 포함 관계에 대하여 유효하다.
부모 타입 멤버 타입
시스템 엔드포인트
시스템 리소스
시스템 시스템
엔드포인트 리소스
리소스 리소스
3.8.2.4 추상 델리게이션 관계(Abstract Delegation Relationship)
델리게이션은 외부 시스템으로부터 포함된 시스템으로 거동을 포워딩하는 데 사용된다. 이것을 수행하는 방법은 외부 시스템 상의 엔드포인트를 내부 시스템 상의 엔드포인트로 델리게이팅하는 것이다. 이것은 내부 시스템 상의 엔드포인트에 대하여 외부 시스템에 지시된 모든 상호작용을 효율적으로 포워딩한다. 델리게이션은 체인되어, 내부 시스템이 그 거동을 또다른 시스템에 델리케이팅하는 것을 허용할 수 있다.
델리게이션 관계는 델리게이션에 참여할 수 있는 추상 엔드포인트 정의 쌍을 정의한다. 각각의 관계는 프록시로서 동작할 수 있는 추상 엔드포인트 정의와 거동을 델리케이팅할 수 있는 추상 엔드포인트 정의를 식별한다.
속성/요소 설명
ProxyDefinition 내부 엔드포인트에 그 거동을 델리게이팅하는 외부 엔드포인트의 정의를 식별
DelegateDefinition 요구된 거동을 제공하는 내부 엔드포인트의 정의를 식별
추상 타입 쌍의 다음의 조합은 델리게이션 관계에 대하여 유효하다.
프록시 타입 델리게이트 타입
엔드포인트 엔드포인트
우리는 리소스 및 시스템 델리게이션이 층들간의 결합을 지원하도록 할 수 있다. 예를 들어, IIS가 파일 시스템을 반드시 배치하지 않고서도 파일 시스템의 일부를 노출할 수 있게 한다.
3.8.2.5 추상 참조 관계
우리는 호스팅 관계 종속성에 더하여 인스턴스들간의 강력한 의존성을 캡쳐하기 위하여 참조 관계를 사용한다. 이들 종속성은 배치동안의 구성 순서, 및 설치 및 갱신 동안의 시스템들 간의 플로우 파라미터를 제어하는 데 사용된다. 참조 관계는 강력한 종속성을 나타내므로, 우리는 참조 관계가 시스템 경계를 횡단하는 것을 허용할 수 없다. 이것은 하나의 시스템 내의 리소스가 또다른 시스템 내의 리소스에 대한 종속성을 가질 수 없다는 것을 의미한다. 이것은 시스템이 더이상 배치의 독립 유닛을 작성할 수 없게 한다. 시스템들간에 종속성이 존재하면, 우리는 통신 관계를 사용한다. 통신 관계는 시스템의 재설치를 필요로 하지 않고 시간에 따라 변경될 수 있다.
속성/요소 설명
DependentDefinition 소스 인스턴스에 의존하는 인스턴스의 정의
SourceDefinition 소스 인스턴스의 정의. 이 인스턴스는 종속성을 알 필요가 없다.
추상 타입 쌍의 다음의 조합은 참조 관계에 대하여 유효하다.
종속 타입 소스 타입
시스템 시스템
리소스 리소스
3.8.3 암시적 베이스 관계(Implicit base relationship)
모든 추상 관계는 도 16에 도시된 바와 같이 베이스 관계 정의 중의 하나를 암시적으로 확장한다. 이들 정의는 관계 트리의 각각에 대한 루트를 형성한다. 이것을 수행함으로써, 우리는 제한 정의 내의 루트 정의를 참조할 수 있고 루트 타입으로부터 공통 타입 제한을 상속할 수 있다.
3.8.4 구체적인 관계(Concrete relationship)
구체적 관계는 2개의 구체적 객체 정의 사이의 관계이다. 각각의 구체적 관계는 추상 관계를 구현해야 한다. 추상 관계는 구체적 객체 정의에 의해 직접적으로 또는 간접적으로(상속을 통해) 구현되는 추상 객체 정의의 일치쌍 사이에 있어야 한다.
3.8.4.1 호스팅 관계
우리가 애플리케이션을 데이터센터에 배치할 때, 우리는 애플리케이션 내의 시스템에 대한 호스팅 관계를 모두 분석할 필요가 있다. 이것을 수행함으로써, 오퍼레이터는 요구된 호스팅 관계의 각각에 대한 호스팅 멤버를 생성할 필요가 있다. 오퍼레이터의 태스크를 간략화하고 개발자가 배치 프로세스를 안내하는 것을 허용하기 위하여, 개발자는 이를 대신하여 구체적 호스팅 관계를 생성할 수 있다. 구체적 호스팅 관계는 오퍼레이터가 애플리케이션을 배치할 때 단지 단일 호스팅 멤버를 선언할 필요가 있도록 호스팅 관계 멤버의 세트를 그룹화하는 데 사용된다.
속성/요소 설명
HostDefinition 이 호스팅 관계가 적용되는 게스트 구체적 객체 정의의 이름
GuestDefinition 이 호스팅 관계가 적용되는 호스트 구체적 관계 정의의 이름
Hosting 구체적 관계의 게스트 및 호스트 정의에 루트된 멤버를 참조하는 호스팅 관계 멤버의 리스트
구체적 타입 쌍의 다음의 조합은 호스팅 관계에 대하여 유효하다.
게스트 타입 호스트 타입
시스템 시스템
게스트는 호스트 iff에 결합될 수 있다.
게스트 내의 각각의 guestMember에 대하여
호스트 내에 하나 이상의 hostMember가 존재한다
guestMember.Type은 hostMember.type를 갖는 호스팅 관계를 가지고,
guestMember.hostConstraints는 hostMember.settings을 유효화하고,
hostMember.guestConstraints는 guestMember.settings을 유효화하고,
guestMember의 각각의 멤버에 대하여, hostMember의 멤버에 대한 결합이 존재한다.
예를 들어, 다음의 구체적 관계는 층 3 시스템(Bike)을 층 2 호스트(오퍼레이팅 시스템)에 결합한다. 이 경우, 우리는 "시스템 폴더"의 디폴트 값을 갖는 호스팅 관계에 대한 세팅을 정의한다. 우리는 층 3 애플리케이션의 시스템과 층 2 호스트의 시스템 간의 호스팅 관계를 정의하는 3개의 호스팅 멤버 중 하나로 이 세팅을 플로우시킨다.
3.8.4.2 참조 관계
우리는 2개의 구체적 타입들 간의 구체적 참조 관계를 사용하여 통신 관계를포함하지 않는 시스템들간의 특정 종속성을 캡쳐할 수 있다. 예를 들어, 우리는 하나의 애플리케이션이 설치되기 위해서는 또다른 애플리케이션이 이미 존재하고 있어야 한다는 사실을 캡쳐할 수 있다.
속성/요소 설명
DependentDefinition 이 참조 관계가 적용되는 종속 구체적 객체 정의의 이름
SourceDefinition 이 참조 관계가 적용되는 소스 구체적 객체 정의의 이름
Reference 게스트 및 호스트 정의의 멤버를 참조하는 참조 관계 멤버의 리스트
구체적 타입 쌍의 다음의 조합은 참조 관계에 대하여 유효하다.
종속 타입 소스 타입
시스템 시스템
리소스 리소스
리소스 엔드포인트
엔드포인트 리소스
3.9 객체 및 관계 제한
우리는 객체 및 관계 제한을 사용하여 특정 관계에 사용될 때의 구체적 공간의 토폴로지를 정의하고 객체의 세팅을 제한한다.
예를 들어, 추상 객체 정의(A)내에서, 우리는 이 추상 정의의 구현이 또다른 추상 객체 정의(B)의 하나의 인스턴스를 포함해야 한다는 것을 식별하기를 원한다. 하나 이상의 적절한 포함 관계가 이미 존재하는 것을 가정하면, 이것을 수행하기위하여, 우리는 A 내에서 다음과 같이 보이는 관계 제한을 사용한다.
제한은 A의 구현이 부모의 역할을 하고 관계의 다른 엔드에서의 타입이 타입 B인 포함 관계가 존재함을 식별한다. 우리가 B의 구성을 통해 더 많이 제어하기를 원하면, 우리는 다음과 같이 타입 B의 세팅에 대한 제한을 부가할 수 있다.
이 경우, 우리는 멤버의 이름이 스트링 "myPort"와 동일하도록 요구한 제한을 부가한다.
우리는 또한 관계에 제한을 부가할 수 있고; 우리는 이들 객체 제한을 호출할 수 있다. 관계로부터, 우리는 관계에 참여한 객체를 제한한다. 관계 내의 각각의 역할에 대하여, 우리는 객체 정의를 식별할 수 있고 그 객체 정의에 세팅 제한을 부가할 수 있다. 그 관계로부터, 카디널리티는 항상 minOccurs=1 및maxOccurs=1이므로, 이것은 제한 선언에 나타나지 않는다.
마지막으로, 우리는 제한을 네스트할 수 있다. 이것은 제한들을 함께 체인할 수 있는 능력을 제공하고, 외부 제한은 내부 제한에 대한 컨텍스트를 세팅한다. 다음은, webApp를 특정 타입의 포함 엔드포인트로 제한하는 webapp 시스템을 호스트하는 IIS 시스템의 일례이다.
이 경우, 우리는 하나 이상이 참이어야 하는 가능성의 세트를 지정하기 위하여 객체 제한의 그룹을 사용한다.
네스트된 제한은 외부로부터 평가할 수 있는 경로를 형성한다. 경로 상의 각각의 제한은 현재의 인스턴스뿐만 아니라 경로 상의 이전의 인스턴스의 세팅을 액세스할 수 있다. 네스트된 제한의 평가는 마치 제한이 식별된 시스템내에 정의된 것처럼 수행된다.
foo의 관점으로부터, 다음의 2개의 시나리오는 동등하다. 제1 foo는 포함된 시스템 바 상의 네스트된 제한을 배치하고, 제2 foo에서는, 타입 바가 이미 제한을포함한다.
시나리오 1:
시나리오 2:
3.9.1 제한 모델
제한 모델에 2개의 부분, 즉 가드(guard)와 프리디케이트(predicates)가 있다. 우리는 가드를 사용하여 프리디케이트를 실행하는 컨텍스트를 정의한다. 예를 들어, 관계 내에서, 우리는 가드를 사용하여 프리디케이트를 실행하기를 원하는 타입의 특정 조합을 식별한다. 객체 내에서, 우리는 가드를 사용하여 다른 객체에 대한 관계의 세트를 식별한다.
프리디케이트는 그 가드의 요구사항이 충족되면 실행된다. 우리는 프리디케이트의 2가지 형태 - 세팅 값을 유효화하는 세팅 제한 및 제한의 세트를 유효화하는 그룹 제한 - 를 갖는다: .
우리는 가드 내에 가드를 네스트할 수 있고, 이 경우, 내부 가드는 외부 가드가 만족될 때에만 검사된다. 이것은 관계 구조의 검증을 지원하는 경로를 작성하도록 한다.
가드와 그 프리디케이트의 조합은, 가드가 일치되어야 하고 프리디케이트가 참으로 평가하는 횟수를 나타내는 카디널리티를 가질 수 있다.
더 형식적으로,
가드는 ObjectConstraint 또는 RelationshipConstraint로서 정의된다. 객체 제한은 관계의 엔드에 관련된 2개의 객체 정의를 식별한다. 관계 제한은 관계 정의와 타겟 객체 정의를 식별한다. 객체 제한은 선택적이거나 요구될 수 있고, 관계 제한은 하한 및 상한을 갖는다. 이것은 관계가 2개의 타입을 식별할 수 있지만, 타입은 다수의 관계에 참여할 수 있다는 사실을 반영한다는 점에서 카디널리티와 다르다.
프리디케이트는 규칙을 포함하는 세팅 제한과 가드의 세트를 포함하는 그룹중의 하나이다. 프리디케이트는 가드의 컨텍스트 내에서 평가된다. 세팅 제한의 경우, 프리디케이트는 루트 가드의 소유자 및 각각의 네스트된 가드에 의해 식별된 컨텍스트로부터 세팅을 식별할 수 있다. 그룹은 하나 이상이 일치하고 참으로 평가되는 가드의 세트를 식별하는 데 사용된다.
예:
이 예는 webapp에 대한 제한 관계가 있을 때마다 참으로 평가하는 가드를 나타낸다. 이 가드는 최대 한번 참으로 평가할 수 있다. 또한 일치는 사용자에게 에러를 리턴하도록 한다.
이 예는 가드에 프리디케이트를 부가한다. 가드는 관계와 타겟 정의가 일치하고 세팅 제한이 참으로 평가될 때 단지 참으로 평가될 것이다. 관계와 타겟 정의가 일치하고 세팅 제한이 참이 아니면, 에러가 사용자에게 리턴된다. 관계와 타겟 타입이 일치하고 세팅 제한이 한번 이상 참으로 평가되면, 에러가 사용자에게 리턴된다.
이 예에서, 우리는 가드 내에 가드를 네스트한다. 외부 가드가 참이면(제한을 포함하는 타입이 webapp를 포함하면), 우리는 외부 가드 내의 컨텍스트 내의 내부 가드를 평가한다. 이것은 내부 관계 제한이 webapp 인스턴스의 컨텍스트 내에서 평가되는 것을 의미한다. webApp가 0 또는 1의 vdirs를 포함하면, 내부 제한은참을 리턴하고, 1보다 큰 vdir을 포함하면, 제한은 사용자에게 에러를 리턴한다.
객체 제한의 컨텍스트는 주요 객체 정의(제1 객체 정의)이다. 이것은 관계 제한은 webapp의 컨텍스트 내에서 평가되는 것을 의미한다. 관계 제한은 2개의 가능한 컨텍스트를 정의하고, 제1 컨텍스트는 객체 제한을 위한 컨텍스인 관계이고, 제2 컨텍스트는 관계 제한을 위한 컨텍스트인 타겟 객체 정의이다.
이 예에서, 우리는 그룹을 사용하여 Webapp의 컨텍스트 내에서 평가되는 2개의 관계 제한을 포함한다. 그룹은 관계들 중의 하나 이상이 발생되고 참을 리턴하지 않으면 에러를 발생시킨다. 이 경우, Webapp는 Vdir 또는 디렉토리를 포함해야 한다.
3.9.2 베이스 제한
속성/요소 설명
Name 이 제한된 섹션의 이름
DesignData 이 제한에 관한 설계 표면 특정 정보
3.9.3 객체 제한
객체 제한은 관계의 역할 중 하나 또는 둘에 대한 제한을 설명한다. 제한은 실패하는 경우 제한의 식별을 돕기 위하여 이름을 가지며, 역할과 관련된 타입에서 타겟된 세팅 제한의 리스트를 포함하고, 역할과 관련된 정의로부터 도출된 객체가 되도록 인스턴스를 제한할 수 있다.
속성/요소 설명
SettingConstraint 이 제한의 컨텍스트에 대하여 적용된 세팅 제한의 리스트
RelationshipConstraint 네스트된 관계 제한. 관계가 주요 역할과 관련된 타입에 대하여 선언된 것처럼 평가된다.
RelationshipConstraintGroup 네스트된 관계 그룹 - 그룹 내의 관계는 1차 역할과 관련된 타입에 대하여 선언되는 것처럼 평가된다. 이전의 제한은 세팅 루트에 대한 공지된 이름이 된다.
PrimaryRole 이 제한이 목표로 하는 관계의 역할의 이름
PrimaryObject 1차 역할과 관련된 객체 정의의 이름
SecondaryRole 이 제한이 목표로 하는 관계에 대한 다른 역할의 이름
SecondaryObject 관계에 대한 2차 역할과 관련된 객체 정의의 이름. 이것은 2차 역할이 지정되면 요구된다.
Required required가 참이면, 제한은 정의를 일치해야 하고 관계에 대한 역할에 대하여 선언하였다. required가 거짓이면, 가드는 사용에 있어서 타입을 일치하지 않는다. required는 관계가 타입의 특정 조합을 사용하도록 하는데 사용된다.
3.9.4 객체 제한 그룹
객체 제한 그룹은 객체 제한의 세트가 함께 그룹화되도록 하여 적어도 하나의 시멘틱을 사용하여 평가되도록 한다. 그룹은 객체 제한중의 하나 이상이 관계에 대한 객체와 일치하지 않으면 에러를 리턴하고 그 포함된 프리디케이트는 참으로 평가된다. 우리는 제한이 그룹의 직접 멤버이면 타입 제한에 대한 요구된 속성을 무시한다.
속성/요소 설명
ObjectConstraint 그룹 내에 정의된 타입 제한의 리스트
3.9.5 관계 제한
관계 제한은 객체가 참여할 수 있는 관계를 제한하는 데 사용된다. 관계 제한은 관계 정의, 관계의 다른 엔드에서의 인스턴스의 객체 정의 및 관계의 카디널리티를 식별한다. 에러 메시지 내에서 식별될 수 있도록 제한에 이름이 부여된다. 관계 제한의 바디는 관계와 관계의 다른 엔드에서의 인스턴스에 대한 프리디케이트를 포함한다.
관계 제한은 다수의 목적으로 사용될 수 있다: 추가의 프리디케이트없이 카디널리티를 사용하여, 인스턴스에 제공되어야 하는 관계를 식별하여 프리디케이트로 정확하게 동작하는 데 사용되고, 이 객체가 상호 작용하려는 인스턴스에 대한 구성의 세트를 좁히는데 사용될 수 있다.
속성/요소 설명
SettingConstraint 관계 내의 세팅의 값 또는 관계의 다른 엔드에서의 객체에 대한 제한
RelationshipConstraint 타겟 객체(타겟 객체 정의는 지정되어야 한다)의 컨텍스트 내에서 평가되는 관계 제한. 이것은 제한을 타겟 객체에 부가하는 것과 동등하다.
RelationshipconstraintGroup 타겟 객체(타겟 객체는 지정되어야 한다)의 컨텍스트 내에서 평가되는 관계 그룹. 이것은 그룹을 타겟 객체에 부가하는 것과 동등하다.
ObjectConstraint 외부 제한에 의해 식별된 관계 정의의 부분인것처럼 평가된 네스트된 객체 제한.
OhjectConstraintGroup 외부 제한에 의해 식별된 관계 정의의 부분인 것처럼 평가된 네스트된 객체 제한 그룹.
Name 포함 정의의 범위 내의 제한에 대한 고유의 이름
Relationship 제한된 관계 정의의 이름
MyRole 이 객체 인스턴스가 이 관계에서 할 역할의 이름 - 이것은 관계 정의 내의 속성 이름에 대응하는 이름, 예를 들어, 클라이언트/서버, 게스트/호스트 등. 이것이 제공되지 않으면, 관계 내에 포함된 타입으로부터 역할을 추론한다.
TargetObject 관계의 다른 측에 나타날 수 있는 객체의 정의의 선택적 이름
MaxOccurs 이 객체의 시간 인스턴스의 최대 수가 명명된 관계 내의 정의된 역할의 참여자로서 식별될 수 있다. 이것이 제로이면, 타입은 명명된 관계에 참여하는 것을 명시적으로 금지한다.
MinOccurs 이 객체의 시간 인스턴스의 최소수가 명명된 관계 내의 정의된 역할에 참여자로서 식별될 수 있다.
3.9.6 관계 제한 그룹
관계 제한 그룹은 관계 제한의 세트가 함께 그룹화되어 하나 이상의 시멘틱을 갖는 프리디케이트로서 평가될 수 있도록 한다. 그룹은 포함된 관계 제한 중의 하나 이상이 관계 정의 및 타겟 객체를 일치시키지 않으면 에러를 리턴하고, 포함된 프리디케이트는 참을 리턴한다. 포함된 제한 내의 프리디케이트 중의 임의의 것이 에러를 리턴하면, 이들 에러는 사용자에게 전파된다. 포함된 관계 제한의 minOccurs 카디널리티는 무시되지만, maxOccurs 카디널리티가 위반되면, 에러가 사용자에게 리턴된다.
속성/요소 설명
relationshipConstraint 그룹 내에 정의된 관계 제한
3.10 객체 매니저
객체 매니저는 타입 및 관계가 고객 거동을 런타임 환경에 삽입하는 메카니즘이다. 매니저가 관리하는 각각의 타입을 지원할 수 있는 몇개의 역할이 있다: 타입의 설치에 참여할 수 있고, 타입의 CLR 표시를 제공할 수 있고, 타입들간의 결합이 어떻게 분석되는지에 대한 정책 결정에 포함될 수 있고 컴플렉스 제한과 플로우에 대한 구현을 제공할 수 있다.
모든 객체 매니저 역할은 CLR을 통해 엔트리 포인트로서 강력하게 명명된 클래스로 노출한다. 객체 매니저는 sdm 내의 다른 타입과 동일한 방법으로 패키지되고 버저닝된다: 이들은 시스템 분산 유닛과 그들의 버전에 분산되고, 강력한 이름은 그들이 선언된 sdm 파일로부터 도출된다.
속성/요소 설명
Name 포함 sdm 파일의 범위 내의 이 매니저에 대한 고유의 이름
Description 매니저의 텍스트 설명
AssemblyName 어셈블리 이름
Version 어셈블리 버전
PublicKeyToken 어셈블리에 대한 공개 키 토큰
Culture 어셈블리의 컬쳐
Platform 어셈블리의 플랫폼
SourcePath SDU 내의 어셈블리로의 경로
3.10.1 역할
객체 매니저는 지원하는 각각의 타입을 위한 하나 이상의 역할을 지원한다. 이들 역할은 다음을 포함한다.
a) 타입 또는 관계에 대한 제한 평가
b) 타입 또는 관계에 대한 플로우 평가
c) 타입에 대한 구성/해체/갱신 지원
d) 타입 또는 관계에 대한 세팅을 위한 객체 표시 노출
e) 타입 또는 관계에 대한 탐색 수행
f) 타입 또는 관계 주위의 설계 표면 특정 UI 지원
3.11 SDM 문서 구조
sdm 문서는 강력한 식별, 관계의 세트에 대한 버저닝 및 로컬리제이션 정보, 객체 및 매니저를 제공한다.
3.11.1 정보
SDM 문서의 정보 섹션은 인간이 판독가능한 정보를 포함하여 sdm 문서의 식별 및 관리를 지원한다.
속성/요소 설명
FriendlyName
CompanyName
Copyright
Trademark
Description
Comments
3.12 변경 요구
도 17는 변경 요구의 일례를 나타낸다. 변경 요구가 SDM 런타임에 대한 변경의 세트를 식별한다. 런타임에 대한 모든 변경은 요구가 xml 포맷으로 구성되도록 하는 API를 통해 변경 요구를 사용하여 개시된다.
초기 요구는 액션의 단일 그룹을 포함한다. 요구가 런타임에 의해 처리됨에 따라, 더많은 구조가 네스트된 그룹화를 통해 부가되고 더 많은 액션이 확장 및 플로우 프로세스의 결과로서 부가된다. 이 평가 프로세스를 통하고 타겟 머신에 대하여 실행될 준비가 된 변경 요구는 완전히 인가된 변경 요구라 불리운다. 더 많은 정보에 대하여 섹션 3.13을 참조하기 바란다.
3.12.1 일관성 규칙(Consistency rules)
액션이 SDM 인스턴스 공간 상에서 수행될 때, 우리는 액션이 SDM 내의 모든 인스턴스를 완료한 후 인스턴스 공간이 여전히 일관성 상태에 있는 것을 확인한다. 지속적 상태에 의해, 우리는 인스턴스에 적용되는 모든 제한이 여전히 유효하다는 것을 의미한다. 예를 들어, 서버로의 접속을 요구하는 클라이언트의 인스턴스를 생성하는 경우, 클라이언트를 생성하고 접속하는 데 사용되는 액션의 시퀀스가 완료할 때, 클라이언트와 서버 사이에 접속이 존재해야 한다.
모델 일관성을 평가하기 위하여 사용된 제한은 액션 베이시스 또는 액션 세트의 결론에 대하여 평가될 수 있다. 우리는 동작 일관성과 처리 일관성의 2가지 형태의 일관성를 호출한다.
트랜잭션이 완료된 후 객체가 일치하지 않으면, 우리는 사용자가 오프라인으로서 그 인스턴스를 명시적으로 마크하도록 한다. 인스턴스가 오프라인이면, 인스턴스에 적용되는 제한을 평가하지 않고 인스턴스는 다른 인스턴스의 관점으로부터 존재하는 것으로 나타나지 않는다. 이것은 이들 모든 인스턴스가 오프라인으로 마크될 수 있는 것을 의미한다. 오프라인은 부모로부터 자식으로 및 호스트로부터 게스트로 전파되므로, 시스템을 오프라인으로서 마크하는 것은 오프라인으로서 소유된 인스턴스내의 모든 것 및 호스트된 모든 인스턴스를 오프라인으로서 마크한다.
3.13 모델 평가
이 섹션에서, SDM 런타임의 범위 내의 SDM 모델의 거동을 설명한다.
3.13.1 정의 공간
정의 공간은 sdm 런타임으로 공지된 모든 정의를 포함한다. 도 16의 단계는 새로운 정의를 런타임으로 로딩하는 프로세스의 예를 정의한다. 이 프로세스는 또한 설계 표면이 sdm 문서를 유효화할 때 발생하는 컴파일 프로세스에 의해 공유된다.
3.13.1.1 로드
sdm 문서는 sdu 또는 독립형 문서로서 런타임에 부여된다. 우리는 디스크로부터 파일을 로드하는 것을 시도한다.
유효화 에러 설명
모르는 파일 우리는 특정 위치 내의 파일을 탐색할 수 없다.
액세스 거절 우리는 파일로의 액세스를 거절당한다.
3.13.1.2 스키마 유효화
제1 단계는 sdm 문서가 sdm 스키마에 일치되는 것을 유효화하는 것이다. 이 때, 우리는 모든 모르는 요소, 요구된 요소 또는 속성이 손실된 타입 또는 무효 데이터를 포함하는 타입에 대한 에러를 리턴할 것이다.
유효화 에러 설명
무효 문서 문서는 무효 xml 신택스(syntax)를 갖는다 - 폐쇄되지 않은 노드, 하나 이상의 상부 레벨 노드 등.
모르는 요소 기대되지 않는 요소가 sdm 문서에서 탐색되었다.
모르는 속성 모르는 속성은 sdm 문서에서 탐색되었다.
무효 값 값이 스키마 유효화를 실패하였다(이것은 세팅 값 유효화를 포함하지 않는다)
손실된 속성 요구된 속성은 손실되었다.
손실된 요소 요구된 요소가 손실되었다.
무효 속성 조합 속성 또는 요소의 조합은 다음과 같이 무효한 것을 사용하였다.-minOccurs!=maxOccurs|minOccurs=0 byValue로
우리는 모르는 요소 및 속성에 대하여 경고를 리턴하고 무시할 수 있다.
3.13.1.3 세팅 값과 타입 분석
타입 분석 페이즈에 있어서, 우리는 sdm 파일 내의 타입에 대한 모든 참조를 분석한다(인가된 이름은 스키마에 사용된다) 먼저, 우리는 문서의 범위내에 있는 모든 타입 참조가 유효하다는 것을 확인한다. 별칭을 포함하지 않는 모든 타입 참조가 있다. 그후, 우리는 모든 임포트 명령문을 분석하려고 시도한다. 우리가 임포트 명령문을 분석할 수 없으면, 우리는 이름공간 로드 에러를 생성하고, 우리가 임포트 명령문을 분석할 수 있으면, 우리는 이름공간 내의 타입을 위치지정하려고 시도한다. sdm 파일로부터 이름공간을 로드하려고 하면, 이름공간 분석 프로세스는 다른 에러를 발생시킬 수 있다.
타입 분석 에러 설명
모르는 타입 타입은 로컬 또는 앨리어싱된 이름공간에서 탐색될 수 있다. 이것은 세팅, 시스템, 엔드포인트, 리소스, 관계, 제한 및 플로우에 대하여 발생될 것이다.
모르는 이름공간 이름공간은 탐색될 수 없다. 이름공간은 미리 로딩되었다.
버전 충돌 우리는 일치 버전 정보로 이름공간을 위치지정할 수 없다.
컬쳐 충돌 우리는 일치 컬쳐 정보로 이름공간을 위치지정할 수 없다.
타입의 무효 사용 이 상황에서의 무효 타입의 사용. 예를 들어, 관계 멤버 내의 세팅 타입 등.
무효 세팅 값 세팅 값은 그 타입의 유효화를 전달하는 것을 실패하였다.
불법 세팅 값 세팅 선언에 대한 액세스를 위반하거나 고정 값이 타입 또는 베이스 타입 내에서 미리 선언된 세팅 값이 제공되었다.
3.13.1.4 경로 분석
경로 분석 페이즈 동안, 우리는 문서 내에 정의된 세팅과 멤버로의 모든 경로를 분석하려고 시도한다. 분석되지 않은 타입을 갖는 세팅 또는 멤버를 참조하는 경로는 에러를 발생시키지 않는다.
경로 분석 에러 설명
모르는 세팅 세팅 선언은 경로를 일치시키도록 탐색되지 않았다.
모르는 멤버 멤버 선언은 경로 내의 이름을 일치시키도록 탐색되지 않았다.
카디널리티 불일치 플로우 및 제한 명령문 내의 세팅 값으로의 경로는 1보다 큰 카디널리티를 갖는 관계 또는 멤버를 포함하였다.
타입 불일치 분석된 세팅 또는 멤버의 타입 및 변수의 선언된 타입은 매칭되지 않았다.
사용 불일치 경로의 선언된 목적 - 입력 또는 출력 - 값에 대한 고정 변경자 또는 세팅 선언에 대한 액세스 변경자를 위반하였다.
값이 없음 요구된 플로우 입력 경로는 디폴트 값을 갖지 않고 사용자가 값을 제공하도록 노출되지 않는 세팅을 참조하였다.
경로 분석 경고 설명
런타임 경로 경고 추상 타입을 참조하는 isReference를 참조하는 경로는 런타임까지 검증할 수 없다.(우리는 사용자가 구체적 타입을 생성할 때까지 멤버가 존재하는 것을 검사할 수 없다.)
플로우 경고 플로우 경고 - 우리는 동시에 또는 더 일찍 정의된 플로우의 타겟인 세팅에 대한 값이 제공되면 경고를 발생시킬 것이다. 우리는 세팅이 고정되지 않는 한 세팅 값이 제공된 후 플로우가 정의되면 경고를 발생시키지 않는다.
3.13.1.5 관계 참여
타입 공간에서, 우리는 타입 선언이 관계 내의 그 멤버의 참여에 대하여 제한 중의 임의의 것을 위반하지 않은 것을 검사한다. 이것을 수행하기 위하여, 우리는 관련된 세팅 제한을 갖지 않는 관계 제한 및 모든 타입을 평가한다.
타입 공간 제한 에러 설명
관계 타입 위반 관계 멤버는 특정 관계 및 관계에 의해 식별된 타입에 기초하여 양립할 수 없는 2개의 멤버를 식별한다. 예를 들어, vdirToVsite 호스팅 관계는 vdir 및 파일 사이에서 선언된다.
관계 사용 위반 관계는 2개의 멤버 사이에서 선언되지만, 이 컨텍스트 내의 관계의 사용은 허용되지 않는데, 그 이유는 멤버가 액세스가능하지 않기 때문이다. 예를 들어, 직접 포함 관계 내의 시스템 상이 아닌 2개의 엔드포인트들 간의 델리게이션 관계의 선언.
관계 제한 위반 관계는 관계 내의 제한에 기초하여 지원되지 않는 타입의 조합 사이에서 선언되었다. 예를 들어, 관계는 vsites 사이에서 선언될 수 있지만, vsite로부터 도출된 소정의 타입을 지원한다.
타입 공간 제한 경고 설명
가능한 카디널리티 불일치 카운트업할 때 멤버에대한 maxOccurs는 관계 제한의 카디널리티를 위반한 관계의 세트를 발생시킨다.
3.13.1.6 인스턴스 시뮬레이션
인스턴스 시뮬레이션에서, 우리는 실패한 것을 알아야 하는 제한을 식별할 수 있지만 사용자 입력에 기초하여 실패할 수 있거나 실패할 수 없는 제한을 플래그하도록 값을 플로우하고 제한은 평가하려고 시도한다. 이것을 수행하기 위하여 인스턴스 공간의 모델을 구성하고 이 인스턴스 공간에 기초한 제한 및 플로우를 평가한다. 플로우 또는 제한이 에러를 발생할 것으로 알면, 우리는 에러를 발생시키고, 에러를 발생시킬 수 있으면, 경고를 발생시킨다.
우리는 모든 byReference 시스템에 대한 minOccurs 제한을 사용하여 인스턴스 공간 변경 요구를 작성한다. minOccurs가 0이면, 단일 인스턴스를 생성하고 그것을 선택적으로 마크한다. 우리는 표준 변경 요구를 사용함에 따라 동일한 확장 및 플로우 프로세스를 통해 변경 요구를 전달한다.
시뮬레이션 경고 경고
선택적 시스템 시스템이 선택적이기 때문에, 런타임은 이 구성으로부터 발생할 수 있는 모든 에러를 완전히 결정할 수 없다.
우리는 그후 완전히 정의된 입력 값을 갖는 모든 플로우를 평가한다. 입력 값이 고정되지 않고 사용자에 의해 변경될 수 있으면, 우리는 플로우의 출력을 임시로서 마크한다. 임시 입력은 그것을 소비하는 임의의 플로우 동작을 통해 체인할 것이다. 플로우가 완전한 입력 값을 갖지 않으며 사용자가 값을 제공할 수 있으면, 우리는 플로우의 모든 출력을 비정의(undefined)로 마크한다. 선택적 시스템으로부터의 플로우는 또한 임시 값을 발생시킨다.
플로우 에러 설명
플로우 입력 비정의 값은 요구된 플로우 입력 값에 제공되지 않았다.
일단 우리가 값을 플로우하면, 우리는 이들 값에 기초하여 제한을 평가한다.임시 값을 실패한 제한은 경고로서 발생될 것이다; 경고는 제한이 비정의 값에 의해 평가될 수 없을 때 발생될 것이다.
세팅 제한 에러 설명
세팅 입력 비정의 값은 요구된 제한 입력에 제공되지 않았다.
세팅 위반 제한 제한에 대한 하나 이상의 입력 세팅은 제한 위반을 발생시켰다.
세팅 제한 경고 설명
세팅은 제한을 위반할 수 있다 디폴트에 기초한 입력 세트의 조합은 제한을 위반할 수 있다.
세팅 제한은 평가되지 않았다 제한은 배치 또는 사용 시간에 제공된 세팅에 의존하기 때문에 평가될 수 없다.
3.13.2 인스턴스 공간
모델 평가 프로세스는 선언적 변경 요구를 제출함으로써 개시된다. 이 요구는 런타임 내의 인스턴스를 목표로 하는 생성, 갱신 또는 삭제 동작의 세트를 포함할 것이다. 우리는 도 19에 도시된 바와 같이 타겟 시스템 상의 요구된 변경을 규정하기 전에 일련의 파이프라인 스테이지를 통해 요구를 전달한다.
다음의 섹션은 각각의 확장 단계의 책임을 약술한다.
3.13.2.1 요구 제출
시스템에 대한 변경을 개시하기 위하여, 오퍼레이터 또는 프로세스는 변경 요구를 제출해야 한다. 변경 요구는 오퍼레이터가 런타임 내의 인스턴스들을 통해 수행하기를 원하는 액션의 세트를 포함하고; 이들 액션은 3개의 그룹, 즉 생성 액션, 갱신 액션 및 삭제 액션으로 나누어진다.
요구는 그룹으로서 완료되거나 실패해야 하는 액션의 자동 세트로서 처리된다. 이것은 액션의 세트가 모델에 유효 변경을 발생시키는지를 평가할 때 제한 유효화 프로세스가 요구 내의 모든 액션을 고려하도록 한다.
변경 요구 유효화 에러 설명
무효 문서
모르는 요소/속성 모르는 요소 또는 속성은 xml 스키마에서 탐색되었다.
3.13.2.1.1 타입 분석
타입 분석 페이즈에서, 우리는 변경 요구에서 참조되는 모든 타입 및 멤버를 분석한다. 변경 요구는 런타임에 의해 이미 로드된 것으로 가정될 것이다; 런타임은 변경 요구가 존재하지 않으면 로드/컴파일 액션을 초기화할 필요가 있다.
3.13.2.1.2 경로 분석
경로 분석 페이즈 동안, 우리는 변경 요구 내의 액션을 생성함으로써 정의된 인스턴스 및 기존의 인스턴스에 대한 참조를 분석한다.
3.13.2.2 확장
확장은 우리가 변경 요구를 취하고 요구를 실행하는 데 필요한 나머지 모든 액션을 차지하는 프로세스이다: 일반적으로 이들 액션은 타입 및 관계 인스턴스를 위한 구성 및 해체 액션이다. 이론적으로, 오퍼레이터는 인스턴스를 구성하거나 파괴하는데 요구되는 모든 액션을 위한 세부사항을 제공할 수 있지만, 우리는 이것을 요구하지 않는데, 그 이유는 변경 요구 작성 프로세스는 매우 복잡하기 때문이다. 대신에 우리는 이 프로세스를 자동화하려고 시도한다: 오퍼레이터는 byReference 멤버에 대한 액션을 식별함으로써 그들이 원하는 변경에 대한 키 정보를 제공한다; 우리는 네스트된 byReference 및 byValue 멤버 및 관계에 대한 액션의 나머지를 채운다.
3.13.2.2.1 값 멤버
확장 스테이지 동안, 우리는 모든 비참조(non-reference) 타입 멤버를 식별한다. 우리는 이들 멤버의 카디널리티를 알고 요구된 모든 파라미터를 알고, 각각의 멤버에 대하여, 우리는 그 부모가 생성된 그 멤버에 대한 변경 요구에 생성 요구를 부가한다. 변경 요구가 해체 동작을 포함하면, 우리는 모든 그들의 포함된 인스턴스에 대한 해체 동작을 부가한다.
3.13.2.2.2 참조 멤버 확장(탐색)
일반적으로, 참조 멤버는 더 많은 정보를 요구하여 값 멤버를 구성한다. 그들의 카디널리티는 종종 정의되지 않고 이들은 인스턴스에 대하여 구성되도록 값을 요구하는 배치 시간 세팅을 가질 수 있다. byReference 멤버를 확장하는 프로세스는 제공하는 위치에 있는 런타임보다 더 많은 인스턴스에 대한 정보를 요구할 수 있다. 우리가 이 정보를 얻는 프로세스는 탐색이라 한다.
탐색의 프로세스는 구성 또는 갱신 액션의 부분으로서 참조 타입 멤버를 차지할 것이다. 탐색을 지원하는 객체 매니저를 갖는 참조 멤버만이 이 프로세스에 참여할 것이다.
새로운 인스턴스가 발견될 때, 우리는 먼저 인스턴스 특정 키 값을 이용하여 인스턴스가 SDM 데이터베이스에 이미 존재하지 않는 것을 검사한다. 일단 우리가 그것이 새로운 인스턴스인 것을 알면, 우리는 우리가 탐색한 멤버의 타입에 따라 인스턴스를 분류한다. 인스턴스가 멤버와 일치하지 않거나 모호하게 일치되면, 우리는 멤버를 참조 블랭크로 내버려 두고 인스턴스를 오프라인 및 불완전으로 마크한다.
3.13.2.2.3 관계 확장
일단 구성될 모든 타입 인스턴스를 알면, 타입 인스턴스를 함께 결합하는 관계 인스턴스를 생성한다. 타입 인스턴스가 파괴되면, 타입 인스턴스를 참조하는 모든 관계 인스턴스를 제거한다.
관계를 생성하기 위하여, 인스턴스들 사이에 존재해야 하는 관계의 구성을 식별하기 위하여 멤버 공간으로 돌린다. 타입이 1보다 큰 카디널리티를 가지면, 우리는 관계의 토폴로지를 추론한다. 섹션 XX에서 이것을 수행하는 방법을 설명할 것이다.
3.13.2.3 플로우
플로우 스테이지 동안, 모든 관계 인스턴스에 걸친 플로우를 평가한다. 이 스테이지는 갱신 요구를 변경된 파라미터 플로우에 의해 영향을 받은 인스턴스에 대한 변경 요구에 부가할 수 있다.
플로우는 변경 요구의 결과로서 갱신된 세팅을 갖는 인스턴스의 세트를 결정함으로써 평가된다. 이들 각각에 대하여, 변경된 세팅에 의존하는 임의의 아웃고잉 세팅 플로우는 평가되고 타겟 노드는 변경된 인스턴스의 세트에 부가된다. 프로세스는 그 세트가 비거나 세트가 사이클을 포함할 때까지 계속된다.
에러/경고 설명
종료되지 않은 플로우
3.13.2.4 이중 검출
이중 검출의 프로세스는 sdm 데이터 저장부에 이미 존재하는 인스턴스에 대하여 확장된 인스턴스와 일치된다. 예를 들어, 또다른 애플리케이션이 공유된 파일을 설치하는지를 검출한다. 인스턴스가 이미 존재하는 것을 검출하면, 기존의 인스턴스의 버전에 의존하여 몇개의 액션중 하나의 액션을 취한다.
a) 설치를 실패할 수 있다.
b) 인스턴스의 카운트를 참조할 수 있다.
c) 인스턴스를 업그레이드할 수 있다.
d) 차례로 설치할 수 있다.
3.13.2.5 제한 평가
제한 평가 페이즈 동안, 변경 요구가 처리된 후 모델 내의 모든 제한이 여전히 유효한 것을 검사한다.
v1에 대하여, 제한의 범위를 결정하는 것이 어려울 수 있기 때문에 제한을 갖는 그래프 내의 모든 노드를 방문해야 한다.(인스턴스 공간을 제거할 수 있는 방법으로 멤버 공간을 태그할 수 있다)
3.13.2.6 요구 순서화
우리는 액션의 완전한 리스트를 가지며, 우리는 시스템간의 관계를 사용하여 유효 변경 순서화를 결정할 수 있다.
3.13.2.7 실행
우리는 머신 특정된 액션의 순서 세트의 서브세트를 분산한다. 우리는 이들 머신 특정 세트의 머신 동기화에 대하여 지원해야 한다.
3.13.2.8 요구 리턴
변경은 영향을 받은 호스팅 관계에 기초하여 변경 요구를 분산가능 부분으로 분류함으로써 수행된다. 모든 부분이 완료되면(또는 실패하면) 그 결과는 런타임에서 대조되고 사용자에게 요약이 리턴된다.
3.13.3 깊이의 확장
이 섹션에서, 타입 및 관계에 대한 확장 프로세스에 대한 세부사항을 설명한다.
3.13.3.1 참조 번호 확장 (탐색)
호스팅 관계가 타입의 새로운 인스턴스를 구성하는 것과 동일한 방법으로, 우리는 호스팅 관계를 사용하여 기존의 타입 인스턴스를 탐색한다. 타입 인스턴스가 호스트 상에 표시되는 방법을 알고 있는 것처럼, 호스팅 관계는 유일하게 배치되어 이것을 수행한다.
참조 멤버가 탐색을 위해 마크될 때, 호스팅 관계가 탐색을 지원하는지를 검사한다. 지원하면, 우리는 호스트 인스턴스를 관계에 전달하고, 그것이 호스트 상에서 탐색한 게스트 인스턴스에 대한 구성 액션을 리턴하도록 요청한다.
우리는 인스턴스가 더이상 존재하지 않는 것을 탐색하기 위하여 검증을 사용한다. 이것은 다시 호스팅 관계를 사용하여 호스트 상의 게스트의 존재를 검증한다. 게스트가 더이상 존재하지 않으면, 호스팅 관계는 해체 액션을 변경 요구에 부가한다.
3.13.3.2 비참조 멤버 확장
런타임은 변경 요구 내의 구성 또는 해체를 위해 이미 식별된 타입의 각각의비참조 멤버에 대한 구성 또는 해체를 단순히 부가함으로써 모든 비참조 멤버 확장을 핸들링한다.
3.13.3.3 통신 관계 확장
오퍼레이터가 2개의 타입 멤버들 간에 통신 관계 멤버가 존재하는 통신 관계의 인스턴스를 지정하지 않으면, 우리는 멤버들 간의 완전히 접속된 메쉬(mesh)를 추측함으로써 통신 관계를 확장한다.
캡쳐할 수 없는 중요한 토폴로지가 있으면 접속성 제한은 늦추어지지만, 늦추는 것은 배치 프로세스를 복잡하게 한다. 예를 들어, 토폴로지를 더 늦추면, 와이어를 생성하고 관리하는 방법을 제공하고, 임의의 변경에 대한 경로 검사를 수행하고, 토폴로지를 배치를 생성하는 오퍼레이터에게 노출시킬 수 있다.
이것이 무엇을 의미하는가? 2개의 멤버가 멤버 공간 내에 접속되면, 각각의 멤버의 모든 인스턴스가 서로 관찰될 수 있다. 다음의 2개의 멤버가 주어지면, 도 20에 도시된 바와같이, 멤버의 카디널리티에 의해 인스턴스 공간 토폴로지가 제한된다. 2가지 예의 멤버가 1800에 도시된다. 1802에서, 2개의 인스턴스의 최대 사이의 단순한 포인트 대 포인트 관계가 도시된다. 1804에서, 접속의 팬 아웃(fan out)이 도시된다. 예는 서버의 세트에 걸쳐 밸런스 요구를 로드할 수 있는 클라이언트일 수 있다. 1806에서, 접속의 팬 인(fan in)이 도시된다. 예는 단일 서버를 공유하는 클라이언트의 그룹일 수 있다. 1808에서, 클라이언트의 세트가 서버의 세트를 공유하는 상기 경우의 조합이 도시된다.
통신 링크를 구성할 때, 델리게이트 엔드포인트는 투과되어 델리게이트 엔드포인트가 제거되면 존재하는 모든 통신 관계를 일치시키는 접속으로 종료하도록 한다. 도 21은 A, B 및 C의 인스턴스들간의 접속을 고려하는 한 동등한 2개의 구조(1902, 1904)를 도시한다.
3.13.3.4 호스팅 관계 확장
호스팅 관계가 모호한 경우, 우리는 호스팅의 관계의 매니저 또는 오퍼레이터에게 정확한 토폴로지를 결정할 것을 요구한다.
호스팅 관계가 확장을 지원하면, 호스트 및 게스트의 세트를 관계 매니저에 전달하고 매니저에게 정확한 구성 액션을 리턴하도록 요청한다. 매니저가 확장을 지원하지 않으면, 변경 요구를 오퍼레이터에게 리턴하여 더 많은 정보를 제공할 수 있다.
3.13.3.5 참조 관계 확장
3.13.3.6 제한 관계 확장
제한 관계는 런타임이 항상 적절한 구성 액션을 변경 요구에 부가할 수 있도록 모호하지 않다.
3.13.3.7 델리게이션 관계 확장
확장을 위해, 델리게이션 관계는 통신 관계와 동일한 규칙을 따른다.
3.13.4 플로우
3.13.5 실행
3.14 SDM 인스턴스 공간
다음의 섹션은 sdm 런타임의 인스턴스 공간에 대한 객체 모델을 정의한다. 인스턴스 공간은 sdm에 의해 모델링된 시스템의 구성에 대한 변경을 추적하는 데사용된다.
도 22는 인스턴스 공간의 개요을 제공하는 일례의 UML 다이어그램을 나타낸다. 박스(2002, 2004, 2006, 2008)는 이 문서의 다른 섹션에서 정의된 타입을 나타낸다.
인스턴스 공간은 변경 요구에 의해 개시된 버저닝된 변경에 대하여 구조화된다. 각각의 인스턴스는 운영 인스턴스에 작성된 미소한 변경을 나타내는 버전의 선형 시리즈를 가질 수 있다. 미래의 버전은 또한 운영 시스템에 전파되기 전에 런타임에 존재할 수 있다.
SDM 모델의 이 버전에 대하여, 주어진 인스턴스에 대하여 선형 변경을 허용한다. 미래에, 버전 브랜치를 허용할 수 있고 버전 분석 모델을 도입한다. 이것은 특정 인스턴스에 대하여 하나 이상의 변경이 나타나도록 한다.
선형 버저닝을 허용하므로, 이전의 변경을 작성하는 일련의 변경 요구를 로드할 수 있다. 이것은 롤링 업그레이드 등의 프로세스 동안 취해질 수 있는 액션의 시퀀스의 이전 유효화를 지원한다.
3.14.1 SDM 인스턴스
모든 인스턴스는 sdm 인스턴스로부터 도출된다. 인스턴스는 세팅 스키마를 위한 값을 정의하는 요소와 인스턴스의 정의에 대한 멤버와 일치하는 멤버의 리스트를 공유한다. 또한 인스턴스는 인스턴스에 대한 고유의 식별자를 정의하는 속성의 세트, 인스턴스에 대한 버전 번호, 이 버전이 시스템의 운영 상태를 나타내는지를 표시하는 플래그 및 인스턴스에 대한 이름을 공유한다.
속성/요소 설명
settingsValues 모델링된 시스템 객체의 원하는 상태를 정의하는 세팅 값의 리스트. 이 리스트는 인스턴스를 배치할 때 또는 관련된 인스턴스로부터의 플로우를 통할 때, 오퍼레이터, 정의 또는 멤버에 대한 개발자에 의해 정의된 모든 값을 포함한다.
member 이것은 정의에 대한 멤버를 표시하는 멤버의 리스트이다. 각각의 멤버는 멤버에 할당된 인스턴스를 식별한다.
id 글로벌 범위에서 고유한 인스턴스에 대한 식별자(분산된 런타임을 지원하기 위하여)
version 버전 번호는 인스턴스에 대한 변경으로 선형적으로 증가한다.
isCurrent 이것은 이 버전이 시스템의 운영 상태를 표시하는지를 표시하는 플래그이다. 운영 시스템에 전파되지 않은 갱신을 나타내는 후자의 버전이 존재할 수 있다.
name 그 포함 멤버의 배경 내의 인스턴스를 위한 고유 이름(데릴게이트된 멤버의 관점에서 고유하지 않을 수 있다)
3.14.2 멤버
멤버는 참조된 멤버의 세트인 인스턴스의 멤버를 관련시키는 데 사용된다. 인스턴스의 멤버는 인스턴스의 정의에 의해 정의된다. 참조된 인스턴스는 멤버가 델리게이트되는 인스턴스 또는 멤버에 대하여 생성된 인스턴스이다. 멤버는 하나 이상의 참조된 인스턴스일 수 있는 어레이를 나타낼 수 있다.
속성/요소 설명
instance 이 멤버에 의해 참조된 인스턴스
memberDeclaration 관련된 정의에 대한 이 멤버의 선언
name 정의에 대한 관련된 멤버의 이름
3.14.3 변경
변경은 인스턴스 상태에 대한 변경을 표시한다. 변경은 변경 요구를 영향을 받은 인스턴스의 세트와 관련시킨다. 변경이 실행되면, 변경은 또한 변경의 상태(섹션 XXX 참조)와 변경 응답을 식별한다.
속성/요소 설명
instance 관련된 변경 요구의 결과로서 생성한 인스턴스 버전의 리스트
id 이 변경을 위한 고유의 식별자(런타임에서는 적어도 고유하다)
status 이 변경의 현재 상태를 식별하는 열거
changeRequest 이 변경을 생성하는 데 사용된 변경 요구에 대한 리스트
changeResponse 변경의 실행으로부터 리턴된 결과에 대한 리스트
3.14.3.1 변경 상태
변경 요구는 다음의 상태 중의 하나에 있을 수 있다.
notStarted-변경 요구에 대하여 실행이 시도되지 않았다는 것을 표시
inProgress-현재 실행되는 것을 표시
complete-변경 요구가 성공적으로 완료되었다는 것을 표시
failed-변경 요구가 실패하였고 변경이 불완전한 상태에 있는 것을 표시
rolledBack-실패한 변경 요구가 성공적으로 롤백되었다는 것을 표시
3.14.4 구체적 객체 인스턴스
구체적 객체 인스턴스는 타입 속성에 의해 식별된 구체적 타입의 인스턴스를 표시한다. 인스턴스에 대한 실세계 표시가 있을 수 있으므로, 인스턴스가 실세계 부본과 동기하는지를 추적할 필요가 있다. 우리는 인스턴스가 이 변경의 결과로서 온라인일 지를 알기를 원한다. 온라인 인스턴스는 그 모든 제한에 대하여 유효해야 한다. 오프라인 인스턴스는 참여하는 통신 관계의 다른 참여자에게 보여지도록 나타나지 않는다. 인스턴스가 불완전하면, 변경 요구는 인스턴스가 온라인될 수 있기 전에 요구된다.
속성/요소 설명
inSync 이것은 인스턴스 상의 세팅이 그 실세계 부분 상의 세팅과 일치하는지를 표시한다.
online 이것은 실세계 부본이 온라인 및 액티브이어야 하는지를 표시한다. 임의의 제한이 만족되지 않으면, 인스턴스는 온라인 상태에 놓일 수 없다. 오프라인 인스턴스는 그것을 참조하는 통신 관계 내의 다른 참여자에게 보여질 수 없다(플로우는 실행되지 않을 것인가?)
incomplete 이 플래그는 인스턴스의 이 버전으로부터 요구된 정보가 손실되는 것을 표시한다. 이 상황은 인스턴스에 의해 요구되는 모든 정보를 식별할 수 없는 탐색 프로세스의 결과 또는 모든 요구된 정보를 공급하지 않는 변경 요구의 결과로서 발생할 수 있다.
type 인스턴스의 타입에 대한 참조
3.14.5 관계 인스턴스
관계 인스턴스는 식별된 관계 타입의 인스턴스를 표시한다. 관계가 직접 실세계 표시가 가지지 않으면, 관계가 동기하거나 온라인인지에 대한 정보를 유지해야 한다. 또한, 관계가 비교적 간단하면, 관계가 그들의 제한을 실패할 수 있어도, 관계가 불완전한 것을 기대하지 않는다.
속성/요소 설명
relationship 이 인스턴스와 관련된 관계 타입
3.14.5.1 포함 인스턴스
이것은 포함 관계의 인스턴스를 나타낸다.
속성/요소 설명
parentInstance 관계에 참여한 부모 인스턴스를 식별
childInstance 관계에 참여한 자식 인스턴스를 식별
3.14.5.2 통신 인스턴스
이것은 통신 관계의 인스턴스를 표시한다
속성/요소 설명
clientInstance 관계에 참여한 클라이언트 인스턴스를 식별
serverInstance 관계에 참여한 서버 인스턴스를 식별
3.14.5.3 델리게이션 인스턴스
이것은 델리게이션 관계의 인스턴스를 나타낸다.
속성/요소 설명
proxyInstance 관계에 참여한 프록시 인스턴스를 식별
delegateInstance 관계에 참여한 델리게이트 인스턴스를 식별
3.14.5.4 호스팅 인스턴스
이것은 호스팅 관계의 인스턴스를 나타낸다.
속성/요소 설명
guestInstance 관계에 참여한 게스트 인스턴스를 식별
hostInstance 관계에 참여한 호스트 인스턴스를 식별
3.14.5.5 참조 인스턴스
이것은 참조 관계의 인스턴스를 나타낸다.
속성/요소 설명
sourceInstance 관계에 참여한 소스 인스턴스를 식별
dependentInstance 관계에 참여한 종속 인스턴스를 식별
3.14.4.6 인스턴스
인스턴스는 sdmInstance 파일내에 존재할 수 있는 인스턴스 요소의 세트를표시한다.
3.14.7 인스턴스 참조
3.14.7.1 인스턴스 Ref
인스턴스 ref는 인스턴스에 대한 간단한 참조이다. 참조가 변경 요구의 컨텍스트내에서 작성되지 않으면 isCurrent 인스턴스를 디폴트로 하고, 인스턴스는 변경 요구에 의해 영향을 받는다.
3.14.7.2 인스턴스 버전 Ref
인스턴스 버전 ref는 인스턴스의 특정 버전을 식별한다.
3.15 배치 유닛 구조
요구사항
SDM 타입의 세트를 설치하기 위하여 모든 비트 요구를 포함한다.
사인 또는 버전될 수 있다.
용이하게 구성/패키지/이동된다.
참조 또는 포함에 의해 다른 SDU를 조회할 수 있다.
SDM 타입 정의의 배치 섹션은 SDU 내의 파일을 직접 참조한다.
3.16 로컬리제이션(Localization)
SDM 모델의 어느 부분이 로컬리제이션을 지원하고 시스템의 설계 및 배치를 통해 로컬리제이션을 어떻게 지원하는지를 결정할 필요가 있다.
제1 접근:
우리는 개별 타입 및 타입까지 로컬리제이션을 관리하도록 한다. 로컬리제이션은 제한을 통해 암시된다. 로컬리제이션은 제1 타입 시민(citizen)이다. 이것은 다음을 의미한다.
a) SDU는 특정 버전의 타입의 구현을 포함할 수 있다: 특정 버전의 일구현예가 있다. 이것은 로컬리제이션에 기초하여 다른 구현이 있을 수 없음을 의미한다. 각각의 구현은 장소의 범위를 지원해야 하거나 구현은 다른 타입이어야 한다(이 목적을 위하여 버저닝을 사용하는 것은 위반행위이다)
b) 로컬리제이션은 mixins로서 리소스를 사용하여 특정 버전을 지원하거나 다른 버전을 지원하는 구현을 식별하는 타입의 세트를 사용함으로써 달성된다.
c) 클라이언트는 서버의 로컬라이즈된 버전을 차별화/요구할 수 없다.
제2 접근:
로컬리제이션은 이름과 버전에 따른 식별의 제1 타입 시민(citizen)이다.이것은 로컬리제이션이 참조가 타입에 작성되는 장소를 고려해야 하는 것을 의미한다.
a) 클라이언트는 포함, 호스팅 또는 통신 관계 중의 임의의 것에 대한 서버의 로컬라이즈된 버전을 차별화할 수 있다.
b) 배치 엔진은 로컬리제이션을 알아야 하고 오퍼레이터가 타입의 로컬라이즈된 버전들 사이에서 선택하도록 한다.
c) SDU는 이름, 버전 및 장소(들)에 의해 식별되거나 SDU는 그들의 장소에 기초하여 다른 다수의 구현을 포함할 수 있다(첫번째는 로컬라이즈되지 않은 코드가 별개의 sdu에 배치되어야 하므로 SDU의 더 미세한 패키징을 암시하고, 두번째는 동일한 이름을 갖는 다수의 sdu를 가질 수 있다는 것을 의미한다)
제2 접근은 장소가 제한으로서 넓게 사용되면 설계/ui 관점으로부터 매우 복잡한 잠재력을 갖는다. 예를 들어, 엔드포인트가 로컬라이즈되거나 호스트가 그들의 게스트를 로컬라이즈하면, 접속/배치를 탐색하는 것은 더 복잡하게 한다. 제2 접근은 제안된 메카니즘과 같이 제1 접근으로부터 b)로 사용되면, 복잡성은 더 쉽게 관리하지만 누군가가 로컬라이즈된 리소스를 식별, 패키징 및 이동해야 한다.
3.17 버저닝 및 변경 관리
3.17.1 일반적인 코멘트
우리는 적절하게 시스템을 버저닝할 수 있기를 원한다 - 즉, 인스턴스 식별을 변경하지 않고 qfe를 sql에 적용한다. 이것은 인스턴스의 타입을 변경하는 것을 암시한다.
우리는 버저닝 정책이 허용된 버전 변경을 허용하기를 원한다 - 예를 들어, 시스템 타입 설계자는 시스템의 멤버에 대한 버저닝 정책이 얼마나 엄격한지를 선택할 수 있거나 오퍼레이터가 보안 이유로 멤버의 버전을 일방적으로 업그레이드하도록 선택할 수 있다.
우리는 버저닝 변경의 전파를 제한하기를 원한다 - 예를 들어, 우리가 멤버의 타입을 변경하면, 우리는 시스템의 타입을 변경하는 것을 원하지 않고, 따라서 타입 변경을 루트에 전파한다.
브레이킹 변경은 버전 번호의 첫번째 2 부분의 변경에 의해 표시될 것이며, 비-브레이킹 변경은 버전 번호의 두번째 2 부분의 변경에 의해 표시될 것이다.
컴퓨터 환경의 예
도 23은 여기에 기재된 기술을 구현하는 데 사용될 수 있는 일반적인 컴퓨터 환경(2300)을 나타낸다. 컴퓨터 환경(2300)은 컴퓨팅 환경의 일례일 뿐, 컴퓨터와 네트워크 아키텍쳐의 기능 또는 사용의 범위로 제한하는 것이 아니다. 컴퓨터 환경(2300)은 예시적인 환경(2300)에 예시된 컴포넌트 중의 임의의 하나 또는 조합에 관련된 임의의 종속성 또는 요구사항으로서 해석되어서는 안된다.
컴퓨터 환경(2300)은 컴퓨터(2302)의 형태의 범용 컴퓨터 장치를 포함한다. 컴퓨터(2302)는 예를 들어 도 1의 컴퓨팅 장치(102)일 수 있거나, 개발 시스템(202)을 구현할 수 있거나, 도 2의 컨트롤러(206)일 수 있거나, 도 2의 타겟 장치(212)이거나 도 6의 컨트롤러(620) 또는 타겟(622)일 수 있다. 컴퓨터(2302)의 컴포넌트는 하나 이상의 프로세서 또는 프로세싱 유닛(2304), 시스템메모리(2306), 및 프로세서(2304)를 포함하는 다양한 시스템 컴포넌트를 시스템 메모리(2306)에 결합하는 시스템 버스(2308)를 포함하지만, 이에 한정되는 것은 아니다.
시스템 버스(2308)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트, 및 다양한 버스 아키텍쳐 중의 임의의 것을 사용한 프로세서 또는 로컬 버스를 포함하는 몇가지 유형의 버스 구조 중 하나 이상을 나타낸다. 예로서, 이러한 아키텍쳐는 산업 표준 아키텍쳐(ISA) 버스, 마이크로 채널 아키텍쳐(MCA) 버스, 인핸스드 ISA(EISA; enhanced ISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 메자닌 버스(Mezzanine bus)로 공지된 주변 컴포넌트 상호접속(PCI) 버스를 포함할 수 있다.
컴퓨터(2302)는 일반적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 이러한 매체는 컴퓨터(2302)에 의해 액세스 가능하고 휘발성 및 비휘발성 매체 및 분리형 및 비분리형 매체를 포함하는 임의의 이용가능한 매체일 수 있다.
시스템 메모리(2306)는 랜덤 액세스 메모리(RAM; 2310)와 같은 휘발성 메모리, 및/또는 판독 전용 메모리(ROM; 2312)와 같은 비휘발성 메모리 형태의 컴퓨터 판독가능 매체를 포함한다. 시동 등과 같이 컴퓨터(2302) 내의 소자들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS; 2314)이 ROM(2312)에 저장된다. RAM(2310)은 통상 프로세싱 유닛(2304)에 즉시 액세스 가능하고 및/또는 프로세싱 유닛에 의해 동작하는 데이터 및/또는 프로그램 모듈을 포함한다.
컴퓨터(2302)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매체를 포함할 수 있다. 예로서, 도 23은 비분리형 비휘발성 자기 매체(도시하지 않음)으로부터 판독되고 그 자기 매체에 기록하는 하드 디스크 드라이브(2316), 분리형 비휘발성 자기 디스크(2320)(예를 들어, "플로피 디스크")로부터 판독하고 그 자기 디스크에 기록하는 자기 디스크 드라이브(2318), 및 CD-ROM, DVD-ROM 또는 다른 광학 매체와 같은 분리형 비휘발성 광학 디스크(2324)로부터 판독하고 및/또는 기록하는 광학 디스크 드라이브(2322)를 도시한다. 하드 디스크 드라이브(2316), 자기 디스크 드라이브(2318), 및 광학 디스크 드라이브(2322)는 각각 하나 이상의 데이터 매체 인터페이스(2326)에 의해 시스템 버스(2308)에 접속된다. 다른 방법으로, 하드 디스크 드라이브(2316), 자기 디스크 드라이브(2318), 및 광학 디스크 드라이브(2322)는 하나 이상의 인터페이스(도시하지 않음)에 의해 시스템 버스(2308)에 접속될 수 있다.
디스크 드라이브 및 그 관련 컴퓨터 판독가능 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 컴퓨터(2302)를 위한 다른 데이터의 비휘발성 기억장치를 제공한다. 상기 예는 하드 디스크(2316), 분리형 자기 디스크(2320) 및 분리형 광학 디스크(2324)를 예시하지만, 자기 카세트 또는 다른 자기 기억 장치, 플래시 메모리 카드, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 기억장치, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM) 등의 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독 가능 매체가 예시적인 컴퓨팅 시스템 및 환경을구현하기 위하여 이용될 수 있음은 자명하다.
예로서 오퍼레이팅 시스템(2326), 하나 이상의 애플리케이션 프로그램(2328), 다른 프로그램 모듈(2330) 및 프로그램 데이터(2332)를 포함하는 임의의 수의 프로그램 모듈은 하드 디스크(2316), 자기 디스크(2320), 광학 디스크(2324), ROM(2312) 및/또는 RAM(2310)에 저장될 수 있다. 이러한 오퍼레이팅 시스템(2326), 하나 이상의 애플리케이션 프로그램(2328), 다른 프로그램 모듈(2330) 및 프로그램 데이터(2332)의 각각(또는 그들의 일부 조합)은 분산형 파일 시스템을 지원하는 상주 컴포넌트의 모두 또는 부분을 구현할 수 있다.
사용자는 키보드(2334) 및 포인팅 장치(2336; 예를 들어 "마우스") 등의 입력 장치를 통해 컴퓨터(2320)에 코맨드 및 정보를 입력할 수 있다. 다른 입력 장치(2338)(특별히 도시하지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 시리얼 포트, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치는 시스템 버스(2308)에 결합된 입출력 인터페이스(2340)를 통해 프로세싱 유닛(2304)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 버스(USB) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수 있다.
모니터(2342) 또는 다른 유형의 디스플레이 장치는 비디오 어댑터(2344) 등의 인터페이스를 통해 시스템 버스(2308)에 접속될 수 있다. 모니터(2342)에 더하여, 다른 출력 주변 장치는 입출력 인터페이스(2340)를 통해 컴퓨터(2302)에 접속될 수 있는 프린터 및 스피커(도시하지 않음) 등의 컴포넌트를 포함할 수 있다.
컴퓨터(2302)는 원격 컴퓨팅 장치(2348) 등의 하나 이상의 원격 컴퓨터로의논리적 접속을 사용하는 네트워크된 환경에서 동작할 수 있다. 예로서, 원격 컴퓨팅 장치(2348)는 퍼스널 컴퓨터, 포터블 컴퓨터, 서버, 라우터, 네트워크 컴퓨터, 피어 장치 또는 다른 공통 네트워크 노드일 수 있다. 원격 컴퓨팅 장치(2348)는 컴퓨터(2302)에 관련된 여기에 기재된 특징과 요소의 다수 또는 모두를 포함할 수 있는 포터블 컴퓨터로서 도시된다.
컴퓨터(2302) 및 원격 컴퓨터(2348)간의 논리적 접속은 기본리 통신망(LAN; 2350) 및 일반적인 원거리 통신망(WAN; 2352)으로서 도시된다. 이러한 네트워킹 환경은 사무실, 기업 광역 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 구현될 때, 컴퓨터(2302)는 네트워크 인터페이스 또는 어댑터(2354)를 통해 기본리 통신망(2350)에 접속된다. WAN 네트워킹 환경에서 구현될 때, 컴퓨터(2302)는 통상 원거리 통신망(2352)를 통해 통신을 구축하는 모뎀(2356) 또는 다른 수단을 포함한다. 컴퓨터(2302)에 내부적 또는 외부적일 수 있는 모뎀(2356)은 입출력 인터페이스(2340) 또는 다른 적절한 메커니즘을 통해 시스템 버스(2308)에 접속될 수 있다. 도시된 접속은 예시적인 것이며 컴퓨터(2302, 2348) 간의 통신 구축을 위한 다른 수단이 사용될 수 있다.
컴퓨팅 환경(2300)으로 예시된 바와 같은 네트워킹된 환경에서, 컴퓨터(2302)와 관련된 프로그램 모듈 또는 그 부분이 원격 메모리 기억 장치에 저장될 수 있다. 예로서, 원격 애플리케이션 프로그램(2358)은 원격 컴퓨터(2348)의 메모리 장치 상에 상주한다. 이러한 프로그램 및 컴포넌트는 많은 경우 컴퓨팅 장치(2302)의 다른 기억 컴포넌트에 상주하고 컴퓨터의 데이터 프로세서(들)에 의해 실행되는 것으로 인식되지만, 기술을 목적으로, 애플리케이션 프로그램 및 오퍼레이팅 시스템과 같은 다른 실행가능 프로그램 컴포넌트는 별개의 블록으로 도시되었다.
다양한 모듈 및 기술은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령의 일반적인 컨텍스트에서 기재될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상, 프로그램 모듈의 기능은 많은 실시예에서 바람직하게 결합 또는 분산될 수 있다.
이들 모듈 및 기술의 구현은 임의의 형태의 컴퓨터 판독가능 매체 상에 저장되거나 컴퓨터 판독가능 매체를 통해 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예로서, 한정되지는 않지만, 컴퓨터 판독 가능 매체는 "컴퓨터 기억 매체" 및 "통신 매체"를 포함할 수 있다.
"컴퓨터 기억 매체"는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터 등의 정보의 기억을 위한 임의의 방법 또는 기술에 의해 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 기억 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 기억장치, 자기 카세트, 자기 테이프, 자기 디스크 기억장치 또는 다른 자기 기억 장치 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하며, 이로는 한정되지 않는다.
"통신 매체"는 통상 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 반송파 또는 다른 전송 메카니즘 등의 변조 데이터 신호의 다른 데이터를 구현한다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. 용어 "변조 데이터 신호"는 정보를 신호로 인코딩하는 방식으로 변경되거나 세팅된 그 특성들 중의 하나 이상을 갖는 신호를 의미한다. 예로서, 한정되지는 않지만, 통신 매체는 유선 네트워크, 직접 유선 접속 등의 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상술한 것들의 임의의 조합은 또한 컴퓨터 판독가능 매체의 범위내에 포함된다.
대안으로, 프레임워크의 부분은 하드웨어 또는 하드웨어, 소프트웨어, 및/또는 펌웨어의 조합으로 구현될 수 있다. 예를 들어, 하나 이상의 응용 주문형 집적 회로(ASIC) 또는 프로그램가능 논리 장치(PLD)가 프레임워크의 하나 이상의 부분을 구현하도록 설계되거나 프로그램될 수 있다.
결론
본 발명은 구조적 특징 및/또는 방법론적 액션에 특정된 언어로 기재되었지만, 첨부된 청구항에 정의된 본 발명은 기재된 특정 특징 또는 액션으로 반드시 제한되는 것은 아니다. 오히려, 특정 특징 및 액션은 청구한 발명을 구현하는 예시적인 형태로서 개시된다. 아울러, 이들 청구범위는 권리 범위 및 요지의 관점에서 예시적이다. 본 발명에서 기술된 특징의 다수의 다른 조합 및 하위 조합은 본 출원에 대한 우선권 출원에서 청구될 수 있다.
본 발명에 따르면, 물리적 컴퓨팅 시스템 상에 분산형 애플리케이션을 설계하고 배치하는 향상된 기술이 제공될 수 있다.

Claims (40)

  1. 스키마(schema)에 있어서,
    분산형 컴퓨팅 시스템에서의 엔티티들을 기술(describe)하는 적어도 하나의 정의(definition); 및
    상기 분산형 컴퓨팅 시스템에서의 상기 엔티티들 간의 링크들을 식별하는 적어도 하나의 관계(relationship)
    를 포함하되, 상기 스키마는 개발 툴 및 배치(deployment) 툴에 의해 사용되는 스키마.
  2. 제1항에 있어서,
    상기 스키마는 또한 관리 툴에 의해 사용되는 스키마.
  3. 제1항에 있어서,
    상기 스키마는 상기 개발 툴의 사용자가 원하는 동작 의도를 식별하는 것을 가능하게 하는 스키마.
  4. 제1항에 있어서,
    상기 적어도 하나의 정의는 리소스 정의, 시스템 정의 및 엔드포인트 정의를 포함하는 스키마.
  5. 제1항에 있어서,
    상기 적어도 하나의 정의는 시스템과 관련한 거동(behavior)을 기술하는 리소스 정의를 포함하는 스키마.
  6. 제1항에 있어서,
    상기 적어도 하나의 정의는 상기 분산형 컴퓨팅 시스템에 배치된 애플리케이션의 일부를 기술하는 시스템 정의를 포함하는 스키마.
  7. 제1항에 있어서,
    상기 적어도 하나의 정의는 시스템과 관련한 통신 정보를 기술하는 엔드포인트 정의를 포함하는 스키마.
  8. 제1항에 있어서,
    상기 적어도 하나의 관계는 포함(containment) 관계, 델리게이션(delegation) 관계, 접속 관계, 호스팅 관계 및 참조 관계를 포함하는 스키마.
  9. 제1항에 있어서,
    상기 적어도 하나의 관계는 다른 정의의 멤버를 포함하는 특정 정의의 능력을 기술하는 포함 관계를 포함하는 스키마.
  10. 제1항에 있어서,
    상기 적어도 하나의 관계는 특정 정의에 포함된 멤버를 노출시키는 델리게이션 관계를 포함하는 스키마.
  11. 제1항에 있어서,
    상기 적어도 하나의 관계는 복수의 정의 간의 이용 가능한 통신 상호작용을 식별하는 접속 관계를 포함하는 스키마.
  12. 제1항에 있어서,
    상기 적어도 하나의 관계는 복수의 정의 간의 의존도를 기술하는 호스팅 관계를 포함하는 스키마.
  13. 제1항에 있어서,
    상기 적어도 하나의 관계는 복수의 정의 간의 순서(ordering) 관계를 식별하는 참조 관계를 포함하는 스키마.
  14. 제1항에 있어서,
    분산형 애플리케이션을 위한 템플릿과 연관된 추상적(abstract) 부분 및 분산형 애플리케이션의 특정 구현과 연관된 구체적(concrete) 부분을 더 포함하는 스키마.
  15. 제1항에 있어서,
    복수의 관계를 더 포함하되, 상기 스키마는 상기 복수의 관계에 걸친 세팅의 통신을 제공하는 스키마.
  16. 제1항에 있어서,
    복수의 관계를 더 포함하되, 상기 스키마는 상기 복수의 관계에 걸친 거동 정보의 통신을 제공하는 스키마.
  17. 하나의 스키마를 구현하는 복수의 명령이 기억된 하나 이상의 컴퓨터 판독 가능 매체에 있어서, 상기 스키마가
    분산형 컴퓨팅 시스템과 연관된 애플리케이션의 일부를 기술하는 적어도 하나의 시스템 정의;
    상기 시스템과 연관된 거동을 기술하는 적어도 하나의 리소스 정의; 및
    상기 시스템과 연관된 통신 정보를 기술하는 적어도 하나의 엔드포인트 정의
    를 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  18. 제17항에 있어서,
    상기 스키마는 상기 분산형 컴퓨팅 시스템에서의 엔티티들 간의 링크들을 식별하는 적어도 하나의 관계를 더 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  19. 제17항에 있어서,
    상기 스키마는 다른 정의의 멤버를 포함하는 특정 정의의 능력을 기술하는 포함 관계를 더 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  20. 제17항에 있어서,
    상기 스키마는 복수의 정의 간의 이용 가능한 통신 상호작용을 식별하는 통신 관계를 더 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  21. 제17항에 있어서,
    상기 스키마는 개발 툴, 배치 툴 또는 관리 툴 중 임의의 것에 의해 사용되는 하나 이상의 컴퓨터 판독 가능 매체.
  22. 제17항에 있어서,
    상기 스키마는 상기 애플리케이션이 설치될 타겟 시스템을 모델링하는 하나 이상의 컴퓨터 판독 가능 매체.
  23. 분산형 컴퓨팅 시스템 및 분산형 애플리케이션의 추상적 기술을 가능하게 하는 시스템 정의 모델; 및
    상기 시스템 정의 모델 내의 기능적 동작이 지정되어야 하는 방법을 지시하는 스키마
    를 포함하는 설계 툴.
  24. 제23항에 있어서,
    상기 설계 툴은 분산형 애플리케이션 개발 툴인 설계 툴.
  25. 제23항에 있어서,
    상기 설계 툴은 분산형 애플리케이션 배치 툴인 설계 툴.
  26. 제23항에 있어서,
    상기 설계 툴은 분산형 애플리케이션 관리 툴인 설계 툴.
  27. 제23항에 있어서,
    상기 분산형 애플리케이션은 스케일 불변인 설계 툴.
  28. 스키마에 따라 인스턴스화(instantiated)되는 하나 이상의 컴퓨터 판독 가능 매체 상에 기억된 데이터 구조에 있어서, 상기 스키마가
    분산형 애플리케이션의 컴포넌트를 기술하는 적어도 하나의 시스템 정의;
    상기 컴포넌트와 연관된 거동을 기술하는 적어도 하나의 리소스 정의;
    상기 컴포넌트와 연관된 통신 정보를 기술하는 적어도 하나의 엔드포인트 정의;
    다른 정의의 멤버를 포함하는 특정 정의의 능력을 기술하는 적어도 하나의 포함 관계;
    상기 특정 정의에 포함된 멤버를 노출시키는 적어도 하나의 델리게이션 관계;
    복수의 정의 간의 이용 가능한 통신 상호작용을 식별하는 적어도 하나의 통신 관계;
    상기 복수의 정의 간의 의존도를 기술하는 적어도 하나의 호스팅 관계; 및
    상기 복수의 정의 간의 순서 관계를 식별하는 적어도 하나의 참조 관계
    를 포함하는 데이터 구조.
  29. 제28항에 있어서,
    상기 분산형 애플리케이션은 스케일 불변인 데이터 구조.
  30. 제28항에 있어서,
    상기 스키마는 애플리케이션 개발 툴 및 애플리케이션 배치 툴에 의해 액세스 가능한 데이터 구조.
  31. 제28항에 있어서,
    상기 스키마는 애플리케이션 배치 툴 및 애플리케이션 관리 툴에 의해 액세스 가능한 데이터 구조.
  32. 제28항에 있어서, 상기 스키마가
    애플리케이션 개발 툴;
    애플리케이션 배치 툴; 및
    애플리케이션 관리 툴
    에 의해 액세스 가능한 데이터 구조.
  33. 분산형 컴퓨팅 시스템에서의 엔티티들을 기술하는 적어도 하나의 정의, 다른 정의의 멤버를 포함하는 특정 정의의 능력을 기술하는 적어도 하나의 포함 관계, 상기 특정 정의에 포함된 멤버를 노출시키는 적어도 하나의 델리게이션 관계, 복수의 정의 간의 이용 가능한 통신 상호작용을 식별하는 적어도 하나의 통신 관계, 상기 복수의 정의 간의 의존도를 기술하는 적어도 하나의 호스팅 관계 및 상기 복수의 정의 간의 순서 관계를 식별하는 적어도 하나의 참조 관계를 정의하는 스키마에 따라 데이터 구조를 생성하는 단계; 및
    상기 데이터 구조를 파퓰레이팅(populating)하는 단계
    를 포함하는 방법.
  34. 복수의 명령이 그 위에 기억된 하나 이상의 컴퓨터 판독 가능 매체에 있어서, 프로세서에 의해 실행될 때, 상기 명령들이
    분산형 컴퓨팅 시스템에서의 엔티티들을 기술하는 정의를 로딩하는 단계; 및
    상기 분산형 컴퓨팅 시스템에서의 상기 엔티티들 간의 통신 링크를 식별하는 관계를 로딩하는 단계
    를 행하도록 하며, 상기 정의 및 관계 데이터는 상기 분산형 컴퓨팅 시스템의 개발 및 배치 동안 사용되는 하나 이상의 컴퓨터 판독 가능 매체.
  35. 제34항에 있어서,
    상기 정의 및 관계 데이터는 또한 상기 분산형 컴퓨팅 시스템의 관리 동안 사용되는 하나 이상의 컴퓨터 판독 가능 매체.
  36. 제34항에 있어서,
    상기 정의는 리소스 정의, 시스템 정의 및 엔드포인트 정의를 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  37. 제34항에 있어서,
    상기 관계는 포함 관계, 델리게이션 관계, 통신 관계, 호스팅 관계 및 참조 관계를 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  38. 분산형 컴퓨팅 시스템에서의 엔티티들을 기술하는 정의를 로딩하는 단계; 및
    상기 분산형 컴퓨팅 시스템에서의 상기 엔티티들 간의 통신 링크들을 식별하는 관계를 로딩하는 단계
    를 포함하되, 상기 정의 및 관계 데이터는 상기 분산형 컴퓨팅 시스템의 개발, 배치 및 관리 동안 사용되는 방법.
  39. 제38항에 있어서,
    상기 정의는 리소스 정의, 시스템 정의 및 엔드포인트 정의를 포함하는 방법.
  40. 제38항에 있어서,
    상기 관계는 포함 관계, 델리게이션 관계, 통신 관계, 호스팅 관계 및 참조 관계를 포함하는 방법.
KR1020040015343A 2003-03-06 2004-03-06 분산형 컴퓨팅 시스템을 위한 아키텍쳐 및 분산형 애플리케이션의 자동화된 설계, 배치 및 관리 KR101117945B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US45273603P 2003-03-06 2003-03-06
US60/452,736 2003-03-06
US10/693,004 US7890543B2 (en) 2003-03-06 2003-10-24 Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US10/693,004 2003-10-24

Publications (2)

Publication Number Publication Date
KR20040079336A true KR20040079336A (ko) 2004-09-14
KR101117945B1 KR101117945B1 (ko) 2012-08-09

Family

ID=32776306

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040015343A KR101117945B1 (ko) 2003-03-06 2004-03-06 분산형 컴퓨팅 시스템을 위한 아키텍쳐 및 분산형 애플리케이션의 자동화된 설계, 배치 및 관리

Country Status (5)

Country Link
US (2) US7890543B2 (ko)
EP (1) EP1457877A3 (ko)
JP (2) JP2004272907A (ko)
KR (1) KR101117945B1 (ko)
CN (1) CN100559366C (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101399356B1 (ko) * 2007-04-02 2014-05-27 삼성전자주식회사 동일한 통신 프로토콜에 따라서 상호 통신하는 개발자터미널 및 타겟 장치 및 상기 타겟 장치를 에뮬레이션하기위한 시스템 및 방법
US11100009B2 (en) 2020-01-03 2021-08-24 Bank Of America Corporation Intelligent detection and ejection of unused application components

Families Citing this family (206)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7346848B1 (en) 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US7191394B1 (en) 2000-06-21 2007-03-13 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US6883168B1 (en) 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US6907395B1 (en) * 2000-10-24 2005-06-14 Microsoft Corporation System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US7225228B2 (en) * 2002-03-25 2007-05-29 Sun Microsystems, Inc. Efficient binary content distribution using propagating messages
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7765501B2 (en) * 2003-03-06 2010-07-27 Microsoft Corporation Settings and constraints validation to enable design for operations
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7302609B2 (en) * 2003-03-12 2007-11-27 Vladimir Matena Method and apparatus for executing applications on a distributed computer system
US7240292B2 (en) * 2003-04-17 2007-07-03 Microsoft Corporation Virtual address bar user interface control
US7823077B2 (en) * 2003-03-24 2010-10-26 Microsoft Corporation System and method for user modification of metadata in a shell browser
US7627552B2 (en) 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US7415672B1 (en) 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US7370066B1 (en) 2003-03-24 2008-05-06 Microsoft Corporation System and method for offline editing of data files
US7421438B2 (en) * 2004-04-29 2008-09-02 Microsoft Corporation Metadata editing control
US7275216B2 (en) 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
US7925682B2 (en) * 2003-03-27 2011-04-12 Microsoft Corporation System and method utilizing virtual folders
US7296017B2 (en) * 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US7590736B2 (en) * 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
US7606929B2 (en) * 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US7636917B2 (en) * 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7406660B1 (en) 2003-08-01 2008-07-29 Microsoft Corporation Mapping between structured data and a visual surface
US7334187B1 (en) 2003-08-06 2008-02-19 Microsoft Corporation Electronic form aggregation
US8024335B2 (en) 2004-05-03 2011-09-20 Microsoft Corporation System and method for dynamically generating a selectable search extension
US20050132054A1 (en) * 2003-12-10 2005-06-16 International Business Machines Corporation Fine-grained authorization by traversing generational relationships
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
US7363211B1 (en) * 2004-03-03 2008-04-22 Sun Microsystems, Inc. Method and apparatus for modeling topology objects
US8707209B2 (en) 2004-04-29 2014-04-22 Microsoft Corporation Save preview representation of files being created
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US7712111B2 (en) * 2004-06-08 2010-05-04 Covia Labs, Inc. Method and system for linear tasking among a plurality of processing units
US20050283531A1 (en) * 2004-06-17 2005-12-22 International Business Machines Corporation Method and apparatus for combining resource properties and device operations using stateful Web services
US20060069774A1 (en) * 2004-06-17 2006-03-30 International Business Machine Corporation Method and apparatus for managing data center using Web services
EP1621945B1 (de) * 2004-07-30 2017-03-29 Siemens Aktiengesellschaft Konsistenzsicherung in einem Automatisierungssystem
US7809763B2 (en) * 2004-10-15 2010-10-05 Oracle International Corporation Method(s) for updating database object metadata
US8487879B2 (en) 2004-10-29 2013-07-16 Microsoft Corporation Systems and methods for interacting with a computer through handwriting to a screen
US7756801B2 (en) * 2004-11-15 2010-07-13 Palo Alto Research Center Incorporated Systems and methods for architecture independent programming and synthesis of network applications
US7721190B2 (en) 2004-11-16 2010-05-18 Microsoft Corporation Methods and systems for server side form processing
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US7725834B2 (en) 2005-03-04 2010-05-25 Microsoft Corporation Designer-created aspect for an electronic form template
US8489728B2 (en) * 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US7797147B2 (en) 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US7873732B2 (en) * 2005-04-28 2011-01-18 International Business Machines Corporation Maintaining service reliability in a data center using a service level objective provisioning mechanism
US8200975B2 (en) 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US20070016393A1 (en) * 2005-06-29 2007-01-18 Microsoft Corporation Model-based propagation of attributes
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US7702788B2 (en) 2005-10-25 2010-04-20 International Business Machines Corporation Method and apparatus for performance and policy analysis in distributed computing systems
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US8001459B2 (en) 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US8539496B1 (en) * 2005-12-12 2013-09-17 At&T Intellectual Property Ii, L.P. Method and apparatus for configuring network systems implementing diverse platforms to perform business tasks
US7849144B2 (en) * 2006-01-13 2010-12-07 Cisco Technology, Inc. Server-initiated language translation of an instant message based on identifying language attributes of sending and receiving users
US7496893B2 (en) * 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
US7505995B2 (en) * 2006-06-30 2009-03-17 Microsoft Corporation Object-relational model based user interfaces
US20080189638A1 (en) * 2006-10-16 2008-08-07 Invensys Systems, Inc. Bridging human machine interface technologies in a process automation and information management environment
US7743244B2 (en) * 2006-10-31 2010-06-22 Hewlett-Packard Development Company, L.P. Computer system model generation with tracking of actual computer system configuration
US8880615B2 (en) * 2006-12-15 2014-11-04 International Business Machines Corporation Managing a workflow using an instant messaging system to gather task status information
US20080154857A1 (en) * 2006-12-22 2008-06-26 Haithem Derouiche Method of maintenance of dependent variables, and a semantic module for performing the same
US8286069B2 (en) * 2007-01-26 2012-10-09 Myspace Llc System and method for editing web-based video
EP2147371A1 (en) 2007-03-16 2010-01-27 International Business Machines Corporation Method, system and computer program for distributing customized software products
US7886289B2 (en) * 2007-03-20 2011-02-08 Microsoft Corporation Extensibility mechanism for analysis services unified dimensional model
US9330230B2 (en) * 2007-04-19 2016-05-03 International Business Machines Corporation Validating a cabling topology in a distributed computing system
US7853669B2 (en) 2007-05-04 2010-12-14 Microsoft Corporation Mesh-managing data across a distributed set of devices
US20080288622A1 (en) * 2007-05-18 2008-11-20 Microsoft Corporation Managing Server Farms
US20080294777A1 (en) * 2007-05-25 2008-11-27 Alexei Karve Method and apparatus for template-based provisioning in a service delivery environment
US8271934B2 (en) 2007-06-14 2012-09-18 International Business Machines Corporation Developing software applications with increased modularity
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US8918490B1 (en) * 2007-07-12 2014-12-23 Oracle America Inc. Locality and time based dependency relationships in clusters
US20090047893A1 (en) * 2007-08-15 2009-02-19 Larry Zimmerman Building Plenum
EP2650783A1 (en) * 2007-08-17 2013-10-16 Salesforce.Com, Inc. On-demand database service system, method, and computer program product for verifying that a developed application will operate properly with at least one other application
US8230386B2 (en) 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US8490078B2 (en) * 2007-09-25 2013-07-16 Barclays Capital, Inc. System and method for application management
WO2009056749A1 (fr) * 2007-10-26 2009-05-07 France Telecom Procede de commutation de noeud d'acces
US20090113292A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Flexibly editing heterogeneous documents
US7974939B2 (en) * 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US20090112932A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Visualizing key performance indicators for model-based applications
US8181151B2 (en) * 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US8099720B2 (en) * 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US8069434B2 (en) * 2007-10-29 2011-11-29 Sap Ag Integrated model checking and issue resolution framework
US20090157848A1 (en) * 2007-12-18 2009-06-18 Western Digital Technologies, Inc. Application server processing tcp/ip requests from a client by invoking an asynchronous function
US8572033B2 (en) * 2008-03-20 2013-10-29 Microsoft Corporation Computing environment configuration
US9753712B2 (en) * 2008-03-20 2017-09-05 Microsoft Technology Licensing, Llc Application management within deployable object hierarchy
US9298747B2 (en) 2008-03-20 2016-03-29 Microsoft Technology Licensing, Llc Deployable, consistent, and extensible computing environment platform
US8484174B2 (en) * 2008-03-20 2013-07-09 Microsoft Corporation Computing environment representation
US20090248737A1 (en) * 2008-03-27 2009-10-01 Microsoft Corporation Computing environment representation
US8443352B2 (en) * 2008-03-31 2013-05-14 International Business Machines Corporation Processing strings based on whether the strings are short strings or long strings
CN104902113B (zh) 2008-04-02 2018-10-19 特维里奥公司 处理电话会话的系统和方法
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
US7886021B2 (en) * 2008-04-28 2011-02-08 Oracle America, Inc. System and method for programmatic management of distributed computing resources
US9092243B2 (en) 2008-05-28 2015-07-28 Red Hat, Inc. Managing a software appliance
US8868721B2 (en) 2008-05-29 2014-10-21 Red Hat, Inc. Software appliance management using broadcast data
US10657466B2 (en) 2008-05-29 2020-05-19 Red Hat, Inc. Building custom appliances in a cloud-based network
US8606806B2 (en) * 2008-07-25 2013-12-10 Microsoft Corporation Static typing of xquery expressions in lax validation content
US8964726B2 (en) 2008-10-01 2015-02-24 Twilio, Inc. Telephony web event system and method
US9766869B2 (en) 2009-01-16 2017-09-19 Microsoft Technology Licensing, Llc Parameterized installation packages
CN102415068B (zh) 2009-03-02 2015-09-02 特维里奥公司 用于多租户电话网络的方法和系统
US9569282B2 (en) 2009-04-24 2017-02-14 Microsoft Technology Licensing, Llc Concurrent mutation of isolated object graphs
US9329951B2 (en) * 2009-07-31 2016-05-03 Paypal, Inc. System and method to uniformly manage operational life cycles and service levels
US8386498B2 (en) * 2009-08-05 2013-02-26 Loglogic, Inc. Message descriptions
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
KR20110062937A (ko) * 2009-12-04 2011-06-10 삼성전자주식회사 화상형성장치 및 클라이언트와 연결된 서버, 클라이언트 및 화상형성장치의 드라이버 원격설치방법
US20110289515A1 (en) * 2010-05-19 2011-11-24 Microsoft Corporation Generating service-access activities for workflow applications
US20110289424A1 (en) * 2010-05-21 2011-11-24 Microsoft Corporation Secure application of custom resources in multi-tier systems
US8352803B2 (en) * 2010-06-07 2013-01-08 Alcatel Lucent Framework for managing failures in outbound messages
US20120208495A1 (en) 2010-06-23 2012-08-16 Twilio, Inc. System and method for monitoring account usage on a platform
US9590849B2 (en) * 2010-06-23 2017-03-07 Twilio, Inc. System and method for managing a computing cluster
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
US9092576B2 (en) * 2010-06-25 2015-07-28 International Business Machines Corporation Non-intrusive measurement of content quality using dry runs with roll-back
US9697042B2 (en) * 2010-07-30 2017-07-04 Sap Se Extensibility of business process and application logic
US20120060167A1 (en) * 2010-09-08 2012-03-08 Salsburg Michael A Method and system of simulating a data center
US10108993B2 (en) * 2010-12-15 2018-10-23 Red Hat, Inc. Data driven rules engine to dynamically change product business rules
CN103262064A (zh) * 2010-12-16 2013-08-21 Et国际有限公司 分布式计算体系结构
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
US9398622B2 (en) 2011-05-23 2016-07-19 Twilio, Inc. System and method for connecting a communication to a client
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
US9648006B2 (en) 2011-05-23 2017-05-09 Twilio, Inc. System and method for communicating with a client application
US9342254B2 (en) * 2011-06-04 2016-05-17 Microsoft Technology Licensing, Llc Sector-based write filtering with selective file and registry exclusions
US8719305B1 (en) * 2011-06-30 2014-05-06 Emc Corporation Object type definitions
US9092466B1 (en) 2011-06-30 2015-07-28 Emc Corporation Trait definitions
US8819077B1 (en) 2011-06-30 2014-08-26 Emc Corporation Dynamic data structures
US11144333B2 (en) * 2011-07-12 2021-10-12 Tongling Yuchen Software Technology Co., Ltd. Service model-oriented software system and operation method thereof
US20150149980A1 (en) * 2013-09-11 2015-05-28 Tongling Yucheng Software Technology Co., Ltd. Service model-oriented software operation platform and operation method thereof
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
US8893084B2 (en) * 2012-01-04 2014-11-18 Apple Inc. Methods and apparatuses for deferred object customization
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
WO2013162561A1 (en) * 2012-04-26 2013-10-31 Hewlett-Packard Development Company, L.P. Platform runtime abstraction
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US20130311220A1 (en) * 2012-05-18 2013-11-21 International Business Machines Corporation Evaluating deployment readiness in delivery centers through collaborative requirements gathering
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
GB2503463A (en) * 2012-06-27 2014-01-01 Ibm Overriding abstract resource manager methods to provide resources to implement nodes in a service definition
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
US8948356B2 (en) 2012-10-15 2015-02-03 Twilio, Inc. System and method for routing communications
US9489110B2 (en) 2012-10-29 2016-11-08 Bank Of America Corporation Automatic deployment, configuration, and lifecycle management of applications and infrastructure components
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US9240966B2 (en) 2013-06-19 2016-01-19 Twilio, Inc. System and method for transmitting and receiving media messages
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9201913B2 (en) 2013-06-21 2015-12-01 Sap Se Managing a file-based versioning system
US10341199B2 (en) * 2013-07-16 2019-07-02 Adobe Inc. State synchronization in a service environment
US20150052095A1 (en) * 2013-08-15 2015-02-19 Cisco Technology, Inc. Model-based approach to intelligent automation in a computing domain
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
US9137127B2 (en) 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US10521753B2 (en) * 2013-10-09 2019-12-31 Sap Se Usage description language
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US9325624B2 (en) 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US10223410B2 (en) * 2014-01-06 2019-03-05 Cisco Technology, Inc. Method and system for acquisition, normalization, matching, and enrichment of data
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
US9705995B2 (en) * 2014-03-18 2017-07-11 Axis Ab Capability monitoring in a service oriented architecture
CN104980459B (zh) * 2014-04-04 2018-06-26 中国移动通信集团广东有限公司 一种应用程序运行的方法及站点接入设备
KR101602658B1 (ko) 2014-04-15 2016-03-21 주식회사 셈웨어 알고리즘 시뮬레이션 시스템을 위한 다이어그램 자동 정렬 모듈
KR101585048B1 (ko) * 2014-04-15 2016-01-13 주식회사 셈웨어 다이어그램 기반 알고리즘 시뮬레이션 시스템
US9226217B2 (en) 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
US9374417B1 (en) 2014-05-27 2016-06-21 Amazon Technologies, Inc. Dynamic specification auditing for a distributed system
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
US9246694B1 (en) 2014-07-07 2016-01-26 Twilio, Inc. System and method for managing conferencing in a distributed communication network
EP3474148B1 (en) * 2014-07-23 2019-12-04 GrammaTech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
WO2016065080A1 (en) 2014-10-21 2016-04-28 Twilio, Inc. System and method for providing a miro-services communication platform
US10078619B2 (en) 2014-12-16 2018-09-18 International Business Machines Corporation Dynamic association of application workload tiers to infrastructure elements in a cloud computing environment
US9477975B2 (en) 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
US20160246582A1 (en) * 2015-02-25 2016-08-25 Red Hat, Inc. Generic Semantic Configuration Service
US10291726B2 (en) 2015-05-12 2019-05-14 Equinix, Inc. Network field unit for a cloud-based services exchange
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
CN104899032B (zh) * 2015-06-02 2017-12-01 浪潮集团有限公司 一种基于数据分析的OpenDaylight自动化开发方法
JP6673359B2 (ja) * 2015-08-27 2020-03-25 日本電気株式会社 システム構築支援システム、方法およびプログラム
US10182122B2 (en) * 2015-08-31 2019-01-15 Open Text Corporation Action flow fragment management
US9904536B1 (en) 2015-09-18 2018-02-27 Quest Software Inc. Systems and methods for administering web widgets
US9843651B1 (en) * 2015-12-21 2017-12-12 Dell Software Inc. Systems and methods of localizing distributed software applications
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service
US10049088B1 (en) * 2016-05-26 2018-08-14 Kirio Inc. Automated configuration system for complex system requiring exhaustive custom programming
US9654599B1 (en) 2016-10-06 2017-05-16 Brian Wheeler Automatic concurrent installation refresh of a large number of distributed heterogeneous reconfigurable computing devices upon a booting event
US10180827B2 (en) 2016-12-14 2019-01-15 International Business Machines Corporation Suppressing storing of context information
US10241769B2 (en) 2016-12-14 2019-03-26 International Business Machines Corporation Marking sibling caller routines
US10095493B2 (en) 2016-12-14 2018-10-09 International Business Machines Corporation Call sequence generation based on type of routine
US10235190B2 (en) 2016-12-14 2019-03-19 International Business Machines Corporation Executing instructions to store context information based on routine to be executed
US20180165073A1 (en) 2016-12-14 2018-06-14 International Business Machines Corporation Context information based on type of routine being called
US10152338B2 (en) * 2016-12-14 2018-12-11 International Business Machines Corporation Marking external sibling caller routines
CN106878095B (zh) * 2017-04-28 2020-06-02 北京仿真中心 一种基于想定分布式仿真的网络配置方法
US11055264B2 (en) * 2017-05-10 2021-07-06 Dropbox, Inc. Automatically coordinating application schema changes in a distributed data storage system
CN107566171A (zh) * 2017-08-28 2018-01-09 东南大学 一种发布/订阅分布式系统分层错误定位方法
US10698884B2 (en) * 2017-11-06 2020-06-30 Bank Of America Corporation Dynamic lineage validation system
US10866963B2 (en) * 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
JP6847885B2 (ja) * 2018-03-20 2021-03-24 株式会社東芝 情報処理装置、情報処理方法及びプログラム
US11477846B2 (en) * 2018-04-07 2022-10-18 Zte Corporation Application mobility mechanism for edge computing
US10812337B2 (en) 2018-06-15 2020-10-20 Vmware, Inc. Hierarchical API for a SDDC
US10942788B2 (en) * 2018-06-15 2021-03-09 Vmware, Inc. Policy constraint framework for an sddc
US11403315B2 (en) 2019-11-21 2022-08-02 Bank Of America Corporation Reporting and knowledge discovery for databases
EP4078901A4 (en) 2020-04-01 2023-10-11 VMWare, Inc. AUTOMATIC DEPLOYMENT OF NETWORK ELEMENTS FOR HETEROGENEOUS COMPUTING ELEMENTS
WO2021242291A1 (en) 2020-05-28 2021-12-02 Sumo Logic, Inc. Clustering of structured log data by key schema
US11803408B2 (en) 2020-07-29 2023-10-31 Vmware, Inc. Distributed network plugin agents for container networking
US11863352B2 (en) 2020-07-30 2024-01-02 Vmware, Inc. Hierarchical networking for nested container clusters
US11902245B2 (en) 2022-01-14 2024-02-13 VMware LLC Per-namespace IP address management method for container networks
CN114816355B (zh) * 2022-06-24 2022-09-20 基石酷联微电子技术(北京)有限公司 基于端口结构体的软件架构系统
US11848910B1 (en) 2022-11-11 2023-12-19 Vmware, Inc. Assigning stateful pods fixed IP addresses depending on unique pod identity
US11831511B1 (en) 2023-01-17 2023-11-28 Vmware, Inc. Enforcing network policies in heterogeneous systems

Family Cites Families (448)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200770A (en) 1977-09-06 1980-04-29 Stanford University Cryptographic apparatus and method
US4218582A (en) 1977-10-06 1980-08-19 The Board Of Trustees Of The Leland Stanford Junior University Public key cryptographic apparatus and method
US4405829A (en) 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US4424414A (en) 1978-05-01 1984-01-03 Board Of Trustees Of The Leland Stanford Junior University Exponentiation cryptographic apparatus and method
JPS6024297B2 (ja) 1980-11-27 1985-06-12 三菱自動車工業株式会社 機関用燃料供給装置の制御方法
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
US5495610A (en) * 1989-11-30 1996-02-27 Seer Technologies, Inc. Software distribution system to build and distribute a software release
US5396635A (en) 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
JPH0488489A (ja) 1990-08-01 1992-03-23 Internatl Business Mach Corp <Ibm> 一般化ハフ変換を用いた文字認識装置および方法
ATE154850T1 (de) 1990-09-17 1997-07-15 Cabletron Systems Inc Netzwerkverwaltungssystem mit modellbasierter intelligenz
JPH04287290A (ja) 1990-11-20 1992-10-12 Imra America Inc ハフ変換画像処理装置
WO1992016905A1 (en) 1991-03-18 1992-10-01 Echelon Corporation Programming language structures for use in a network for communicating, sensing and controlling information
EP0576549A1 (en) 1991-03-18 1994-01-05 Echelon Corporation Binder interface structure
US6115393A (en) 1991-04-12 2000-09-05 Concord Communications, Inc. Network monitoring
US5442557A (en) * 1991-07-26 1995-08-15 Pioneer Electronic Corporation Navigation device
NZ251541A (en) 1992-03-20 1995-12-21 At & T Corp Customer telephone service features de-activated during telemetry call
TW274675B (ko) * 1992-09-08 1996-04-21 Motorola Inc
US5729746A (en) * 1992-12-08 1998-03-17 Leonard; Ricky Jack Computerized interactive tool for developing a software product that provides convergent metrics for estimating the final size of the product throughout the development process using the life-cycle model
US5557774A (en) 1993-03-22 1996-09-17 Hitachi, Ltd. Method for making test environmental programs
US7043407B2 (en) * 1997-03-10 2006-05-09 Trilogy Development Group, Inc. Method and apparatus for configuring systems
BR9402027A (pt) * 1993-05-28 1994-12-13 Xerox Corp Processo para gerenciar uma configuração e assegurar compatibilidade entre componentes num sistema de computação, e, processo para eliminar incompatibilidades entre software residente e software de migração num sistema de computador automatizado
US5686940A (en) 1993-12-24 1997-11-11 Rohm Co., Ltd. Display apparatus
US5668995A (en) * 1994-04-22 1997-09-16 Ncr Corporation Method and apparatus for capacity planning for multiprocessor computer systems in client/server environments
EP0715241B1 (en) 1994-10-27 2004-01-14 Mitsubishi Corporation Apparatus for data copyright management system
EP1691316A1 (en) 1994-10-27 2006-08-16 Intarsia Software LLC Data copyright management system
WO1996016497A1 (en) 1994-11-21 1996-05-30 Oracle Corporation Transferring binary large objects (blobs) in a network environment
US5872928A (en) * 1995-02-24 1999-02-16 Cabletron Systems, Inc. Method and apparatus for defining and enforcing policies for configuration management in communications networks
US5758351A (en) 1995-03-01 1998-05-26 Sterling Software, Inc. System and method for the creation and use of surrogate information system objects
US5724508A (en) 1995-03-09 1998-03-03 Insoft, Inc. Apparatus for collaborative computing
US5895499A (en) 1995-07-03 1999-04-20 Sun Microsystems, Inc. Cross-domain data transfer using deferred page remapping
US5917730A (en) 1995-08-17 1999-06-29 Gse Process Solutions, Inc. Computer implemented object oriented visualization system and method
US5774689A (en) * 1995-09-22 1998-06-30 Bell Atlantic Network Services, Inc. Network configuration management system for digital communication networks
US6047323A (en) 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5684800A (en) 1995-11-15 1997-11-04 Cabletron Systems, Inc. Method for establishing restricted broadcast groups in a switched network
US5801970A (en) 1995-12-06 1998-09-01 Martin Marietta Corporation Model-based feature tracking system
GB2309558A (en) 1996-01-26 1997-07-30 Ibm Load balancing across the processors of a server computer
WO1997028505A1 (en) 1996-01-31 1997-08-07 Ipsilon Networks, Inc. Improved method and apparatus for dynamically shifting between routing and switching packets in a transmission network
US5898830A (en) 1996-10-17 1999-04-27 Network Engineering Software Firewall providing enhanced network security and user transparency
JPH09244940A (ja) 1996-03-12 1997-09-19 Hitachi Ltd 分散計算機資源の管理方法
US5768271A (en) 1996-04-12 1998-06-16 Alcatel Data Networks Inc. Virtual private network
US6085238A (en) 1996-04-23 2000-07-04 Matsushita Electric Works, Ltd. Virtual LAN system
US5748958A (en) 1996-04-30 1998-05-05 International Business Machines Corporation System for utilizing batch requests to present membership changes to process groups
US5845124A (en) 1996-05-01 1998-12-01 Ncr Corporation Systems and methods for generating and displaying a symbolic representation of a network model
EP0812086B1 (en) 1996-06-07 2007-09-05 Nippon Telegraph And Telephone Corporation Vlan control system and method
KR100204029B1 (ko) 1996-06-19 1999-06-15 이계철 비동기전달모드 교환 시스템에서 연결 식별자 할당방법
US6434598B1 (en) * 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US5822531A (en) 1996-07-22 1998-10-13 International Business Machines Corporation Method and system for dynamically reconfiguring a cluster of computer systems
US5796830A (en) 1996-07-29 1998-08-18 International Business Machines Corporation Interoperable cryptographic key recovery system
US5818937A (en) 1996-08-12 1998-10-06 Ncr Corporation Telephone tone security device
US5930798A (en) * 1996-08-15 1999-07-27 Predicate Logic, Inc. Universal data measurement, analysis and control system
US6236365B1 (en) 1996-09-09 2001-05-22 Tracbeam, Llc Location of a mobile station using a plurality of commercial wireless infrastructures
US6237020B1 (en) * 1996-10-01 2001-05-22 International Business Machines Corporation Task-oriented automatic distribution of software
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
GB2318486B (en) 1996-10-16 2001-03-28 Ibm Data communications system
US5790895A (en) 1996-10-18 1998-08-04 Compaq Computer Corporation Modem sharing
GB2318479B (en) * 1996-10-21 2001-04-04 Northern Telecom Ltd Problem model for alarm correlation
US5784463A (en) 1996-12-04 1998-07-21 V-One Corporation Token distribution, registration, and dynamic configuration of user entitlement for an application level security system and method
US6125442A (en) 1996-12-13 2000-09-26 Maves International Software, Inc. Method, system and data structures for computer software application development and execution
GB9626241D0 (en) * 1996-12-18 1997-02-05 Ncr Int Inc Secure data processing method and system
US5845277A (en) 1996-12-19 1998-12-01 Mci Communications Corporation Production of statistically-based network maps
US6424992B2 (en) 1996-12-23 2002-07-23 International Business Machines Corporation Affinity-based router and routing method
US6112243A (en) 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
US5826015A (en) 1997-02-20 1998-10-20 Digital Equipment Corporation Method and apparatus for secure remote programming of firmware and configurations of a computer over a network
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5958009A (en) * 1997-02-27 1999-09-28 Hewlett-Packard Company System and method for efficiently monitoring quality of service in a distributed processing environment
US5968126A (en) 1997-04-02 1999-10-19 Switchsoft Systems, Inc. User-based binding of network stations to broadcast domains
US6065058A (en) 1997-05-09 2000-05-16 International Business Machines Corp. Dynamic push filtering based on information exchanged among nodes in a proxy hierarchy
US6189109B1 (en) 1997-05-13 2001-02-13 Micron Electronics, Inc. Method of remote access and control of environmental conditions
US6167438A (en) 1997-05-22 2000-12-26 Trustees Of Boston University Method and system for distributed caching, prefetching and replication
US6578077B1 (en) 1997-05-27 2003-06-10 Novell, Inc. Traffic monitoring tool for bandwidth management
US6389464B1 (en) 1997-06-27 2002-05-14 Cornet Technology, Inc. Device management system for managing standards-compliant and non-compliant network elements using standard management protocols and a universal site server which is configurable from remote locations via internet browser technology
US6049528A (en) 1997-06-30 2000-04-11 Sun Microsystems, Inc. Trunking ethernet-compatible networks
FR2765702B1 (fr) * 1997-07-02 2001-07-06 Bull Sa Architecture de systeme de traitement de l'information
US6185308B1 (en) 1997-07-07 2001-02-06 Fujitsu Limited Key recovery system
US6233610B1 (en) 1997-08-27 2001-05-15 Northern Telecom Limited Communications network having management system architecture supporting reuse
US6041054A (en) 1997-09-24 2000-03-21 Telefonaktiebolaget Lm Ericsson Efficient transport of internet protocol packets using asynchronous transfer mode adaptation layer two
JP3649367B2 (ja) 1997-09-26 2005-05-18 ソニー株式会社 パケット伝送制御方法および装置
US9197599B1 (en) 1997-09-26 2015-11-24 Verizon Patent And Licensing Inc. Integrated business system for web based telecommunications management
EP0907145A3 (en) 1997-10-03 2003-03-26 Nippon Telegraph and Telephone Corporation Method and equipment for extracting image features from image sequence
US6427171B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6192401B1 (en) 1997-10-21 2001-02-20 Sun Microsystems, Inc. System and method for determining cluster membership in a heterogeneous distributed system
US6134594A (en) * 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6088734A (en) 1997-11-12 2000-07-11 International Business Machines Corporation Systems methods and computer program products for controlling earliest deadline first scheduling at ATM nodes
US6125447A (en) 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
WO1999030514A2 (en) 1997-12-12 1999-06-17 Alcatel Usa Sourcing, L.P. Network management
US6035405A (en) 1997-12-22 2000-03-07 Nortel Networks Corporation Secure virtual LANs
US6370584B1 (en) 1998-01-13 2002-04-09 Trustees Of Boston University Distributed routing
US6086618A (en) 1998-01-26 2000-07-11 Microsoft Corporation Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration
US6182275B1 (en) 1998-01-26 2001-01-30 Dell Usa, L.P. Generation of a compatible order for a computer system
US6484261B1 (en) 1998-02-17 2002-11-19 Cisco Technology, Inc. Graphical network security policy management
US6442557B1 (en) 1998-02-27 2002-08-27 Prc Inc. Evaluation of enterprise architecture model including relational database
US6076108A (en) 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
US6208649B1 (en) 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6691148B1 (en) * 1998-03-13 2004-02-10 Verizon Corporate Services Group Inc. Framework for providing quality of service requirements in a distributed object-oriented computer system
TW374965B (en) 1998-03-17 1999-11-21 Winbond Electronics Corp Method of processing of transmission of confidential data and the network system
US6393386B1 (en) * 1998-03-26 2002-05-21 Visual Networks Technologies, Inc. Dynamic modeling of complex networks and prediction of impacts of faults therein
US6236901B1 (en) 1998-03-31 2001-05-22 Dell Usa, L.P. Manufacturing system and method for assembly of computer systems in a build-to-order environment
CA2326894C (en) 1998-04-03 2010-07-13 Vertical Networks Inc. Voice and data apparatus comprising a selective tapping digital signal processing resource
US6118785A (en) 1998-04-07 2000-09-12 3Com Corporation Point-to-point protocol with a signaling channel
US6466985B1 (en) 1998-04-10 2002-10-15 At&T Corp. Method and apparatus for providing quality of service using the internet protocol
US6317438B1 (en) * 1998-04-14 2001-11-13 Harold Herman Trebes, Jr. System and method for providing peer-oriented control of telecommunications services
US6059842A (en) 1998-04-14 2000-05-09 International Business Machines Corp. System and method for optimizing computer software and hardware
US6208345B1 (en) 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6898791B1 (en) * 1998-04-21 2005-05-24 California Institute Of Technology Infospheres distributed object system
US6167052A (en) 1998-04-27 2000-12-26 Vpnx.Com, Inc. Establishing connectivity in networks
US6311144B1 (en) 1998-05-13 2001-10-30 Nabil A. Abu El Ata Method and apparatus for designing and analyzing information systems using multi-layer mathematical models
US20020049573A1 (en) 1998-05-13 2002-04-25 El Ata Nabil A. Abu Automated system and method for designing model based architectures of information systems
FR2779018B1 (fr) 1998-05-22 2000-08-18 Activcard Terminal et systeme pour la mise en oeuvre de transactions electroniques securisees
US6269076B1 (en) 1998-05-28 2001-07-31 3Com Corporation Method of resolving split virtual LANs utilizing a network management system
JP3617770B2 (ja) 1998-05-29 2005-02-09 株式会社日立製作所 ネットワーク管理システム及びネットワーク管理方式
US6947987B2 (en) 1998-05-29 2005-09-20 Ncr Corporation Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes
US6259448B1 (en) * 1998-06-03 2001-07-10 International Business Machines Corporation Resource model configuration and deployment in a distributed computer network
JP3308210B2 (ja) * 1998-06-03 2002-07-29 日本電気株式会社 分散処理システムとその処理方法
GB2338154B (en) 1998-06-05 2003-01-29 3Com Technologies Ltd System for providing fair access for vlans to a shared transmission medium
EP1005779B1 (en) 1998-06-19 2008-03-12 Juniper Networks, Inc. Device for performing ip forwarding and atm switching
US6360265B1 (en) 1998-07-08 2002-03-19 Lucent Technologies Inc. Arrangement of delivering internet protocol datagrams for multimedia services to the same server
US6427163B1 (en) 1998-07-10 2002-07-30 International Business Machines Corporation Highly scalable and highly available cluster system management scheme
US6226788B1 (en) 1998-07-22 2001-05-01 Cisco Technology, Inc. Extensible network management system
US6438100B1 (en) 1998-08-07 2002-08-20 Alcatel Canada Inc. Method and apparatus for routing server redundancy in a network having carrier scale internetworking
US6473791B1 (en) 1998-08-17 2002-10-29 Microsoft Corporation Object load balancing
US6266707B1 (en) 1998-08-17 2001-07-24 International Business Machines Corporation System and method for IP network address translation and IP filtering with dynamic address resolution
US6336138B1 (en) * 1998-08-25 2002-01-01 Hewlett-Packard Company Template-driven approach for generating models on network services
US6717949B1 (en) 1998-08-31 2004-04-06 International Business Machines Corporation System and method for IP network address translation using selective masquerade
US6311270B1 (en) 1998-09-14 2001-10-30 International Business Machines Corporation Method and apparatus for securing communication utilizing a security processor
US6253230B1 (en) 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6167383A (en) 1998-09-22 2000-12-26 Dell Usa, Lp Method and apparatus for providing customer configured machines at an internet site
US6230312B1 (en) 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6546553B1 (en) * 1998-10-02 2003-04-08 Microsoft Corporation Service installation on a base function and provision of a pass function with a service-free base function semantic
US6728885B1 (en) 1998-10-09 2004-04-27 Networks Associates Technology, Inc. System and method for network access control using adaptive proxies
US6570875B1 (en) 1998-10-13 2003-05-27 Intel Corporation Automatic filtering and creation of virtual LANs among a plurality of switch ports
CA2287813C (en) 1998-10-22 2005-03-29 At&T Corp. System and method for network load balancing
US6286052B1 (en) 1998-12-04 2001-09-04 Cisco Technology, Inc. Method and apparatus for identifying network data traffic flows and for applying quality of service treatments to the flows
US6393485B1 (en) 1998-10-27 2002-05-21 International Business Machines Corporation Method and apparatus for managing clustered computer systems
US6212559B1 (en) 1998-10-28 2001-04-03 Trw Inc. Automated configuration of internet-like computer networks
US6691165B1 (en) * 1998-11-10 2004-02-10 Rainfinity, Inc. Distributed server cluster for controlling network traffic
JP3820777B2 (ja) 1998-11-12 2006-09-13 富士ゼロックス株式会社 秘密鍵寄託システムおよび方法
US6330605B1 (en) 1998-11-19 2001-12-11 Volera, Inc. Proxy cache cluster
US6154543A (en) 1998-11-25 2000-11-28 Hush Communications Anguilla, Inc. Public key cryptosystem with roaming user capability
US6393456B1 (en) 1998-11-30 2002-05-21 Microsoft Corporation System, method, and computer program product for workflow processing using internet interoperable electronic messaging with mime multiple content type
US7058704B1 (en) 1998-12-01 2006-06-06 Network Appliance, Inc.. Method and apparatus for implementing a service-level agreement
US6108702A (en) 1998-12-02 2000-08-22 Micromuse, Inc. Method and apparatus for determining accurate topology features of a network
US6243746B1 (en) 1998-12-04 2001-06-05 Sun Microsystems, Inc. Method and implementation for using computer network topology objects
US6336171B1 (en) 1998-12-23 2002-01-01 Ncr Corporation Resource protection in a cluster environment
US6570847B1 (en) 1998-12-31 2003-05-27 At&T Corp. Method and system for network traffic rate control based on fractional tokens
US6691168B1 (en) 1998-12-31 2004-02-10 Pmc-Sierra Method and apparatus for high-speed network rule processing
US6393474B1 (en) * 1998-12-31 2002-05-21 3Com Corporation Dynamic policy management apparatus and method using active network devices
US6628671B1 (en) 1999-01-19 2003-09-30 Vtstarcom, Inc. Instant activation of point-to point protocol (PPP) connection using existing PPP state
US6449650B1 (en) * 1999-02-01 2002-09-10 Redback Networks Inc. Methods and apparatus for deploying quality of service policies on a data communication network
JP3765949B2 (ja) * 1999-02-17 2006-04-12 富士通株式会社 オブジェクト指向ソフトウェア開発支援装置および開発支援方法
US6377996B1 (en) 1999-02-18 2002-04-23 International Business Machines Corporation System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming
US6470464B2 (en) * 1999-02-23 2002-10-22 International Business Machines Corporation System and method for predicting computer system performance and for making recommendations for improving its performance
US6829770B1 (en) 1999-02-23 2004-12-07 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
US6549934B1 (en) 1999-03-01 2003-04-15 Microsoft Corporation Method and system for remote access to computer devices via client managed server buffers exclusively allocated to the client
US6760775B1 (en) 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
US6782408B1 (en) 1999-03-30 2004-08-24 International Business Machines Corporation Controlling a number of instances of an application running in a computing environment
US6442713B1 (en) * 1999-03-30 2002-08-27 International Business Machines Corporation Cluster node distress signal
US6801949B1 (en) * 1999-04-12 2004-10-05 Rainfinity, Inc. Distributed server cluster with graphical user interface
US6839348B2 (en) 1999-04-30 2005-01-04 Cisco Technology, Inc. System and method for distributing multicasts in virtual local area networks
JP2000322288A (ja) * 1999-05-06 2000-11-24 Fujitsu Ltd 分散オブジェクト開発システム、および、分散オブジェクト開発をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6564261B1 (en) 1999-05-10 2003-05-13 Telefonaktiebolaget Lm Ericsson (Publ) Distributed system to intelligently establish sessions between anonymous users over various networks
US6757744B1 (en) 1999-05-12 2004-06-29 Unisys Corporation Distributed transport communications manager with messaging subsystem for high-speed communications between heterogeneous computer systems
US6971072B1 (en) 1999-05-13 2005-11-29 International Business Machines Corporation Reactive user interface control based on environmental sensing
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6425126B1 (en) * 1999-05-19 2002-07-23 International Business Machines Corporation Apparatus and method for synchronizing software between computers
US6631141B1 (en) 1999-05-27 2003-10-07 Ibm Corporation Methods, systems and computer program products for selecting an aggregator interface
US6957186B1 (en) 1999-05-27 2005-10-18 Accenture Llp System method and article of manufacture for building, managing, and supporting various components of a system
GB9912494D0 (en) 1999-05-28 1999-07-28 Hewlett Packard Co Configuring computer systems
JP2003502757A (ja) * 1999-06-10 2003-01-21 アルカテル・インターネツトワーキング・インコーポレイテツド ポリシーベースのネットワークアーキテクチャ
US6539494B1 (en) 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus
US6505244B1 (en) 1999-06-29 2003-01-07 Cisco Technology Inc. Policy engine which supports application specific plug-ins for enforcing policies in a feedback-based, adaptive data network
US6665714B1 (en) 1999-06-30 2003-12-16 Emc Corporation Method and apparatus for determining an identity of a network device
US6367010B1 (en) 1999-07-02 2002-04-02 Postx Corporation Method for generating secure symmetric encryption and decryption
US20010020228A1 (en) 1999-07-09 2001-09-06 International Business Machines Corporation Umethod, system and program for managing relationships among entities to exchange encryption keys for use in providing access and authorization to resources
US6584499B1 (en) 1999-07-09 2003-06-24 Lsi Logic Corporation Methods and apparatus for performing mass operations on a plurality of managed devices on a network
US6823299B1 (en) * 1999-07-09 2004-11-23 Autodesk, Inc. Modeling objects, systems, and simulations by establishing relationships in an event-driven graph in a computer implemented graphics system
US6480955B1 (en) 1999-07-09 2002-11-12 Lsi Logic Corporation Methods and apparatus for committing configuration changes to managed devices prior to completion of the configuration change
US6820042B1 (en) * 1999-07-23 2004-11-16 Opnet Technologies Mixed mode network simulator
JP3656716B2 (ja) 1999-07-27 2005-06-08 株式会社日立製作所 サービス管理システム
US6601233B1 (en) * 1999-07-30 2003-07-29 Accenture Llp Business components framework
EP1076279A1 (en) 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
US6813778B1 (en) * 1999-08-16 2004-11-02 General Instruments Corporation Method and system for downloading and managing the enablement of a list of code objects
US7162427B1 (en) 1999-08-20 2007-01-09 Electronic Data Systems Corporation Structure and method of modeling integrated business and information technology frameworks and architecture in support of a business
US6597956B1 (en) * 1999-08-23 2003-07-22 Terraspring, Inc. Method and apparatus for controlling an extensible computing system
US6779016B1 (en) 1999-08-23 2004-08-17 Terraspring, Inc. Extensible computing system
US6587876B1 (en) 1999-08-24 2003-07-01 Hewlett-Packard Development Company Grouping targets of management policies
US7139999B2 (en) * 1999-08-31 2006-11-21 Accenture Llp Development architecture framework
US6256773B1 (en) 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6370573B1 (en) 1999-08-31 2002-04-09 Accenture Llp System, method and article of manufacture for managing an environment of a development architecture framework
US6772333B1 (en) * 1999-09-01 2004-08-03 Dickens Coal Llc Atomic session-start operation combining clear-text and encrypted sessions to provide id visibility to middleware such as load-balancers
US7103185B1 (en) * 1999-12-22 2006-09-05 Cisco Technology, Inc. Method and apparatus for distributing and updating private keys of multicast group managers using directory replication
JP3773716B2 (ja) 1999-09-13 2006-05-10 富士通株式会社 グラフィカルユーザインターフェース表示装置及びその装置での処理をコンピュータにて行なわせるためのプログラムを格納した記録媒体
US6598223B1 (en) 1999-10-06 2003-07-22 Dell Usa, L.P. Method and system for installing and testing build-to-order components in a defined configuration computer system
US6738736B1 (en) 1999-10-06 2004-05-18 Accenture Llp Method and estimator for providing capacacity modeling and planning
US6654796B1 (en) 1999-10-07 2003-11-25 Cisco Technology, Inc. System for managing cluster of network switches using IP address for commander switch and redirecting a managing request via forwarding an HTTP connection to an expansion switch
US7404175B2 (en) * 2000-10-10 2008-07-22 Bea Systems, Inc. Smart generator
JP4001698B2 (ja) 1999-10-14 2007-10-31 富士通株式会社 負荷分散システム
US6654782B1 (en) * 1999-10-28 2003-11-25 Networks Associates, Inc. Modular framework for dynamically processing network events using action sets in a distributed computing environment
US6351685B1 (en) 1999-11-05 2002-02-26 International Business Machines Corporation Wireless communication between multiple intelligent pickers and with a central job queue in an automated data storage library
JP3463803B2 (ja) 1999-11-09 2003-11-05 松下電器産業株式会社 クラスタサーバ装置
US6609148B1 (en) 1999-11-10 2003-08-19 Randy Salo Clients remote access to enterprise networks employing enterprise gateway servers in a centralized data center converting plurality of data requests for messaging and collaboration into a single request
WO2001035278A1 (en) 1999-11-10 2001-05-17 Fakhouri Sameh A A decision based system for managing distributed resources and modeling the global optimization problem
US6829639B1 (en) * 1999-11-15 2004-12-07 Netvision, Inc. Method and system for intelligent global event notification and control within a distributed computing environment
WO2001044894A2 (en) 1999-12-06 2001-06-21 Warp Solutions, Inc. System and method for dynamic content routing
US6529953B1 (en) 1999-12-17 2003-03-04 Reliable Network Solutions Scalable computer network resource monitoring and location system
US6304972B1 (en) * 2000-01-03 2001-10-16 Massachusetts Institute Of Technology Secure software system and related techniques
US6769008B1 (en) 2000-01-10 2004-07-27 Sun Microsystems, Inc. Method and apparatus for dynamically altering configurations of clustered computer systems
US6862613B1 (en) 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US7315801B1 (en) * 2000-01-14 2008-01-01 Secure Computing Corporation Network security modeling system and method
US6754716B1 (en) 2000-02-11 2004-06-22 Ensim Corporation Restricting communication between network devices on a common network
US7093005B2 (en) 2000-02-11 2006-08-15 Terraspring, Inc. Graphical editor for defining and creating a computer system
WO2001061969A2 (en) 2000-02-18 2001-08-23 Cedere Corporation Auto control of network monitoring and simulation
DE60011990T2 (de) 2000-02-22 2005-07-07 Telefonaktiebolaget Lm Ericsson (Publ) Verfahren und Vorrichtung in einem Kommunikationsnetzwerk
US6983317B1 (en) 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
US7155490B1 (en) 2000-03-01 2006-12-26 Freewebs Corporation System and method for providing a web-based operating system
US7506034B2 (en) 2000-03-03 2009-03-17 Intel Corporation Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US6601101B1 (en) 2000-03-15 2003-07-29 3Com Corporation Transparent access to network attached devices
US6678821B1 (en) 2000-03-23 2004-01-13 E-Witness Inc. Method and system for restricting access to the private key of a user in a public key infrastructure
US6868062B1 (en) * 2000-03-28 2005-03-15 Intel Corporation Managing data traffic on multiple ports
US6748447B1 (en) 2000-04-07 2004-06-08 Network Appliance, Inc. Method and apparatus for scalable distribution of information in a distributed network
US6718361B1 (en) 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
US7403901B1 (en) * 2000-04-13 2008-07-22 Accenture Llp Error and load summary reporting in a health care solution environment
US6986133B2 (en) * 2000-04-14 2006-01-10 Goahead Software Inc. System and method for securely upgrading networked devices
US6574195B2 (en) 2000-04-19 2003-06-03 Caspian Networks, Inc. Micro-flow management
US6904458B1 (en) 2000-04-26 2005-06-07 Microsoft Corporation System and method for remote management
US7054943B1 (en) 2000-04-28 2006-05-30 International Business Machines Corporation Method and apparatus for dynamically adjusting resources assigned to plurality of customers, for meeting service level agreements (slas) with minimal resources, and allowing common pools of resources to be used across plural customers on a demand basis
US6640303B1 (en) 2000-04-28 2003-10-28 Ky Quy Vu System and method for encryption using transparent keys
US6854069B2 (en) * 2000-05-02 2005-02-08 Sun Microsystems Inc. Method and system for achieving high availability in a networked computer system
MXPA02011080A (es) 2000-05-09 2003-03-10 Solutia Inc Composiciones de fluidos funcionales, que contienen depuradores expoxidicos de acidos.
US6675308B1 (en) 2000-05-09 2004-01-06 3Com Corporation Methods of determining whether a network interface card entry within the system registry pertains to physical hardware or to a virtual device
US7222147B1 (en) 2000-05-20 2007-05-22 Ciena Corporation Processing network management data in accordance with metadata files
US6671699B1 (en) * 2000-05-20 2003-12-30 Equipe Communications Corporation Shared database usage in network devices
EP1158740B1 (en) * 2000-05-24 2009-09-16 Sony Deutschland GmbH Quality of Service negotiation
JP3457259B2 (ja) 2000-05-30 2003-10-14 日本電信電話株式会社 プロバイダ切換可能通信方法及びその装置
US6801937B1 (en) 2000-05-31 2004-10-05 International Business Machines Corporation Method, system and program products for defining nodes to a cluster
US6742020B1 (en) 2000-06-08 2004-05-25 Hewlett-Packard Development Company, L.P. System and method for managing data flow and measuring service in a storage network
US6718379B1 (en) 2000-06-09 2004-04-06 Advanced Micro Devices, Inc. System and method for network management of local area networks having non-blocking network switches configured for switching data packets between subnetworks based on management policies
US7032031B2 (en) * 2000-06-23 2006-04-18 Cloudshield Technologies, Inc. Edge adapter apparatus and method
US6928482B1 (en) * 2000-06-29 2005-08-09 Cisco Technology, Inc. Method and apparatus for scalable process flow load balancing of a multiplicity of parallel packet processors in a digital communication network
FR2811179B1 (fr) 2000-06-30 2002-09-27 Thomson Csf Procede de routage de trame ip entre les usagers d'un reseau a graphe variable
DK1297446T3 (da) 2000-07-05 2006-01-30 Ernst & Young Llp Fremgangsmåde og apparat for tilvejebringelse af computertjenester
US6971063B1 (en) 2000-07-28 2005-11-29 Wireless Valley Communications Inc. System, method, and apparatus for portable design, deployment, test, and optimization of a communication network
US7366755B1 (en) * 2000-07-28 2008-04-29 International Business Machines Corporation Method and apparatus for affinity of users to application servers
US6609213B1 (en) 2000-08-10 2003-08-19 Dell Products, L.P. Cluster-based system and method of recovery from server failures
US6823373B1 (en) * 2000-08-11 2004-11-23 Informatica Corporation System and method for coupling remote data stores and mobile devices via an internet based server
DE60031266T2 (de) 2000-08-17 2007-04-19 Sun Microsystems, Inc., Palo Alto Verfahren und System zum Lastausgleich
US6820121B1 (en) 2000-08-24 2004-11-16 International Business Machines Corporation Methods systems and computer program products for processing an event based on policy rules using hashing
US6976269B1 (en) 2000-08-29 2005-12-13 Equinix, Inc. Internet co-location facility security system
US7752214B2 (en) 2000-09-01 2010-07-06 Op40, Inc. Extended environment data structure for distributed digital assets over a multi-tier computer network
JP2002084302A (ja) 2000-09-06 2002-03-22 Nippon Telegr & Teleph Corp <Ntt> ネットワークによる通信方法及び装置
US6973622B1 (en) 2000-09-25 2005-12-06 Wireless Valley Communications, Inc. System and method for design, tracking, measurement, prediction and optimization of data communication networks
JP2002108910A (ja) 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
US7058826B2 (en) 2000-09-27 2006-06-06 Amphus, Inc. System, architecture, and method for logical server and other network devices in a dynamically configurable multi-server network environment
US7272653B2 (en) 2000-09-28 2007-09-18 International Business Machines Corporation System and method for implementing a clustered load balancer
US7069204B1 (en) * 2000-09-28 2006-06-27 Cadence Design System, Inc. Method and system for performance level modeling and simulation of electronic systems having both hardware and software elements
US6976079B1 (en) 2000-09-29 2005-12-13 International Business Machines Corporation System and method for upgrading software in a distributed computer system
US6944759B1 (en) 2000-09-29 2005-09-13 Hewlett-Packard Development Company, L.P. Automatic system configuration management
AU2002215311A1 (en) 2000-10-05 2002-04-15 Wind River Systems, Inc. A system and method for implementing multi-level network drivers
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US6915338B1 (en) 2000-10-24 2005-07-05 Microsoft Corporation System and method providing automatic policy enforcement in a multi-computer service application
US6886038B1 (en) 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
US7093288B1 (en) 2000-10-24 2006-08-15 Microsoft Corporation Using packet filters and network virtualization to restrict network communications
US6907395B1 (en) 2000-10-24 2005-06-14 Microsoft Corporation System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model
US7113900B1 (en) 2000-10-24 2006-09-26 Microsoft Corporation System and method for logical modeling of distributed computer systems
US6769060B1 (en) 2000-10-25 2004-07-27 Ericsson Inc. Method of bilateral identity authentication
US6853841B1 (en) 2000-10-25 2005-02-08 Sun Microsystems, Inc. Protocol for a remote control device to enable control of network attached devices
US6754816B1 (en) 2000-10-26 2004-06-22 Dell Products L.P. Scalable environmental data calculation method customized by system configuration
US8250570B2 (en) 2000-10-31 2012-08-21 Hewlett-Packard Development Company, L.P. Automated provisioning framework for internet site servers
US7124289B1 (en) 2000-10-31 2006-10-17 Opsware Inc. Automated provisioning framework for internet site servers
US20020083146A1 (en) * 2000-10-31 2002-06-27 Glenn Ferguson Data model for automated server configuration
US7003574B1 (en) 2000-11-01 2006-02-21 Microsoft Corporation Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
US7089293B2 (en) 2000-11-02 2006-08-08 Sun Microsystems, Inc. Switching system method for discovering and accessing SCSI devices in response to query
US6985956B2 (en) 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US7313614B2 (en) 2000-11-02 2007-12-25 Sun Microsystems, Inc. Switching system
US7028307B2 (en) * 2000-11-06 2006-04-11 Alcatel Data management framework for policy management
US7027412B2 (en) 2000-11-10 2006-04-11 Veritas Operating Corporation System for dynamic provisioning of secure, scalable, and extensible networked computer environments
US20040073443A1 (en) 2000-11-10 2004-04-15 Gabrick John J. System for automating and managing an IP environment
US7046680B1 (en) 2000-11-28 2006-05-16 Mci, Inc. Network access system including a programmable access device having distributed service control
US7089281B1 (en) 2000-12-08 2006-08-08 Sun Microsystems, Inc. Load balancing in a dynamic session redirector
WO2002048910A2 (en) * 2000-12-14 2002-06-20 Appilog Logview Ltd. System for collecting, correlating, querying and viewing topology information
US6856591B1 (en) 2000-12-15 2005-02-15 Cisco Technology, Inc. Method and system for high reliability cluster management
US20020075844A1 (en) 2000-12-15 2002-06-20 Hagen W. Alexander Integrating public and private network resources for optimized broadband wireless access and method
US7421505B2 (en) 2000-12-21 2008-09-02 Noatak Software Llc Method and system for executing protocol stack instructions to form a packet for causing a computing device to perform an operation
US20030046615A1 (en) * 2000-12-22 2003-03-06 Alan Stone System and method for adaptive reliability balancing in distributed programming networks
US7225441B2 (en) 2000-12-27 2007-05-29 Intel Corporation Mechanism for providing power management through virtualization
JP2002354006A (ja) 2001-05-24 2002-12-06 Oki Electric Ind Co Ltd 重複アドレスのネットワークシステム
US6581000B2 (en) 2001-01-04 2003-06-17 Carnegie Mellon University Position location system and method
US20020090089A1 (en) 2001-01-05 2002-07-11 Steven Branigan Methods and apparatus for secure wireless networking
US7213231B1 (en) 2001-01-11 2007-05-01 Cisco Technology, Inc. Cross-spectrum application model for dynamic computing environments in software lifecycle
US6963981B1 (en) 2001-01-29 2005-11-08 Akamai Technologies, Inc. Method and apparatus for remote installation of an operating system over a network connection
CN1368694A (zh) 2001-02-01 2002-09-11 安德华科技股份有限公司 动态分辨作业实体的方法与其系统
US7383329B2 (en) 2001-02-13 2008-06-03 Aventail, Llc Distributed cache for state transfer operations
US20020152086A1 (en) 2001-02-15 2002-10-17 Smith Ned M. Method and apparatus for controlling a lifecycle of an electronic contract
US7246351B2 (en) * 2001-02-20 2007-07-17 Jargon Software System and method for deploying and implementing software applications over a distributed network
EP1241447A1 (en) 2001-03-13 2002-09-18 Matsushita Electric Industrial Co., Ltd. Information terminal and cartographic information providing system
JP2002271312A (ja) 2001-03-14 2002-09-20 Hitachi Ltd 公開鍵管理方法
US7069337B2 (en) 2001-03-20 2006-06-27 Mci, Inc. Policy-based synchronization of per-class resources between routers in a data network
US7050961B1 (en) 2001-03-21 2006-05-23 Unisys Corporation Solution generation method for thin client sizing tool
US7003562B2 (en) 2001-03-27 2006-02-21 Redseal Systems, Inc. Method and apparatus for network wide policy-based analysis of configurations of devices
US7028228B1 (en) 2001-03-28 2006-04-11 The Shoregroup, Inc. Method and apparatus for identifying problems in computer networks
US7076633B2 (en) 2001-03-28 2006-07-11 Swsoft Holdings, Ltd. Hosting service providing platform system and method
US20020156900A1 (en) 2001-03-30 2002-10-24 Brian Marquette Protocol independent control module
US20020198995A1 (en) * 2001-04-10 2002-12-26 International Business Machines Corporation Apparatus and methods for maximizing service-level-agreement profits
US7162634B2 (en) 2001-04-18 2007-01-09 Thomson Licensing Method for providing security on a powerline-modem network
US7152109B2 (en) 2001-04-20 2006-12-19 Opsware, Inc Automated provisioning of computing networks according to customer accounts using a network database data model
US7231430B2 (en) 2001-04-20 2007-06-12 Egenera, Inc. Reconfigurable, virtual processing system, cluster, network and method
US7058858B2 (en) 2001-04-23 2006-06-06 Hewlett-Packard Development Company, L.P. Systems and methods for providing automated diagnostic services for a cluster computer system
US6895534B2 (en) 2001-04-23 2005-05-17 Hewlett-Packard Development Company, L.P. Systems and methods for providing automated diagnostic services for a cluster computer system
US6836750B2 (en) 2001-04-23 2004-12-28 Hewlett-Packard Development Company, L.P. Systems and methods for providing an automated diagnostic audit for cluster computer systems
US7194439B2 (en) 2001-04-30 2007-03-20 International Business Machines Corporation Method and system for correlating job accounting information with software license information
US7543066B2 (en) * 2001-04-30 2009-06-02 International Business Machines Corporation Method and apparatus for maintaining session affinity across multiple server groups
US6816897B2 (en) 2001-04-30 2004-11-09 Opsware, Inc. Console mapping tool for automated deployment and management of network devices
US7131123B2 (en) 2001-04-30 2006-10-31 Opsware Inc. Automated provisioning of computing networks using a network database model
US20030014644A1 (en) 2001-05-02 2003-01-16 Burns James E. Method and system for security policy management
US7013462B2 (en) 2001-05-10 2006-03-14 Hewlett-Packard Development Company, L.P. Method to map an inventory management system to a configuration management system
US20020184327A1 (en) * 2001-05-11 2002-12-05 Major Robert Drew System and method for partitioning address space in a proxy cache server cluster
US20020171690A1 (en) 2001-05-15 2002-11-21 International Business Machines Corporation Method and system for scaling a graphical user interface (GUI) widget based on selection pointer proximity
US7134122B1 (en) 2001-05-31 2006-11-07 Oracle International Corporation One click deployment
US20030008712A1 (en) 2001-06-04 2003-01-09 Playnet, Inc. System and method for distributing a multi-client game/application over a communications network
US6735596B2 (en) 2001-06-07 2004-05-11 Guy Charles Corynen Computer method and user interface for decision analysis and for global system optimization
US6968551B2 (en) * 2001-06-11 2005-11-22 John Hediger System and user interface for generation and processing of software application installation instructions
US20020188941A1 (en) * 2001-06-12 2002-12-12 International Business Machines Corporation Efficient installation of software packages
US6944678B2 (en) 2001-06-18 2005-09-13 Transtech Networks Usa, Inc. Content-aware application switch and methods thereof
US6879926B2 (en) * 2001-06-29 2005-04-12 National Instruments Corporation Measurement system software architecture for easily creating high-performance measurement applications
US7082464B2 (en) 2001-07-06 2006-07-25 Juniper Networks, Inc. Network management system
US20030009559A1 (en) 2001-07-09 2003-01-09 Naoya Ikeda Network system and method of distributing accesses to a plurality of server apparatus in the network system
US7409420B2 (en) * 2001-07-16 2008-08-05 Bea Systems, Inc. Method and apparatus for session replication and failover
US7174379B2 (en) * 2001-08-03 2007-02-06 International Business Machines Corporation Managing server resources for hosted applications
US6922791B2 (en) 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
US7062718B2 (en) 2001-08-14 2006-06-13 National Instruments Corporation Configuration diagram which graphically displays program relationship
US7043393B2 (en) 2001-08-15 2006-05-09 National Instruments Corporation System and method for online specification of measurement hardware
US7765283B2 (en) 2001-08-15 2010-07-27 Cisco Technology, Inc. Network provisioning in a distributed network management architecture
US20030041159A1 (en) 2001-08-17 2003-02-27 David Tinsley Systems and method for presenting customizable multimedia presentations
US6823382B2 (en) 2001-08-20 2004-11-23 Altaworks Corporation Monitoring and control engine for multi-tiered service-level management of distributed web-application servers
US20030041142A1 (en) 2001-08-27 2003-02-27 Nec Usa, Inc. Generic network monitoring tool
US6880002B2 (en) 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US6986135B2 (en) * 2001-09-06 2006-01-10 Cognos Incorporated Deployment manager for organizing and deploying an application in a distributed computing environment
US6973620B2 (en) 2001-09-06 2005-12-06 International Business Machines Corporation Method and apparatus for providing user support based on contextual information
US6980978B2 (en) 2001-09-07 2005-12-27 International Business Machines Corporation Site integration management system for operational support service in an internet data center
US7500069B2 (en) 2001-09-17 2009-03-03 Hewlett-Packard Development Company, L.P. System and method for providing secure access to network logical storage partitions
JP4852228B2 (ja) 2001-09-26 2012-01-11 インタラクト デヴァイシーズ インコーポレイテッド メディア信号を通信するためのシステム及び方法
WO2003029963A2 (en) * 2001-09-28 2003-04-10 Codagen Technologies Corp. A system and method for managing architectural layers within a software model
US7769823B2 (en) 2001-09-28 2010-08-03 F5 Networks, Inc. Method and system for distributing requests for content
US7309498B2 (en) 2001-10-10 2007-12-18 Belenkaya Bronislava G Biodegradable absorbents and methods of preparation
US7257817B2 (en) 2001-10-16 2007-08-14 Microsoft Corporation Virtual network with adaptive dispatcher
US7200665B2 (en) 2001-10-17 2007-04-03 Hewlett-Packard Development Company, L.P. Allowing requests of a session to be serviced by different servers in a multi-server data service system
EP1307018B1 (en) 2001-10-24 2006-10-11 Sun Microsystems, Inc. Load balancing unit and method of its operation
US7035930B2 (en) 2001-10-26 2006-04-25 Hewlett-Packard Development Company, L.P. Method and framework for generating an optimized deployment of software applications in a distributed computing environment using layered model descriptions of services and servers
US7194616B2 (en) 2001-10-27 2007-03-20 International Business Machines Corporation Flexible temporary capacity upgrade/downgrade in a computer system without involvement of the operating system
US7024451B2 (en) 2001-11-05 2006-04-04 Hewlett-Packard Development Company, L.P. System and method for maintaining consistent independent server-side state among collaborating servers
US20030126464A1 (en) 2001-12-04 2003-07-03 Mcdaniel Patrick D. Method and system for determining and enforcing security policy in a communication session
US7305556B2 (en) 2001-12-05 2007-12-04 Canon Kabushiki Kaisha Secure printing with authenticated printer key
US7188364B2 (en) 2001-12-20 2007-03-06 Cranite Systems, Inc. Personal virtual bridged local area networks
US7188335B1 (en) * 2001-12-28 2007-03-06 Trilogy Development Group, Inc. Product configuration using configuration patterns
US20030138105A1 (en) 2002-01-18 2003-07-24 International Business Machines Corporation Storing keys in a cryptology device
US7412502B2 (en) * 2002-04-18 2008-08-12 International Business Machines Corporation Graphics for end to end component mapping and problem-solving in a network environment
US6954930B2 (en) * 2002-02-19 2005-10-11 International Business Machines Corporation Remote validation of installation input data
US7254634B1 (en) 2002-03-08 2007-08-07 Akamai Technologies, Inc. Managing web tier session state objects in a content delivery network (CDN)
US7257584B2 (en) 2002-03-18 2007-08-14 Surgient, Inc. Server file management
US6990666B2 (en) 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US20030214908A1 (en) 2002-03-19 2003-11-20 Anurag Kumar Methods and apparatus for quality of service control for TCP aggregates at a bottleneck link in the internet
US6968535B2 (en) * 2002-03-21 2005-11-22 Sun Microsystems, Inc. Service mapping method of enterprise application modeling and development for multi-tier service environments
US20030217263A1 (en) 2002-03-21 2003-11-20 Tsutomu Sakai System and method for secure real-time digital transmission
US7099936B2 (en) 2002-03-29 2006-08-29 International Business Machines Corporation Multi-tier service level agreement method and system
AU2002251416A1 (en) 2002-04-12 2003-10-27 Nokia Corporation Policy-based qos management in multi-radio access networks
US7379982B2 (en) 2002-04-15 2008-05-27 Bassam Tabbara System and method for custom installation of an operating system on a remote client
US7120797B2 (en) 2002-04-24 2006-10-10 Microsoft Corporation Methods for authenticating potential members invited to join a group
US7117158B2 (en) * 2002-04-25 2006-10-03 Bilcare, Inc. Systems, methods and computer program products for designing, deploying and managing interactive voice response (IVR) systems
US7130881B2 (en) * 2002-05-01 2006-10-31 Sun Microsystems, Inc. Remote execution model for distributed application launch and control
US6681262B1 (en) 2002-05-06 2004-01-20 Infinicon Systems Network data flow optimization
US7203911B2 (en) 2002-05-13 2007-04-10 Microsoft Corporation Altering a display on a viewing device based upon a user proximity to the viewing device
US20030225563A1 (en) 2002-05-30 2003-12-04 Gonos Dan G. Capacity planning
US7376125B1 (en) * 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch
US6888807B2 (en) 2002-06-10 2005-05-03 Ipr Licensing, Inc. Applying session services based on packet flows
US20050193103A1 (en) 2002-06-18 2005-09-01 John Drabik Method and apparatus for automatic configuration and management of a virtual private network
JP4118092B2 (ja) 2002-06-19 2008-07-16 株式会社ルネサステクノロジ 記憶装置および情報処理装置
US20040002878A1 (en) 2002-06-28 2004-01-01 International Business Machines Corporation Method and system for user-determined authentication in a federated environment
US6801528B2 (en) 2002-07-03 2004-10-05 Ericsson Inc. System and method for dynamic simultaneous connection to multiple service providers
US7210143B2 (en) * 2002-07-17 2007-04-24 International Business Machines Corporation Deployment of applications in a multitier compute infrastructure
US20040078787A1 (en) 2002-07-19 2004-04-22 Michael Borek System and method for troubleshooting, maintaining and repairing network devices
US7191344B2 (en) 2002-08-08 2007-03-13 Authenex, Inc. Method and system for controlling access to data stored on a data storage device
US7143420B2 (en) 2002-08-29 2006-11-28 Sun Microsystems, Inc. Strategic technology architecture roadmap
US7275156B2 (en) 2002-08-30 2007-09-25 Xerox Corporation Method and apparatus for establishing and using a secure credential infrastructure
US7505872B2 (en) * 2002-09-11 2009-03-17 International Business Machines Corporation Methods and apparatus for impact analysis and problem determination
US6847970B2 (en) * 2002-09-11 2005-01-25 International Business Machines Corporation Methods and apparatus for managing dependencies in distributed systems
IL151771A0 (en) * 2002-09-15 2003-04-10 Beth El Zikhron Ya Aqov Ind Lt A sealable lead-through system
US7072822B2 (en) 2002-09-30 2006-07-04 Cognos Incorporated Deploying multiple enterprise planning models across clusters of application servers
US20040073795A1 (en) 2002-10-10 2004-04-15 Jablon David P. Systems and methods for password-based connection
US7734749B2 (en) 2002-10-16 2010-06-08 Xerox Corporation Device model agent
EP1426919A1 (en) 2002-12-02 2004-06-09 Sony International (Europe) GmbH Method for operating a display device
US7933983B2 (en) 2002-12-17 2011-04-26 Hewlett-Packard Development Company, L.P. Method and system for performing load balancing across control planes in a data center
US7624422B2 (en) 2003-02-14 2009-11-24 Preventsys, Inc. System and method for security information normalization
US7436965B2 (en) 2003-02-19 2008-10-14 Microsoft Corporation Optical out-of-band key distribution
WO2004077259A2 (en) * 2003-02-24 2004-09-10 Bea Systems Inc. System and method for server load balancing and server affinity
US7069553B2 (en) 2003-03-03 2006-06-27 Computer Associates Think, Inc. Universal deployment tool
US7152157B2 (en) 2003-03-05 2006-12-19 Sun Microsystems, Inc. System and method for dynamic resource configuration using a dependency graph
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7765501B2 (en) 2003-03-06 2010-07-27 Microsoft Corporation Settings and constraints validation to enable design for operations
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7350186B2 (en) 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
US7386721B1 (en) 2003-03-12 2008-06-10 Cisco Technology, Inc. Method and apparatus for integrated provisioning of a network device with configuration information and identity certification
US7930158B2 (en) * 2003-03-31 2011-04-19 Emc Corporation Method and apparatus for multi-realm system modeling
US6987838B2 (en) 2003-04-16 2006-01-17 Entrisphere, Inc. System and method for deploying new equipment and services in conjunction with a legacy provisioning system
US7603442B2 (en) 2003-06-20 2009-10-13 Microsoft Corporation Method and system for maintaining service dependency relationships in a computer system
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7613822B2 (en) 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7590736B2 (en) 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
US7567504B2 (en) 2003-06-30 2009-07-28 Microsoft Corporation Network load balancing with traffic routing
US7606929B2 (en) 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US7146353B2 (en) 2003-07-22 2006-12-05 Hewlett-Packard Development Company, L.P. Resource allocation for multiple applications
WO2005022416A1 (en) 2003-08-21 2005-03-10 The Trustees Of Columbia University In The City Of New York Methods and systems for autonomously managing a network
US7127625B2 (en) 2003-09-04 2006-10-24 Hewlett-Packard Development Company, L.P. Application management based on power consumption
US7313573B2 (en) 2003-09-17 2007-12-25 International Business Machines Corporation Diagnosis of equipment failures using an integrated approach of case based reasoning and reliability analysis
US20050080811A1 (en) 2003-10-10 2005-04-14 Cendura Corporation Configuration management architecture
US7237267B2 (en) 2003-10-16 2007-06-26 Cisco Technology, Inc. Policy-based network security management
US7103874B2 (en) * 2003-10-23 2006-09-05 Microsoft Corporation Model-based management of computer systems and distributed applications
US7765540B2 (en) * 2003-10-23 2010-07-27 Microsoft Corporation Use of attribution to describe management information
US6968291B1 (en) * 2003-11-04 2005-11-22 Sun Microsystems, Inc. Using and generating finite state machines to monitor system status
US20050102513A1 (en) * 2003-11-10 2005-05-12 Nokia Corporation Enforcing authorized domains with domain membership vouchers
JP2005155729A (ja) 2003-11-21 2005-06-16 Toyota Motor Corp ベルト式無段変速機の油圧制御装置
US20050138416A1 (en) 2003-12-19 2005-06-23 Microsoft Corporation Object model for managing firewall services
US7278273B1 (en) 2003-12-30 2007-10-09 Google Inc. Modular data center
US7231410B1 (en) 2004-03-10 2007-06-12 Qlogic, Corporation Revision control system for large-scale systems management
US7302608B1 (en) 2004-03-31 2007-11-27 Google Inc. Systems and methods for automatic repair and replacement of networked machines
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US7484237B2 (en) 2004-05-13 2009-01-27 Hewlett-Packard Development Company, L.P. Method and apparatus for role-based security policy management
US8095959B2 (en) 2004-05-27 2012-01-10 Hewlett-Packard Development Company, L.P. Method and system for integrating policies across systems
US20060025984A1 (en) 2004-08-02 2006-02-02 Microsoft Corporation Automatic validation and calibration of transaction-based performance models
US8627149B2 (en) 2004-08-30 2014-01-07 International Business Machines Corporation Techniques for health monitoring and control of application servers
US7506338B2 (en) * 2004-08-30 2009-03-17 International Business Machines Corporation Method and apparatus for simplifying the deployment and serviceability of commercial software environments
JP4799419B2 (ja) 2004-10-20 2011-10-26 富士通株式会社 設定プログラム、設定方法、および設定装置
US7333000B2 (en) 2004-11-12 2008-02-19 Afco Systems Development, Inc. Tracking system and method for electrically powered equipment
US9043781B2 (en) 2004-12-03 2015-05-26 International Business Machines Corporation Algorithm for automated enterprise deployments
US7730183B2 (en) 2005-01-13 2010-06-01 Microsoft Corporation System and method for generating virtual networks
US20060161879A1 (en) * 2005-01-18 2006-07-20 Microsoft Corporation Methods for managing standards
US7552208B2 (en) 2005-01-18 2009-06-23 Microsoft Corporation Methods for managing capacity
US7624086B2 (en) * 2005-03-04 2009-11-24 Maxsp Corporation Pre-install compliance system
US7653903B2 (en) * 2005-03-25 2010-01-26 Sony Corporation Modular imaging download system
US20060235664A1 (en) 2005-04-15 2006-10-19 Microsoft Corporation Model-based capacity planning
US7797147B2 (en) * 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US7350068B2 (en) 2005-04-22 2008-03-25 International Business Machines Corporation Server blade network boot method that minimizes required network bandwidth
US7743373B2 (en) * 2005-05-06 2010-06-22 International Business Machines Corporation Method and apparatus for managing software catalog and providing configuration for installation
US7805496B2 (en) 2005-05-10 2010-09-28 International Business Machines Corporation Automatic generation of hybrid performance models
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US7587453B2 (en) * 2006-01-05 2009-09-08 International Business Machines Corporation Method and system for determining application availability

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101399356B1 (ko) * 2007-04-02 2014-05-27 삼성전자주식회사 동일한 통신 프로토콜에 따라서 상호 통신하는 개발자터미널 및 타겟 장치 및 상기 타겟 장치를 에뮬레이션하기위한 시스템 및 방법
US11100009B2 (en) 2020-01-03 2021-08-24 Bank Of America Corporation Intelligent detection and ejection of unused application components

Also Published As

Publication number Publication date
CN100559366C (zh) 2009-11-11
EP1457877A3 (en) 2007-01-24
JP2004272907A (ja) 2004-09-30
US20060034263A1 (en) 2006-02-16
EP1457877A2 (en) 2004-09-15
US7684964B2 (en) 2010-03-23
US7890543B2 (en) 2011-02-15
JP2011070707A (ja) 2011-04-07
US20040199572A1 (en) 2004-10-07
CN1551006A (zh) 2004-12-01
KR101117945B1 (ko) 2012-08-09

Similar Documents

Publication Publication Date Title
KR101117945B1 (ko) 분산형 컴퓨팅 시스템을 위한 아키텍쳐 및 분산형 애플리케이션의 자동화된 설계, 배치 및 관리
KR101026606B1 (ko) 시스템용 통합 설계, 배치 및 관리방법, 장치, 시스템 및 컴퓨터 판독가능 기록매체
US8392896B2 (en) Software test bed generation
US20180024814A1 (en) Automated enterprise software development
US7818277B2 (en) Methods and apparatus for business rules authoring and operation employing a customizable vocabulary
US20050071805A1 (en) Developing applications using a metamodel
EP2065799A1 (en) Annotation of models for model-driven engineering
US20050071803A1 (en) Development environment for developing applications using a metamodel
JP2004280821A (ja) ソフトウェアビジネスプロセスモデル
US20050071801A1 (en) API derivation and XML schema derivation for developing applications
JP2004280820A (ja) ビジネスソフトウェアアプリケーションをサポートするフレームワーク
JP2012504826A (ja) 拡張可能な構文を有するプログラミング言語
US7660818B2 (en) Method and apparatus for querying program design models
EP1498813A2 (en) Design time validation of systems
US20050114642A1 (en) System and method for managing OSS component configuration
KR101044182B1 (ko) 시스템의 검증을 용이하게 하는 방법, 소프트웨어 애플리케이션의 검증을 용이하게 하는 장치 및 컴퓨터 판독 가능 기록 매체
Zeman Extending Data Lineage Analysis Towards. NET Frameworks
Japikse et al. Building the RESTful Service with ASP. NET Core MVC Services
EP1975785A1 (en) Design time validation of systems
Miquel Oracle Fusion Middleware Developer's Guide for Oracle Data Integrator, 11g Release 1 (11.1. 1) E12643-03
Edition SAS® 9.3 In-Database Products
Michel et al. DB2 UDB e-business Guide

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 9