KR101176757B1 - 서비스 디스커버리 및 퍼블리케이션 - Google Patents
서비스 디스커버리 및 퍼블리케이션 Download PDFInfo
- Publication number
- KR101176757B1 KR101176757B1 KR1020117016088A KR20117016088A KR101176757B1 KR 101176757 B1 KR101176757 B1 KR 101176757B1 KR 1020117016088 A KR1020117016088 A KR 1020117016088A KR 20117016088 A KR20117016088 A KR 20117016088A KR 101176757 B1 KR101176757 B1 KR 101176757B1
- Authority
- KR
- South Korea
- Prior art keywords
- service
- discovery
- programming interface
- application programming
- query
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 67
- 230000002688 persistence Effects 0.000 claims abstract description 31
- 230000002085 persistent effect Effects 0.000 claims abstract description 9
- 238000012217 deletion Methods 0.000 claims description 9
- 230000037430 deletion Effects 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims 2
- 238000013499 data model Methods 0.000 abstract 1
- 101000826116 Homo sapiens Single-stranded DNA-binding protein 3 Proteins 0.000 description 12
- 102100023008 Single-stranded DNA-binding protein 3 Human genes 0.000 description 12
- 230000000007 visual effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4541—Directories for service discovery
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Tourism & Hospitality (AREA)
- Primary Health Care (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Health & Medical Sciences (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Communication Control (AREA)
- Telephonic Communication Services (AREA)
Abstract
서비스 디스커버리 및 퍼블리케이션 방법 및 시스템이 개시된다. 애플리케이션 프로그램은 서비스 디스커버리, 퍼블리케이션 및 가입을 위한 요청을 서비스 디스커버리 애플리케이션 프로그래밍 인터페이스에 기록한다. 서비스 디스커버리 애플리케이션 프로그래밍 인터페이스는 상기 디스커버리, 퍼블리케이션 및/또는 가입 요청을 충족시키는 하나 이상의 로우 레벨 프로토콜을 호출한다. 로우 레벨 프로토콜로부터 검색된 서비스 정보는 일관된 데이터 모델로 포맷팅되어 클라이언트 애플리케이션에게 리턴된다. 또한, 서비스 정보는 서비스 디스커버리 API에 통신가능하게 접속된 디스커버리 퍼시스턴스 서비스에 의해 관리되는 영속적 데이터 저장소에 저장될 수 있다.
Description
본 발명은 디지털 컴퓨팅에 관한 것으로서, 특히 컴퓨팅 장치 및 컴퓨팅 네트워크에서의 서비스 디스커버리(발견: discovery)에 관한 것이다.
컴퓨팅 장치 및 컴퓨터 네트워크 상에서 실행되는 애플리케이션 프로그램들은, 컴퓨팅 장치 또는 네트워크에 접속된 다른 물리 또는 논리 장치에 의해 제공되는 서비스를 사용할 필요가 있을 수 있다. 현재, 애플리케이션 프로그램들은 광범위한 애플리케이션 프로그래밍 인터페이스(API: Application Programming Interface), 프로토콜 및 오브젝트 모델들을 사용하여, 로컬 컴퓨팅 장치 상에 또는 컴퓨터 네트워크 내의 복수의 장치들에 걸쳐 존재하는, 서비스들 및 장치들을 발견, 열거(enumerate) 및 기술한다. 서비스들 및 장치들을 발견, 열거 및 기술하는데 이용 가능한 메커니즘은, 관련된 서비스들 및 장치들이 개념적으로 동일한 경우에도 매우 상이하다.
예를 들어, 애플리케이션이 이용 가능한 프린터들을 열거하고자 하는 상황을 가정해 보자. 회사의 운영 환경에서 실행하는 경우, 애플리케이션은 LDAP(Lightweight Directory Access Protocol)를 사용하여, 등록된 회사 프린터를 발견하기 위하여 Microsoft Active Directory(등록상표)라는 디렉토리 서비스 스토어(store)와 통신하고, 프린트 큐 서버를 발견하기 위하여 NetBT와 통신하고, 개인 영역 네트워크 프린터를 발견하기 위하여 블루투스와 통신할 필요가 있을 수 있다. 또한, 애플리케이션은 직접 접속된 프린터를 발견하기 위하여 장치관리 API를 호출하고, UPnP 프린터를 발견하기 위하여 UPnP(상표) API를 호출해야 할 것이다. 이러한 메커니즘은 특정 API, 프로토콜 및 쿼리 시맨틱(Semantic)에 대한 이해를 필요로 한다.
애플리케이션이 서비스를 발견, 열거 및 기술하는데 필요한 API 및 프로토콜의 수는 소프트웨어 개발 작업을 어렵게 한다.
본 명세서에 기재 및 청구된 구현예들은, 디스커버리 및 퍼블리케이션 작업을 단순화한 유니폼(uniform) 인터페이스를 제공함으로써 전술한 및 그 밖의 문제점들을 해결하고자 하는 것이다. 유니폼 인터페이스는 기초(underlying) 프로토콜들의 작용은 허용하되, 애플리케이션 개발자들이 로우 레벨 프로토콜을 이해할 필요성을 제거한다. 유니폼 인터페이스는 광범위한 로우 레벨 API, 프로토콜, 스토어 및 네트워크 환경에 걸친, 서비스 상세(service details)의 디스커버리 및 퍼블리케이션을 목적으로 하는, 서비스 및 관련 동작들에 대한 일관된 하이 레벨 추상화를 제공한다.
일 실시예에 따르면, 컴퓨팅 환경에 이용 가능한 서비스의 디스커버리(discovery) 방법이 제공된다. 상기 방법은, 애플리케이션 프로그램에서, 디스커버리 범위(discovery scope)를 지정하는 단계; 디스커버리 필터를 지정하는 단계; 및 제1 애플리케이션 프로그래밍 인터페이스에 서치 요청(search request)을 발행하는 단계; 상기 제1 애플리케이션 프로그래밍 인터페이스에서, 상기 서치 요청을 파싱하는 단계; 상기 요청된 디스커버리 범위 및 디스커버리 필터에 대응하는 서비스 정보를 검색하는 단계; 및 상기 서비스 정보를 상기 애플리케이션 프로그램에게 리턴하는 단계를 포함한다.
일 실시예에 따르면, 컴퓨팅 환경에 이용 가능한 서비스의 퍼블리케이션(publication) 방법이 제공된다. 상기 방법은, 애플리케이션 프로그램에서, 서비스 엔트리 오브젝트를 지정하는 단계; 퍼블리케이션 범위를 지정하는 단계; 상기 서비스에 유니크 키(unique key)를 부여하는 단계; 서비스 타입을 부여하는 단계; 상기 서비스의 속성을 지정하는 단계; 상기 서비스의 엔드포인트(endpoints)를 지정하는 단계; 및 제1 애플리케이션 프로그래밍 인터페이스에 퍼블리케이션 요청을 발행하는 단계; 상기 제1 애플리케이션 프로그래밍 인터페이스에서, 상기 서치 요청을 파싱하는 단계; 및 상기 서비스를 퍼블리싱하기 위하여 적어도 하나의 로우 레벨 API 호출을 실행하는 단계를 포함한다.
일 실시예에 따르면, 컴퓨팅 환경에서 퍼블리싱된 서비스를 삭제하는 방법이 제공된다. 상기 방법은, 애플리케이션 프로그램에서, 서비스 엔트리 오브젝트를 지정하는 단계; 상기 퍼블리싱된 서비스에 대응하는 키를 지정하는 단계; 삭제 범위를 지정하는 단계; 및 제1 애플리케이션 프로그래밍 인터페이스에 삭제 요청을 발행하는 단계; 상기 제1 애플리케이션 프로그래밍 인터페이스에서, 상기 서치 요청을 파싱하는 단계; 및 상기 서비스를 삭제하기 위하여 적어도 하나의 로우 레벨 API 호출을 실행하는 단계를 포함한다.
일 실시예에 따르면, 컴퓨팅 환경에서 서비스 이벤트에 가입하는 방법이 제공된다. 상기 방법은, 애플리케이션 프로그램에서, 범위를 지정하는 단계; 필터를 지정하는 단계; 콜백(callback) 함수를 지정하는 단계; 및 제1 애플리케이션 프로그래밍 인터페이스에 가입 요청을 발행하는 단계; 상기 제1 애플리케이션 프로그래밍 인터페이스에서, 상기 서치 요청을 파싱하는 단계; 서비스 이벤트에 가입하기 위하여 적어도 하나의 로우 레벨 API 호출을 실행하는 단계; 및 서비스 이벤트로부터의 정보를 상기 애플리케이션 프로그램에게 리턴하는 단계를 포함한다.
일 실시예에 따르면, 컴퓨팅 환경에 이용 가능한 서비스에 관한 정보를 관리하는 시스템이 제공된다. 상기 시스템은, 애플리케이션으로부터 서비스 쿼리(query)를 받아 들이도록 구성된 제1 애플리케이션 프로그래밍 인터페이스 - 상기 제1 애플리케이션 프로그래밍 인터페이스는 제1 서비스 쿼리 프로토콜로 서비스 쿼리를 수신하며, 상기 서비스 쿼리를 처리하여 적어도 하나의 대응하는 서비스 쿼리를 제2 프로토콜로 론칭함 -; 상기 제1 애플리케이션 프로그래밍 인터페이스에 통신가능하도록 접속된 디스커버리 퍼시스턴스(persistence) 서비스 - 상기 디스커버리 퍼시스턴스 서비스는 상기 제1 애플리케이션 프로그래밍 인터페이스로부터 서비스 정보를 수신하며 상기 서비스 정보를 데이터 저장소에 저장함 -를 포함한다.
도 1은 예시적 컴퓨팅 장치를 개략적으로 설명하는 도면.
도 2는 예시적 소프트웨어 구조를 설명하는 블록도.
도 3은 서비스 디스커버리(discovery)를 위한 동작을 설명하는 흐름도.
도 4는 서비스 퍼블리케이션(publication)을 위한 동작을 설명하는 흐름도.
도 5는 서비스 삭제(deletion)를 위한 동작을 설명하는 흐름도.
도 6은 서비스 이벤트 가입(subscription)을 위한 동작을 설명하는 흐름도.
도 7은 구체 범위(concrete scope)와 추상 범위(abstract scope)의 관계를 설명하는 블록도.
도 8은 C# 프로그래밍 언어를 사용하여, 분당 50매를 인쇄할 수 있는 컬러 프린터를 액티브 디렉토리 프로토콜 상의 심플 필터 오브젝트를 이용하여 찾아내기 위한 방법을 설명하는 의사 코드(pseudo-code).
도 9는 C# 프로그래밍 언어를 사용하여, 웹 서비스를 찾아내기 위한 방법을 설명하는 의사 코드.
도 10은 C# 프로그래밍 언어를 사용하여, 특정 tModel 인터페이스를 지원하는 서비스를 심플 필터 오브젝트 및 UDDI 프로토콜을 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 11은 Visual Basic.NET를 사용하여, 특정 tModel 인터페이스를 지원하는 서비스를 심플 필터 오브젝트 및 UDDI 프로토콜을 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 12는 C# 프로그래밍 언어를 사용하여, Office Printer라는 명칭을 갖는 프린터를 액티브 디렉토리를 갖는 RichFilter를 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 13은 Visual Basic.NET를 사용하여, Office Printer라는 명칭을 갖는 프린터를 액티브 디렉토리를 갖는 RichFilter를 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 14는 C# 프로그래밍 언어를 사용하여, 특정 유니크 식별자에 의해 식별된 특정 타입의 서비스를 SSDP 프로토콜을 이용하여 퍼블리싱하기 위한 방법을 나타낸 의사 코드.
도 15는 Visual Basic.NET를 사용하여, 특정 유니크 식별자에 의해 식별된 특정 타입의 서비스를 SSDP 프로토콜을 이용하여 퍼블리싱하기 위한 방법을 나타낸 의사 코드.
도 16은 C# 프로그래밍 언어를 사용하여, SSDP 프로토콜로부터 서비스를 삭제하기 위한 방법을 나타낸 의사 코드.
도 17은 Visual Basic.NET를 사용하여, SSDP 프로토콜로부터 서비스를 삭제하기 위한 방법을 나타낸 의사 코드.
도 18은 C# 프로그래밍 언어를 사용하여, SSDP 프로토콜을 사용하는 특정 타입의 이벤트를 심플 필터를 이용하여 등록하는 방법을 설명하는 의사 코드이며, 여기서 등록된 콜백 함수는 필터에 매칭된 모든 이벤트마다 호출(invoke)되며 대응하는 서비스 엔트리 오브젝트가 핸들러(handler)에게 제공됨.
도 19는 Visual Basic.NET를 사용하여, SSDP 프로토콜을 사용하는 특정 타입의 이벤트를 심플 필터를 이용하여 등록하는 방법을 설명하는 의사 코드.
도 2는 예시적 소프트웨어 구조를 설명하는 블록도.
도 3은 서비스 디스커버리(discovery)를 위한 동작을 설명하는 흐름도.
도 4는 서비스 퍼블리케이션(publication)을 위한 동작을 설명하는 흐름도.
도 5는 서비스 삭제(deletion)를 위한 동작을 설명하는 흐름도.
도 6은 서비스 이벤트 가입(subscription)을 위한 동작을 설명하는 흐름도.
도 7은 구체 범위(concrete scope)와 추상 범위(abstract scope)의 관계를 설명하는 블록도.
도 8은 C# 프로그래밍 언어를 사용하여, 분당 50매를 인쇄할 수 있는 컬러 프린터를 액티브 디렉토리 프로토콜 상의 심플 필터 오브젝트를 이용하여 찾아내기 위한 방법을 설명하는 의사 코드(pseudo-code).
도 9는 C# 프로그래밍 언어를 사용하여, 웹 서비스를 찾아내기 위한 방법을 설명하는 의사 코드.
도 10은 C# 프로그래밍 언어를 사용하여, 특정 tModel 인터페이스를 지원하는 서비스를 심플 필터 오브젝트 및 UDDI 프로토콜을 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 11은 Visual Basic.NET를 사용하여, 특정 tModel 인터페이스를 지원하는 서비스를 심플 필터 오브젝트 및 UDDI 프로토콜을 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 12는 C# 프로그래밍 언어를 사용하여, Office Printer라는 명칭을 갖는 프린터를 액티브 디렉토리를 갖는 RichFilter를 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 13은 Visual Basic.NET를 사용하여, Office Printer라는 명칭을 갖는 프린터를 액티브 디렉토리를 갖는 RichFilter를 이용하여 찾아내기 위한 방법을 나타낸 의사 코드.
도 14는 C# 프로그래밍 언어를 사용하여, 특정 유니크 식별자에 의해 식별된 특정 타입의 서비스를 SSDP 프로토콜을 이용하여 퍼블리싱하기 위한 방법을 나타낸 의사 코드.
도 15는 Visual Basic.NET를 사용하여, 특정 유니크 식별자에 의해 식별된 특정 타입의 서비스를 SSDP 프로토콜을 이용하여 퍼블리싱하기 위한 방법을 나타낸 의사 코드.
도 16은 C# 프로그래밍 언어를 사용하여, SSDP 프로토콜로부터 서비스를 삭제하기 위한 방법을 나타낸 의사 코드.
도 17은 Visual Basic.NET를 사용하여, SSDP 프로토콜로부터 서비스를 삭제하기 위한 방법을 나타낸 의사 코드.
도 18은 C# 프로그래밍 언어를 사용하여, SSDP 프로토콜을 사용하는 특정 타입의 이벤트를 심플 필터를 이용하여 등록하는 방법을 설명하는 의사 코드이며, 여기서 등록된 콜백 함수는 필터에 매칭된 모든 이벤트마다 호출(invoke)되며 대응하는 서비스 엔트리 오브젝트가 핸들러(handler)에게 제공됨.
도 19는 Visual Basic.NET를 사용하여, SSDP 프로토콜을 사용하는 특정 타입의 이벤트를 심플 필터를 이용하여 등록하는 방법을 설명하는 의사 코드.
실시예
본 명세서에 개시된 방법 및 소프트웨어 구조는 서비스 디스커버리 및 퍼블리케이션을 위한 방법 및 소프트웨어 구조의 일례이다. 본 명세서에 개시된 방법은 컴퓨터 판독가능 매체 상의 로직 명령문으로서 구현될 수 있다. 프로세서에서 실행된 경우 상기 로직 명령문이 범용 컴퓨팅 장치가 개시된 방법을 구현하는 전용 머신으로서 프로그램되도록 한다. 상기 프로세서는 로직 명령문에 의해 본 명세서에 기술된 방법을 실행하도록 구성된 경우 기재된 방법을 수행하기 위한 구조를 갖는다.
오퍼레이팅
환경의 일례
도 1은 기술된 실시예에 따른 하나 이상의 컴퓨팅 장치들을 구현하는데 사용될 수 있는 예시적 컴퓨팅 장치(130)를 개략적으로 설명하는 도면이다. 컴퓨팅 장치(130)는 기술된 실시예들에 따른 각종 구현예들을 구현하는데 사용될 수 있다.
컴퓨팅 장치(130)는 하나 이상의 프로세서 또는 프로세싱 유닛(132), 시스템 메모리(134), 및 시스템 메모리(134)를 포함한 각종 시스템 컴포넌트들을 프로세서(132)에 결합시키는 버스(136)를 포함한다. 버스(136)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트 및 임의의 버스 구조를 이용한 프로세서 또는 로컬 버스를 포함하는 하나 이상의 임의의 타입의 버스 구조를 나타낸다. 시스템 메모리(134)는 ROM(138) 및 RAM(140)을 포함한다. 기동 시와 같이 컴퓨팅 장치(130) 내의 엘리먼트들 사이의 정보 교환을 도와주는 기본 루틴을 포함하고 있는 BIOS(142)는 ROM(138)에 저장되어 있다.
컴퓨팅 장치(130)는 하드디스크(미도시)에의 판독 및 기록을 위한 하드디스크 드라이브(144), 착탈식 자기디스크(148)에의 판독 및 기록을 위한 자기디스크 드라이브(146) 및 CD ROM 또는 광학매체와 같은 착탈식 광디스크(152)에의 판독 및 기록을 위한 광디스크 드라이브(150)를 더 포함한다. 하드디스크 드라이브(144), 자기디스크 드라이브(146) 및 광디스크 드라이브(150)는 SCSI 인터페이스 또는 기타 적절한 인터페이스에 의해 버스(136)에 접속되어 있다. 드라이브 및 이들의 관련 컴퓨터 판독가능 매체는 컴퓨팅 장치(130)용의 컴퓨터 판독가능 명령문, 데이터 구조, 프로그램 모듈 및 기타 데이터에 대한 불활성 스토리지를 제공한다. 본 명세서에 기술된 예시적 환경에서는 하드디스크, 착탈식 자기디스크(148) 및 착탈식 광디스크(152)를 채용하고 있지만, 본 기술분야의 전문가라면 컴퓨터에 의한 액세스가 가능한 데이터를 저장할 수 있는, 자기 카셋트, 플래시 메모리 카드, 디지털 비디어 디스크, RAM, ROM 등 다른 타입의 컴퓨터 판독가능 매체가 예시적 오퍼레이팅 환경에 사용될 수도 있음을 인식할 것이다.
오퍼레이팅 시스템(158), 하나 이상의 애플리케이션 프로그램(160), 기타 프로그램 모듈(162) 및 프로그램 데이터(164)를 포함한 다수의 프로그램 모듈이 하드디스크, 자기디스크(148), 광디스크(152), ROM(138) 또는 RAM(140)에 저장될 수 있다. 사용자는 키보드(166) 및 포인팅 디바이스(168)와 같은 입력 장치를 통해 컴퓨팅 장치(130)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(미도시)의 예로는 마이크, 조이스틱, 게임패드, 위성수신기, 스캐너 등을 포함한다. 이들 및 다른 입력 장치는 버스(136)에 결합되어 있는 인터페이스(170)를 통해 프로세싱 유닛(132)에 접속되어 있다. 비디오 어댑터(174)와 같은 인터페이스를 통해 모니터(172) 또는 다른 타입의 디스플레이 장치가 버스(136)에 접속되어 있다. 모니터 외에도, 퍼스널 컴퓨터는 일반적으로 스피커 및 프린터와 같은 다른 주변 출력 장치(미도시)를 포함한다.
컴퓨팅 장치(130)는 보통 원격 컴퓨터(176)와 같은 하나 이상의 원격 컴퓨터에의 논리 접속을 이용하는 네트워크 환경에서 동작한다. 원격 컴퓨터(176)는 또 다른 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타의 공통 네트워크 노드일 수 있으며, 도 1에서는 메모리 저장 장치(178)만을 예시하고 있지만, 일반적으로 컴퓨팅 장치(130)와 관련하여 전술한 모든 또는 대부분의 엘리먼트를 포함한다. 도 1에 도시된 논리 접속의 예로는 LAN(180) 및 WAN(182)을 포함한다. 이러한 네트워킹 환경은 사무실, 엔터프라이즈(enterprise) 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용된 경우, 컴퓨팅 장치(130)는 네트워크 인터페이스 또는 어댑터(184)를 통해 로컬 네트워크(180)에 접속된다. WAN 네트워크 환경에서 사용된 경우, 컴퓨팅 장치(130)는 일반적으로 인터넷 등의 WAN(182)을 통해 통신을 확립하기 위한 모뎀(186) 또는 기타 수단을 포함한다. 모뎀(186)은 내장형 또는 외장형일 수 있으며, 시리얼 포트 인터페이스(156)을 통해 버스(136)에 접속된다. 네트워크 환경에서, 컴퓨팅 장치(130)와 관련하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수도 있다. 여기서 주목할 점은, 도시된 네트워크 환경은 예시를 위한 것이며 컴퓨터들 사이에 통신 링크를 확립하기 위한 다른 수단이 사용될 수도 있다는 것이다.
일반적으로, 컴퓨팅 장치(130)의 데이터 프로세서들은 컴퓨터의 각종 컴퓨터 판독가능 저장매체에 서로 다른 때에 저장된 명령문에 의해 프로그램된다. 프로그램 및 오퍼레이팅 시스템은 일반적으로 예를 들어 FD(floppy disk) 또는 CD-ROM에 분산되어 있다. 프로그램 및 오퍼레이팅 시스템은 FD 또는 CD-ROM으로부터 적어도 부분적으로 컴퓨터의 메인(primary) 전자 메모리에 로딩된다. 실행 시, 이들은 컴퓨터의 보조(secondary) 메모리에 인스톨 또는 로딩된다. 본 발명은 마이크로프로세서 또는 기타 데이터 프로세서와 연계하여 후술하는 각 단계들을 구현하기 위한 명령문 또는 프로그램을 포함하는 전술한 및 기타의 각종 타입의 컴퓨터 판독가능 저장매체를 포함한다. 본 발명은 또한 후술하는 방법 및 기술에 따라 프로그램된 컴퓨터 장체도 포함한다.
예시적 소프트웨어 구조의 개요
도 2는 도 1의 시스템 메모리(134)에 존재하는 서비스 디렉토리를 위한 예시적 소프트웨어 구조(200)의 블록도이다. 본 구현예에서는 시스템 메모리(134)가 복수의 애플리케이션 프로그램(210)을 포함한다. 네트워크 환경에서 애플리케이션 프로그램은 클라이언트 프로그램으로서 기능하며 PC 환경에서는 자립형(stand-alone) 프로그램으로서 실행될 수 있다. 애플리케이션 프로그램의 특정 성격은 중요하지 않다.
애플리케이션 프로그램(210)은 컴퓨팅 환경에 이용 가능한 서비스를 발견하기 위하여 서비스 디렉토리 API(214)를 호출한다. 서비스 디렉토리 API(214)는 디스커버리 쿼리를 표현하기 위한 하이 레벨 문법을 제공한다. 이 문법은 디스커버리 쿼리를 표현하기 위해 사용되는 자연 쿼리 언어(natural query language)인 OPath로 구현될 수 있다. 이 하이 레벨 문법은 기초 프로토콜이 필요로 하는 보다 구체적(granular)이고 프로토콜-특정 표현을 요구하는 대신에, 소프트웨어 개발자가 찾고자 하는 서비스를 표현하기 위한 보다 개념적인 메커니즘을 소프트웨어 개발자에게 제공한다. 개발자는 이 하이 레벨 문법을 이용하여 쿼리를 구축한 다음 특정 세트의 프로토콜(다수의 "구체 범위"라 함)에 포워딩하거나 미리 정해진 또는 설정된 구체 범위 세트인 "추상 범위"를 사용하게 된다. 상기 시스템은 서비스 디렉토리를 지원하는 것 외에도 서비스 퍼블리케이션/삭제 및 이벤트의 모니터링을 지원한다.
그러면, 서비스 디렉토리 API(214)는 도면에서 프로토콜1(220) 내지 프로토콜8(234)로 나타낸 하나 이상의 기초 프로토콜을 호출한다. 기초 프로토콜의 특정 갯수는 중요하지 않다. 프로토콜(220-234) 중 일부는 예를 들어 LDAP, UDDI(Universal Description, Discovery and Integration), DNS(Domain Name System) 서버와 같은 디렉토리-지원(backed) 프로토콜일 수 있다. 다른 프로토콜은 예를 들어 Bluetooth, UPnP 및 NetBT와 같은 특정 프로토콜일 수 있다. 하나 이상의 기초 프로토콜(220-234)은 컴퓨팅 환경에 이용 가능한 다른 컴포넌트나 서비스와 통신하기 위하여 통신 접속부(236)를 이용한다.
서비스 디스커버리 API는 디스커버리 요청에 대한 응답으로서 로컬 머신 또는 네트워크 상에서 발견된 매칭 서비스를 나타내는 서비스 엔트리 오브젝트의 컬렉션을 리턴한다. 서비스 엔트리 오브젝트는 시스템이 지원하는 기초 프로토콜에 의해 리턴된 관련 상세의 대부분을 표현할 수 있는 일반화된 데이터 구조이다. 각 서비스 엔트리 오브젝트는 서비스의 단일 인스턴스에 대응한다. 일 구현예에서, 서비스 엔트리 오브젝트는 (1) 서비스 명칭; (2) 서비스 설명; (3) 해당 서비스의 네트워크 어드레스를 일반적으로 포함하는 엔드포인트; (4) 서비스 인스턴스를 식별하는 키; (5) 예를 들어 서비스 또는 장치 특징에 대한 명칭-값 페어의 확장가능 리스트와 같은 속성; 및 (6) 예를 들어 해당 서비스를 제공하는 엔티티를 식별하는 식별자와 같은 제공자를 포함하는 설명 및 식별 속성을 제공한다.
디스커버리 퍼시스턴스 서비스(212)는 서비스 디스커버리 API(214)와 통신한다. 다른 것들도 있지만, 디스커버리 퍼시스턴스 서비스(212)는 특정 프로토콜을 통한 어나운스먼트(announcement) 이벤트를 등록한다. 어나운스먼트 이벤트가 검지된 경우 디스커버리 퍼시스턴스 서비스는 통지를 받으며 디스커버리 퍼시스턴스 서비스는 이 서비스 어나운스먼트에 관한 정보를 데이터 저장소(240) 내의 메모리 장소에 복사한다. 서비스 상세를 메모리 장소에 저장해 둠으로써 현재 이용 가능하지 않은 서비스를 발견할 수 있다. 예를 들어, 현재 프린터의 전원이 오프된 상태에 있는 경우에도 프린터에 관한 상세는 메모리 장소에 등록되어 있으므로 발견될 수 있다. 또한, 서비스 쿼리는 서비스와 통신하고 있는 프로토콜에만 국한되지 않는다. 또한, 메모리 장소에 대해 쿼리를 수행하는 경우 브로드 네트워크 디스커버리 쿼리를 발행한 경우에 비해 훨씬 성능이 우수할 것이다.
예시적 동작
예시적 구현예에서, 서비스 디스커버리 API(214)는 서비스 디스커버리, 서비스 퍼블리케이션 및 서비스 이벤트 통지에 대한 가입을 위한 방법을 제공한다. 도 3은 서비스 디스커버리를 위한 동작(300)을 설명하는 흐름도이다. 단계 310에서 애플리케이션은 범위를 지정하고, 단계 315에서 애플리케이션은 필터를 지정하고, 단계 320에서 애플리케이션은 서치 요청을 발행한다. 서비스 디스커버리 API(214)는 서치 요청을 수신하면, 단계 325에서 서치 요청을 파싱한다. 선택적 단계 330에서 서비스 디스커버리 API(214)는 디스커버리 퍼시스턴스 서비스(212)에 저장되어 있는 정보를 이용하여 서치 요청을 분해할 수 있는지의 여부를 판정한다. 일 구현예에서, 디스커버리 퍼시스턴스 서비스(212)에 의해 관리되는 정보는 디스커버리 퍼시스턴스 서비스(212) 내의 정보의 수명을 상세 지정하는 수명 표시자를 포함한다. 컨트롤 및 설정에 따라서, 서비스 디스커버리 API(214)는 디스커버리 퍼시스턴스 서비스(212)에 쿼리하여 디스커버리 퍼시스턴스 서비스(212)가 데이터 저장소(240)에 관리하고 있는 정보를 이용하여 디스커버리 요청을 충족시킬 수 있는지의 여부를 판정할 수 있다. 디스커버리 퍼시스턴스 서비스(212)를 이용하여 디스커버리 요청을 분해할 수 있다면, 단계 350으로 진행하여 디스커버리 퍼시스턴스 서비스(212)로부터 검색된 서비스 엔트리 오브젝트를 애플리케이션에게 리턴한다.
이와 비교하여, 디스커버리 퍼시스턴스 서비스(212)에 의해 관리되고 있는 정보를 이용하여 디스커버리 요청이 분해되지 않거나 분해할 수 없는 경우에는, 단계 335로 진행하여 서비스 디스커버리 API(214)가 디스커버리 요청을 완수하는데 필요한 로우 레벨 API 호출(call)을 실행한다. 단계 340에서 로우 레벨 API로부터 리턴된 서비스 정보는 서비스 엔트리 오브젝트로 포맷되며, 선택적 단계 345에서 서비스 엔트리 오브젝트가 디스커버리 퍼시스턴스 서비스에 포워딩되며, 디스커버리 퍼시스턴스 서비스는 서비스 엔트리 오브젝트를 데이터 저장소(240)에 저장한다. 선택적 단계 347에서 중복 검지 및 삭제와 같은 서비스 엔트리 결과에 대한 추가 프로세싱 및 필터링이 수행될 수 있다. 단계 350에서 서비스 엔트리 오브젝트는 단계 355에서의 추가 프로세싱을 위해 애플리케이션에 리턴된다. 애플리케이션에 의해 수행되는 추가 프로세싱의 특정 상세는 중요하지 않다.
도 4는 서비스 퍼블리케이션을 위한 동작을 설명하는 흐름도이다. 단계 410에서 애플리케이션은 서비스 퍼블리케이션을 위한 서비스 엔트리 오브젝트를 지정한다. 단계 415에서 애플리케이션은 서비스 퍼블리케이션을 위한 범위를 지정한다. 단계 420에서 애플리케이션은 서비스 퍼블리케이션에 유니크 키를 부여하고, 단계 425에서 애플리케이션은 서비스 퍼블리케이션에 서비스 타입을 부여한다. 단계 430에서 애플리케이션은 서비스 퍼블리케이션의 엔드포인트를 지정하고, 단계 432에서 애플리케이션은 서비스 퍼블리케이션의 속성을 지정하고, 단계 435에서 애플리케이션은 퍼블리케이션 요청을 생성한다. 수행되는 각 단계들은 퍼블리싱될 정보의 상세 및 사용될 로우 레벨 API에 따라서 변할 수 있다.
서비스 디스커버리 API(214)는 퍼블리케이션 요청을 수신하면 단계 440에서 퍼블리케이션 요청을 파싱한다. 단계 450에서 서비스 디스커버리 API(214)는 서비스 퍼블리케이션 요청을 실행하기 위하여 로우 레벨 API 호출을 실행한다. 선택적 단계 455에서 서비스 퍼블리케이션은 디스커버리 퍼시스턴스 서비스(212)에 저장된다.
서비스 디스커버리 API(214)의 서비스 퍼블리케이션 수단(facilities)은 퍼블리싱된 서비스를 삭제하는 데에도 이용될 수 있다. 도 5는 서비스 삭제를 위한 동작을 설명하는 흐름도이다. 단계 510에서 애플리케이션은 서비스 퍼블리케이션을 위한 서비스 엔트리 오브젝트를 지정한다. 단계 515에서 애플리케이션은 서비스에 대한 유니크 키를 상세 지정한다. 단계 520에서 애플리케이션은 서비스 삭제를 위한 범위를 지정한다. 단계 530에서 애플리케이션은 서비스 삭제 요청을 생성한다.
서비스 디스커버리 API(214)는 삭제 요청을 수신하면 단계 540에서 삭제 요청을 파싱한다. 단계 550에서 서비스 디스커버리 API(214)는 서비스 삭제 요청을 실행하기 위하여 로우 레벨 API를 실행한다. 단계 555에서 디스커버리 퍼시스턴스 서비스(212)로부터 서비스 퍼블리케이션이 삭제된다.
서비스 디스커버리 API(214)는 새로운 서비스 또는 특정 타입의 디바이스의 도착(arrival) 또는 출발(departure)과 같은 서비스 이벤트를 애플리케이션이 통지받을 수 있도록 하는데 이용될 수도 있다. 도 6은 서비스 이벤트에의 가입을 위한 동작(600)을 설명하는 흐름도이다. 단계 610에서 애플리케이션은 모니터할 특정 로우 레벨 프로토콜을 상세 지정하는 범위를 지정한다. 단계 615에서 애플리케이션은 이벤트 타입을 상세 지정하는 필터를 지정한다. 단계 620에서 애플리케이션은 매칭 이벤트가 발생할 때마다 서비스 엔트리의 상세를 수신하게 될 콜백(callback) 함수를 지정한다. 단계 625에서 애플리케이션은 가입 요청을 생성하며, 이는 서비스 디스커버리 API(214)에게 포워딩된다.
서비스 디스커버리 API(214)는 가입 요청을 수신하면 단계 630에서 가입 요청을 파싱한다. 단계 635에서 서비스 디스커버리 요청은 가입 서비스를 구현하는데 필요한 로우 레벨 프로토콜 호출을 실행한다. 서비스 이벤트가 발생되면, 로우 레벨 프로토콜은 이벤트의 통지를 서비스 디스커버리 API에게 제공한다. 단계 640에서 이벤트 통지는 서비스 엔트리 오브젝트에 포맷된다. 선택적 단계 645에서 서비스 엔트리 오브젝트는 디스커버리 퍼시스턴스 서비스(212)에 저장되며, 단계 650에서 서비스 엔트리 오브젝트는 이전에 상세 지정된 콜백 함수를 이용하여 애플리케이션에 리턴된다. 단계 655에서 애플리케이션은 서비스 엔트리 오브젝트에 추가의 프로세싱을 수행한다. 애플리케이션에 의해 수행되는 추가 프로세싱의 특정 상세는 중요하지 않다.
이하, 시스템 컴포넌트 및 동작에 대해서 상세히 설명한다.
API
클래스
필터
필터는 서비스 설명이 평가되는 일련의 규칙으로서 참(즉, 서비스 설명이 필터에 매칭됨)과 거짓(즉, 서비스 설명이 필터에 매칭되지 않음)의 결과를 갖는다. 필터는 특정 속성을 상세 지정하는 심플(simple) 필터나 보다 표현적인(expressive) 문법을 사용한 리치(rich) 필터로서 표현될 수 있다. 심플 필터로 표현되든 리치 필터로 표현되든, 쿼리는 기초 프로토콜의 성능에 종속하여 변경없이 하나 이상의 프로토콜을 통해 상세 지정되고 실행될 수 있다. 서비스 디스커버리 요청(214)은 보다 하이 레벨의 쿼리를 기초의 로우 레벨 프로토콜을 위한 올바른 포맷으로 재표현하는 것을 관리한다. 예를 들어, 서비스 디스커버리 요청 API(214)는 특정 서비스 타입의 쿼리를 수신하고, 액티브 디렉토리를 위한 LDAP 및 UDDI 웹 서비스 레지스트리를 위한 UDDI 프로토콜을 이용하여 이를 표현하고 평가할 수 있다. 애플리케이션 개발자는 개별 프로토콜에 대해 직접 작업할 필요가 없다.
예시적 구현예에서, 서비스 디스커버리 요청 API(214)는 제공된 평가기준에 대한 정확한 매칭 시맨틱을 제공하는 심플 필터와 OPath 문법으로 표현된 쿼리를 포함하는 리치 필터를 지원하기 위한 디스커버리 모듈을 필요로 한다. 여기서, 각각이 추가의 "네이티브" 필터 타입을 지원할 수도 있다는 것을 이해해야 한다. 서로 다른 디스커버리 모듈들은 프로토콜-특정 네이티브 필터 타입을 가질 수 있으며, 예를 들어 UPnP는 XPath 필터를 사용하고, 액티브 디렉토리는 기본적으로 LDAP 필터를 사용하고, UDDI는 기본적으로 UDDI 필터를 사용한다.
상기 모듈들에 대해 기능적으로 걸쳐 있는 OPath 필터의 베이스 레벨은 또한 기초 디스커버리 프로토콜들로부터 애플리케이션을 격리시킨다. 필터 클래스는 상기 모듈들에 걸쳐 공유되는 방식으로 필터를 파싱하고 해석하는 추가의 방법을 제공한다.
심플 필터는 서비스 타입, 서비스 인터페이스 및/또는 속성을 상세 지정함으로써 쿼리에 대한 표현을 제공한다. 이들 셋팅의 임의의 조합은 서치 쿼리에 제공될 수 있으며, 평가기준의 모든 것이 정확하게 매칭된다면, 그 결과의 서비스 엔트리 컬렉션에 서비스가 포함될 것이다.
서비스 타입은 서비스 엔티티들이 반드시 매칭되어야 하는 타입을 상세 지정하는 스트링으로서 구현된다. 커먼 서비스 타입 세트는 서비스 디스커버리 요청 API(214)에 미리 정해져 있다. 이 세트는 저장소 및 프로토콜들 내의 키 엔티티로서 확장되어 식별될 수 있다. 예를 들어, 액티브 디렉토리 내의 프린터에 대해서, filter.ServiceType=CommonServiceTypes.Printer와 같이 상세 지정할 것이다.
서비스 인터페이스는 서비스가 반드시 매칭되어야 하는 인터페이스의 식별자를 상세 지정하는 스트링 컬렉션으로서 구현된다. 일례로서, UDDI 내의 웹 서비스에 대해서, 하기의 tModel 식별자는 filter.ServiceInterfaces.Add ("uuid:ac104dcc-d623-452f-88a7-f8acd94d9b2b"); filter.ServiceInterfaces.Add ("uuid:4d2ac1ca-e234-142f-e217-4d9b2f8acd9b")와 같이 상세 지정된다.
속성은 서비스가 반드시 매칭되어야 하는 서비스 특징을 상세 지정하는 속성 사전으로 구현된다. 일례로서, 액티브 디렉토리 내의 프린터에 대해서, 하기의 속성은 filter.Properties.Add("printcolor","TRUE"); filter.Properties.Add ("pagesperminute","50")와 같이 상세 지정된다.
리치 필터는 예를 들어 OPath 문법을 이용하여, 쿼리 스트링 속성을 설정함으로써 보다 풍부한 쿼리 시맨틱을 표현하기 위한 메커니즘을 제공한다. 일례로서, UDDI 내의 웹 서비스에 대해서, 쿼리 스트링은 필요한 명칭과 필요한 지원 인터페이스를, filter.Query="WebService[name='fabrikam' and ServiceInterface ='uuid:ac104dcc-d623-452f-88a7-f8acd94d9b2b']"와 같이 상세 지정할 것이다.
A4 용지의 이용이 가능하지 않고 분당 25매 이상 인쇄할 수 있는, 액티브 디렉토리 내의 프린터를 찾기 위한 보다 표현적인 예는 다음과 같다: filter.Query="Printer[prinPagesPerMinute>20+5 and not(printmediaReady='A4' )]".
기초 프로토콜 및 저장소의 성능은, 기본 NetBT로부터 리치 액티브 디렉토리 쿼리 시맨틱에 걸쳐, 이상적인 것과는 거리가 멀기 때문에, 보다 표현적인 OPath 구조를 이용하는 능력은 선택된 범위(프로토콜)에 따를 것이다.
범위
범위는 네트워크 장소 또는 관리 경계에 의해 서치 가능한 통상적으로 성긴 쿼리 도메인을 식별한다. 디스커버리 쿼리는 하나 이상의 범위를 대상으로 하며, 쿼리 결과는 이들 범위 내의 서비스들의 서브세트를 포함하는 것으로, 즉 쿼리 결과는 주어진 필터에 매칭되는 범위 내의 모든 서비스들의 서브세트이다. 범위의 예로는 워크그룹, 로컬머신 및 도메인을 들 수 있다.
서비스 디스커버리 API(214)는 구체 범위와 추상 범위를 제공한다. 구체 범위는 쿼리 도메인을 3개로 상세 지정한다. 프로토콜 식별자는 ConcreteScope.NetBtProtocol 또는 ConcreteScope.ADProtocol과 같은 단일 디스커버리 모듈을 매핑하는 특정 프로토콜을 식별하며; 어드레스 식별자(옵션임)는 인트라넷 UDDI 서버에서의 "http://intra-uddi/uddi/inquire.asmx"와 같은 이 범위에서의 다이렉트 동작을 수행할 서버를 상세 지정하며; 경로 식별자(옵션임)는 "CN=joe-dev,CN=Computers,DC=corp,DC=fabrikam,DC=com"와 같이 설정되는 LDAP 서치 베이스 또는 UPnPv2 범위 명칭과 같은 모듈의 네임스페이스의 파티션을 식별한다.
서비스 디스커버리 요청 API(214)는 구체 범위를 모듈에 전달한다. 서비스 디스커버리 요청 API(214)는 예를 들어 구체 범위를 유선을 통해 제2 머신에 전송하고 구체 범위를 제2 머신 상의 대응 API에 전달하는 것과 같은 구체 범위에 대한 추가의 인다이렉션(indirection)을 모듈들이 수행하는 것을 배제하지 않는다.
추상 범위는 하나 이상의 구체 범위 및 (가능한 경우) 추가의 추상 범위에 대한 모니터이다. 추상 범위는 논리적으로 미리 정해진 또는 설정된 구체 범위 컬렉션에 대한 쿼리를 타겟팅(targeting)하는 메커니즘을 제공한다. 이것은 개발자로 하여금, 예를 들어 명시적인 프로토콜, 어드레스 및 특정 디렉토리 서비스를 위한 접속 상세를 필요로 하지 않고 "엔터프라이즈" 범위를 타겟팅할 수 있도록 하는 추가의 추상화를 제공한다.
추상 범위의 구체 범위로의 매핑은 머신 전체적인 것이며 설정이 가능하다. 예를 들어, 추상 범위 AbstractScope.Enterprise는 표 1의 구체 범위의 양방을 포함하도록 매핑할 것이다.
도 7은 구체 범위와 추상 범위 사이의 관계의 일례를 설명하는 블록도이다. 구체 범위(730-750)는 쿼리들이 평가되게 될 도메인에 대한 상세 지정을 제공한다. 구체 범위(730-750)는 프로토콜 식별 상세 및 필요에 따라 이용할 저장소 또는 서버의 세부(specific)를 그 저장소 또는 서버에 대한 추가 범위지정(scoping)의 가능성(potential)과 함께 구비한다. 서비스 디스커버리 API(214) 내에서 이들은 프로토콜, 어드레스 및 경로 속성에 각각 상세 지정된다.
추상 범위(710-725)는 구체 범위에 대한 그 상위의 보다 높은 레벨의 계층적 추상화를 제공한다. 추상 범위는 자신을 구성하는 구체 또는 추상 범위를 포함하도록 설정된다. 이러한 범위 매핑은 예를 들어 AbstractScope.EnterpriseScope를 어떻게 분해할 것인지를 정확하게 설정할 수 있는 시스템 관리자들이 이용할 수 있다.
구체 범위 및 추상 범위는 모두 서비스 디스커버리 API(214)의 사용자에 의해 이용될 수 있다. 추상 범위가 제공된 경우, 서비스 디스커버리 API(214)는 계층 구조를 따라서 이를 다수의 구체 범위로 분해할 것이다.
추상 범위는 애플리케이션 프로그램(210)의 개발자로 하여금 비교적 하이 레벨에서 작업하여, "AbstractScope.Enterprise"와 같은 범위 식별 용어를 코드에 포함시킬 수 있도록 한다. 이러한 방식으로, 예를 들어 개발자는 특정 UDDI 서버의 세부를 자신의 코드에 하드코딩(hardcode)할 필요가 없게 된다. 이러한 추상화는 코드에 대한 보다 높은 재사용성 및 휴대성을 제공한다. 동일한 코드를 각종 엔터프라이즈 환경에서 변경 또는 재컴파일없이 사용할 수 있다. 추상 범위의 설정만 환경에 따라 변화할 뿐이다.
구체 범위로의 추상 범위 매핑에는 다수의 계층구조가 존재한다. 도 7에서 AbstractScope.LocalMachine은 그것의 모든 구성요소가 포함되더라도 AbstractScope.All로 매핑되지 않는다.
예시적 구현예에서 범위 매핑 설정은 그룹 폴리시에 따라 시스템 관리자가 엔터프라이즈에서 서비스 디스커버리 API(214)의 이용을 제어함으로써 조정될 수 있다. 예를 들어, 관리자는 엔터프라이즈 컴퓨팅 환경 도는 그 일부분에서 이용 가능한 하나 이상의 추상 범위를 지정할 수 있다. 이것은 시스템 관리자로 하여금 애플리케이션에 의한 리소스의 이용 및 디스커버리를 통제할 수 있도록 한다.
서비스 엔트리 결과
애플리케이션 개발자는 서비스 파인더 오브젝트에서 속성으로서 설정되게 될 적절한 범위 및 필터 표현을 선택할 수 있다. 그러면, 애플리케이션은 FindOne 또는 FindAll 방법을 이용하여 디스커버리 요청을 실행할 수 있다. FindAll 방법은 주어진 평가기준에 매칭되는 모든 서비스를 리턴하는 반면, FindOne 방법은 단일 매칭 서비스를 리턴한다. 이들 방법은 동시적 또는 비동시적 호출 패턴(asynchronous calling pattern)을 이용하여 실행될 수도 있다.
상세 지정된 범위 내에 제공된 필터에 매칭되는 서비스가 존재한다고 가정하면, FindOne 또는 FindAll 방법은 하나 서비스 엔트리 오브젝트 또는 서비스 엔트리 오브젝트의 컬렉션을 리턴할 것이다. 서비스 엔트리 오브젝트는 기초 프로토콜이 제공할 수 있는 각종 표현의 서비스에 대한 추상화이다. 각 서비스 엔트리 오브젝트는 서비스의 단일 인스턴스에 대응하며, 따라서 표 2에 개시된 것을 포함한 설명적인 식별 속성들을 제공한다.
일반 void Save() 함수는 범위 컬렉션에 상세 지정된 범위 내의 서비스 엔트리 표현을 생성 또는 갱신하기 위하여 제공된다.
일반 void Delete() 방법은 이 서비스 엔트리 오브젝트를 범위 속성에 상세 지정된 범위로부터 삭제한다. 해당 서비스가 이미 퍼블리싱되었다면 예외가 적용된다.
의사 코드
도 8 내지 도 19는 각종 서비스 디스커버리, 퍼블리케이션 및 가입 함수를 수행하기 위한 의사코드들을 예시한 것이다.
도 8은 C# 프로그래밍 언어를 사용하여, 분당 50매를 인쇄할 수 있는 컬러 프린터를 액티브 디렉토리 프로토콜 상의 심플 필터 오브젝트를 이용하여 찾아내기 위한 방법을 설명하는 의사 코드이다.
도 9는 C# 프로그래밍 언어를 사용하여, 웹 서비스를 찾아내기 위한 방법을 설명하는 의사 코드이다.
도 10은 C# 프로그래밍 언어를 사용하여, 특정 tModel 인터페이스를 지원하는 서비스를 심플 필터 오브젝트 및 UDDI 프로토콜을 이용하여 찾아내기 위한 방법을 나타낸 의사 코드이다.
도 11은 Visual Basic.NET를 사용하여, 특정 tModel 인터페이스를 지원하는 서비스를 심플 필터 오브젝트 및 UDDI 프로토콜을 이용하여 찾아내기 위한 방법을 나타낸 의사 코드이다.
도 12는 C# 프로그래밍 언어를 사용하여, Office Printer라는 명칭을 갖는 프린터를 액티브 디렉토리를 갖는 RichFilter를 이용하여 찾아내기 위한 방법을 나타낸 의사 코드이다.
도 13은 Visual Basic.NET를 사용하여, Office Printer라는 명칭을 갖는 프린터를 액티브 디렉토리를 갖는 RichFilter를 이용하여 찾아내기 위한 방법을 나타낸 의사 코드이다.
도 14는 C# 프로그래밍 언어를 사용하여, 특정 유니크 식별자에 의해 식별된 특정 타입의 서비스를 SSDP 프로토콜을 이용하여 퍼블리싱하기 위한 방법을 나타낸 의사 코드이다.
도 15는 Visual Basic.NET를 사용하여, 특정 유니크 식별자에 의해 식별된 특정 타입의 서비스를 SSDP 프로토콜을 이용하여 퍼블리싱하기 위한 방법을 나타낸 의사 코드이다.
도 16은 C# 프로그래밍 언어를 사용하여, SSDP 프로토콜로부터 서비스를 삭제하기 위한 방법을 나타낸 의사 코드이다.
도 17은 Visual Basic.NET를 사용하여, SSDP 프로토콜로부터 서비스를 삭제하기 위한 방법을 나타낸 의사 코드이다.
도 18은 C# 프로그래밍 언어를 사용하여, SSDP 프로토콜을 사용하는 특정 타입의 이벤트를 심플 필터를 이용하여 등록하는 방법을 설명하는 의사 코드이며, 여기서 등록된 콜백 함수는 필터에 매칭된 모든 이벤트마다 호출되며 대응하는 서비스 엔트리 오브젝트가 핸들러(handler)에게 제공된다.
도 19는 Visual Basic.NET를 사용하여, SSDP 프로토콜을 사용하는 특정 타입의 이벤트를 심플 필터를 이용하여 등록하는 방법을 설명하는 의사 코드이다.
예시적
OPath
신택스
표 3은 각종 디스커버리 함수를 위한 예시적 OPath 신택스를 제공한다.
표 4는 UDDI 프로토콜에서 사용될 수 있는 OPath 신택스의 일례를 포함하고 있다.
표 5는 NetBT 프로토콜에서 사용될 수 있는 OPath 신택스의 일례를 포함하고 있다.
디스커버리
퍼시스턴스
서비스
앞에서 간략하게 설명한 바와 같이, 디스커버리 퍼시스턴스 서비스(212)는 서비스 정보에 대한 영속적 데이터 저장소를 관리한다. 디스커버리 퍼시스턴스 서비스는 정기적 또는 기동 시와 같은 미리 정해진 이벤트가 있을 때마다 특정(ad-hoc) 디바이스/서비스 어나운스먼트를 수신하기 위하여 등록한다. 일례로서, 새로운 UPnP 디바이스가 도입된 경우, 디스커버리 퍼시스턴스 서비스는 UPnP 프로토콜 모듈에 의해 처리될 디바이스 어나운스먼트를 발생시킬 것이다. 그러면, UPnP 프로토콜 모듈은 그 이벤트(디바이스 및 그 서비스)의 상세를 서비스 디스커버리 API(214)를 통해 디스커버리 퍼시스턴스 서비스에게 공표(surface)할 것이다.
그런 다음, 디스커버리 퍼시스턴스 서비스는 자신의 영속적 데이터 저장소를 이용하여 그것이 새로운 디바이스/서비스인지 또는 리턴된 디바이스/서비스인지를 판정할 것이다. 그것이 새로운 디바이스/서비스라면, 그 디바이스의 상세 및 그 서비스는 영속적 데이터 저장소에 등록될 것이다. 서비스 디스커버리 API(214)의 또다른 컨슈머(consumer)가 서비스를 찾고자 한다면, 서비스 디스커버리 API(214)는 그 디바이스가 현재 이용 가능하지 않은 경우에도 그 특정 디바이스/서비스를 위한 서비스를 리턴할 수 있을 것이다. 상기한 예에서, 상기 디바이스/서비스를 현재 이용할 수 있는 경우에는, 상세 지정된 범위에 따라서, UPnP 프로토콜 모듈 및 영속적 데이터 저장 모듈의 양방은 그 디바이스에 대한 결과를 리턴할 것이다. 이러한 기능은 UPnP 뿐만 아니라 다른 특정 디스커버리 메커니즘에도 적용될 수 있다.
따라서, 디스커버리 퍼시스턴스 서비스(212), 서비스 디스커버리 API(214) 및 로컬 데이터베이스 저장소(240)는 디바이스 및 서비스 디스커버리에 사용되는 각종 로우 레벨 프로토콜들에 대한 한 계층의 추상화를 제공한다. 이러한 추가 계층의 추상화는 애플리케이션 개발자들이 애플리케이션을 개발할 때 사용할 수 있는 공통의 개선된 서치 시맨틱을 확립한다.
또한, 디스커버리 퍼시스턴스 서비스(212), 서비스 디스커버리 API(214) 및 로컬 데이터베이스 저장소(240)는 로컬 머신, 홈 네트워크, 엔터프라이즈 네트워크 및 인터넷 상의 디바이스 및 서비스에 대한 견고한(consolidated) 디스커버리 모듈을 제공한다. 따라서, 애플리케이션 개발자들이 단일의 일관된 API에 기록하는 것으로 광범위한 장소에 걸쳐 서비스를 발견할 수 있다.
결론
이상, 본 발명을 구조적인 특징 및/또는 방법론적인 동작(methodological acts)에 특수한 언어로 기술하였지만, 아래의 청구항에 규정된 발명은 전술한 특정 피쳐 또는 동작에 국한될 필요는 없다. 오히려 상기 특정 피쳐 및 동작은 청구항에 기재된 발명을 구현한 예시적 형태로서 기재된 것이다.
Claims (20)
- 컴퓨팅 환경에서 이용 가능한 서비스를 관리하는 시스템으로서,
애플리케이션으로부터 서비스 쿼리(query)를 받아 들이도록 구성된 제1 애플리케이션 프로그래밍 인터페이스 - 상기 제1 애플리케이션 프로그래밍 인터페이스는 제1 서비스 쿼리 프로토콜로 서비스 쿼리를 수신하며, 상기 서비스 쿼리를 처리하여 적어도 하나의 대응하는 서비스 쿼리를 제2 프로토콜로 개시하도록 구성됨 -; 및
상기 제1 애플리케이션 프로그래밍 인터페이스에 통신가능하도록 접속되고, 심플(simple) 필터 및 리치(rich) 필터를 포함하는 디스커버리 퍼시스턴스(persistence) 서비스 - 상기 디스커버리 퍼시스턴스 서비스는 상기 제1 애플리케이션 프로그래밍 인터페이스로부터 서비스 정보를 수신하며 상기 서비스 정보를 데이터 저장소에 저장하도록 구성됨 -
를 포함하는 서비스 관리 시스템. - 제1항에 있어서,
상기 제1 애플리케이션 프로그래밍 인터페이스는 적어도 하나의 디렉토리 기반 프로토콜 및 적어도 하나의 특정(ad-hoc) 프로토콜에 대한 인터페이스를 제공하는 서비스 관리 시스템. - 제1항에 있어서,
상기 심플 필터는 서비스 타입, 서비스 인터페이스 및 서비스 속성 중 적어도 하나에 의해 상기 서비스 쿼리의 표현을 제공하는 서비스 관리 시스템. - 제1항에 있어서,
상기 리치 필터는 쿼리 시맨틱(semantic)을 사용하여 상기 서비스 쿼리의 표현을 제공하는 서비스 관리 시스템. - 제1항에 있어서,
상기 제1 애플리케이션 프로그래밍 인터페이스는 로컬 컴퓨팅 장치에서 이용 가능한 서비스를 발견하는 서비스 관리 시스템. - 제1항에 있어서,
상기 제1 애플리케이션 프로그램 인터페이스는 원격 컴퓨팅 장치에서 이용 가능한 서비스를 발견하는 서비스 관리 시스템. - 제1항에 있어서,
상기 제1 애플리케이션 프로그래밍 인터페이스는 시스템 관리자에 의한 설정이 가능한 범위 맵을 구현하는 서비스 관리 시스템. - 컴퓨팅 환경에서 이용 가능한 서비스를 퍼블리싱(publishing) 하기 위한 방법으로서,
애플리케이션 프로그램에서,
서비스 엔트리 오브젝트를 지정하는 단계;
퍼블리케이션 범위를 지정하는 단계;
상기 서비스에 유니크 키(unique key)를 부여하는 단계;
상기 서비스에 서비스 타입을 부여하는 단계;
상기 서비스의 속성을 지정하는 단계;
상기 서비스의 엔드포인트(endpoints)를 지정하는 단계; 및
제1 애플리케이션 프로그래밍 인터페이스에 퍼블리케이션 요청을 개시하는 단계;
상기 제1 애플리케이션 프로그래밍 인터페이스(API)에서,
복수의 서치 요청을 파싱하는 단계; 및
상기 서비스를 퍼블리싱하기 위하여 적어도 하나의 로우 레벨 API 호출을 실행하는 단계
를 포함하는 서비스 퍼블리케이션 방법. - 제8항에 있어서,
서비스 정보를 영속적 데이터 저장소에 저장하는 단계를 더 포함하는 서비스 퍼블리케이션 방법. - 제8항에 있어서,
상기 서비스 엔트리 오브젝트는 상기 퍼블리싱 서비스에 대한 설명 및 식별 속성을 제공하는 서비스 퍼블리케이션 방법. - 제10항에 있어서,
상기 설명 및 식별 속성은,
서비스 명칭;
서비스 설명;
특정 서비스에 대한 복수의 네트워크 어드레스들을 포함하는 복수의 엔드포인트들;
상기 특정 서비스를 식별하는 키;
서비스 및 장치 특징에 대한 명칭-값 페어의 확장가능 리스트를 포함하는 복수의 속성들; 및
상기 특정 서비스를 제공하는 엔티티에 대한 식별자를 포함하는 제공자(provider)를 포함하는 서비스 퍼블리케이션 방법. - 컴퓨팅 환경에서 퍼블리싱된 서비스를 삭제하는 방법으로서,
애플리케이션 프로그램에서,
서비스 엔트리 오브젝트를 지정하는 단계;
상기 퍼블리싱된 서비스에 대응하는 키를 지정하는 단계;
상기 서비스에 대한 삭제 범위를 지정하는 단계; 및
제1 애플리케이션 프로그래밍 인터페이스 (API)에 삭제 요청을 개시하는 단계;
상기 제1 API에서,
상기 삭제 요청을 파싱하는 단계; 및
상기 서비스를 삭제하기 위하여 적어도 하나의 로우 레벨 API 호출을 실행하는 단계
를 포함하는 퍼블리싱된 서비스 삭제 방법. - 제12항에 있어서,
영속적 데이터 저장소로부터 서비스 정보를 삭제하는 단계를 더 포함하는 퍼블리싱된 서비스 삭제 방법. - 제13항에 있어서,
상기 삭제된 서비스 정보를 영속적 데이터 저장소에 등록하는 단계를 더 포함하는 퍼블리싱된 서비스 삭제 방법. - 삭제
- 제12항에 있어서,
상기 적어도 하나의 로우 레벨 API로부터 수신된 정보를 영속적 데이터 저장소에 저장하는 단계를 더 포함하는 퍼블리싱된 서비스 삭제 방법. - 제12항에 있어서,
상기 범위는 모니터할 특정 로우 레벨 프로토콜을 특정하는 퍼블리싱된 서비스 삭제 방법. - 삭제
- 제12항에 있어서,
상기 서비스 엔트리 오브젝트는 상기 퍼블리싱된 서비스에 대한 설명 및 식별 속성을 제공하는 퍼블리싱된 서비스 삭제 방법. - 제19항에 있어서,
상기 설명 및 식별 속성은,
서비스 명칭;
서비스 설명;
특정 서비스에 대한 복수의 네트워크 어드레스들을 포함하는 복수의 엔드포인트들;
상기 특정 서비스를 식별하는 키;
서비스 및 장치 특징에 대한 명칭-값 페어의 확장가능 리스트를 포함하는 복수의 속성들; 및
상기 특정 서비스를 제공하는 엔티티에 대한 식별자를 포함하는 제공자(provider)를 포함하는 퍼블리싱된 서비스 삭제 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/693,653 US7716357B2 (en) | 2003-10-24 | 2003-10-24 | Service discovery and publication |
US10/693,653 | 2003-10-24 | ||
PCT/US2004/023547 WO2005045563A2 (en) | 2003-10-24 | 2004-07-21 | Service discovery and publication |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057008290A Division KR20060130479A (ko) | 2003-10-24 | 2004-07-21 | 서비스 디스커버리 및 퍼블리케이션 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110086193A KR20110086193A (ko) | 2011-07-27 |
KR101176757B1 true KR101176757B1 (ko) | 2012-08-23 |
Family
ID=34573201
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117016088A KR101176757B1 (ko) | 2003-10-24 | 2004-07-21 | 서비스 디스커버리 및 퍼블리케이션 |
KR1020057008290A KR20060130479A (ko) | 2003-10-24 | 2004-07-21 | 서비스 디스커버리 및 퍼블리케이션 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057008290A KR20060130479A (ko) | 2003-10-24 | 2004-07-21 | 서비스 디스커버리 및 퍼블리케이션 |
Country Status (11)
Country | Link |
---|---|
US (2) | US7716357B2 (ko) |
EP (1) | EP1676215A4 (ko) |
JP (2) | JP2007509406A (ko) |
KR (2) | KR101176757B1 (ko) |
CN (1) | CN100481069C (ko) |
AU (1) | AU2004279194B2 (ko) |
BR (1) | BRPI0406411A (ko) |
CA (2) | CA2501718C (ko) |
MX (1) | MXPA05006611A (ko) |
RU (1) | RU2365973C2 (ko) |
WO (1) | WO2005045563A2 (ko) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996492B2 (en) * | 2002-02-20 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | System for providing information regarding network resources |
US7716357B2 (en) * | 2003-10-24 | 2010-05-11 | Microsoft Corporation | Service discovery and publication |
US7475125B2 (en) | 2003-11-24 | 2009-01-06 | Microsoft Corporation | Seamless discovery of workstation-installed remote applications from an extranet |
US7720906B2 (en) * | 2003-11-24 | 2010-05-18 | Microsoft Corporation | Web service for remote application discovery |
US7590713B2 (en) | 2003-11-24 | 2009-09-15 | Microsoft Corporation | Presenting a merged view of remote application shortcuts from multiple providers |
US8694532B2 (en) * | 2004-09-17 | 2014-04-08 | First American Data Co., Llc | Method and system for query transformation for managing information from multiple datasets |
US20060168320A1 (en) * | 2004-12-30 | 2006-07-27 | Kidd Nelson F | Network topology discovery service |
US20070005746A1 (en) * | 2005-06-30 | 2007-01-04 | Roe Bryan Y | Enhanced network discovery service |
US8356011B2 (en) | 2005-07-26 | 2013-01-15 | Microsoft Corporation | Organizing presence information into collections of publications |
US8234559B2 (en) | 2006-03-31 | 2012-07-31 | Microsoft Corporation | Managing rich presence collections |
US8108345B2 (en) | 2006-03-31 | 2012-01-31 | Microsoft Corporation | Managing rich presence collections in a single request |
US20080046435A1 (en) * | 2006-08-18 | 2008-02-21 | Microsoft Corporation | Service discovery and automatic configuration |
US8265775B2 (en) | 2008-09-30 | 2012-09-11 | Rockwell Automation Technologies, Inc. | Modular object publication and discovery |
US9058032B2 (en) * | 2006-09-29 | 2015-06-16 | Rockwell Automation Technologies, Inc. | Hosting requirements for services |
US8078296B2 (en) * | 2006-09-29 | 2011-12-13 | Rockwell Automation Technologies, Inc. | Dynamic procedure selection |
US8776092B2 (en) | 2006-09-29 | 2014-07-08 | Rockwell Automation Technologies, Inc. | Multiple interface support |
US20080082577A1 (en) * | 2006-09-29 | 2008-04-03 | Rockwell Automation Technologies, Inc. | Module classification and searching for industrial control systems |
US8818757B2 (en) * | 2008-09-30 | 2014-08-26 | Rockwell Automation Technologies, Inc. | Modular object and host matching |
US9261877B2 (en) * | 2006-09-29 | 2016-02-16 | Rockwell Automation Technologies, Inc. | Multiple machine interface |
US8732658B2 (en) * | 2006-09-29 | 2014-05-20 | Rockwell Automation Technologies, Inc. | Layered interface in an industrial environment |
US9217998B2 (en) * | 2006-09-29 | 2015-12-22 | Rockwell Automation Technologies, Inc. | Management and development of an industrial environment |
US8041435B2 (en) * | 2008-09-30 | 2011-10-18 | Rockwell Automation Technologies, Inc. | Modular object dynamic hosting |
JP2010515338A (ja) * | 2006-12-28 | 2010-05-06 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | サービス発見のための方法と装置 |
US9021416B2 (en) * | 2007-05-16 | 2015-04-28 | Accenture Global Service Limited | Recommended application evaluation system |
US7904470B2 (en) * | 2007-06-13 | 2011-03-08 | Sap Ag | Discovery service for electronic data environment |
US20090119769A1 (en) * | 2007-11-05 | 2009-05-07 | Microsoft Corporation | Cross-site scripting filter |
US8533021B2 (en) * | 2007-11-21 | 2013-09-10 | Alcatel Lucent | System and method for remotely repairing and maintaining a telecommunication service using service relationships and service management system employing the same |
US7987163B2 (en) * | 2008-02-12 | 2011-07-26 | Bae Systems Information And Electronic Systems Integration Inc. | Apparatus and method for dynamic web service discovery |
US9071443B2 (en) * | 2008-08-25 | 2015-06-30 | Novell, Inc. | Automated service platform prospecting |
US8788666B2 (en) * | 2008-12-31 | 2014-07-22 | Sap Ag | System and method of consolidated central user administrative provisioning |
US8949280B2 (en) * | 2010-04-30 | 2015-02-03 | International Business Machines Corporation | Web service discovery via data abstraction model with input assistance |
US8250113B2 (en) * | 2010-04-30 | 2012-08-21 | International Business Machines Corporation | Web service discovery via data abstraction model |
US8583699B2 (en) * | 2010-04-30 | 2013-11-12 | International Business Machines Corporation | Web service discovery via data abstraction model augmented by field relationship identification |
US8275806B2 (en) * | 2010-04-30 | 2012-09-25 | International Business Machines Corporation | Web service discovery via data abstraction model and condition creation |
US8793263B2 (en) | 2010-08-23 | 2014-07-29 | International Business Machines Corporation | Avoiding duplicate and equivalent data objects in service registries |
US9141411B2 (en) * | 2010-09-30 | 2015-09-22 | Microsoft Technology Licensing, Llc | Model slicing and versioning |
US9262474B2 (en) * | 2010-09-30 | 2016-02-16 | Microsoft Technology Licensing, Llc | Dynamic domain query and query translation |
US8671416B2 (en) | 2011-01-14 | 2014-03-11 | Apple Inc. | Dynamic service discovery |
US20130080603A1 (en) | 2011-09-27 | 2013-03-28 | Microsoft Corporation | Fault Tolerant External Application Server |
US9652314B2 (en) * | 2012-10-15 | 2017-05-16 | Alcatel Lucent | Dynamic application programming interface publication for providing web services |
GB2509723A (en) * | 2013-01-10 | 2014-07-16 | Ibm | Invoking web services that are determined at the time of execution |
US10216812B2 (en) | 2013-10-30 | 2019-02-26 | Hewlett Packard Enterprise Development Lp | Application programmable interface (API) discovery |
CN107836007B (zh) * | 2015-07-31 | 2023-04-11 | 难题知识产权有限责任公司 | 发现并发布api信息 |
US10078562B2 (en) | 2015-08-18 | 2018-09-18 | Microsoft Technology Licensing, Llc | Transactional distributed lifecycle management of diverse application data structures |
US10341444B2 (en) * | 2016-07-27 | 2019-07-02 | Microsoft Technology Licensing, Llc | Abstracted device service discovery |
CN108989372B (zh) * | 2017-06-02 | 2021-04-09 | 华为技术有限公司 | 服务发现的方法、注册中心和设备 |
US10831564B2 (en) | 2017-12-15 | 2020-11-10 | International Business Machines Corporation | Bootstrapping a conversation service using documentation of a rest API |
US10803108B2 (en) | 2017-12-20 | 2020-10-13 | International Business Machines Corporation | Facilitation of domain and client-specific application program interface recommendations |
US10831772B2 (en) | 2017-12-20 | 2020-11-10 | International Business Machines Corporation | Facilitation of domain and client-specific application program interface recommendations |
CN108647012A (zh) * | 2018-05-04 | 2018-10-12 | 山东汇贸电子口岸有限公司 | 一种服务引擎的管理方法和管理装置 |
CN111045833B (zh) * | 2018-10-15 | 2024-06-18 | 北京京东尚科信息技术有限公司 | 接口调用的方法和装置 |
US11263062B2 (en) * | 2019-02-06 | 2022-03-01 | Fujitsu Limited | API mashup exploration and recommendation |
CN111161437A (zh) * | 2019-12-04 | 2020-05-15 | 江苏苏宁物流有限公司 | 一种物流箱码的通用接收订阅派发方法及系统 |
CN117221385A (zh) * | 2020-02-14 | 2023-12-12 | 瑞典爱立信有限公司 | 用于服务api发布的方法、网络实体和介质 |
WO2021237527A1 (zh) * | 2020-05-27 | 2021-12-02 | Oppo广东移动通信有限公司 | 信息处理方法及装置、设备、计算机存储介质 |
CN111865746B (zh) * | 2020-06-19 | 2022-08-19 | 苏宁云计算有限公司 | 基于环路总线的系统开发方法及装置 |
CN113867976A (zh) * | 2020-06-30 | 2021-12-31 | 中兴通讯股份有限公司 | 应用程序接口的调用方法和装置、存储介质及电子装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001282488A (ja) | 2000-03-28 | 2001-10-12 | Brother Ind Ltd | 印刷制御装置、ネットワークプリンタ及び印刷制御方法 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5423003A (en) | 1994-03-03 | 1995-06-06 | Geonet Limited L.P. | System for managing network computer applications |
US5893107A (en) | 1996-07-01 | 1999-04-06 | Microsoft Corporation | Method and system for uniformly accessing multiple directory services |
US6067568A (en) | 1996-12-10 | 2000-05-23 | International Business Machines Corporation | Automatic setup of services for computer system users |
EP1066574A4 (en) | 1998-03-27 | 2006-09-13 | Ibm | TREATMENT OF PRECALCULATED VIEWS |
US6463078B1 (en) | 1998-07-22 | 2002-10-08 | Microsoft Corporation | Method for switching protocols transparently in multi-user applications |
US6487552B1 (en) | 1998-10-05 | 2002-11-26 | Oracle Corporation | Database fine-grained access control |
US6366934B1 (en) * | 1998-10-08 | 2002-04-02 | International Business Machines Corporation | Method and apparatus for querying structured documents using a database extender |
US6584459B1 (en) | 1998-10-08 | 2003-06-24 | International Business Machines Corporation | Database extender for storing, querying, and retrieving structured documents |
WO2000078001A2 (en) * | 1999-06-11 | 2000-12-21 | Microsoft Corporation | General api for remote control of devices |
WO2001090883A2 (en) | 2000-05-09 | 2001-11-29 | Sun Microsystems, Inc. | Remote function invocation with messaging in a distributed computing environment |
US7171475B2 (en) * | 2000-12-01 | 2007-01-30 | Microsoft Corporation | Peer networking host framework and hosting API |
US20020099814A1 (en) * | 2001-01-24 | 2002-07-25 | International Business Machines Corporation | Method and apparatus for providing automatic discovery of network protocols, configurations and resources |
US7249100B2 (en) * | 2001-05-15 | 2007-07-24 | Nokia Corporation | Service discovery access to user location |
JP4096223B2 (ja) | 2001-09-19 | 2008-06-04 | 富士ゼロックス株式会社 | サービス検索装置およびその方法 |
JP2003223449A (ja) * | 2001-10-26 | 2003-08-08 | Yasuhiro Tanaka | 端末情報の登録およびその活用方法。 |
US7603469B2 (en) | 2002-01-15 | 2009-10-13 | International Business Machines Corporation | Provisioning aggregated services in a distributed computing environment |
US20030140119A1 (en) | 2002-01-18 | 2003-07-24 | International Business Machines Corporation | Dynamic service discovery |
US8135843B2 (en) | 2002-03-22 | 2012-03-13 | Citrix Systems, Inc. | Methods and systems for providing access to an application |
US7614059B2 (en) * | 2002-07-11 | 2009-11-03 | Topia Technology | System and method for the discovery and usage of local resources by a mobile agent object |
US7401338B1 (en) * | 2002-09-27 | 2008-07-15 | Symantec Operating Corporation | System and method for an access layer application programming interface for managing heterogeneous components of a storage area network |
US20040111525A1 (en) * | 2002-12-09 | 2004-06-10 | International Business Machines Corporation | Dynamic web service implementation discovery and selection apparatus and method |
US7188155B2 (en) * | 2002-12-17 | 2007-03-06 | International Business Machines Corporation | Apparatus and method for selecting a web service in response to a request from a client device |
US20040120344A1 (en) * | 2002-12-20 | 2004-06-24 | Sony Corporation And Sony Electronics, Inc. | Device discovery application interface |
US20040133896A1 (en) * | 2002-12-20 | 2004-07-08 | Sony Corporation And Sony Electronics, Inc. | Network device application interface |
US7774495B2 (en) * | 2003-02-13 | 2010-08-10 | Oracle America, Inc, | Infrastructure for accessing a peer-to-peer network environment |
US6959262B2 (en) | 2003-02-27 | 2005-10-25 | Hewlett-Packard Development Company, L.P. | Diagnostic monitor for use with an operating system and methods therefor |
US20040210630A1 (en) * | 2003-04-17 | 2004-10-21 | Microsoft Corporation | Systems and methods for discovering, acquiring and maintaining nodes in a logical network |
US7444386B2 (en) * | 2003-06-20 | 2008-10-28 | Sun Microsystems, Inc. | Application programming interface for provisioning services |
US20050080768A1 (en) * | 2003-10-10 | 2005-04-14 | International Business Machines Corporation | Methods and apparatus for dynamic service discovery from Web services representation chain |
US7328282B2 (en) * | 2003-10-23 | 2008-02-05 | International Business Machines Corporation | Aspect oriented web service invocation |
US7716357B2 (en) * | 2003-10-24 | 2010-05-11 | Microsoft Corporation | Service discovery and publication |
-
2003
- 2003-10-24 US US10/693,653 patent/US7716357B2/en not_active Expired - Fee Related
-
2004
- 2004-07-21 CN CNB2004800013241A patent/CN100481069C/zh active Active
- 2004-07-21 JP JP2006536562A patent/JP2007509406A/ja active Pending
- 2004-07-21 RU RU2005115975/09A patent/RU2365973C2/ru active
- 2004-07-21 MX MXPA05006611A patent/MXPA05006611A/es active IP Right Grant
- 2004-07-21 WO PCT/US2004/023547 patent/WO2005045563A2/en active Application Filing
- 2004-07-21 CA CA2501718A patent/CA2501718C/en active Active
- 2004-07-21 EP EP04778869A patent/EP1676215A4/en not_active Ceased
- 2004-07-21 CA CA2782812A patent/CA2782812C/en active Active
- 2004-07-21 KR KR1020117016088A patent/KR101176757B1/ko active IP Right Grant
- 2004-07-21 AU AU2004279194A patent/AU2004279194B2/en active Active
- 2004-07-21 BR BR0406411-9A patent/BRPI0406411A/pt not_active IP Right Cessation
- 2004-07-21 KR KR1020057008290A patent/KR20060130479A/ko not_active Application Discontinuation
-
2010
- 2010-05-06 US US12/774,879 patent/US8489759B2/en not_active Expired - Lifetime
- 2010-12-24 JP JP2010288262A patent/JP5193280B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001282488A (ja) | 2000-03-28 | 2001-10-12 | Brother Ind Ltd | 印刷制御装置、ネットワークプリンタ及び印刷制御方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2005045563A3 (en) | 2005-07-14 |
EP1676215A4 (en) | 2012-10-17 |
AU2004279194B2 (en) | 2010-03-04 |
MXPA05006611A (es) | 2005-08-16 |
WO2005045563A2 (en) | 2005-05-19 |
AU2004279194A8 (en) | 2008-10-02 |
JP2007509406A (ja) | 2007-04-12 |
CA2782812C (en) | 2015-09-08 |
CA2782812A1 (en) | 2005-04-24 |
RU2005115975A (ru) | 2006-01-20 |
JP5193280B2 (ja) | 2013-05-08 |
EP1676215A2 (en) | 2006-07-05 |
CA2501718A1 (en) | 2005-04-24 |
RU2365973C2 (ru) | 2009-08-27 |
KR20060130479A (ko) | 2006-12-19 |
CA2501718C (en) | 2012-10-02 |
US20100217782A1 (en) | 2010-08-26 |
BRPI0406411A (pt) | 2005-10-04 |
CN1705947A (zh) | 2005-12-07 |
CN100481069C (zh) | 2009-04-22 |
JP2011103131A (ja) | 2011-05-26 |
US7716357B2 (en) | 2010-05-11 |
US20050234873A1 (en) | 2005-10-20 |
KR20110086193A (ko) | 2011-07-27 |
US8489759B2 (en) | 2013-07-16 |
AU2004279194A1 (en) | 2005-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101176757B1 (ko) | 서비스 디스커버리 및 퍼블리케이션 | |
US8713089B2 (en) | Dynamic lookup service in a distributed system | |
US6604127B2 (en) | Dynamic lookup service in distributed system | |
US8082548B2 (en) | System and method for performing systems management on IT-resources using web services | |
US6895586B1 (en) | Enterprise management system and method which includes a common enterprise-wide namespace and prototype-based hierarchical inheritance | |
US7467384B2 (en) | Uniform resource discovery with multiple computers | |
EP1496428B1 (en) | System and method for automatic configuration | |
US6405310B1 (en) | System and method for peripheral system management using operation object interfaces for device control | |
US20010002473A1 (en) | Dynamic lookup service in a distributed system | |
US20080189402A1 (en) | Method and Respective System for Performing Systems Management on IT-Resources Using Web Services | |
US6931427B2 (en) | Method and apparatus for discovering data services in a distributed computer system | |
US20070209042A1 (en) | Grid computing architecture & associated method of invoking/registering network services for subscription | |
US7028035B1 (en) | Method and system of typing resources in a distributed system | |
EP1999612A1 (en) | Object-oriented discovery framework | |
EP1194837A2 (en) | Dynamic lookup service in a distributed system | |
Enterprise | BEA™ SNMP Agent |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150730 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160720 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170719 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180718 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190718 Year of fee payment: 8 |