KR20040086543A - 공유 자원에 대한 통지 방법 - Google Patents

공유 자원에 대한 통지 방법 Download PDF

Info

Publication number
KR20040086543A
KR20040086543A KR1020040013371A KR20040013371A KR20040086543A KR 20040086543 A KR20040086543 A KR 20040086543A KR 1020040013371 A KR1020040013371 A KR 1020040013371A KR 20040013371 A KR20040013371 A KR 20040013371A KR 20040086543 A KR20040086543 A KR 20040086543A
Authority
KR
South Korea
Prior art keywords
notification
session
client
listener
attribute
Prior art date
Application number
KR1020040013371A
Other languages
English (en)
Other versions
KR101066682B1 (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 KR20040086543A publication Critical patent/KR20040086543A/ko
Application granted granted Critical
Publication of KR101066682B1 publication Critical patent/KR101066682B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1207Improving or facilitating administration, e.g. print management resulting in the user being informed about print result after a job submission
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J42/00Coffee mills; Spice mills
    • A47J42/02Coffee mills; Spice mills having grinding cones
    • A47J42/10Grinding cones
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1259Print job monitoring, e.g. job status
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1288Remote printer device, e.g. being remote from client or server in client-server-printer device configuration
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J42/00Coffee mills; Spice mills
    • A47J42/38Parts or details

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Food Science & Technology (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Hardware Redundancy (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)

Abstract

공유 자원으로부터의 통지가 적절한 클라이언트에 전달될 수 있다. 공유 자원으로부터의 통지를 적절한 클라이언트에 전송하기 위해서 클라이언트에 대한 청취자 등록(listener registeration)은 공유 자원에 대한 발신자 등록과 일치될 수 있다. 터미널 서버 또는 고속 사용자 스위치 환경에서, 청취자 등록은, 세션(session)과 연관된 통지를 청취자가 관심을 가지도록 지정될 수 있다. 국부 또는 원격 세션과 연관된 프로세싱을 위한 통지가 그 프로세싱을 지시하는 세션에 라우팅(routing)될 수 있다. 프로세싱 통지에 대한 요구는 동일한 기계 또는 다른 기계로부터 개시될 수 있다. 사용자 이름 또는 보안 콘텍스트(security context)에 대한 통지가 원하는 대로 지시될 수 있다. 양 방향 통신이 지원될 수 있다. 통지는 사용자 인터페이스 표시(user interface presentation)을 생성하기 위해 사용될 수 있다.

Description

공유 자원에 대한 통지 방법{METHOD OF NOTIFICATION FOR SHARED RESOURCES}
본 발명은 컴퓨터 네트워크 상에서 공유되는 공유 자원에 대한 통지에 관한 것이다.
본 명세서의 개시내용의 일부는 저작권에 의해 보호를 받는 내용을 포함하고 있다. 저작권자는 누가 특허 문서 또는 특허 개시물을 팩스에 의해 복제하더라도, 그 복제물이 특허상표청에서의 특허 파일 또는 기록내에서 보여지는 한 그 복제에 반대하지 않지만, 그렇지 않은 경우에는 그것이 무엇에 관한 것이든 관계없이 저작권자는 저작권을 보유한다.
조직체에서 비용 대비 생산성을 높이기 위해서 공유 계산 자원(shared computing resource)에 대한 의존도가 증가하고 있다. 비록, 많은 자원이 공유될 수 있지만 공유 자원 중 익숙한 예로는 프린터를 들 수 있고 이 프린터는 프린트 큐(queue)를 통해서 통상적으로 공유된다. 프린터에 프린트하기 위해서는 프린트작업(print job)을 큐에 부가하는 소프트웨어가 호출(invoke)된다. 이 프린트 작업은 결국 적절한 소프트웨어(예를 들면, 프린트 모니터와 프린트 드라이버)에 의해서 처리되어 프린트 문서 등의 적절한 출력을 생성한다.
터미널 서버 환경(terminal sever environment)
도 1은 프린트 서비스(114) 등의 자원을 공유하는 예시적인 종래 시스템(100)을 나타낸 도면이다. 이 예는 복수의 사용자를 위한 사용자 인터페이스(104, 106, 108)를 지원하는 터미널 서버 소프트웨어(102)를 포함한다. 사용자 인터페이스(104)는, 터미널 서버 소프트웨어(102)를 실행하는 컴퓨터의 물리적 콘솔(physical console)(103)(예를 들면, 모니터 및 키보드)과 연관된 특정한 경우이다. 실제로, 콘솔 인터페이스(104)와 연관된 프로세싱은, 콘솔(103)에 대한 액세스는 터미널 서버 소프트웨어(102)가 실행되는 컴퓨터 시스템에 대한 물리적 액세스를 통상적으로 수반하기 때문에 특별 액세스 권한과 연관될 수 있다. 사용자 인터페이스(106 및 108)는 네트워크(110)를 통해 콘솔(103)로부터 멀리 있을 수도 있으므로, 이러한 사용자 인터페이스에 특별 액세스 권한을 부여하는 것은 바람직하지 않을 수도 있다.
메일 서비스, 프린트 서비스 또는 파일 서비스 등의 공유 자원과 상호작용하기 위해서 임의의 사용자 인터페이스가 사용될 수도 있다. 이러한 공유 자원에서 동작을 수행하는 경우, 종래에는 이들 서비스가 특별 자원을 액세스하여 그들의 태스크(task)를 완료하기 때문에 국부 콘솔(local console)(103)(예를 들면, 세션(session)(10))과 연관된 특정 세션에서 공유 서비스를 실행한다. 메시지가공유 자원에 대하여 생성되는 경우, 이 메시지는 적절한 태스크와 연관된 사용자 인터페이스로 전송된다. 공유 서비스에서 이러한 메시지는 콘솔(예를 들면, 세션 사용자 인터페이스(104)로 발신된다.
예를 들면, 사용자는, 네트워크(110) 상에서 터미널 서버(102)와 통신하는 원격 콘솔(remote console)에서 사용자 인터페이스(106)와 상호 작용하여 프린트 서비스를 요구할 수 있다. 프린터 드라이버는 국부 콘솔(local console)(즉, 세션 "0"에서) 하에서 동작하는 프린트 서비스(예를 들면, 스풀러(spooler))에 의해서 동작하기 때문에, 프린터에 용지 없음을 지시하는 메시지를 포함한 프린트 요구에 프린터(114)가 응답하는 경우, 이 메시지는 콘솔(103)과 연관된 그래픽 사용자 인터페이스(104)에 표시될 수 있다. 따라서, 원격 사용자 인터페이스(106)에서의 프린트 서비스를 요구한 사용자는 프린트 메시지를 인식하지 못한다.
고속 사용자 스위치(fast user switch)
도 2는 프린트 서비스(222) 등의 자원을 공유하는 다른 예시적인 종래 시스템(200)을 나타낸 도면이다. 본 예에서, 컴퓨터(206)는 "고속 사용자 스위치" 특성을 제공한다. 사용자"D"에 대한 사용자 인터페이스 표시(204)이 현재 컴퓨터(206)에 나타나 있는 경우, 사용자 'E"는 사용자 "D"를 로그 아웃하지 않고 사용자 인터페이스 표시(204)를 사용자 "E"에 대한 표시(212)로 스위칭할 수 있다. 실제로는, 표시(presentation)를 스위칭하기 전에 패스워드가 요구될 수도 있다. 마찬가지로, 사용자 "F"가 컴퓨터(206)를 사용하길 원하면, 사용자 "F"는 명령을 활성시킬 수 있고 사용자 "F"(214)에 대한 사용자 인터페이스 표시는 사용자 "E"를로그 아웃하지 않고 컴퓨터(206)에 표시된다.
본 예에서, 사용자 "D"(204)는 공유 자원(예를 들면, 프린트 큐)으로부터의 서비스를 요구하고 용지 없음 메시지가 프린터로부터 수신되는 경우, 컴퓨터(206)에 의해서 상기 용지 없음 메시지가 수신될 때 이 메시지는, 프린팅을 요구한 사용자 쪽 보다 어느 사용자가 표시장치를 제어하든 그 사용자 표시(presentation)에 표시된다.
이들 예에서, 자원을 요구하는 사용자는, 사용자 인터페이스 메시지가 상기 요구에 책임을 갖는 사용자에게 표시되지 않기 때문에 자원 요구 실패가 있었다는 것을 인지하지 못할 수 있다.
도 1은 터미널 서버 시스템(terminal server system)의 예를 나타낸 도면.
도 2는 "고속 사용자 스위치(fast-user-switch)" 시나리오의 예를 나타낸 도면.
도 3a는 공유 자원에 대한 통지를 위한 예시적 시스템을 나타낸 도면.
도 3b는 공유 자원으로부터의 통지에 대한 등록을 구현하기 위한 예시적 시스템을 나타낸 도면.
도 3c는 공유 자원으로부터의 통지에 대한 등록을 구현하기 위한 다른 예시적 시스템을 나타낸 도면.
도 4a는 통지를 처리하는 방법을 나타낸 흐름도.
도 4b는 발신자 및 청취자(listener)를 등록하고 통지를 처리하는 방법을 나타낸 흐름도.
도 5는 클라이언트가 공유 자원으로부터의 통지를 등록 및 수신하게 하는 방법을 나타낸 흐름도.
도 6은 통지를 발신하기 위해 발신자를 등록하는 방법을 나타낸 흐름도.
도 7은 공유 자원으로부터의 통지에 대한 클라이언트 등록의 예시적인 시스템을 나타낸 도면.
도 8은 공유 자원으로부터 통지를 수신하기 위해 클라이언트를 등록하는 것을 포함하는 예시적 터미널 서버 시스템을 나타낸 도면.
도 9는 공유 자원으로부터 통지를 수신하기 위해 사용자 표시(user presentation)을 등록하는 것을 포함하는 예시적 복수 사용자 스위치 시스템을 나타낸 도면.
도 10은 통지를 필터링하는데 잠재적으로 사용되는 하나 이상의 등록 속성을 나타내는 예시적 통지 서버를 나타낸 도면.
도 11은 사용자 식별자에 기초하여 통지를 필터링하는 예시적 시스템을 나타낸 도면.
도 12는 보안 콘텍스트에 기초하여 통지를 필터링하는 예시적 시스템을 나타낸 도면.
도 13은 세션 식별자에 기초하여 통지를 필터링하는 예시적 시스템을 나타낸 도면.
도 14는 복수의 속성에 기초하여 통지를 필터링하는 예시적 시스템을 나타낸 도면.
도 15는 관리자에 의해서 생성되는 등록을 포함하는 예시적 시스템을 나타낸 도면.
도 16은 채널 등록과 예시적 청취자에 대한 인터페이스와 오브젝트를 나타낸 모식도.
도 17은 통과된 통지 오브젝트와, 채널 등록과 예시적 청취자에 대한 인터페이스와 오브젝트를 나타낸 모식도.
도 18은 통과된 응답 통지 오브젝트와, 채널 등록과 예시적인 청취자에 대한 인터페이스와 오브젝트를 나타낸 모식도.
도 19는 클라이언트와 공유 자원을 등록하고, 통지를 전송하고 등록 속성에 따라 응답하는 통지 방법을 나타낸 흐름도.
도 20은 통지를 수신하고 응답을 발신하기 위해 클라이언트를 등록하는 클라이언트 방법을 나타낸 흐름도.
도 21은 통지를 발신하고 응답을 처리하기 위해 채널을 등록하는 공유 자원 방법을 나타낸 흐름도.
도 22는 프린팅 자원으로부터 공유 자원을 통지하고 요구하기 위해 등록한 클라이언트를 포함하는 예시적 시스템을 나타낸 도면.
도 23은 상술한 통지 기술을 채용한 장치 및 구현 방법에 사용될 수도 있는 분포 컴퓨터 시스템을 나타낸 블록도.
*도면의 주요 부분에 대한 부호의 설명*
114: 프린트 서비스
102 : 터미널 서버
112 : 세션
103 : 콘솔
104 ; 세션
110 : 네트워크
106, 108 : 세션
222: 프린트 서비스
204, 212, 214 : 사용자 "D, E, F" 표시
300 : 공유 자원
326 : 클라이언트
222: 프린트 서비스
204, 212, 214 : 사용자 "D, E, F" 표시
300 : 공유 자원
326 : 클라이언트
2346 : 직렬 포트 인터페이스
2345 : 모뎀
2353 : 네트워크 어댑터
2327 : 하드 드라이브
2328 : 플로피 드라이브
2330 : CD-ROM 드라이브
2335: 연산 시스템
2336 : 애플리케이션
2337 : 모듈
2338 : 데이터
2356 : 번역기
2340 : 키보드
2342 : 마우스
2349 : 원격 컴퓨터
2350 : 메모리 기억부
2355 : 게이트 웨이
2320 : 컴퓨터
본 발명은 클라이언트를 위해 공유 자원으로부터의 통지를 제공할 수 있다. 예를 들면, 하나 이상의 통지가, 하나 이상의 공유 자원과 상호 작용하는 하나 이상의 클라이언트로 발신될 수 있다.
일부 예에서, 복수의 클라이언트는 하나 이상의 공유 자원을 유용한다. 공유 자원을 이용하는 클라이언트는 통지 서버에 청취자(listener)로서 등록될 수 있다. 공유 자원이 통지를 발신하는 경우, 그 통지는, 등록 클라이언트와 연관된 하나 이상의 속성과 통지와 연관되는 하나 이상의 속성이 일치하는 것으로 통지 서버가 판정한 때에 클라이언트에 전송된다.
속성은 발신자 등록을 통해 통지와 연관될 수 있다. 속성은 세션 식별자,사용자 식별자, 통지 유형 등을 포함할 수 있다.
일부 예에서, 터미널 서버는 복수의 세션을 처리한다. 등록(registration)은 세션과 연관된 통지를 수신하도록 세션에 대하여 생성될 수 있다. 공유 자원이 콘솔 세션에서 실행되는 경우, 통지는 공유 자원의 호출에 책임을 갖는 세션으로 되돌려 전송될 수 있다. 이 통지는 세션에 대한 사용자 인터페이스 표시를 생성하는데 사용될 수 있다. 예를 들면, 사용자 인터페이스 표시는 공유 자원의 조건을 지시할 수 있다.
콘솔 세션에서 실행하는 공유 자원은 통지를 통지 서버로 발신하고, 통지 서버는 공유 자원의 등록 속성을 비교하며 이때 그 등록 속성은 공유 자원의 호출에 책임을 갖는 세션의 지시(indication)를 포함할 수 있다. 공유 자원에 대하여 등록된 적절한 속성이 세션에 대하여 등록된 속성과 일치하는 것으로 판정되면, 그에 따라 통지가 전송된다. 이 통지는 사용자 인터페이스 표시(user interface presentation)를 생성하기 위해(예를 들면, 등록 자원을 요구한 세션에 대한 사용자 인터페이스를 생성하기 위해) 사용될 수 있다.
터미널 서버 또는 복수의 세션을 포함하는 다른 시나리오(scenario)에서는, 공유 자원을 요구한 통지에 대하여 사용자 인터페이스 표시를 생성하는 것으로 비밀(privacy)을 보호할 수 있고 보안을 향상시킬 수 있다. 이 통지는 다른 사용자에 의해서 관측 또는 액세스되지 않는 비밀 또는 보안 정보를 포함할 수도 있다. 또한, 통지는 연관된 기능성(예를 들면, 프로세싱을 취소하기 위함)을 포함할 수도 있다. 다른 사용자에게 액세스할 수도 있는 콘솔 세션에 통지를 발신하는 대신에,통지는 상기 자원을 요구한 세션에 의한 처리를 위해 발신된다. 이러한 방법으로, 자원에 대한 제어와 자원 요구에 대한 표시 정보는 자원을 요구한 측(party)의 수중에 머물게 된다.
통지는 서비스는 통지에 대한 응답을 지원할 수 있다. 따라서 양 방향 통신이 지원될 수 있다.
등록과 연관된 속성은 공유 자원 또는 등록 클라이언트 이외의 소스(source)로부터 얻어질 수 있다. 예를 들면, 보안 콘텍스트로부터 또는 클라이언트의 등록 호(call)에 관한 정보로부터 속성이 얻어질 수 있다. 세션 식별자의 경우에, 호 클라이언트(calling client)와 연관된 세션 식별자는 (예를 들면, 클라이언트에 의해서 사용되는 공유 자원을 등록하는 경우) 이후의 검색(retrival)을 위해 저장될 수 있다.
통지 서비스는 통지에 포함된 데이터에 관계없이 동작할 수 있다. 예를 들면, 통지 유형은 통지가 어떻게 처리되는지를 지시할 수 있다. 통지 서비스는 임의의 통지 유형의 통지를 처리하여 전송할 수 있다.
본 발명의 이점 및 특징은 첨부된 도면을 참조하여 이하 기술하는 실시예로부터 명백해질 것이다.
실시예 1 - 예시적 시스템의 개관
도 3a는 공유 자원(306)에 대한 통지(316)가 적절한 클라이언트(326)로 전달되는 예시적 시스템(300)을 나타낸 도면이다. 예를 들면, 통지(316)는, 클라이언트(326)와 연관된 속성과 통지(316)와 연관된 속성의 비교에 기초하여클라이언트(326)로 전송될 수 있다. 비록, 하나의 공유 자원(306), 하나의 통지(316), 및 하나의 클라이언트(326)가 도시되어 있지만, 실제 시스템은 복수의 자원(306), 복수의 통지(316), 및 복수의 클라이언트(326) 또는 이들의 일부 조합을 포함할 수도 있다.
실시예 2 - 다른 예시적 시스템의 개관
도 3b는 하나 이상의 통지가 하나 이상의 공유 자원(332)으로부터 통지 서버(334)로 발신되고, 통지 서버(334)는 하나 이상의 클라이언트(340A, 340B)에 통지의 지시(indication)를 발신(예를 들면, 통지를 전송)하는 예시적 시스템(330)을 나타내는 도면이다. 다른 매개가 통지 전송에 포함될 수도 있고 공유 자원 또는 클라이언트가 통지 서버에 의해서(예를 들면, 동일한 처리로 동작됨) 호스팅(host) 될 수도 있다.
본 예에서, 통지 서버(334)는 등록이 공유 자원(332)으로부터 수신되는 경우 연관되어 고려되어지는 발신자 등록(sender registration)(336)을 포함한다. 마찬가지로, 청취자 등록(338A)은 클라이언트(340A)와 연관되고 수신 통지가 일치하는지, 그리고, 클라이언트(340A)로 전송되어야 했는지 여부를 판정하는데 고려되어 진다. 마찬가지로, 청취자 등록(338A)은 클라이언트(340B)와 연관되어 있다.
등록(336, 338A, 338B)은 각각 속성(337, 339A, 339B)을 포함한다. 청취자 속성(339A, 339B)에 대하여 발신자 속성(337)을 비교하여 일치가 있는지를 판정함으로써 통지 라우팅(routing)이 제어될 수 있다. 이 일치는 속성의 서브세트(subset)가 동일한지의 여부 등의 각종 방법에 의해서 정의될 수 있다.일부 속성은 임의의 값을 일치시키는 것으로써 정의될 수 있다.
실시예 3 - 다른 예시적 시스템의 개관
도 3c는 통지가 클라이언트에 발신되는 또 다른 예시적 시스템(350)을 나타낸 도면이다. 이 예시적 시스템(350)에서, 하나 이상의 클라이언트(352, 354)는 하나 이상의 서버(356, 358)를 이용하여 하나 이상의 공유 자원(357, 359)을 (예를 들면, 요구(360, 362)를 통해) 액세스한다. 또한, 클라이언트(352)는 통지 서버(364)로 청취자 등록(366)을 생성하기 위해 청취자로서 등록할 수 있고, 서버(356)는 통지 서버(364)로 발신자 등록(368)을 생성하기 위해 발신자로서 등록할 수 있다.
본 예에서, 발신자 등록(368)을 가진 공유 자원 서버(356)에 의해서 통지가 생성되는 경우, 통지 서버(364)에서의 필터 방법(370)은 통지의 지시를 수신하기 위해 등록된 클라이언트가 존재하는지의 여부를 판정한다. 예를 들면, 클라이언트(352)가 특정 서버(356)에 공유 자원에 대한 연관 청취자 등록(366)을 가지며, 청취자 등록(366)의 속성을 일치시키는 통지에 대하여 클라이언트가 등록되어 있는 것으로 필터가(370)가 판정하면 상기 클라이언트는 그 통지의 지시를 수신한다.
본 예에서, 도 3c에 도시된 엔터티(entity)(예를 들면, 클라이언트(352, 354), 서버(356, 358), 및 통지 서버(364))는 프로세스 어드레스 공간(process address space)에 의존적이지 않다. 예를 들면, 상기 본체는 동일한 처리 공간에서 수행하는 오브젝트, 동일한 처리 공간에서 동작하는 스레드(thread), 또는 네트워크 상의 임의의 장소에 있는 다른 기계에서의 다른 처리 공간에서 각각 동작하는 분리 프로세스가 될 수 있다. 또한 시나리오는 공유 및 분리 프로세스 또는 어드레스 공간의 조합 및 치환을 포함할 수 있다. 임의의 실시예에서, 공유 자원, 클라이언트 또는 서버는 프로그램, 프로세스, 스레드, 구성 요소(예를 들면, 오브젝트 모델 하에서), 복합 프로그램, 복합 구성 요소(예를 들면, 동적으로 링크되거나 패키지 됨)등이 될 수 있다.
실시예 4 - 예시적 공유 자원
임의의 실시예에서, 하나 이상의 서버는 하나 이상의 클라이언트에 의한 하나 이상의 공유 자원에 대한 액세스를 제공할 수 있다. 예시적 공유 자원은 파일 서비스, 메일 서비스, 프린트 서비스, 또는 다른 공유 애플리케이션, 프로그램 또는 서비스를 포함한다.
비록, 프린터 등의 물리적 디바이스가 일반적으로 공유 자원이라고 불리지만, 종종 적절한 소프트웨어 대응부(예를 들면, 프린트 큐(queue))도 존재한다.
임의의 실시예에서, 공유 자원은 관련 서버에 대하여 국부적으로 또는 외부적으로 운영될 수도 있다. 예를 들면, 서버는 공유 자원의 실행을 호스팅(host) 할 수도 있다.
실시예 5 - 프린팅 시나리오에서의 예시적 공유 자원
임의의 예에 적용되는 예시적 프린터 시나리오에서, 프린터 스풀러(spooler)는 콘솔 세션(console session)(즉 "0")에서의 터미널 서버 환경에서 동작하는 통지 서버로서 역할을 할 수 있고, 공유 자원은 상기 통지 서버에 의해서호스팅(host)되는 프린터 드라이버가 될 수 있다.
이러한 시나리오에서는, 프린트 스풀러 / 통지 서버는 프린트 드라이버, 프린트 프로세서, 또는 프린트 모니터 등의 스풀러 호스팅 구성 요소(spooler-hosted component)에 대한 하나의 방법을 제공하여 다른 세션과 보안 콘텍스트에서 동작하는 애플리케이션에 통지를 발신(및 애플리케이션으로부터의 답신을 수신)한다. 따라서, 스플러 프로세스에서 실행하는 프린트 구성 요소는 프린트 작업이 개시된 콘텍스트 또는 세션에 사용자 인터페이스 통지를 발신할 수 있다. 이 시나리오는 클라이언트/구성요소가 스풀러 어드레스 공간의 내부 또는 외부에 존재하든 통지를 임의의 레지스터 클라이언트/구성요소에 발신하기 위해 채용될 수 있다.
다른 시나리오에서는, 프린트 프로세서 매뉴얼 듀플렉스 구성 요소(print process manual duplex component)가 공유 자원이 될 수 있고 통신 시스템을 사용하여 통지를 클라이언트 구성 요소로 발신함으로써 사용자에게 페이지를 넘기도록 지시하는 사용자 인터페이스를 표시한다. 또 다른 시나리오에서는, 드라이버 자동 구조 구성 요소가 공유 자원이 될 수 있고 통지 시스템을 사용하여 드라이버 리치 상태(driver rich status)를 갱신한다. 다른 시나리오에서는 팩스 구성 요소가 공유 자원이 될 수 있고 통지 시스템을 사용하여 팩스가 수신되었다는 통지를 발신한다.
실시예 6 - 예시적 청취자 및 발신자 속성
청취자 및 발신자 속성은 다양한 형태를 취할 수 있다. 하나의 구현 방법에서는, 적어도 하나의 식별 콘텍스트 속성(identity context property)은 통지와 연관된다. 통지와 연관된 식별 콘텍스트 속성(예를 들면, 등록을 통해)을 잠재적인 청취자에 대한 속성(예를 들면, 청취자에 대한 등록과 연관된 속성들)과 비교하여 일치하는 것이 있다면 이를 찾는다.
식별 콘텍스트 속성은 사용자 식별자, 보안 콘텍스트 식별자(예를 들면, 보안 id 또는 "SID"), 세션 식별자(예를 들면, 터미널 서버 세션 식별 또는 고속 사용자 스위치 세션 식별), 또는 이들의 일부 조합을 포함할 수 있다.
터미널 세션 식별자는 세션을 다른 세션으로부터 식별하기에 충분한 하나 이상의 식별자를 포함할 수 있다. 어떤 경우에는, 이러한 식별자는 복수의 터미널 서버에서 복수의 세션간 구별을 행할 수도 있다.
식별 콘텍스트 속성에 대신하거나 또는 그에 부가적으로 사용될 수 있는 다른 예시적 청취자 및 발신자 속성은, 통지 유형(예를 들면, Globally Unique IDentifier, 메시지형태 식별자, 유형 버전 번호, 유형 만기 데이터 등), 통신 유형 또는 프로토콜 유형(예를 들면, 양 방향 채널, 무지향성 채널, 비동기 메시지 등), 프로세스 식별자, 공유 자원 식별자, 기계 식별자, 네트워크 위치 정보, 다른 식별 또는 네트워크 위상적 메시지(topological identifier), 다른 메시지 라우팅 또는 식별 정보, 또는 그의 소정의 조합을 포함한다.
절절한 속성을 특정함으로써, 청취자는 어떤 통지를 수신 받고 싶은지 특정할 수 있다. 어떤 경우에는, 속성은 발신자/청취자에 의해서 특정될 수 있지만 다른 경우(예를 들면, 사용자 식별 또는 세션을 특정하는 경우)에 속성은 발신자/청취자를 위하여 모아지거나 검증되거나 또는 모아져 검증될 수 있다.
실시예 7 - 통지 처리 방법의 예시적 개관
도 4a는 통지 발신을 성취하는 예시적 방법(400)을 나타낸 도면이다. 이 방법 및 여기에 나타낸 그 이외의 방법은 컴퓨터 실행 가능한 명령을 통해 소프트에서 구현될 수 있다.
참조 번호 402에서, 통지는 공유 자원에 대하여 수신된다. 참조 번호 422에서, 통지에 기초하여 응답하여, 적어도 통지의 지시가 (예를 들면, 발신 및 청취자) 속성의 비교에 기초하여 적절한 클라이언트로 발신된다(예를 들면, 통지가 전송됨). 이러한 속성은 예를 들면, 발신자(예를 들면, 공유 자원 또는 서버)와 청취자(예를 들면, 공유 자원 또는 서버의 클라이언트)의 등록 동안 결정될 수 있다.
참조 번호 422의 발신된 통지는 참조 번호 402의 수신 통지(예를 들면, 이 통지는 전송됨)와 동일한 형태를 포함하거나 또는 동일한 형태가 될 수 있거나 또는 다른 형태가 될 수 있다. 도 4a에 도시된 동작은 통지 서버 또는 일부 다른 소프트웨어에 의해서 수행될 수 있다.
실시예 8 - 등록을 포함하는 예시적 방법
도 4b는 등록을 통하여 통지의 발신을 성취하는 예시적 방법(450)을 나타낸 도면이다. 참조 번호 456에서 발신자(예를 들면, 서버 또는 다른 공유 자원)는 등록 요구의 결과로서 통지를 발신하기 위해 등록된다(예를 들면, 통지 서버에 의함). 실제, 이러한 등록 요구는 통지를 발신하고 싶은 엔터티(예를 들면, 서버 또는 다른 공유 자원)에 의해서 발신되지만, 등록은 발신자를 위하여(예를 들면, 공유 자원용 서버에 의해서) 수행될 수 있다.
발신자 등록은 등록 요구 자체에 제공될 수 있거나 또는 일부 다른 방법으로써(예를 들면, 요구의 소스에 대한 정보를 판정함으로써) 판정될 수 있는 발신자 속성을 얻는 것을 포함할 수 있다. 발신자 속성은 여기에 기술된 예시적 발신자 속성 중 어느 것을 지시할 수 있다.
발신자 등록은 발신자와 발신자 속성을 연관시키는 것을 포함한다. 일 예로, 발신자 등록 구성 요소가 생성되고, 관련성(association)은 (예를 들면, 식별자를 통해) 발신자와 연관된 발신자 식별자(예를 들면, 공유 자원 식별자)와 속성을 유지하는 (예를 들면, 데이터 구조로서의) 구성 요소에 포함되어 있다.
참조 번호 458에서, 청취자(예를 들면, 클라이언트)가 등록 요구의 결과로서 등록을 수신하기 위해 (예를 들면, 통지 서버에 의해서) 등록된다. 사실, 이러한 등록 요구는 청취자에 의해서 송신되지만, 등록은 청취자를 위해 수행될 수 있다.
청취자 등록은 (예를 들면, 파라미터를 통해)등록 요구 자체에 제공되거나 또는 일부 다른 방법으로 (예를 들면, 요구의 소스에 대한 정보를 결정함으로써) 결정될 수 있는 청취자 속성을 얻는 것을 포함한다. 청취자 속성은 여기에 기술한 예시적 청취자 속성 중 어느 것을 지시할 수 있다.
청취자 등록은 청취자와 청취자 속성을 연관시키는 것을 포함한다. 일 예로서, 청취자 등록 구성요소가 생성되고 속성이 (예를 들면, 데이터 구조로서) 구성 요소에 저장되고 청취자(예를 들면, 식별자를 통해)와 연관된다.
참조 번호 460에서, 통지는 공유 자원에 대하여(예를 들면, 공유 자원으로부터) 수신된다. 임의의 실시예에서, 통지는 공유 자원에 의해서 발신되는 오브젝트의 지시를 포함할 수 있다. 이 오브젝트는 통지를 나타낼 수 있고 이 통지에 대한 데이터를 포함한다.
통지의 수신에 응답하여, 본 방법은 참조 번호 466에서 등록 청취자 속성과 (예를 들면, 통지를 발신하는 공유 자원에 의해서 등록된) 발신자 속성을 비교하고 적어도 통지의 지시가, 등록 발신자 속성과 일치하는 등록 청취자 속성을 가진 하나 이상의 청취자(예를 들면, 클라이언트)에게 발신된다.
특별 권한을 가진 일부 클라이언트(예를 들면, 구성 요소는 관리자에 의해서 구동됨)는 특정 (예를 들면, 특권) 유형의 통지에 대하여 또는 다른 사용자로부터 발신된 통지에 대하여 등록할 수 있다. 이 경우에, 속성간 일치는 적절한 발신자 속성(예를 들면, 사용자 식별)이 동일한 속성(예를 들면, 임의의 사용자)에 대한 임의의 값 또는 특정 값(예를 들면, 특정 사용자)에 대하여 일치하도록 정의될 수 있다.
특별 권한을 가진 클라이언트는 등록을 생성하여 다른 구성 요소가 임의의 통지(예를 들면, 다른 세션에 대한 통지)를 수신하게 할 수 있는데, 이는 비록 클라이언트 구성 요소 자체가 이러한 통지에 대한 등록된 속성을 가진 경우에도 가능하다.
소망하는 경우, 등록이 폐쇄될 수 있거나 또는 추가 통지가 발신될 수 있다. 참조 번호 474에서, 발신자읠 등록이 폐쇄된다. 참조 번호 478에서, 청취자에 대한 등록이 폐쇄된다.
비록 도면에는 명백하게 도시되어 있지 않지만, 일부 시나리오에서의 방법은각종 요구를 수신할 때 대기 상태가 될 수도 있다. 동작(action)의 순서(예를 들면, 456/458 및 474/478)는 소망에 따라 재배열 또는 반전될 수 있다. 따라서, 비동기 동작이 지원될 수 있다.
실시예 9 - 프린팅 시나리오에서 등록을 포함하는 예시적 방법
도 4b에 도시된 방법은 각종 프린팅 시나리오에 사용될 수 있다. 하나의 시나리오에서, 클라이언트 구성 요소는 그 클라이언트 구성 요소의 보안 콘텍스트에서 동작하는 동시에 프린트 드라이버 구성 요소에 의해서 생성되는 통지에 대하여 등록한다. 다른 시나리오에서, 클라이언트 구성 요소는 임의의 터미널 세션(예를 들면, 클라이언트의 동일한 터미널 세션)에서 동작하는 프린트 모니터 구성 요소에 의해서 생성되는 통지에 대하여 등록한다. 다른 시나리오에서, 클라이언트 구성 요소는 임의의 통지 유형의 스풀러 통지에 대하여 등록한다.
이러한 방법으로, 클라이언트는 소망에 따라 통지가 제공될 수 있다. 이 클라이언트는 프린트 서버와 동일한 기계에서 또는 다른 기계에서 동작될 수 있다. 클라이언트 기계는 사용자가 터미널 서버 세션에 원격으로 접속되는 터미널 서버가 될 수 있다.
실시예 10 - 예시적 클라이언트 등록 및 통지 방법
도 5는 통지 서버로부터 통지를 수신하기 위해 수신자 속성을 등록하는 클라이언트 프로그램에 의해서 구현되는 예시적 방법(500)을 나타낸 도면이다. 하나의 시나리오에서, 클라이언트는 터미널 서버에서 동작하는 세션과 연관된다. 다른 시나리오에서, 클라이언트는, 사용자가 로그온 또는 로그오프하지 않고 컴퓨터 환경에서 스위치될 수 있는 복수의 사용자(예를 들면, 사용자 상태) 중 하나와 연관된다. 클라이언트는 통상적으로 공유 자원으로부터의 서비스를 요구하고 통지 서버를 통해 통지에 대하여 등록하는 복수의 클라이언트 중 하나이다.
참조 번호 502에서, 클라이언트는 통지 서버에 하나 이상의 청취자 속성을 등록한다. 청취자 속성은 파라미터를 통해 클라이언트로부터 얻어질 수 있거나 그렇지 않으면 예를 들면, 클라이언트가 동작하는 어느 세션의 판정에 의해 얻어질 수 있다. 상술한 바와 같이, 관리자를 위하여 동작하는 구성 요소는 추가 능력을 가질 수도 있다. 클라이언트는, 등록 속성을 일치시키는 통지가 통지 서버로부터 수신되는 때까지 다른 프로세싱 태스크(processing task)를 계속한다.
참조 번호 504에서, 클라이언트는 통지를 수신한다. 이러한 통지는 클라이언트에 대하여 등록된 속성과 통지와 연관된(예를 들면, 통지의 발신자에 대하여 등록된) 속성 사이의 일치에 기초하여 상기 클라이언트로 전송됨으로서 개시할 수 있다.
참조 번호 506에서, 통지를 수신 시, 클라이언트는 통지를 처리한다. 실시예에서, 클라이언트는 표시를 위해 사용자 인터페이스 표시(예를 들면, 대화 박스 또는 일부 다른 그래픽 사용자 인터페이스 소자)을 생성한다. 예를 들면, 사용자 인터페이스 표시는 공유 자원의 조건(예를 들면, 오류를 제거하기 위해서 사용자에 대하여 표시될 오류 조건)을 지시할 수 있다. 그러나, 적절한 기능을 특정함으로써 임의의 다른 처리가 가능하다.
하나의 시나리오에서, 적절한 사용자 인터페이스는, 청취자 속성에 위치되거나 또는 통지 오브젝트 자신에 위치되는 통지 유형 식별자(예를 들면, Globally Unique IDetifier)와 클라이언트 구성 요소에 의해서 식별된다. 터미널 서버의 세션에서 동작하는 클라이언트를 포함하는 실시예에서, 생성된 사용자 인터페이스는 원격 터미널에서 표시될 수 있다.
수신(504)과 프로세싱(506)의 복수 반복이 수행될 수 있다. 소망에 따라 그리고 통지 서버로부터 더 이상의 통지가 기대되지 않는 경우, 클라이언트는 참조 번호 512에서 통신 서버에 요구하여 등록 청취자 속성을 폐쇄할 수 있다. 추가 통지는 재등록에 의해서 수신될 수 있다. 하나의 시나리오에서, 클라이언트는 다른 계산 태스크를 처리하고, 상기 구성 요소의 수명은, 임의의 하나의 공유 자원으로부터 통지를 수신하기 위해 얼마나 오랫동안 클라이언트가 등록되어 있는지에 따라서 제한되지 않는다.
실시예 11 - 예시적 공유 자원 등록 및 통지 방법
도 6은 통지를 발신하기 위해 발신자 속성을 등록하도록 공유 자원에 의해서 실행되는 예시적 방법(600)이 도시된 도면이다. 하나의 시나리오에서, 공유 자원은 프린트 스풀러에서 동작하는 프린트 구성요소이다. 다른 시나리오에서, 스풀러는 프린트 구성요소 공유 자원을 호스팅하는 통지 서버이다. 다른 시나리오에서, 공유 자원은 몇몇 사용자 의해서 공유되는 컴퓨터에서 동작하는 프린트 드라이버이고 사용자는 로그온 또는 로그오프 하지 않고 사용자 상태 사이를 스위치할 수 있다. 통상적으로 공유 자원은 통지 서버로부터의 통지에 대하여 등록한 복수의 요구 클라이언트에 통상적으로 자원을 제공한다.
참조 번호 602에서, 공유 자원은 통지 서버에 의해서 하나 이상의 발신자 속성을 등록한다. 발신자 속성은 공유 자원으로부터 (예를 들면, 파라미터를 통해) 얻어질 수 있거나 또는 예를 들면, 공유 자원이 동작하는 어느 세션에서 판정함으로써 얻어질 수 있다.
참조 번호 604에서, 공유 자원은 통지를 통지 서버에 발신한다. 이러한 통지는 적절한 등록 속성을 가진 하나 이상의 클라이언트에 끝까지 전송될 수도 있다. 하나 이상의 통지는 발신(604)의 반복을 통해 발신될 수 있다.
소망에 따라 그리고 더 이상의 통지가 발신되지 않는 경우, 그 방법은 참조 번호 610에서 통지 서버에 의해서 등록을 폐쇄한다. 추가 통지는 재등록에 의해서 발신될 수 있다.
실시예 12 - 발신자/청취자 속성을 얻기 위한 예시적 기술
임의의 실시예에서, 등록에 대하여 저장된 발신자/청취자 속성은 각종 방법에 의해서 얻어질 수 있다. 예를 들면, 속성은 청취자 또는 발신자를 등록하는 호(call)에서의 파라미터로서 전달(pass)될 수 있다.
그러나, 일부의 경우에, 호출 클라이언트 외에 소스(source)로부터 속성을 얻는 것이 바람직할 수도 있다. 예를 들면, 정보는 클라이언트로부터의 호(예를 들면, 청취자 또는 발신자를 등록하는 호) 또는 클라이언트 호출자(예를 들면, 등록 호출자)에 대한 정보로부터 얻어질 수 있다. 이러한 정보는 시스템 서비스(예를 들면, 보안 또는 RPC 서비스)로부터 모아질 수 있다. 예를 들면, 콘텍스트 속성을 식별하는 경우, 이러한 속성이 그렇게 얻어질 수 있다.
세션 식별자의 경우에, 통지 서비스(예를 들면, 통지 서버)를 호출하는 클라이언트는 자신이 동작하고 있는 동일한 세션에 대한 통지를 위해 등록하기를 바란다고 특정할 수 있다. 이 세션은 등록 호에 대한 정보를 얻거나 또는 호출자를 (예를 들면, RPC 시스템으로부터) 등록함으로써 판정될 수 있다. 마찬가지의 접근 방법이 사용자 식별자 또는 보안 텍스트에 대하여 사용될 수 있다.
등록 발신자(예를 들면, 공유 자원 또는 공유 자원을 호스팅하는 서버)에 의해서 서비스를 요구하는 호가 수신되는 경우, 클라이언트 호 또는 클라이언트 호출에 대한 정보는 이후의 검색을 위하여 (예를 들면, 메모리에) 저장될 수 있다. 예를 들면, 순차적으로 공유 자원이 발신자로서 등록하는 경우, 이러한 저장된 속성이 사용되는 것을 특정할 수 있다. 이러한 방법으로, 공유 자원은 소정의 세션에 그 통지를 발신하기 위해 등록할 것을 바라는 것으로 특정할 수 있는데, 공유자원은 상기 동일한 세션을 위하여 동작한다.
또한, 속성은 보안 콘텍스트 등의 다른 소스로부터 모아질 수 있다. 예를 들면, 보안 콘텍스트는 시스템 서비스가 어느 사용자를 위해 실행되는지(예를 들면, 어느 사용자에 대하여 서비스가 구현되는지)를 표시할 수도 있다.
또한, 등록 호로부터의 정보를 모으거나 또는 호출자를 등록함으로써 추가 보안을 제공할 수 있는데, 이는 호출자가, 다른 세션, 사용자 또는 보안 콘텍스트에 대한 통지를 위해 청취하기를 원하는 것으로 특정한다는 사실을 확인하는데 사용될 수 있기 때문이다. 일부의 경우에(예를 들면, 관리 권한과 연관된 호에 대하여) 이러한 시나리오는 허용될 수 있지만, 기타 다른 경우에는 이러한 도청은 보안과 프라이버시의 바람직하지 않은 침해가 될 수도 있다.
실시예 13 - 등록에 의한 예시적 시스템 개관
예시적인 통지 시스템(700)이 도 7에 도시되어 있다. 시나리오(700)에서, 하나 이상의 클라이언트(702, 704)는 하나 이상의 서버(706, 708)를 이용하고, 여기서 서버는 하나 이상의 공유 자원을 클라이언트에 제공한다. 본 예에서, 복수의 클라이언트(701 및 704)는 공유 자원을 제공하는 복수의 서버(706, 708)로부터 수신을 요구한다. 추가적으로, 클라이언트(704)는 통지 서버(720)에 의해서 청취자 등록(716, 718)을 통해서 자신을 등록하고 서버(706)는 통지 서버(720)에 의해서 발신자 등록(722)을 통해 자신을 등록하고 다른 서버(708)는 통지 서버에 의해서 발신자 등록(724)을 통해 자신을 등록한다. 이 시나리오에서, 등록(722)을 가진 서버(706)에 의해서 통지가 생성되는 경우, 통지 서버(720)는 메시지의 지시가 0 이상의 클라이언트에게 발신되었는지를 판정하기 위해 등록(718, 716, 및 726)에 대하여 저장된 속성과 등록(722)에 대하여 저장된 속성을 비교한다.
본 예에서, 통지 서버(720)는 하나의 서버(706)를 호스팅하고 연관 등록(724)을 가진 원격 서버(708)를 지원한다. 다른 시나리오에서, 통지 서버가 복수의 서버를 호스팅하고 복수의 원격 서버를 지원하거나 또는 호스팅하여 지원한다. 예에서, 클라이언트(704)는 일부 청취자 등록(716, 718)을 가지고 있다. 이러한 복수의 클라이언트 등록은 (1) 동일한 서버로부터 상이한 유형의 통지를 수신하기 위해, (2) 동일한 서버에 의해서 호스팅되는 복수의 다른 공유 서비스로부터 복수의 다른 통지를 수신하기 위해, (3) 동일한 통지 서버에 의해서 호스팅되는 복수의 서버로부터 통지를 수신하기 위해, (4) 복수의 서버에 의해서 호스팅되는 공유 자원 또는 이들의 일부 조합으로부터의 복수의 통지를 수신하기 위해 사용될 수 있다.
비록 도시되어 있지 않지만, 서버는, 예를 들면, 상이한 통지 유형에 대한 통지를 발신하기 위해, 또는 서버에 의해서 호스팅되는 복수의 공유 자원으로부터 통지를 발신하기 위해 동일한 통지 서버에서 복수의 발신자 등록을 등록할 수 있다. 또한, 서버는, 예를 들면, 서버에 의해서 제공되는 자원을 공유하는 클라이언트가 잠재적으로 다른 통지 서버에서 청취자로서 등록되길 기대하는 경우 복수의 통지 서버(도시되지 않음)에서 발신자로서 등록할 수 있다.
실시예 14 - 예시적 터미널 서버 통지 시스템
터미널 서버 시나리오에서 사용하기 위한 다른 예시적 통지 시스템(800)이 도 8에 도시되어 있다. 시스템(800)에서, 터미널 서버(814)는 복수의 세션(802, 804, 806) 및 서버(예를 들면, 공유 자원을 제공함)(820)를 호스팅하는 통지 서버(822)를 실행한다. 통지 서버(822)는 터미널 서버(814)의 외부에서 선택적으로 실행될 수 있다.
사용자가 터미널 서버 활성화된 컴퓨터에 로그인 하는 경우, 세션이 사용자에 대하여 개시된다. 세션에 대하여 실행하는 프로세서는 단일 세션 식별자와 연관되어 있다. 특정 세션 식별자(즉 "0")는 콘솔과 연관되어 있고, 콘솔 세션(802)에 대한 사용자 인터페이스(808)는 통상적으로 국부적으로 표시된다. 세션(예를 들면, 프린팅 등의 시스템 서비스)에 대하여 실행하는 임의의 프로세서는 다른 세션을 위해 실행하는 경우에도 콘솔과 연관된다.
본 예에서, 원격 사용자가 네트워크(816)를 통해 원격 터미널(810)로부터 터미널 서버로 로그인되는 경우, 프로세싱은 세션 식별자"1"이 할당된 세션(804)(예를 들면, 프로세서)에서 성취된다. 터미널 서버(814)에의 전용 접속을 통해 원격 터미널(812)로부터 터미널 서버에 다른 사용자가 로그인되고, 프로세싱은 세션 식별자 "2"가 할당된 세션(806)(예를 들면, 프로세스)에서 성취될 수 있다. 이러한 터미널 서버 시나리오에서, 터미널 서버(814, 818)에서 실행하는 복수의 클라이언트 세션(802, 804, 806)은 공유 자원(820)을 액세스한다. 본 예에서, 공유 자원(820)은 통지 서버(822)에 의해서 호스팅된다.
세션(802, 804, 806)은 적절한 통지(예를 들면, 세션 등록에 대한 통지)를 수신하기 위해 청취자 등록(830)을 생성할 수 있다. 등록을 생성하기 위해 요구를 수신 시, 요구가 개시되는 세션이 (예를 들면, RPC 서브시스템을 통해서) 판정될 수 있다. 이러한 방법으로, 세션은 등록이 관리자에 대하여 생성되지 않는한 다른 세션(예를 들면, 다른 세션에서의 구현)으로부터 통지를 위한 등록이 방지될 수 있다. 또한, 세션은 상기 세션과 관계없이 동일한 사용자에 대하여 통지를 수신하길 원하는 것으로 특정할 수 있다. 다시, 등록이 관리자에 대하여 생성되지 않는한 다른 사용자에 대한 통지를 위해 등록하는 것을 방지하기 위하여, 상기 요구와 연관된 사용자가 판정될 수 있다.
다음으로, 세션에 대한 프로세싱이 서버(820)를 액세스하는 경우, 서버(820)과 연관된 공유 자원은 통지를 생성하고자 할 수 있다. 적절한 발신자 등록(826)은 통지가 발신되기 전에 또는 동시에 생성될 수 있다. 이 통지는 등록(826)을 통해 발신될 수 있다.
서버(820) 또는 공유 자원이 콘솔(820)과 연관되는 경우(예를 들면, 시스템 서비스임), 그것은 다른 세션(804, 806)을 위해 개시된다. 세션이 서버(820)에 그의 호를 만드는 경우, 상기 호를 개시하는 세션과 관련된 세션 식별자가 (예를 들면, 스레드 국부 저장 장치에) 저장될 수 있다. 세션은 상기 호에 대한 정보를 얻음으로써 판정될 수 있다. 다음으로, 서버(820)에 관련된 공유 자원은 발신자로서 등록을 바라는 경우, 적절한 세션 식별자는 저장된 식별자를 참조하여 발신자 등록과 연관될 수 있다. 이러한 방법으로, 공유 자원은 콘솔보다는 개시된 세션에 통지를 발신할 수 있다.
서버(820)에 대한 임의의 공유 자원으로부터 통지를 수신 시, 통지 서버(822)는, 일치하는 청취자 속성을 갖는 등록 세션에 대한 통지의 지시를 전송할지의 여부를 판정하기 위해서, 세션에 의해서 청취자 등록(830)에 등록된 속성과 발신자 등록(826)에서의 공유 자원(820)에 대하여 등록된 속성을 비교한다. 예를 들면, 청취자 등록이, 청취자와 동일한 세션에 관련된 통지가 요구되는 것임을 지시하는 경우 이러한 통지가 발신된다. 또는, 청취자와 동일한 사용자에 관련된 통지가 소망되는 것임을 청취자 등록이 지시하는 경우, 이러한 통지가 발신된다.
이는 다수의 클라이언트 세션이 공유 자원을 공유할 수 있도록 하며, 통지를 생성하는 경우 어느 세션에서 공유 자원이 실행되는지에 관계없이 통지를 수신할 수 있도록 한다. 예를 들면, 세션(804)은 서버(820)에 의해서 제공되는 연관 공유자원(예를 들면, 외부 자원에 대한 서버)에 적절한 요구를 발신함으로써 태스크가 외부 자원(828)에 의해서 수행되는 것을 요구할 수도 있다. 외부 자원(828)은 서버(820)에 의해서 제공되는 공유 자원에 메시지를 발신하는 경우, 서버(820)에 의해서 제공되는 공유 자원이 콘솔 세션(802) 하에서 실행된 경우에도 적절한 세션(804)으로 메지시의 지시가 되돌려져 발신될 수 있다. 결과적으로, 메시지는, 세션 "0" 콘솔 대신에 공유 자원을 요구한 세션(804)과 연관되는 사용자 인터페이스(810)에 발신될 수 있다.
어떤 경우에 있어서는, 이러한 접근 방법은 향상된 보안을 제공할 수 있다. 예를 들면, 세션(804)의 사용자가, 외부 자원(828)과 연관된 활동(activity)을 다른 사용자가 알기를 바라지 않는 경우, 자원(828)과 관련하는 메시지가 콘솔에 발신되면, 사용자 인터페이스(808)에 발신되면, 보안 또는 프라이버시가 침해될 수 있다. 또한, 프로세싱을 개시한 사용자 대신에 메시지가 콘솔에 발신되는 경우, 일부 경우에서 콘솔 사용자 인터페이스(808)에 있는 사용자는 프로세싱에 관련된 옵션(예를 들면, 취소 또는 제거 처리)을 제공받을 수 있다. 프로세싱을 개시한 사용자 인터페이스(810)에 메시지의 표시를 활성시킴으로써, 향상된 보안 및 프라이버시가 제공될 수 있다.
실시예 15 - 프린팅 시나리오에서 외부 터미널 서버 통지 시스템
도 8에 나타낸 예시적인 통지 시스템(800)은 터미널 서버 환경에서 세션 또는 적절한 사용자에게 프린팅과 관련하는 메시지를 라우팅하기 위해 프린트 시나리오에 사용될 수 있다.
예를 들면, 새로운 세션(804)을 개시하는 경우, 쉘(shell)(예를 들면, 데스크탑)용 청취자 등록(824)은, (예를 들면, 프린팅 통지를 나타내는 통지 유형을 특정함으로써) 프린팅과 관련된 세션에 대한 임의의 메시지를 쉘이 수신하길 원하는 것을 지시하기 위해 생성될 수 있다.
다음으로, (예를 들면, 사용자 요구에 의해서) 프린팅이 개시되는 경우, 프린팅 서비스(820)가 호출되어 세션 0에서 동작한다. 그러나, 프린팅 서비스가 다른 세션(804)을 위하여 호출되어 있는 경우, 호출 세션(804)과 연관된 식별자가 메모리(예를 들면, 스레드 국부 저장 장치)에 저장될 수 있다.
외부 자원(828)은 메시지(예를 들면, 용지 없음 통지)를 (예를 들면, 프린트 드라이버를 포함하는) 프린터 서비스(820)에 발신하여 프린터에 용지 없음을 지시하는 프린터가 될 수도 있다. 프린터 서비스(820)는 발신자 등록(826)을 생성할 수 있고 (예를 들면, 프린팅 통지를 지시하는 통지 유형을 특정함으로써) 프린팅에 관련된 통지를 발신한다. 통지는 (예를 들면, 저장된 세션 식별자를 회수함으로써) 프린팅이 개시된 세션(804)을 지시할 수 있다. 통지는 그래픽 메시지(예를 들면," 프린터 용지 없음" GUI)의 지시를 포함할 수 있는데, 이는 (예를 들면, 프린팅을 개시한 동일한 세션에 대하여) 적절한 청취자에게 전송된다.
다음으로, 세션은, 세션 "0" 콘솔 대신에 공유 자원(예를 들면, 프린트 작업)을 요구한 세션(804)과 연관되는 사용자 인터페이스(810)에 적절한 사용자 인터페이스(예를 들면, 대화 박스)를 발신하도록 통지를 처리한다. 사용자 인터페이스 표시는 정정 세션 사용자 인터페이스에 표시된다.
소망에 따라서, 양 방향 통신이 이하 기술된 특징에 의해서 성취될 수 있다. 본 방법에서, 사용자는 옵션을 선택할 수 있고 그 옵션은 통지 개시자(notification originator)(820)로 되돌려 통신될 수 있다.
실시예 16 - 사용자 시나리오를 스위칭하는 예시적인 복수의 세션 통지 시스템
사용자 시나리오를 스위칭시 사용하는 예시적 통지 시스템(900)이 도 9에 도시되어 있다. 본 예(900)에서, 컴퓨터(902)는 현재 세션(904)을 실행하고 다른 세션(906, 908)에 대해서는 세이브된 상태(state saved)를 갖는다. 사용자는 스위치 명령을 (예를 들면, 포인터 또는 키보드 액션을 통해서) 호출함으로써 다른 활성 세션(906, 908)에 대하여 스위칭을 행할 수 있다. 실제, 각 세션은 다른 사용자 이름과 연관되지만 스위칭은 현재 사용자를 로그아웃시키지 않고 성취될 수 있다.
공유 자원(912, 916)을 이용하기 위해서 컴퓨터가 새로운 세션을 만드는 경우, 세션(904, 906, 908)은 통지를 수신하기 위해 적절한 (예를 들면, 그의 세션에 관련된) 등록(922)을 생성한다. 도시한 바와 같이, 공유 자원(912, 916)은 세션(904, 906, 908)에서 사용가능하다. 공유 자원(912, 916)이 통지를 세션(904, 906, 908) 중 어느 것에 발신하기 원하는 경우(예를 들면, 세션이 그를 호출함), 공유 자원(912, 916)은 적절한 발신자 등록(918, 920)을 생성할 수 있다. 공유 자원이 메시지를 생성하는 경우, 통지 서버(914)는 세션(922)에 의해서 등록된 속성과 공유 자원(918, 920)에 의해서 등록되는 속성이 일치하는 지(예를 들면, 세션 식별자가 일치하는지)를 판정한다. 만일 그렇다면, 통지의 지시(예를 들면, 통지그 자체)는 대응하는 세션(904, 906, 908)으로 전송된다.
예를 들면, 활성 세션은 공유 데이터 자원에 대하여 액세스를 요구할 수 있고 비활성 상태가 된다(예를 들면, 컴퓨터(902)가 다른 사용자로 스위칭됨). 그 다음 데이터베이스는 비활성 세션에 대하여 사용자 인터페이스 통지 메시지인 통지를 생성할 수 있다. 이러한 이벤트에서, 통지 서버는 등록 속성으로부터 메시지(예를 들면, 통지)가 현재 활성 세션이 아닌 비활성 세션으로 넘겨주도록 의도된 것인지를 결정하고, 그렇게 한다. 다음에 의도된 세션은 활성화 되고 활성 표시(910)로 도시되며, 재활성 세션(reactivated session)은 메시지의 지시를 표시한다.
실시예 17 - 예시적 필터
도 10은 예시적 통지 서버(1000)를 나타낸 도면이다. 본 예에서, 클라이언트(도시되지 않음)는 공유 자원으로부터 통지를 수신하기 위해 청취자 등록(1002)을 생성하고 공유 자원(도시되지 않음)은 통지를 등록 청취자에게 발신하기 위해 발신자 등록(1004)을 생성한다. 여기에서 기술한 임의의 실시예에서, 공유 자원에 의해서 통지가 생성되는 경우, 필터(1006)는 대응하는 청취자 등록에 대한 속성과 상기 통지가 일치하는지를 판정하기 위해 사용될 수 있다. 필터에 의해서 고려되는 속성은 여기에서 기술한 청취자 또는 발신자 속성 중 임의의 것을 포함할 수 있다.
일치는 각종 방식으로 정의 될 수 있다. 예를 들면, 2개의 등록은 속성의 서브세트가 일치하는 경우 일치로서 정의될 수 있다. 일치는 적어도 식별 콘텍스트 속성(예를 들면, 등록이 동일한 속성을 가지는지)에 기초하여 이루어질 수 있다. 어떤 경우에는, 일치를 위해 임의의 속성이 고려될 수 있다. 예를 들면, 등록은 특정 사용자에 대한 어떤 세션에서의 통지가 전송되어야 하는 것을 지시할 수 있다. 사용자에 대한 어떤 세션에서의 등록은 그러한 경우에 일치를 고려한다.
하나의 시나리오에서, 클라이언트 구성 요소는 구것이 모든 유형의 통지에 대하여 관심이 있다는 것을 특정할 수 있다(예를 들면, 청취자 등록에 대한 "NULL" 통지 유형을 특정함으로써). 그 필터는 모든 유형의 통지를 등록 청취자에게 전송한다.
또한, 일부 속성은 관련 통지 및 등록의 행위에 영향을 줄 수 있다. 예를 들면, 발신자 등록 속성(예를 들면, 통지 유형)은 수신 통지를 청취자가 어떻게 처리하는 지를 지시할 수 있고 통지에 대하여 청취자가 어떻게 등록하는 지에 대하여 영향을 줄 수 있다. 예를 들면, 등록 동안, (예를 들면, 어떤 유형의 통지가 유용하거나 바람직한지에 대하여 발신자 등록과 협상함으로써) 클라이언트는 사용자 등록을 설정할 때 이러한 정보를 사용할 수 있다. 통신 유형 속성은 클라이언트와 공유 자원 사이의 통신이 양 방향인지 또는 단 방향인지를 지시할 수 있다. 통지 유형 속성은 통지의 유형을 지시할 수 있고, 응답은 공유 자원 또는 둘 다에 의해서 기대될 수 있다. 또한 통지 유형 속성은 통지를 처리하기 위해서 사용되는 논리를 식별하도록 하는 역할을 할 수 있다.
하나의 시나리오에서, 클라이언트는 클라이언트 보안 콘텍스트 식별자의 형태로 청취자 속성을 등록한다. 이 보안 콘텍스트 식별자는 클라이언트로부터의 호를 (예를 들면, 원격 프로시저 호"RPC(remote procedure call)" 시스템을 통해) 검사함으로써 판정될 수 있다. 공유 자원은 클라이언트로부터 서비스 요구를 받아들이는 경우, 공유 자원은 클라이언트의 보안 콘텍스트에서 (예를 들면, 구현(impersonation)을 통해서) 동작할 수 있다. 공유 자원이 통지를 생성하는 경우, 통지는 (예를 들면, 메시지에 식별자를 포함시키거나 또는 공유 자원이 등록을 위해 호출된 경우 식별자를 판정함으로써) 공유 자원이 동작하는 보안 콘텍스트(예를 들면, 보안 콘텍스트 식별자)와 연관된다. 이 시나리오에서, 공유 자원의 보안 콘텍스트가 서비스를 요구하는 클라이언트의 보안 콘텍스트와 일치하기 때문에 통지의 지시가 클라이언트에게 전송된다.
클라이언트는 통지를 나타내는 온-스크린 사용자 인터페이스를 생성하기 위해 통지를 사용할 수 있다. 하나의 이러한 예에서, 클라이언트는 정정 메시지를 표시하는 루틴(routine)을 (예를 들면, 동적 링크 라이브러리"DLL(dynamic link library)"를 특정함으로써) 식별하기 위해 메시지에 포함된 통지 유형을 사용한다. 통지를 나타내는 온-스크린 인터페이스는 터미널이 국부적이든지 또는 원격이든지 클라이언트와 연관된 터미널에 표시될 수 있다.
구현(impersonation)은 스레드(thread)를 소유한 프로세스의 보안 콘텍스트와 다른 스레드의 보안 콘텍스트에서 실행할 수 있는 스레드의 능력이다. 클라이언트 보안 콘텍스트를 동작하는 경우, 서버는 클라이언트가 된다. 이는 클라이언트의 식별에 대하여 액세스 체크가 수행될 수 있게 한다. 액세스 체크를 위해 클라이언트 식별을 사용함으로써 클라이언트 허용 레벨에 따라 엑세스가 제한되거나확장된다.
다른 시나리오에서, 클라이언트는 터미널 세션 식별자를 따라 클라이언트 보안 콘텍스트의 형태로 청취자 속성을 등록한다. 속성은 클라이언트로부터의 호에 기초하여 얻을 수 있다(예를 들면, RPC 시스템을 통해서). 이러한 시나리오에서, 공유 자원이 클라이언트로부터 서비스 요구를 받은 경우, 공유 자원은 클라이언트의 보안 콘텍스트에서 동작한다. 그러나, 할당된 세션은 콘솔 세션이 될 수도 있다. 따라서, 호출 클라이언트의 세션 식별자는 이후의 검색을 위하여 저장될 수 있다.
다음으로, 공유 자원이 통지를 생성하는 경우, 통지 메시지 및/또는 공유 자원에 대한 발신자 등록은 공유 자원이 동작하는 보안 콘텍스트 및 공유 자원을 요구한 터미널 세션(예를 들면, 공유 자원이 실행하는 터미널 세션)을 포함한다. 공유 자원의 보안 콘텍스트와 공유 자원에 대하여 저장된 터미널 세션이 등록된 청취자 속성과 일치하기 때문에, 통지 서버 필터는 통지의 지시가 클라이언트에 전송될 수 있도록 한다.
실시예 18 - 예시적 사용자 필터
이하 실시예는 각종 프린트 시나리오에서의 필터를 나타내지만, 그 기술은 공유 자원에 대한 통지가 유용한 다른 시나리오에 적용할 수 있다. 예시적 통지 시스템(1100)이 도 11에 도시되어 있다. 본 시나리오(1100)에서, 클라이언트는 프린터 스풀러 서버(1102)의 형태를 갖는 통지 서버에 의해서 호스팅되는 프린트 구성요소(예를 들면, 프린터 드라이버, 포트 모니터, 언어 모니터 등)의 형태를 갖는공유 자원으로부터 통지를 수신하도록 청취자 등록(1122, 1124)을 가지고 있다.
본 예에서, 청취자 등록(1122, 1124)은 사용자 식별자("Joe"와 "Mary"로 도시되어 있지만 사용자를 식별하기 위한 다른 형태가 될 수 있음)의 형태로 식별 콘텍스트 식별자(identity context identifier)에 의해 설정된다. 사용자 Joe는 두개의 터미널 세션을 동작시키는데, 두 서비스 모두가 스풀러 서비스(1102)에서 (예를 들면, 동일한 시간 또는 다른 시간에) 구성 요소(1112, 1114)가 실행되도록 서비스를 요구한다. 구성 요소(1112, 1114)는 Joe를 구현하고 "0"과 다른 세션과 연관되지만, 이들은 시스템 서비스에 의해서 호스팅되기 때문에 콘솔 세션(즉, "0")에서 동작한다. 본 예에서, 구성 요소(1112, 1114)가 통지를 발신하기를 원하는 경우, 이들은 적절한 등록을 생성하고 통지를 발신한다. 등록이 사용자 Joe를 특정하고 있기 때문에 구성 요소(1112, 1114) 중 어느 하나 또는 둘 다에 대한 통지는 청취자 등록(1112)과 연관되는 클라이언트로 통과된다.
실시예 19 - 예시적 보안 콘텍스트 필터
예시적 통지 시스템(1200)이 도 12에 도시되어 있다. 본 시나리오(1200)에서, 클라이언트는 프린터 스풀러 서버(1202)의 형태를 갖는 통지 서버에 의해서 호스팅되는 프린트 구성요소(예를 들면, 프린터 드라이버, 포트 모니터, 언어 모니터 등)의 형태를 갖는 공유 자원으로부터 통지를 수신하도록 청취자 등록(1222, 1224)을 가지고 있다.
본 예에서, 청취자 등록(1222, 1224)은 사용자 식별자(예를 들면, "ABC" 및 "DEF"로 도시된 SID이지만 사용자를 식별하기 위한 다른 형태가 될 수 있음)의 형태로 식별 콘텍스트 식별자에 의해 설정되어, 특정 보안 콘텍스트에 대한 통지가 수신되는 것으로 특정된다. 두개의 터미널 세션은 보안 콘텍스트 ABC 하에서 동작하고 요구된 양 세션은 스풀러 서버(1202)에서 (예를 들면, 동일한 시간 또는 다른 시간에서) 구성요소(1212, 1214)가 실행되도록 하는 서비스를 요청했다. 구성 요소(1212, 1214)는 보안 콘텍스트 ABC에서 동작하지만 이들은 시스템 서비스에 의해서 호스팅되기 때문에 콘솔 세션(즉, "0")과 연관되어 있다.
본 예에서, 구성 요소(1212, 1214)가 통지를 발신하길 원하는 경우, 이들은 적절한 등록을 생성하고 통지를 발신한다. 등록이 보안 콘텍스트 ABC를 특정하고 있기 때문에 구성 요소(1212, 1214) 중 어느 하나 또는 둘 다에 대한 통지는 청취자 등록(1212)과 연관된 클라이언트로 전달된다(pass).
실시예 20 - 예시적 세션 필터
예시적 통지 시스템(1300)이 도 13에 도시되어 있다. 본 시나리오(1300)에서, 클라이언트는 프린터 스풀러 서버(1302)의 형태를 갖는 통지 서버에 의해서 호스팅되는 프린트 구성요소(예를 들면, 프린터 드라이버, 포트 모니터, 언어 모니터 등)의 형태를 갖는 공유 자원으로부터 통지를 수신하도록 청취자 등록(1322, 1324)을 가지고 있다.
본 예에서, 청취자 등록(1322, 1324)은 세션 식별자(예를 들면, "1" 및 "2"로 도시된 터미널 서버이지만 특정 세션에 대한 통지가 수신되는 것을 특정하기 위해 세션을 식별하기 위한 다른 형태가 될 수 있음)의 형태로 식별 콘텍스트 식별자에 의해 설정된다. 두개의 구성 요소(1304, 1312)는 스풀러(1302)에서 동작하고구성 요소는 이들이 시스템 서비스에 관련되어 있기 때문에 콘솔 세션 하에서 (예를 들면, 동일한 시간 또는 다른 시간에) 동작한다. 그러나, 구성 요소(1304, 1312)는 (예를 들면, 스풀러(1302)가 동작하는 기계와 동일하거나 또는 다른 기계에서 표시되는 사용자 인터페이스를 갖는) 다른 세션을 위하여 동작하고, (예를 들면, 여기에서는 예로 설명하고 있는 바와 같이) 구성 요소가 동작하는 세션이 저장된다.
본 예에서, 구성 요소(1312, 1314)가 통지를 발신하기를 원하는 경우, 이들은 적적한 등록을 생성하고 통지를 발신한다. 제1 세션을 위해 실행하는 구성요소(1312)에 대한 통지는 제1 세션을 위한 등록(1322)과 연관된 클라이언트에게 전송되고 제2 세션을 위해 실행하는 구성 요소(1314)에 대한 통지는, 제2 세션에 대한 등록(1324)와 연관된 클라이언트에게 전송되는데, 등록이 통지와 연관된 세션과 일치를 특정하기 때문이다.
실시예 21 - 혼합 속성 필터(Mixed Property Filters)의 등록
필터는 여기에 기술된 예시적 속성 중 하나 이상의 임의의 조합을 특정할 수 있다. 예시적인 통지 시스템(1400)이 도 14에 도시되어 있다. 본 시나리오(1400)에서, 클라이언트는 프린터 스풀러 서버(1402)의 형태로 통지 서버에 의해서 호스팅되는 프린트 구성요소(예를 들면, 프린터 드라이버, 포트 모니터, 언어 모니터 등)의 형태로 공유 자원으로부터 통지를 수신하도록 청취자 등록(1422, 1424)을 가지고 있다.
본 예에서, 청취자 등록(1422)은 세션 1에서 유형이 "프린트"인 경우 사용자Joe와 관련하는 통지를 수신하도록 설정된다. 청취자 등록(1424)은 유형이 "프린트"이면 사용자 Mary에 관련하는 통지를 수신하도록 설정된다. 실제 속성값(예를 들면, Joe, Mary, 1, 및 프린트)은 다른 형태가 될 수 있다. 두개의 구성 요소(1404, 1412)는 스풀러(1402)에서 동작하고 이들 구성 요소는 시스템 서비스와 연관되어 있기 때문에 콘솔 세션 하에서 (예를 들면, 동일한 시간 또는 다른 시간에) 동작한다. 그러나, 구성 요소(1404 및 1412)는 다른 세션을 위하여 동작하고 구성 요소가 동작하는 세션이 (예를 들면, 여기에서 예시적으로 기술된 바와 같이) 저장된다.
본 실시예에서, 구성 요소(1412, 1414)가 통지를 발신하길 원하는 경우, 이들은 적절한 등록을 생성하고 통지를 발신한다. 등록 프로세서의 부분으로서, 통지 자체의 부분으로서, 또는 일부 다른 수단을 통해서, 구성 요소(1412, 1414)는 통지 유형을 특정할 수 있다. 본 실시예에서, 두 구성 요소(1412, 1414)는 유형 "프린트"의 통지를 발신한다.
사용자 Joe 및 제1 세션을 위하여 실행되는 구성 요소(1412)에 대한 통지는, 통지에 대한 일치가 존재하기 때문에, 제1 세션에 대한 등록(1422)과 연관되는 클라이언트에 전송된다. 사용자 Mary 및 제2 세션을 위하여 실행되는 구성 요소(1414)에 대한 통지는, 통지에 대한 일치가 존재하기 때문에 등록(1424)과 연관되는 클라이언트에 전송된다. "프린트" 이외의 다른 유형의 통지가 발신되면, 이들은 일치가 존재하지 않기 때문에 등록(1422, 1424)에 대하여 전송되지 않는다.
도시되지 않은 다른 시나리오에서, 클라이언트 구성 요소는 복수의 필터에청취자를 등록하고, 공유 자원은 복수의 자원으로 발신자를 등록한다. 하나의 이러한 시나리오에서, 필터 방법은 통지를 전송하기 전에 복수의 속성이 일치할 것을 요구한다. 예를 들면, 클라이언트는 세션 식별자, 보안 식별자, 컴퓨터 식별자 및 통지 유형과 같은 일치하는 필터 속성을 가진 통지만이 전송되도록 등록을 설정할 수 있다.
실시예 22 - 관리자 및 속성 필터
도 15는 도 14의 예시적인 통지 시스템(1400)의 예를 나타낸 도면이다. 그러나, 본 예에서, 관리자 권한을 가진 사용자는 등록(1526)을 생성하고, 이는 임의의 유형의 임의의 세션에서의 임의의 사용자에 대하여 등록을 수신한다. (예를 들면, 특정 사용자, 특정 세션 등에 대한 통지를 수신하기 위해서) 다른 관리자 등록이 생성될 수 있다. 이 시스템(1400)은 관리자의 특권에 기초하여 이러한 등록을 관리자가 생성할 수 있게 한다.
시스템(1400)은 상술한 바와 같이 진행하지만, 또한 통지를 등록(1526)과 연관된 클라이언트에 발신한다. 이러한 방법으로, 관리자는 사용자, 보안 콘텍스트, 또는 세션에 관계없이 등록을 모니터링 할 수 있다.
또한, 관리자는 다른 사용자/세션에 대한 통지를 수신하도록 비관리자 클라이언트(non-administrative client)를 등록할 것을 허락할 수 있다.
이 방법에서, 통지에 대하여 생성된 연관된 사용자 인터페이스는 관리자가 이러한 통지를 수신하기 위해 등록된 터미널 단자와 연관된 국부 또는 원격 기계에 연결될 수 있다.
실시예 23 - 채널 및 독립 수명(independent lifespan)
"채널"이라 불리는 수단은 통신 통지를 수용하는데 사용될 수 있다. 소망에 따라, 이러한 채널은 양 방향으로 설정되어 클라이언트와 고유 자원 간 양 방향 통신이 성취될 수 있다. 채널은 발신자 등록의 부분으로서 구현될 수 있다. 따라서, 기술된 채널 특성은 발신자 등록(예를 들면, 발신자 등록 구성 요소)에서 수행될 수 있다.
공유 자원 구성 요소는 임의의 청취자 등록이 존재하는지에 관계없이 채널 구성 요소를 오픈할 수 있다. 채널이 오픈된 후에, 공유 자원은 채널 구성 요소를 통해 통지를 발신할 수 있다. 등록 청취자가 존재하지 않으면, 채널 구성 요소 인터페이스 호(channel component interface call)는 여전히 성공적이지만 호출력(예를 들면, HRESULT)은 통지를 받은 청취자가 없다는 것을 지시한다.
예를 들면, 스풀러에 의해서 로딩되는 프린팅 구성 요소는 어떤 채널이 개발되어 있는지에 무관하게 통지를 발신하기 위해서 서버(국부 또는 원격) 또는 프린터에 등록될 수 있다. 마찬가지로, 클라이언트 구성 요소는 오픈 채널이 존재하는지에 무관하게 통지를 수신하도록 서버(국부 또는 원격)에 의해서 또는 프린터에 등록될 수 있다. 한번 채널이 오픈되고 통지가 발신되면, 청취 클라이언트는 통지를 수신하고 양 방향 통신의 경우에는,응답을 되돌려 보내기 위한 채널 구성요소 인터페이스를 수신한다. 따라서, 청취자 구성 요소의 수명과 채널 구성 요소의 수명은 독립적이다.
채널 특성은 필터링 프로세스의 부분으로서 사용될 수 있다(예를 들면, 채널은 특정 유형의 통지를 발신하도록 설정될 수 있다). 양방향 시나리오의 경우 필터는 청취자가 관심을 가지는 응답의 유형을 특정하기 위해 사용될 수 있다.
실시예 24 - 공유 자원과 청취자에 대한 인터페이스
예시적 통지 시스템(1600)이 도 16에 도시되어 있다. 본 예에서, 공유 자원(1604)을 호스팅하는 통지 서버(1602)가 도시되어 있다. 클라이언트(1606, 1608) 및 공유 자원(1604)은 동일한 기계든지 또는 다른 기계든지 채널과 청취자에 등록된 속성의 비교에 기초하여 일치된다.
하나의 시나리오에서, 클라이언트는 클라이언트로부터 수신되는 요구를 비동기적으로 처리하는 서버의 공유 자원으로부터의 서비스를 요구한다. 클라이언트 구성 요소(1606, 1608)는 요구를 서버에 발신하고 서버가 서비스를 실행하길 기다리지 않는다. 오히려, 클라이언트 구성 요소(1606)는 서버로부터의 이 후 시간에 올 수 있는 통지에 대하여 등록한다 일 예에서, 클라이언트(1606)는 청취자 속성을 포함하는 청취자 등록(1610, 1612)을 등록한다. 클라이언트 구성 요소는 서버에서 국부적으로 또는 네트워크 상에서 동작할 수 있다. 하나의 이러한 시나리오에서, 네트워큰 상이든 국부적이든(예를 들면, RPC, COM, DCOM 등) 프로세스간 통신을 지원하기 위해서 동작 시간 환경에 의해서 통신(1614)이 이루어진다.
클라이언트 구성 요소는 다른 프로세스 공간 또는 공유 자원의 프로세스 공간에서 동작할 수 있다. 클라이언트 구성 요소는 공유 자원보다는 동일한 기계 또는 다른 기계에서 동작할 수 있다. 하나의 이러한 시나리오에서, 스풀러는, 상이한 세션에서 국부적으로 동작하는 애플리케이션에 스풀러 호스팅 구성 요소(예를들면, 프린트 프로세서, 드라이버, 모니터 등)가 통지를 발신할 수 있게 하는 인터페이스를 지원하고, 다른 시나리오에서, 구성 요소는 국부 및 원격 클라이언트 둘다에 통지를 발신할 수 있다. 하나의 이러한 시나리오에서, 상기 통지는 프린트 취급 기반(print handle based)이며 이는 스풀러 호스팅 구성요소가 프린트 취급을 오픈한 세션에 통지가 발신되도록 요구할 수 있다는 것을 의미한다. 스풀러는 프린트 구성 요소가 통지를 발신하게 할 수 있는 한 세트의 인터페이스, 및 통지를 수신하기 위해서 애플리케이션(예를 들면, 세션, 클라이언트, 구성 요소 등)이 등록될 수 있게 하는 한 세트의 인터페이스를 지원한다.
이 시나리오에서, 공유 자원(1604)은 통지 서버(1602)에 의해서(예를 들면, 통지 서버 내에서 동작함) 호스팅된다. 공유 자원(1604)이 통지를 발신하기를 원하는 경우 채널 구성 요소(1616)를 생성한다. 공유 자원은 공유 자원으로부터 통지를 수신하도록 등록된 청취자 등록("청취자 구성 요소"라 부르기도 함)의 논리 리스트(1620)와 오픈된 채널 구성 요소의 논리 리스트(1618)를 유지한다. 이 경우, 프로세스간 통신(1614)은 프로세스를 횡단하는 통지 데이터를 발신하는데 사용된다.
청취자 구성 요소(1612)와 채널 구성 요소(1616)는 이들과 연관된 통지 유형, 통신 유형, 사용자 식별자, 세션 식별자, 및 기계 식별자를 기억한다. 통지 서버(1602)는 청취자 구성 요소와 채널 사이의 이들 속성을 일치시키는 논리를 구현하고 상기 데이터를 채널 속성을 일치시키는 이들 청취자에게만 발신한다.
이 시나리오에서, 청취자 구성 요소는 통지 서버가 통지 데이터에서 통과하도록 호출하는 ICallBack 인터페이스(1622)를 나타낸다. 채널 구성 요소는 공유 자원(1604)이 통지 데이터를 발신하기 위해 호출하는 INotifychannel 인터페이스(1626)를 나타낸다. 양 방향 통신을 지원하기 위해서, 채널 구성 요소는 통지 서버가 청취자에 의해서 되돌려지는 통지에서 통과하도록 호출하는 ICallBack 인터페이스(1624)를 나타낸다.
본 시나리오에서, 공유 자원과 클라이언트 구성 요소 간 발신되는 통지 데이터는 통지 유형에 의해서 식별된다. 공유 자원과 클라이언트 구성 요소 사이의 통신은 단 방향 또는 양 방향이고 이는 통신 유형에 의해서 결정된다.
이 시나리오에서, 통지 서버는 공유 자원과 클라이언트 구성 요소가 실행하는 보안 콘텍스트를 인지하고 있다. 이러한 시나리오에서, 통지 서버는 터미널 세션 식별자를 인지하고 있고 호의 사용자 구현(impersonation)은 통지를 수신하기 위해 발신 또는 등록하도록 이루어진다. 이 시나리오에서, 이 정보는 채널 구성 요소와 청취자 구성 요소에 저장되어 있다.
특정 시나리오에서, 통지 서버는 클라이언트 구성 요소가 통지를 수신하기 위해 등록 및 비등록하게 하는 한 세트의 인터페이스를 정의 및 구현한다. 등록은 통지 서버 내의 구성 요소와 연관되지만, 클라이언트 구성 요소가 네트워크 상의 어느 곳에 존재할 수 있다. 공유 자원 구성 요소 당 복수의 등록이 지원된다. 이러한 시나리오에서, 통지 서버는 공유 자원이 통지 데이터를 발신하게 하는 한 세트의 인터페이스를 지원한다. 통지 서버는 등록 시에 클라이언트 구성 요소가 구현하여 알리는 한 세트의 인터페이스를 지원한다. 이들 인터페이스가 통지 서버에의해서 호출되어, 통지 데이터를 등록 청취자를 통해 클라이언트 구성 요소로 전달한다. 양 방향 통신을 위해서, 통지 서버는 클라이언트 구성 요소에 청취자를 통해 채널 구성 요소에 관하여 통지하는데, 통지 데이터는 채널구성요소를 통하여 들어온다. 이러한 시나리오에서, 클라이언트 구성 요소는 청취자를 통해 공유 자원으로 통지를 되돌려 보낸다.
하나의 이러한 시나리오에서, 공유 자원은 잠재적 청취자를 형성하기 위해서 필요한 통신 유형, 발신될 데이터의 통지 유형 및 서비스를 요구하는 청취자의 소망하는 보안 콘텍스트를 특정한다. 이 시나리오에서, 청취자 구성 요소를 통해 클라이언트 구성 요소는 통신 유형, 통지 유형, 및 공유 자원의 보안 콘텍스트를 특정한다. 통지 서버는 기준(criteria)을 일치시키고 이들 기준을 만족시키는 이들 청취자 구성 요소에만 통지를 발신한다.
실시예 25 - 통지 오브젝트를 발신하는 인터페이스
예시적인 통지 시스템(1700)이 도 17에 도시되어 있다. 이 시나리오에서, 공유 자원(1704)을 호스팅하는 통지 서버(1702)가 도시되어 있다. 이 시나리오에서, 클라이언트 프로그램(1706)과 공유 자원은 채널 구성 요소와 청취자에 등록된 속성의 비교에 기초하여 일치된다.
예를 들면, 채널(1705)이 등록하는 경우, 채널을 등록에 이용가능한 필터 속성의 유형을 "광고"한다. 클라이언트가 이후에 청취자(1710, 1712)를 등록하는 경우에 이들 광고된 필터 속성은 등록 동안 클라이언트에 의해서 사용될 수 있다. 일 예에서, 클라이언트는 필터 속성이 채널을 통해 이용가능하다는 사실(예를 들면, 통지 유형)을 채널이 광고하는 것으로 결정한다. 클라이언트는, 채널을 등록한 공유 자원(1704)에 의해서 통지가 발신되는 경우 그 유형의 통지에 대해 등록하기 위해서 이 "광고" 필터 속성을 사용한다.
하나의 시나리오에서, 통지 오브젝트(1714)는 공유 자원(1704)과 클라이언트 프로그램(1706) 사이에서 이동한다(flow). 통지 오브젝트는 INotifyChannel 인터페이스(1708)를 통해서 채널 구성 요소(1705)로 전달된다. 통지 서버(1702)는 청취자 구성 요소(1712)의 속성과 채널 구성 요소(1705)의 속성을 일치시키고, 통지 오브젝트(1714)를 청취자 구성 요소(1710)로 전송한다. 이하 도면에서의 청취자 구성 요소(1710, 1712)는 동일한 논리 등록을 나타낸다. 프로세스간 통신을 통해서, 통지 오브젝트(1714)는 클라이언트 프로그램(1706)에 의해서 액세스 가능한 청취자 구성 요소(1712)로 전달된다. 클라이언트 측에서, 채널 구성 요소(1718)의 논리 표시는 통신이 양 방향인 경우 청취자에게 표시된다.
상술한 인터페이스에 의해서, 통지 오브젝트(1714)는 공유 자원으로부터 클라이언트 프로그램(1706)으로 발신된다. 하나의 시나리오에서, 통지 서버는 그것에 어떠한 콘텐츠가 제공되더라도,그 컨텐트를 바이너리 오브젝트(예를 들면, 바이너리 라지 오브젝트 또는 BLOB) 형태로 발신한다. 이 시나리오에서, 클라이언트와 공유 자원에 대한 개발자는 통지 오브젝트의 콘텐츠가 무엇인지와 데이터 포맷을 미리 동의할 수 있다. 이 포맷은 글로벌 고유 식별자(globally unique identifier)를 가진 공유 자원과 클라이언트에 의해서 식별가능할 수 있다. 이 글로벌 식별자는 통지 유형에 대하여 등록하고 수신하기 위해 사용되는 필터 속성이될 수 있다. 이 방법에서, 통지 서버는 콘텐츠 또는 포맷을 인지하지 않고(예를 들면, 검사 또는 인식하는 논리를 가지지 않고) 데이터를 발신할 수 있지만 콘텐츠 또는 포맷은 클라이언트 및 공유자원 개발자들에 의해 미리 결정될 수 있다(pre-arranged). 이러한 시나리오에서, 통지 서버는 데이터 콘텐츠 및 포맷 부지(data content and format agnostic)라고 불린다.
하나의 시나리오에서, 스풀러는 청취자와 채널 사이에서 발신되는 데이터의 유형을 모른다. 클라이언트 구성 요소와 공유 자원은 채널을 통해 발신된 데이터에 대한 스키마(schema)를 정의한다. 실제로, 마크업 언어(markup language)(예를 들면, XML)가 데이터 스키마를 정의하는데 사용되지만 스풀러는 필터링을 위하여 통지 유형(예를 들면, GUID)을 사용하는 것 이외에는 데이터의 일체성을 위하여 데이터를 확인할 필요가 없다. 이는 구성 요소 프로그래머(예를 들면, 공유 자원 구성 요소, 청취자 구성 요소, 채널 구성 요소, 및 클라이언트 구성 요소)에게 다른 데이터 유형 및 포맷을 선택할 수 있는 자유를 준다. 이 시나리오에서, 통지 데이터는 BLOB로서 정의되고, 스플러는 데이터 콘텐츠를 확인할 필요가 없다. 통지 데이터를 처리하기 위해서, 적절한 논리(예를 들면, 통지 유형과 연관됨)가 호출될 수 있다. 예를 들면, 통지 유형은 통지 데이터를 처리하기 위한 기능을 가진 코드의 라이브러리(예를 들면, DLL)와 연관될 수 있다.
실시예 26 - 통지 응답을 발신하는 인터페이스
통지용 양 방향 통신을 지원하는 예시적인 통지 시스템(1800)이 도 18에 도시되어 있다. 도시된 바와 같이, 양 방향 통신을 위해서, 클라이언트프로그램(1801)은 표시된 논리 채널 구성 요소(1806)를 통해 공유 자원에 응답 통지를 발신한다. 이러한 시나리오에서, 클라이언트 구성 요소는 채널 구성 요소(1806)에 INotifyChannel 인터페이스를 호출한다. 채널 구성 요소는 논리 청취자 구성 요소(logical listener component)(1808)에서 ICallBack 인터페이스를 호출하여 응답 통지가 통지 서버(1802)로 되돌려 전송되도록 하는데, 여기서 청취자 구성 요소(1810)는 응답 통지(1814)를 공유 자원(1816)으로 전달하는 채널 구성 요소(1812)에서 ICallBack 인터페이스를 호출한다. 이 시나리오에서, 클라이언트 프로그램(1801)은 공유 자원(1816)을 호스팅하는 통지 서버(1802)로 응답 통지 오브젝트(1804)를 발신한다.
실시예 27 - 등록 및 통지를 지원하는 인터페이스
예시적인 통지 시스템은 한 세트의 인터페이스와 유형을 포함한다. 상술한 인터페이스는 각종 오브젝트(예를 들면, Washington의 Redmond의 Microsoft Corporation에 의해서 지원되는 the Component Object Model "COM" 에 따른 오브젝트)를 지원하는 환경에서 구현될 수 있다. COM을 지원하는 환경에서, 논의된 인터페이스는 IUnknown로부터 승계(inherit)할 수 있다. 그러나, 이 기술은 인터페이스를 지원할 수도 안 할 수도 있는 다른 오브젝트 모델(예를 들면, C++ 또는 C++형 오브젝트 모델 등)에 동일하게 적용될 수 있다.
본 예에서, 서비스는, 서비스 자체의 부분으로서 (예를 들면, Spoolsv.exe 등의 실행 가능한 스풀러) 또는 클라이언트 구성 요소의 부분으로서 스풀러에 의해서 구현되거나 또는 실행가능하게 링크된(예를 들면, Winsspool.drv) 기능성을 가리키는 일반용어(generic term)이다. 프린팅 구성 요소는 프린터 프로세서, 드라이버, 및 모니터 등의 실행 가능한 스풀러에서 로딩되는 구성 요소를 참조한다. 청취자 클라이언트는 클라이언트 구성요소이거나, 수신자가 프린트 통지를 수신하도록 등록된 스풀러 내부 구성 요소이다. 통지는, 청취자 클라이언트와 프린팅 구성 요소 사이의 통지 채널을 통해 발신되는 데이터이다. 채널 구성 요소는 프린팅 구성요소가 통지를 발신하기를 원하는 경우 프린팅 구성 요소에 의해서 생성된 구성 요소이다.
이하, 표 1에 나타낸 바와 같이, 공유 자원이 통지 서버에게 채널 구성 요소를 생성할 것을 요구하는 경우, 예시적인 세션 필터가 공유 자원(예를 들면 프린트 프로세서, 드라이버, 모니터 등)에 의해서 사용된다. 따라서, 세션 필터는 프린팅 구성 요소와 스풀러 프로세스 사이의 예시적인 인터페이스이다.
세션 필터
typedef enum {kAllNotification = 0,kPerSessionFilter = 1,kPerUserFilter = 2,} ESessionFilter
이 시나리오에서, 표 1을 참조하면, 세션 필터가, 공유 자원(예를 들면, 프린팅 구성 요소)에 의해 인터페이스 호에서 채널 구성 요소의 생성을 요구하는 통지 서버(예를 들면, 스풀러)에 대하여 특정되는 경우, 세션 필터는 생성 요구에서의 값으로 할당된다. 공유 자원이 세션 필터값 "1"로 설정되는 경우(즉, ESessionFilter = 1), 통지가 수신될 때, 스풀러는 프린터 취급을 오픈한 클라이언트 구성 요소와 동일한 세션 및 사용자 계정(account)에서 동작(또는 동일한 사용자 계정을 구현)하는 임의의 청취자에게 통지를 발신한다. 공유 자원을 필터값 "2"로 설정하는 경우(즉, ESessionFilter = 2), 통지가 수신될 때, 스풀러는 프린터 취급을 오픈한 클라이언트 구성 요소와 동일한 사용자 계정에서 동작(또는 동일한 사용자 계정을 구현)하는 임의의 청취자에게 통지를 발신한다. 공유 자원이 필터값 "0"으로 설정되는 경우(즉, ESessionFilter = 0), 통지가 수신될 때, 스풀러는 프린팅 구성 요소 또는 서버로부터의 통지 수신에 관심을 가지는(즉, 등록하는) 임의의 청취자에게 통지를 발신한다.
이 시나리오에서, 표 1을 참조하면, 세션 필터가 청취자 구성 요소의 생성을 요구하는 클라이언트에 의해 인터페이스 호에서 특정되는 경우, 세션 필터는 생성 요구에서의 값으로 할당된다. 클라이언트 구성 요소가 세션 필터값 "1"로 설정되는 경우(즉, ESessionFilter = 1), 통지가 세션 "1"로부터 수신될 때, 스풀러는 세션 "1"으로 등록된 클라이언트 구성 요소에 통지를 발신한다. 클라이언트 구성 요소가 세션 필터값 "2"로 설정되는 경우(즉, ESessionFilter = 2), 통지가 공유 자원으로부터 수신될 때, 스풀러는 등록을 행한 클라이언트 구성 요소와 동일한 사용자 계정에서 동작(또는 동일한 사용자 계정을 구현)하는 임의의 청취자에게 통지를 발신한다. 클라이언트 구성 요소가 세션 필터값 "0"으로 설정되는 경우(즉, ESessionFilter = 0), 통지가 수신될 때, 청취자는 임의의 세션 또는 청취자 구성요소에 발신된 통지를 수신한다.
이 시나리오에서, 관리자는 특정 프린트 구성 요소에 대한 프린트 관리 권한(예를 들면, PRINTER_ADMIN_RIGHTS)을 가진 사용자이다. 이와 같이, 관리자는 임의의 구성 요소로 통지를 발신할 수 있고 임의의 구성 요소로부터 통지를 수신할 수 있다. 그러나, 통지 유형 필터는 여전히 강제된다(enforced). 예를 들면, kPerSessionFilter 값으로 등록된 채널 구성 요소에서 통지가 세션 "1"로부터 발신된다. kPerSessionFilter에 따르면, 통지는 세션 "1"로 발신된다. 그러나, 세션 "2"에서 동작하는 관리자가 요구하는 경우, 통지는 세션 "2"로 발신되는데 그 이유는 통지 유형이 동일한 한 청취하는 관리자가 있기 때문이다. 그러나, 관리자가 통지 유형 속성을 "NULL"로 설정하면, 관리자는 통지 유형이 일치하는지의 여부에 관계없이 통지를 수신한다.
이 시나리오에서, 표 2에 나타낸 바와 같이, 통신 유형을 특정함으로써, 프린팅 구성 요소는 응답 통지가 청취자로부터 되돌려질 것인지를 특정한다. 또한, 통신 유형은 통지가 복수의 클라이언트로부터 되돌려지는 경우 스풀러가 어떻게 취급하는 지를 특정할 수 있다.
통신 유형
Typedef enum {kBidirectional = 1,//First response is handed to the//ICallback interface;//the client that first responded//will carry on the dialog.kUnidirectional = 0,//No response is handed to the//Callback interface.} ECommunication
이 시나리오에서, 두개의 통신 유형, 즉 양 방향 및 단 방향이 있다. 단 방향의 경우에, 청취자 클라이언트는 응답 통지를 되돌려 발신하지 않는다. 그러나, 복수의 클라이언트 구성 요소가 채널 구성 요소로부터 통지를 수신하기 위해 등록할 수 있기 때문에, 일부 응답은 채널 구성 요소를 통해 공유 자원으로 되돌려 발신되는 경우가 있다.
이 시나리오에서, 복수의 클라이언트 구성 요소가 통지를 수신하도록 등록하는 경우, 응답은 반응하는 제1 클라이언트 구성 요소로부터 수신된다. 진행 대화(ongoing dialogue)(예를 들면, 통지, 응답, 통지, 등)의 경우에, 스풀러는 다른 채널을 폐쇄하고 대화는 제1 클라이언트와 계속된다. 다른 시나리오에서는, 복수의 클라이언트 구성 요소와의 대화가 지원된다. 예를 들면, 통지 서버 또는 채널 구성 요소는 복수의 대화/청취자를 동기화하기 위한 방법을 제공할 수 있다.
예를 들면, 두 사용자인 Joe와 관리자가, Joe의 사용자 계정 필드(user account field) 기초하여 통지를 수신하도록 등록하고 통지는 Joe와 관리자 둘다에의해서 수신되고, 되돌려 수신된 제1 응답 통지는 프린팅 구성 요소로 전송된다.
이 시나리오에서, 통지 유형(예를 들면, GUID)은 청취자용 필터에 대하여 스풀러에 의해서 사용된다. 또한, 프린팅 구성 요소 및/또는 클라이언트 구성 요소는 통지 오브젝트의 데이터 스키마를 유형 식별하기 위해 통지를 사용한다.
이 시나리오에서, 클라이언트(예를 들면, 프린팅 구성 요소)는 통지 서버(예를 들면, 스풀러)에 의해서 등록한다. 클라이언트가 통지에 대해 등록하는 경우, 서버측 청취자 구성 요소는 청취자 속성 등의 클라이언트 구성 요소에 대한 정보로 내부 표를 유지한다. 표 3에 나타낸 바와 같이, 오페크 등록 취급 포인터(opaque registration handle pointer)는 등록 요구에 응답하여 클라이언트 구성 요소로 되돌려진다. 클라이언트 구성 요소는 통지에 대하여 등록해제(unregister)하기 위해 등록 취급(register handler)을 사용한다.
등록취급
typedef struct _HNOTIFY{// opaque}*HNOTIFY;
이 시나리오에서, 표 4에 나타낸 바와 같이, 통지 데이터는 INotifyDataObject 인터페이스를 노출하는 오브젝트로서 취급된다. 통지 서버의 클라이언트 구성 요소와 공유 자원 구성 요소는 데이터 스키마를 정의할 수 있고정의된 스키마에서 데이터를 발신 및 수신한다. 예를 들면, 스풀러의 클라이언트는 그 자신의 데이터 스키마를 정의할 수 있고, GUID를 각종 유형에 할당하여 주어진 통지시스템을 위하여 어떤 유형(들)을 구현할 것인지 시그널링할 수 있으며, 이들 유형들은 임의의 데이터 유형을 전후로 발신할 수 있다. 비록 스키마가 통지 서버에 의해서 필수적으로 알려질 필요는 없지만, 그 크기는 전송을 위하여 요구될 수 있고, 통지 유형(예를 들면, GUID)은 청취자 또는 발신자 속성의 부분이 될 수 있다. 예를 들면, 스풀러는 BYTE* 포인터에 대한 통지 데이터 오브젝트, 데이터 길이 및 통지 유형을 묻는다. 통지 유형은 GUID 포인터이다.
데이터 통지 인터페이스
interface INotifyDataObject : IUnknown{typedef GUID* NotificationType;HRESULT AquireData([out]BYTE**,[in, out]ULONG*,[in, out]NotificationType*);HRESULT ReleaseData(VOID);};
이 시나리오에서, 프린팅 구성 요소는 INotifyDataObject로 데이터를 채워넣고(pack) 청취자 클라이언트는 AquireData 데이터를 호출하여 통지 데이터에 대한행 포인터, 통지 데이터의 크기, 및 통지 유형을 얻는다. 청취자 클라이언트가 데이터를 다 사용한 경우, 청취자 클라이언트는 ReleaseData를 호출한다. 바람직하게는, InotifyDataObject를 구현하는 클라이언트가 청취자 구성 요소에서 Rlelease()를 호출하기 전에 ReleaseData()를 호출한다. 이 시나리오에서, AquireData는 오브젝트의 기준 카운트(reference count)를 증가시키고 ReleaseData는 오브젝트 기준 카운트를 감소시킨다.
이 시나리오에서, 표 5에 나타낸 바와 같이, 일부 오브젝트는 ICallback 인터페이스를 나타낸다.
IcCallBack 인터페이스
interface ICallback : IUnknown {HRESULT OnEventNotify([in]IAsynchNotifination*pIAsyncNotification,[in]INotifyDataObject*pNotification);HRESULT ChannelClosed([in]IAsynchNotification*pIAsynNotification,[in]INotifyDataObject*pNotification);};
ICallBack 인터페이스를 나타내는 오브젝트는 프린팅 구성 요소와 청취자 애플리케이션 둘 다에 의해서 제공된다. 통지 수신에 관심을 갖는 구성 요소는ICallBack 인터페이스를 노출시킨다. 따라서, 청취자 클라이언트는 등록시에 ICallBack 인터페이스에 대한 포인터를 제공한다. 이 포인터는 통지를 발신 시에 사용된다. 또한, 공유 자원은 응답 통지를 수신하기 위해 ICallBack 인터페이스에 대한 포인터를 노출시킨다.
통지가 공유 자원(예를 들면, 프린트 구성 요소)으로부터 클라이언트 프로그램으로 발신되는 경우, 서비스는 통지를 전달하기 위해 채널의 클라이언트 프로그램 단에서 OnEventNotify 방법을 호출한다. 채널이 일단에서 폐쇄되는 경우, 서비스는 타단에서 ChannelClosed 방법을 호출하여 채널이 폐쇄됨을 알린다. 채널을 폐쇄하는 이유는 통지로서 배달된다. 공유 자원 또는 통지 서버가 전원이 오프된 경우, 서비스는 Notification_Died 유형 메시지를 전달하는 ChannelClosed를 호출한다.
이 시나리오에서, 표 6에 나타낸 바와 같이, IAsynchNotification 인터페이스를 노출시키는 구성 요소는, 프린팅 구성 요소가 CreateNotificationChannel을 호출할 때 통지 채널의 오픈에 응답하여 통지 서버측과 클라이언트 프로그램측 둘 다에서의 서비스에 의해서 제공된다.
IAsynchNotification 인터페이스
interface IAsynchNotification : IUnknown {//Sends notification of a certain type.HRESULT SendNotification([in]INotifyDataObject *pNotification//Notification data.);//Close the notification channel.HRESULT CloseChannel([in]INotifyDataObject *pNotification//Reason for closing);//Query notif. type that channel supports.HRESULT GetChannelNotificationType([out]INotifyDataObject**pNotificationType//Notification Channel type);};
IAsysnchNotification 인터페이스는 채널을 식별하고 통지를 발신하거나 또는 채널을 폐쇄하는데 이용될 수 있다. 발신자는 통지를 발신하기 위해서는 SendNotification을 호출한다. 발신자의 롤(role)은 채널을 오픈하고 통지를 발신하는 프린팅 구성 요소에 의해서 또는 응답 통지를 되돌려 발신하길 원하는 경우 수신 클라이언트에 의해서 행해질 수 있다. 채널을 폐쇄하기 위해서, 발신자 또는 청취자가 CloseChannel을 호출한다. 이들은 채널을 폐쇄하는 이유를 담고 있는 통지에서 전달하거나(pass) 넘기거나 단지 NULL 포인터를 전달할 수 있다. 채널 생성기가 채널과 통지 유형을 연관시키는 경우, GetChannelNotificationType이 NULL 데이터를 가진 INotifyDataObject로서 채널 통지 유형을 되돌린다.
이 시나리오에서, CreatePrintNotificationChannel은 통지 채널을 생성하기위해 프린팅 구성 요소에 의해서 호출된다. 채널은 프린터 취급(handle) 별로 또는 서버 취급(handle) 별로 이루어질 수 있다. 프린팅 구성 요소는 스풀러에 의해서 로딩되는 채널을 오픈할 수 있다. 예를 들면, 드라이버(예를 들면, Winspool.drv)는 스풀러에 로딩되는 경우 이러한 기능성을 노출시키고 이에 의해서 프린터 드라이버가 채널을 오픈할 수 있게 한다. 또한, 이 시나리오에서, 스플러 라이브러리(예를 들면, Spoolss.lib)는 이러한 기능을 나타내어 포트 모니터와 다른 프린트 구성 요소가 채널을 오픈할 수 있다. 따라서, 스풀러 라이브러리에 대한 링크를 포함하는 스풀러 서버에 의해서 호스팅된 구성 요소는 CreatePrintNotificationChannel을 호출할 수 있다.
이 시나리오에서, 표 7에 나타낸 바와 같이, CreatePrintNotificationChannel 호는 임의의 입력 출력을 포함한다.
CreatePrintNotificationChannel
HRESULT CreatePrintNotificationChannel([in]PCWSTR PrinterName,[in]NotificationType ChannelType,[in]ESessionFilter eSessionFilter,[in]ECommunication eCommunication,[in]ICallback* pCallback,[out]IAsynchNotification**pIAsynNotification);
표 7에 나타낸 바와 같이, 채널이 프린트 취급을 개구한 세션과 연관된다(예를 들면, 프린터 이름). 세션 필터는 통지를 수신하는 세션(예를 들면, eSessionFilter)을 특정한다. 채널 통지 유형은 지원되는 통지의 유형을 특정한다. 통신 필터는 채널이 단 방향/양 방향인지를 특정한다. ICallback 인터페이스는 통지가 채널의 타단으로부터 되돌아오는 때에 호출하는 장소를 특정한다. 이는 호출자가 응답에 관심이 없는 경우 NULL이 될 수 있다.
이 방법은 채널을 식별하고 통지를 발신하고 채널 폐쇄하는데 사용되는 IAsyncNotification 오브젝트를 되돌린다. 예를 들면, 채널을 폐쇄하기 위해서는, IAsynchNotification 인터페이스의 CloseChannel 방법을 호출할 수 있다.
이 시나리오에서, 표 8에 나타낸 바와 같이, RegisterForPrintNotification 호는 임의의 입력과 출력을 포함한다.
RegisterForPrintNotification
HRESULT RegisterForPrintNotifications([in]PCWSTR PrinterName,[in]NotificationType NotifyType,[in]ESessionFilter eSessionFilter,[in]ECommunication eCmmunication,[in]ICallback* pCallback,[out]HNOTIFY* phNotify);HRESULT UnRegisterForPrintNotifications([in]HNOTIFY hNotify);
RegisterForPrintNotification 방법은 통지를 수신한 것에 대하여 등록하도록 수신 클라이언트에 의해서 호출된다. 이 수신 클라이언트는 스풀러 내에 또는 임의의 애플리케이션에 존재한다. 드라이버(예를 들면, Winspool.drv)는 로딩되는 위치에 무관하게 이 기능성을 노출시킨다. 스풀러 라이브러리(예를 들면,Spoolss.lib)는 포트 모니터가 통지에 대하여 등록을 할 수 있도록 상기 기능성을 노출시키고 있다. 스풀러 라이브러리(예를 들면, Spoolss.lib)와 링크된 스풀러에 의해서 호스팅되는 구성 요소는 RegisterForRrintNotification을 호출할 수 있다. 나타낸 바와 같이, 국부/원격 프린터 또는 서버 이름이 특정된다(예를 들면, 프린터 취급). 통지 유형은 청취자에게 발신하기 위해 통지의 유형을 지시한다. 세션 필터는 청취자에게 발신하기 위해 어떤 세션 통지인지를 지시한다. 통신 필터는 청취자가 단 방향/양 방향 통신 중 어디에 관심이 있는지를 특정한다. ICallback 인터페이스는 통지가 발신되는 장소를 특정한다. 이 방법은 클라이언트가 UnRegisterForPrintNotification을 호출함으로써 등록해제 하는데 사용하는 오페크 등록 취급(opaque registration handler 을 되돌린다. 등록은 등록 호를 만드는 스레드의 Session ID와 연관된다. 이 시나리오에서, 스풀러는 클라이언트 세션 필터에 더하여 채널 세션 필터 및 클라이언트 등록 세션에 기초하여 청취자 클라이언트를 필터링한다.
실시예 28 - 예시적인 등록 및 통지 서버 방법
도 19는 통지 서버 방법에 따라 통지를 발신하고 응답 통지를 수신하는 것을 성취하는 예시적인 방법(1900)이 나타난 도면이다. 참조 번호 1902에서, 이 방법은 복수의 클라이언트 중 어떤 클라이언트로부터 요구를 대기한다. 대기를 피하기 위해서, 통지 서버 또는 예시적인 방법(1900)은 요구에 따라 동작시간(runtime) 환경에 의해서 개시될 수 있다(instantiated). 실제, 대기는 확정적 동작(affirmative action)이 될 필요가 없다(예를 들면, 서버는 대기 명령을 실행할 필요가 없음). 상술한 요구는 오브젝트 모델(예를 들면, COM, DCOM, JAVA, C++ 등) 하에서 방식 호출(method call)이 될 수 있다.
참조 번호 1904에서, 통지를 수신하기 위한 청취자 속성을 등록하기 위한 요구는 클라이언트 구성 요소로부터 수신된다. 이 요구에 대한 (예를 들면, 요구에 포함되거나 요구로부터 판정되는) 청취자 속성은 참조 번호 1906에 (예를 들면, 청취자 등록을 통해서)요구를 발신하는 클라이언트 구성 요소와 연관된다. 하나의 시나리오에서, 상술한 관련성은 요구 소스의 식별자와 함께 수신 속성을 유지하는 데이터 구조에 포함되어 있다. 그 다음 상기 방법은 다음 요구 (1902)에 대하여 대기하기 위해 참조 번호 1908로 되돌아간다. 청취자 특성은 여기에 기술된 예시적 속성 중 적어도 하나를 지시한다. 요구가 청취자 등록 요구가 아닌 경우 이 방법은 참조 번호 1910으로 진행한다.
참조 번호 1910에서, 채널 속성을 등록할 것에 대한 요구는 공유 자원으로부터 수신된다. 요구에 대한 (예를 들면, 요구에 포함되거나 또는 요구로부터 판정되는) 발신자 속성은 참조 번호 1912에서 요구(즉, 발신자 등록)를 발신하는 공유 자원과 연관된다. 하나의 시나리오에서, 연관성은 수신 특성 및 공유 자원 식별자를 유지하는 데이터 구조에 포함된다. 그 다음 이 방법은 다른 요구(1902)에 대하여 대기하기 위해 참조 번호 1908로 되돌아간다. 발신자 특성은 적어도 여기에 기술한 예시적 속성 중 적어도 하나를 지시한다. 요구가 발신자 등록 요구가 아닌 경우, 요구가 참조 번호 1914로 진행한다.
참조 번호 1914에서, 통지(예를 들면, 통지 오브젝트)는 공유 자원으로부터수신된다. 요구가 통지인 경우, 참조 번호 1916에서, 이 방법은 등록된 청취자 속성과 통지를 발신하는 공유 자원에 의해서 등록된 발신자 속성을 비교한다.
참조 번호 1916에서 비교가 긍정적이면, 통지는 클라이언트 구성요소(1918)에 전송되어 수신자 특성은 긍정비교를 일으킨다. 하나의 시나리오에서, 클라이언트 구성요소는 클라이언트 구성 요소의 보안 콘텍스트에서 동작하면서 프린트 드라이버 구성 요소에 의해서 생성되는 통지 대하여 등록된다. 다른 시나리오에서, 클라이언트 구성 요소는 임의의 터미널 세션에서 동작하는 프린트 모니터 구성 요소에 의해서 생성되는 통지에 대하여 등록된다. 다른 시나리오에서, 클라이언트 구성 요소는 임의의 통지 유형의 모든 스풀러 통지에 대하여 등록된다. 긍정 비교(1916) 시, 통지는 대응하는 긍정 청취자 속성을 가진 클라이언트 구성 요소(1919)로 전송된다. 긍정 비교(1918)가 존재하는 경우, 이 방법은 다음 요구에 대하여 대기(1902)하기 위해 참조 번호 1908로 되돌아간다. 그러나, 요구가 통지 요구(1914)가 아닌 경우, 방법은 참조 번호 1920으로 진행한다.
참조 번호 1920에서, 응답 통지를 발신하기 위해서 요구가 클라이언트로부터의 요구인 경우, 응답 통지는 응답이 반응한 통지를 발신한 공유 자원(1922)으로 되돌려지고, 이 방법은 다음 방법에 대하여 대기하기 위해 참조 번호 1918로 돌아간다. 요구가 응답 요구가 아닌 경우, 이 방법은 참조 번호 1924로 진행한다.
참조 번호 1924에서, 요구가 클라이언트 구성 요소와 청취자 특성 사이의 연관성을 폐쇄하기 위한 클라이언트로부터의 요구인 경우, 연관성은 참조 번호 1926에서 폐쇄되고 방법은 다음 요구(1902)에 대하여 대기하기 위해 참조 번호 1908로되돌아간다.
참조 번호 1928에서, 요구가 공유 자원과 발신자 속성 사이의 연관성을 폐쇄하기 위한 공유 자원으로부터 요구인 경우, 연관성은 참조 번호 1928에서 폐쇄되고 방법은 다음 요구(1902)를 대기하기 위해 참조 번호 1908로 진행한다.
이 방법(1900)은 여기에서 기술한 다른 방법 중 어느 것과 마찬가지로 몇몇 프로세스 공간에 걸쳐 분산되어 기능할 수 있다. 이 경우에, 방법의 활성은 복수의 프로세스 공간에서 수행될 수 있다. 예를 들면, 통지는 통상적으로 통지 서버 공간에서 수신되고 응답 통지는 통상적으로 클라이언트 구성 요소 공간에서 수신된다. 다른 동작은 두 어드레스 공간에서 실행되는 코드를 가지고 있다. 예를 들면, 청취자 등록 요구는 클라이언트 구성 요소 어드레스 공간에서 수신될 수 있고 프로세스간 통신(inter-process communication)을 갖는 통지 서버 공간에서 부분적으로 완료된다.
실제, 비교 액션(예를 들면, 1904, 1910 등)은 확정적으로 실행될 수 없다. 대신에, 각종 기능은 적절한 실행가능한 방법(예를 들면, 적절한 인터페이스의 멤버 기능(member function))을 호출함으로서 액세스될 수 있다.
실시예 29 - 예시적인 클라이언트 등록 및 통지 방법
도 20은 통지 서버와 함께 통지를 처리하는 클라이언트 프로그램에 의해서 구현되는 예시적 방법(2000)이 도시되어 있다. 하나의 시나리오에서, 클라이언트 프로그램은 터미널 서버에서 동작하는 세션이다. 다른 시나리오에서, 클라이언트 프로그램은 단일 컴퓨터 환경에서 로그 오프시키지 않고 사용자가 스위칭할 수 있는 복수의 사용자 상태 중 하나에서 실행된다. 클라이언트 프로그램은 통상적으로 상기 통지 서버로 초기에 전달되고 공유 자원으로부터 개시하는 통지를 수신하기 위해서 통지 서버에 등록되고 공유 자원으로부터 서비스를 요구하는 복수의 클라이언트 프로그램 중 하나이다.
참조 번호 2002에서, 클라이언트 프로그램은 통지 서버(예를 들면, 청취자 등록을 통해)에 의해서 청취자로서 등록된다. 등록의 청취자 속성은 요구에 포함되어 있거나 요구로부터 판정된다. 그 다음 클라이언트는 등록 속성을 일치시키는 통지가 통지 서버로부터 수신될 때까지 다른 태스크를 선택적으로 연속하여 처리한다. 예를 들면, 하나의 시나리오에서, 클라이언트 프로그램은 원격 터미널에서 로그인되는 사용자에 대하여 애플리케이션(예를 들면, 워드 프로세싱, 스프레드 시트 프로세싱 등)을 실행하는 터미널 세션이다. 프린트 서비스를 요구한 후에, 세션은 원격 터미널에서 사용자에 의해서 생성되는 요구를 추가적으로 편집하는 프로세스로 처리하도록 진행될 수도 있다. 따라서, 터미널 세션은 프린팅 서비스를 요구한 후 프로세싱이 진행된다.
통지를 수신 시, 클라이언트 프로그램은 참조 번호 2008에서 통지를 처리한다(예를 들면, 사용자 인터페이스 표시를 생성함). 또한, 클라이언트는 다른 처리를 진행할 수 있다. 하나의 시나리오에서, 통지가 청취자 속성과 일치된 것을 판정하는 것에 응답하여, 통지는 통지 서버에 의해서 발신된다. 예를 들면, 하나의 시나리오에서, 클라이언트 프로그램은 터미널 세션이고, 통지는 프린팅 구성 요소에 대한 상태 변경이다. 하나의 시나리오에서, 클라이언트는 터미널 세션이고, 원격 터미널 스테이션에서 통지를 표시하기 위한 제어 논리가 생성되어 원격 터미널에 발신된다. 다른 시나리오에서, 사용자 인터페이스는 청취자 속성에 위치되거나 또는 통지 오브젝트 자체에 위치된 통지 유형 식별자 (예를 들면, Globally Unique IDentifier)로 클라이언트 프로그램에 의해서 식별된다. 하나의 시나리오에서, 클라이언트가 터미널 서버에서 동작하는 터미널 세션인 경우 생성된 사용자 인터페이스는 원격 터미널에 표시된다.
참조 번호 2012에서, 클라이언트는 참조 번호 2014에서 통지 서버에 응답 통지를 발신할 것을 결정한다. 응답은 공유 자원에 전송된다. 예를 들면, 프린팅 시나리오에서, 이러한 응답은 작업이 취소 또는 재 라우팅되는 것을 지시할 수 있다. 클라이언트는 다른 처리로 되돌아가서 다른 통지를 수신할 수도 있다.
소망에 따라, 등록된 클라이언트는 복수의 통지를 수신하기 위해 등록을 관리할 수 있다. 응답은 일부에 대하여 발신될 수 있지만 다른 것에 대해서는 발신되지 않는다.
참조 번호 2016에서, 클라이언트가 추가 통지를 수신 시 더 이상 관심을 가지지 않기 때문에(예를 들면, 클라이언트는 종료됨), 등록 청취자가 폐쇄된다.
도시된 각종 기능은 (예를 들면, 적절한 인터페이스의 멤버 기능과 같은) 적절한 실행가능한 방법을 호출함으로써 액세스될 수 있다.
실시예 30 - 예시적인 공유 자원 등록 및 통지 방법
도 21은 통지를 발신하기 위해 공유 자원에 의해서 실행되는 예시적인 방법(2100)을 나타낸 도면이다. 하나의 시나리오에서, 공유 자원은 프린터 스풀러에서 동작하는 프린트 구성 요소이다. 다른 시나리오에서, 스풀러는 프린트 구성 요소 공유 자원을 호스팅하는 통지 서버이다. 다른 시나리오에서, 공유 자원은 일부 사용자에 의해서 공유되는 컴퓨터에서 동작하는 프린터 드라이버이고 사용자는 매번 로그 온/오프 없이 사용자 상태 사이를 스위칭할 수 있다. 통지는 통상적으로 통지 서버로부터 통지를 위해 등록되고 공유 자원으로부터 서비스를 요구하는 복수의 클라이언트 중 하나로 라우팅된다.
참조 번호 2102에서, 발신자 속성은 통지 서버에 등록된다. 발신자 속성은 여기에 기술된 예시적인 발신자 속성 중 적어도 하나를 지시하고 등록하기 위해 요구로부터 결정되거나 또는 등록을 위해 요구될 수 있다. 공유 자원은 다른 처리에 의해 연속할 수 있다.
어떤 시점에서(예를 들면, 프린터에 종이 없음의 지시를 수신시), 참조 번호 2108에서 통지 서버로 통지가 발신된다. 공유 자원은 다른 프로세싱으로 이어질 수 있다.
응답을 수신 시, 응답은 참조 번호 2112에서 처리될 수 있다. 일부의 경우에, 응답이 기대되지 않고 응답 처리를 할 필요가 없다. 공유 자원은 다른 프로세싱으로 이어질 수 있다.
참조 번호 2114에서, 채널이 폐쇄된다(예를 들면, 등록이 폐쇄된다). 채널은 추가로 등록이 처리되어야 하는 경우에는 폐쇄할 필요가 없다.
실시예 31 - 프린터 시나리오에 대한 기술의 예시적인 애플리케이션
여기에서 기술한 임의의 기술은 프린팅 시나리오에 적용될 수 있다. 이러한시나리오에서, 프린터가 프린터의 상태를 지시하는 사용자에게 통지를 되돌리는 것은 유용하다. 이러한 통지는 여기에 기술한 기술을 통해 성취될 수 있다. 예를 들면, 프린팅 구성 요소는 통지를 발신할 수 있다.
이러한 통지는 프린터의 조건을 나타낼 수 있다(예를 들면, 프린터 상태, 오류 메시지 등). 예를 들면, 통지를 통해 용지 없음 또는 용지 수동 공급 메시지가 발신될 수 있다. 메시지 관련 다른 프린팅의 번호가 발신될 수 있다.
양 방향 통신이 구현되는 경우 사용자는 취해져야할 동작을 지시하기 위해 통지를 되돌릴 수도 있다(예를 들면, 프린트 작업 취소 또는 재전송).
실시예 32 - 예시적인 프린팅 공유 자원 시스템
도 22는 프린터 서버(2218) 및 다른 기계(2220)의 두개의 기계를 가진 예시적인 시스템(2220)이 도시되어 있고 각각은 터미널 세션 사용자 인터페이스를 표시한다. 프린트 서버(2218)는 터미널 세션 소프트웨어(2204)를 위해 동작하고, 다른 컴퓨터(2220)상의 등록 클라이언트 애플리케이션(2210)에 통지를 발신하는 프린팅 소스(2202)를 포함한다. 본 예에서, 통지 시스템은, 제출 작업이 프린트되는 경우 청취자 애플리케이션에 대해 통지를 발신하기 위해 프린트 스풀러(2208)에 의해서 사용된다. 이 시나리오에서, 3개의 프린팅 애플리케이션(2210, 2212, 2214)은 도메인 게스트 사용자를 구현시 동작하고 다른 세션(2216)은 프린팅 디바이스 상태 통지를 감시한다.
게스트 사용자로서 동작하는 장치(2210, 2212, 2214)는 디바이스가 프린트를 완료한 경우 통지를 수신하기 위해 등록된다. 각각의 애플리케이션(2210, 2212,2214)은 다른 세션과 연관되어 있다. (예를 들면, 프린팅 자원(2202) 및 스풀러(2208)와 같은) 이 시스템 서비스는 콘솔 세션과 연관된다.
본 예에서, 애플리케이션이 동일한 사용자를 구현하여(impersonating) 동작하는 경우에도 통지는 문서를 발신한 애플리케이션에만 발신된다. 이 경우에, 세션 필터는 작업을 제출한 등록된 세션(2210)에 통지를 발신하는데 사용된다. 또한 "용지 없음" 통지(2222)는 디바이스 상태 통지에서 관심이 있는 등록 애플리케이션에만 발신된다.
실시예 33 - 터미널 서버 환경에서 예시적인 구현
하드웨어 벤더(vendors)를 독립시키고 소프트웨어 벤더를 독립시킴으로써 제공되는 구성 요소는 다른 공유 자원 서비스 또는 프린팅을 요구하는 클라이언트 구성 요소와 연관된 터미널 서버 세션에서 사용자 인터페이스를 나타내기 위해 여기에 기술된 기술을 사용할 수 있다. 이 방법에서, 사용자 인터페이스는 콘솔 세션이 아닌 요구를 생성한 위치(예를 들면, 원격 세션)에 나타날 수 있다.
예를 들면, 프린터 제조자 또는 프린터 드라이버 개발자는, 프린트 드라이버에 사용자와의 양 방향 대화로 맞물리고 적절한 통지를 생성하는 기능을 포함시킬 수 있다. 고속 사용자 스위치 환경 또는 터미널 서버에서, 메시지에 대한 사용자 인터페이스는 소망에 따라 적절한 사용자에 대하여 또는 적절한 세션에서 표시될 수 있다.
실시예 34 - 응답의 예시적인 사용
응답 통지 수단은 공유 자원으로 사용자 동작을 되돌려 통신하기 위해 여기에 기술된 어떤 예와 조합하여 사용될 수 있다. 예를 들면, 통지를 수신 시, 클라이언트는 디스플레이 상에 통지의 사용자 인터페이스 표시(user interface presentation)를 발신할 수 있다. 사용자 인터페이스 표시는 (예를 들면, 푸시 버튼과 같은)대화식 사용자 인터페이스 소자를 포함한다. 사용자 인터페이스 소자의 활성 시, 응답 통지는 공유 자원으로 되돌려 발신될 수 있다.
예를 들면, 프린팅 시나리오에서, 사용자는 프린트 작업이 취소, 재전송 또는 재 라우팅되는 것을 지시할 수도 있다. 프린트 작업을 재 라우팅하는 경우에, 응답 통지에서의 목표지를 포함함으로써 다른 목적지가 통신될 수 있다.
이러한 시나리오는 터미널 서버 환경에서 지원될 수 있다. 이러한 경우에, 사용자 인터페이스 표시는 원격 터미널에 위치된 원격 표시장치에 표시될 수도 있다.
실시예 35 - 계산 환경(computing environment)
도 23과 이하 설명은 구현을 위한 적절한 계산 환경의 대략적인 것을 간략하게 설명하기 위한 것을 의도로 한다. 본 발명은 컴퓨터 및/또는 네트워크 디바이스에서 동작하는 컴퓨터 프로그램의 컴퓨터 실행가능 명령의 일반적인 콘텍스트로 설명하였지만, 당 분야의 통상의 지식을 가진 자는 다른 프로그램 모듈의 결합으로서 본 발명이 구현될 수 있는 것으로 인지될 것이다. 일반적으로, 프로그램 모듈은 특정 추상 데이터 유형(particular abstract data type)을 구현하거나 또는 특정 태스크를 수행할 수 있는 루틴, 프로그램, 구성 요소, 데이터 구조 등을 포함한다. 또한, 당 분야의 통상의 지식을 가진 자에게는 본 발명은 멀티프로세서 시스템, 마이크로프로세서-기반 전자, 마이크로컴퓨터, 메인프레임 컴퓨터, 네트워크 설비(appliance), 무선 디바이스 등을 포함하는 다른 컴퓨터 시스템 구성으로 실시될 수 있음이 명백하다. 네트워크 계산 환경 또는 컴퓨터 단독으로도 확장하여 실시될 수 있다.
도 23을 참조하면, 구현을 위한 예시적 시스템은 종래 컴퓨터(2320)(개인용 컴퓨터, 랩탑, 서버, 메인프레임, 및 다른 각종 컴퓨터 등)를 포함하고, 이 컴퓨터(2320) 프로세싱 장치(2321), 시스템 메모리(2322) 및 시스템 메모리를 포함한 각종 시스템 구성요소를 프로세싱 유닛(2321)으로 연결시키는 시스템 버스(2323)를 포함한다. 처리 유닛은 인텔 X86, 펜티엄 및 인텔 또는 타사로부터의 호환 가능한 마이크로 프로세서(Cyrix, AMD 및 Nexgen; Alpha from Digital; MIPS 기술로부터의 MIPS, NEC, IDT, Siemens, 등; 및 IBM 및 Motorola의 PowerPC 등)를 포함하는 상업적으로 입수 가능한 각종 프로세서 중 어느 것일 수 있다. 듀얼 마이크로프로세서 및 다른 멀티 프로세서 아키텍쳐는 프로세서 유닛(2321)으로서 사용될 수 있다.
시스템 버스는 메모리 버스 또는 메모리 제어기, 병렬 버스, 및 PCI, VESA, AGP, Microchannel, ISA 및 EISA 등의 종래 버스 아키텍쳐 중 어느 하나를 사용하는 로컬 버스를 포함한다. 이 시스템 메모리는 ROM(2324) 및 RAM(2325)을 포함한다. 부팅 동안 컴퓨터(220) 내에서 소자간 정보를 송신하는 것을 돕는 기본 루트를 포함하는 기본 입력/출력 시스템(BIOS)기 ROM(2324)에 저장되어 있다.
컴퓨터(2320)는 소거 가능 디스크(2329)에 기입 및 판독하기 위한 하드디스크 드라이브(2327), 자기 디스크 드라이브(2328) 등과 CD-ROM 디스크(2331) 또는 다른 광학 매체로부터 판독 및 기입하는 광학 디스크 드라이브(2330)를 포함한다. 하드 디스크 드라이브(2327), 자기 디스크 드라이브(2328) 및 광학 디스크 드라이브(2330)는 하드 디스크 드라이브 인터페이스(2332), 자기 디스크 드라이브 인터페이스(23333), 및 광학 드라이브 인터페이스(2334)에 의해서 시스템 버스(2323)에 각각 접속되어 있다. 상기 드라이브와 이들의 연관된 컴퓨터 판독 가능 매체는 데이터, 데이터 구조, 컴퓨터 실행가능 명령 등을 컴퓨터(2320)에 제공한다. 비록, 하드 디스크, 소거 가능 자기 디스크 및 CD라 하는 컴퓨터 판독 가능 매체를 설명하였지만, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지 등의 컴퓨터에 의해서 판독할 수 있는 매체의 다른 유형은 당해 분야의 통상의 지식을 가진 자에 의해서 예시적이 환경에서 사용될 수 있다.
다수의 프로그램 모듈은 구현(23556) 이외에 연산 시스템(2335), 하나 이상의 애플리케이션 프로그램(2336), 다른 프로그램 모듈(2337), 및 프로그램 데이터(2338)를 포함하는 드라이브 및 RAM(2325)에 저장될 수 있다.
사용자는 키보드(2340) 및 마우스(2342) 등의 포인팅 디바이스를 통해 컴퓨터(2320)에 명령 및 정보를 기입할 수 있다. 이들 및 다른 입력 장치는 시스템에 연결된 직렬 포트 인터페이스(2346)를 통해 처리 장치(2321)에 접속되지만, 병렬 포드, 게임 포트 또는 유니버설 직렬 포트(USB) 등의 다른 인터페이스에 접속될 수도 있다. 모니터(2347) 또는 다른 유형의 표시 장치가 비디오 어댑터(2348) 등의 인터페이스를 통해 시스템 버스(2323)에 접속된다. 모니터 외에 스피커 및 프린터등의 다른 주변 출력 장치(도시되지 않음)를 통상적으로 포함한다.
컴퓨터(2320)는 원격 컴퓨터(2349) 등의 하나 이상의 원격 컴퓨터에 접속된 국부 접속을 사용하여 네트워크 환경에서 동작한다. 원격 컴퓨터(2349)는 서버, 라우터, 피어 디바이스 또는 다른 공통 네트워크 노드가 될 수 있고 통상적으로 비록 메모리 디바이스(2350)만 설명했지만 컴퓨터에 관련한 설명된 모든 소자를 포함한다. 설명한 논리 접속은 LAN(2341) 및 WAN(2352)를 포함한다. 이러한 네트워크 환경은 사무실, 기업 대형 컴퓨터 네트워크, 인트라넷 및 인터넷에서 공통으로 수용될 수 있다.
LAN 네트워크 환경을 사용하는 경우, 컴퓨터(2320)는 네트워크 인터페이스 또는 어댑터(2353)를 통해 로컬 네트워크(2351)에 접속된다. WAN 네트워킹 환경에 사용되는 경우, 컴퓨터(2320)는 통상적으로 인터넷 등의 WAN(2352)에서 통신(예를 들면, LAN(2351) 및 게이트 웨이 또는 프록시 서버(2355)를 통해)을 형성하는 다른 수단 또는 모뎀(2354)을 포함한다. 외장형 또는 내장형 모뎀(23534)은 직렬 포트 인터페이스(2346)를 통해 시스템 버스(2323)에 접속되어 있다. 네트워크 환경에서, 프로그램은 컴퓨터(2320)관련 프로그램 모듈 또는 그의 부분은 원격 메모리 저장 장치에 저장될 수도 있다. 도시된 네트워크 접속은 예시적인 것이고 컴퓨터간 통신 링크를 형성하기 위한 다른 수단이 사용될 수도 있다.
실시예를 참조하여 본 발명의 원리를 설명했으며, 이 원리로부터 벗어나지 않고 상기 실시예의 배열을 수정할 수 있는 것을 인식되어진다. 본 발명에서 설명한 프로그램, 프로세스 또는 방법은 특정 유형의 컴퓨터 장치에 관한 것도 이에 한정하는 것도 아니다. 각종 유형의 일반적인 목적의 또는 특정의 컴퓨터 장치가 여기에 기술된 기술에 따라 동작하도록 사용되거나 수행할 수 있다. 소프트웨어에 나타낸 실시예의 구성 요소는 하드웨어로 구현될 수도 있고 반대도 성립한다.
일 실시예로부터의 기술은 다른 실시예 중 어느 것에 내포될 수 있다. 실시예 중 일부는 "forwarding"을 기술했다. 이러한 예는 공고 그 자체 또는 그의 조합을 포함한다.
본 발명의 원리가 적용되는 많은 가능한 실시예의 관점에서, 상술한 실시예는 설명을 위해서만 기술한 것이고 본 발명의 범주를 한정시키지 않는다. 이하 청구범위의 정신 및 범주와 이에 대한 균등물 내에서 이러한 모든 실시예가 이루어질 수 있는 것을 의도로 한다.
이상의 설명에 따르면, 본 발명은 컴퓨터 네트워크 상에서 공유되는 공유 자원에 대한 통지를 행하여 비용절감을 할 수 있는 효과가 있다.

Claims (57)

  1. 공유 자원에 대한 통지(notification)를 수신하는 단계 - 상기 통지는 하나 이상의 발신자 속성(sender properties)과 연관되고, 상기 발신자 속성은 식별 콘텍스트 속성(identity context property)을 포함함 - ; 및
    적어도 상기 발신자 속성의 상기 연관된 식별 콘텍스트 속성과 클라이언트에 대한 하나 이상의 식별 콘텍스트 속성의 비교에 기초하여 상기 통지의 지시(indication)를 상기 클라이언트에 발신하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1 항에 있어서,
    상기 자원은 터미널 서버 환경에서의 복수 세션(multiple session)에 의해서 공유되고;
    상기 클라이언트는 상기 공유 자원을 호출할 책임을 갖으며(responsible for invocation);
    상기 발신자 속성의 상기 식별 콘텍스트 속성은 상기 공유 자원의 호출에 대하여 책임을 갖는 상기 클라이언트에 대한 세션 식별자(session identifier)를 지시하는 것을 특징으로 하는 방법.
  3. 제1 항에 있어서,
    상기 자원은 고속 사용자 스위치 환경(fast user switch environment)에서 복수의 사용자에 의해서 공유되고;
    발신자의 식별 콘텍스트 속성은 상기 복수의 사용자 중 누가 상기 공유 자원을 액세스하는 지를 지시하는 것을 특징으로 하는 방법.
  4. 제1 항에 있어서,
    상기 식별 콘텍스트 속성은 사용자 식별자(user identifier)를 포함하는 것을 특징으로 하는 방법.
  5. 제1 항에 있어서,
    상기 식별 콘텍스트 속성은 보안 콘텍스트 식별자(security context identifier)를 포함하는 것을 특징으로 하는 방법.
  6. 제5 항에 있어서,
    상기 식별 콘텍스트 속성은 세션 식별자를 포함하는 것을 특징으로 하는 방법.
  7. 제1 항에 있어서,
    상기 발신자 속성은 통신 유형, 통지 유형 및 기계 식별자(machine identifier) 중 적어도 하나를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1 항에 있어서,
    상기 식별 콘텍스트 속성은 세션 식별자 및 보안 콘텍스트 식별자를 포함하는 것을 특징으로 하는 방법.
  9. 제1 항에 있어서,
    상기 통지는 상기 공유 자원에 대한 상태 조건(state condition)을 지시하는 사용자 인터페이스 표시(user interface presentation)에 대한 데이터를 포함하는 것을 특징으로 하는 방법.
  10. 제9 항에 있어서,
    상기 사용자 인터페이스 표시는 대화형 사용자 인터페이스 소자(interactive user interface element)를 포함하고,
    상기 대화형 사용자 인터페이스 소자가 활성화되었음을 나타내는 지시를 수신 시, 응답 통지를 상기 공유 자원으로 발신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제9 항에 있어서,
    상기 상태 조건은 프린터 조건에 관한 것임을 특징으로 하는 방법.
  12. 제9 항에 있어서,
    상기 상태 조건은 용지 없음 메시지에 관한 것임을 특징으로 하는 방법.
  13. 제9 항에 있어서,
    상기 상태 조건은 오류 조건을 포함하는 것을 특징으로 하는 방법.
  14. 제9 항에 있어서,
    상기 상태 조건은 프린터의 용지 자원의 상태를 포함하는 것을 특징으로 하는 방법.
  15. 제1 항에 있어서,
    상기 통지는 상기 공유 자원에 대한 프린팅 특정 데이터(printing specific data)를 지시하는 데이터를 포함하는 것을 특징으로 하는 방법.
  16. 제1 항에 있어서,
    상기 클라이언트에 의해서 상기 통지를 수신 시, 상기 통지의 사용자 인터페이스 표시를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제1 항에 있어서,
    상기 클라이언트에 의해서 상기 통지를 수신 시, 상기 통지의 사용자 인터페이스 표시를 생성하는 단계 - 상기 사용자 인터페이스 표시는 대화형 사용자 인터페이스 소자를 포함함 -; 및
    상기 사용자가 상기 대화형 사용자 인터페이스 소자를 선택했다는 지시를 수신 시, 응답 통지를 상기 공유 자원에 발신하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제1 항에 있어서,
    상기 공유 자원은 프린팅 관련 구성 요소(printing-related component)인 것을 특징으로 하는 방법.
  19. 제1 항에 있어서,
    상기 클라이언트에 대한 하나 이상의 청취자(listener) 속성을 얻는 단계 - 상기 청취자 속성은 식별 콘텍스트 속성을 포함함 -; 및
    상기 청취자 속성과 상기 클라이언트를 연관시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
  20. 제19 항에 있어서,
    상기 클라이언트에 대한 상기 식별 콘텍스트 속성은 상기 클라이언트로부터의 RPC 호(call)에 포함된 정보로부터 얻어지는 것을 특징으로 하는 방법.
  21. 제19 항에 있어서,
    상기 공유 자원에 대한 하나 이상의 발신자 속성을 얻는 단계; 및
    상기 발신자 속성과 상기 공유 자원을 연관시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
  22. 제21 항에 있어서,
    적어도 상기 청취자 속성과 상기 발신자 속성의 비교에 기초하여 응답 전송(forwarding the reply)이 이루어지는 것을 특징으로 하는 방법.
  23. 제19 항에 있어서,
    상기 클라이언트로부터 응답 통지를 수신하는 단계; 및
    상기 응답 통지를 상기 공유 자원에 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  24. 제8 항에 있어서,
    상기 클라이언트로부터의 호에 대하여 프로세스간 호 설정(interprocess call set-up) 동안 얻어지는 정보로부터 상기 세션 식별자를 판정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  25. 제24 항에 있어서,
    상기 공유 자원이 상기 클라이언트의 세션과는 다른 세션과 연관되지만, 상기 발신자 속성은 상기 프로세스간 호 설정으로부터 판정된 상기 세션 식별자를 지시하는 것을 특징으로 하는 방법.
  26. 제19 항에 있어서,
    상기 청취자 속성은 통신 유형, 통지 유형, 세션 식별자 및 기계 식별자 중 적어도 하나를 더 포함하는 것을 특징으로 하는 방법.
  27. 제19 항에 있어서,
    상기 청취자 속성은 통신 유형, 통지 유형 및 기계 식별자 중 적어도 하나를 더 포함하는 것을 특징으로 하는 방법.
  28. 제19 항에 있어서,
    상기 청취자 속성은 상기 발신자 속성 이전에 수신되는 것을 특징으로 하는 방법.
  29. 제19 항에 있어서,
    상기 발신자 속성은 상기 청취자 속성 이전에 수신되는 것을 특징으로 하는 방법.
  30. 제19 항에 있어서,
    식별 콘텍스트 속성을 포함하는 제2 청취자 속성을 제2 클라이언트로부터 수신하는 단계;
    상기 제2 청취자 속성과 상기 제2 클라이언트를 연관시키는 단계; 및
    제2 발신자 속성과 상기 제2 청취자 속성의 비교에 기초하여 상기 통지를 상기 제2 클라이언트에 전송하는 더 단계를 포함하는 것을 특징으로 하는 방법.
  31. 제19 항에 있어서,
    상기 통지를 수신 시, 상기 통지의 사용자 인터페이스 표시를 원격 터미널(remote terminal)에 위치한 표시장치로 발신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  32. 제19 항에 있어서,
    상기 청취자 속성은 관리 권한(administrative right)을 가진 클라이언트에 의해서 특정되고;
    상기 청취자 속성은 상기 클라이언트와 연관된 사용자 이외의 사용자에 대한 통지가 수신됨을 지시하는 것을 특징으로 하는 방법.
  33. 제19 항에 있어서,
    상기 청취자 속성은 관리 권한을 가진 클라이언트에 의해서 특정되고,
    상기 청취자 속성은 임의의 사용자에 대한 특정 통지 유형의 통지가 상기 클라이언트 구성 요소로 전송됨을 지시하는 것을 특징으로 하는 방법.
  34. 제19 항에 있어서,
    상기 공유 자원은 프린트 작업(print job)을 처리하기 위해 프린터와 통신하는 서버 프린터 시스템 구성 요소이고,
    상기 통지는 상기 프린터에 용지 없음을 지시하고,
    상기 청취자 속성은 상기 프린트 작업을 요구하는 상기 클라이언트의 보안 콘텍스트와 세션 식별자를 지시하는 것을 특징으로 하는 방법.
  35. 제19 항에 있어서,
    상기 공유 자원은 프린트 작업을 처리하기 위해 프린터와 통신하는 플러그-인 구성 요소(plug-in component)이고,
    상기 통지는 상기 프린터에 용지 없음을 지시하고;
    상기 청취자 속성은 상기 프린트 작업을 요구하는 상기 클라이언트의 보안 콘텍스트와 세션 식별자를 지시하는 것을 특징으로 하는 방법.
  36. 제19 항에 있어서,
    상기 공유 자원은 프린트 작업을 처리하기 위해 프린터와 통신하는 프린트 드라이버이고,
    상기 통지는 상기 프린터에 용지 없음을 지시하고,
    상기 청취자 속성은 상기 프린트 작업을 요구하는 상기 클라이언트의 보안 콘텍스트와 세션 식별자를 지시하는 것을 특징으로 하는 방법.
  37. 제19 항에 있어서,
    청취자 속성이 복수의 클라이언트로부터 수신되고 - 상기 클라이언트는 각 청취자 속성과 연관됨 -,
    상기 비교 시, 상기 통지는 상기 복수의 클라이언트의 서브세트(subset)로 전송되는 것을 특징으로 하는 방법.
  38. 제37 항에 있어서,
    상기 공유 자원은 콘솔(console)과 연관된 세션에서의 스풀러 프로세스(spooler process)에서 실행하는 프린팅 구성 요소이고,
    상기 스풀러 프로세스는 상기 발신자 속성을 얻어 상기 프린팅 구성 요소와 연관시키고, 청취자 속성을 얻어 상기 클라이언트와 연관시키며,
    상기 프린팅 구성 요소는 프린터 상태 변화를 지시하는 상기 프린터로부터의 메시지를 수신하고,
    상기 프린팅 구성 요소는 상기 메시지에 응답하여 상기 통지를 생성하고,
    상기 스풀러는 상기 비교를 수행하고 상기 통지를 전송하는 것을 특징으로 하는 방법.
  39. 제37 항에 있어서,
    상기 복수의 클라이언트는 터미널 서버(terminal server)에서 실행하는 터미널 세션(terminal session)과 연관되고,
    상기 서브세트는 특정 세션에서 수행하는 단일 클라이언트인 것을 특징으로 하는 방법.
  40. 제37 항에 있어서,
    상기 공유 자원은 데이터베이스이고, 상기 복수의 클라이언트는 상기 데이터베이스를 액세스하는 스레드(thread)인 것을 특징으로 하는 방법.
  41. 터미널 서버 환경에서 통지를 처리하는 방법으로서,
    터미널 세션에서 실행하는 클라이언트로부터의 요구를 수신하여 상기 터미널 세션과 관련된 통지를 등록하는 단계;
    콘솔 세션에서 실행되는 공유 자원으로부터 요구를 수신하여 통지를 세션에 발신하는 단계 - 상기 공유 자원은 상기 세션을 위하여 실행됨 -;
    상기 터미널 세션에서 실행되는 상기 클라이언트에 상기 통지를 전송하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  42. 제41 항에 있어서,
    상기 통지는 프린팅 조건을 지시하는 것을 특징으로 하는 방법.
  43. 제41 항에 있어서,
    상기 통지는 통지 데이터를 포함하고,
    상기 방법은 상기 클라이언트에서 상기 통지의 수신에 응답하여, 상기 통지 데이터에 기초하여 상기 통지에 대한 사용자 인터페이스 표시를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  44. 제41 항에 있어서,
    상기 전송은 상기 공유 자원에 대하여 등록된 터미널 세션 식별자와 상기 클라이언트에 대하여 등록된 터미널 세션 식별자 사이의 비교에 기초하는 것을 특징으로 하는 방법.
  45. 통지를 처리하는 컴퓨터 기반 시스템 서비스로서,
    하나 이상의 발신자 등록을 생성하는 수단 - 상기 발신자 등록은 적어도 식별 콘텍스트 속성을 포함함 -;
    하나 이상의 청취자 등록을 생성하는 수단 - 상기 청취자 등록은 적어도 식별 콘텍스트 속성을 포함 함 -; 및
    상기 발신자 등록 중 하나에 대하여 통지의 수신에 응답하고 상기 통지와 연관된 상기 발신자 등록의 속성과 일치하는 속성을 가진 청취자에게 상기 통지를 전송하도록 동작하는 수단
    을 포함하는 것을 특징으로 하는 컴퓨터 기반 시스템 서비스.
  46. 제45 항에 있어서,
    상기 청취자 등록을 생성하는 수단은, 청취자 등록을 생성하는 동안 동일한 세션에 대한 통지가 상기 청취자 등록에 대하여 발신되는 것을 나타내는 지시를 수신하도록 동작하는 것을 특징으로 하는 컴퓨터 기반 시스템 서비스.
  47. 제46 항에 있어서,
    상기 시스템 서비스는 상기 클라이언트 이외의 소스(source)로부터 상기 청취자 등록을 요구하는 클라이언트와 연관된 세션 식별자를 얻도록 동작하는 것을 특징으로 하는 컴퓨터 기반 시스템 서비스.
  48. 제45 항에 있어서,
    상기 청취자 등록을 생성하는 수단은, 청취자 등록을 생성하는 동안 동일한 사용자에 대한 통지가 상기 청취자 등록을 위해 발신될 것이라는 지시를 수신하도록 동작하는 컴퓨터 기반 시스템 서비스.
  49. 제45 항에 있어서,
    상기 식별 콘텍스트 속성은 세션 식별자를 포함하는 것을 특징으로 하는 컴퓨터 기반 시스템 서비스.
  50. 제45 항에 있어서,
    상기 식별 콘텍스트 속성은 사용자 식별자를 포함하는 것을 특징으로 하는 컴퓨터 기반 시스템 서비스.
  51. 제49 항에 있어서,
    상기 통지를 수신에 응답하는 수단은 상기 청취자 등록과 연관된 응답을 취급하도록 동작하는 것을 특징으로 하는 컴퓨터 기반 시스템 서비스.
  52. 제49 항에 있어서,
    상기 발신자 등록 중 적어도 하나는 상기 발신자 등록과 연관된 통지의 데이터 포맷을 지시하는 통지 유형을 더 포함하는 것을 특징으로 하는 컴퓨터 기반 시스템 서비스.
  53. 공유 자원 통지를 수신하고 상기 통지를 등록 세션에 전송하는 컴퓨터 구현 방법으로서,
    세션으로부터 공유 자원으로 보안 콘텍스트 식별자 및 상기 세션에 대응하는 세션 식별자에 따라 서비스 요구를 발신하는 단계;
    상기 세션의 구현된 보안 콘텍스트(impersonated security context)에서 상기 공유 자원을 실행하는 단계;
    통지 인터페이스에서 상기 세션에 의해서 상기 보안 콘텍스트 식별자와 상기 세션 식별자를 포함하는 수신자 속성을 등록하는 단계; 및
    상기 통지 인터페이스를 통해 상기 세션에 의해서 상기 서비스 요구의 상태를 지시하는 통지를 수신하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  54. 실행가능한 명령을 포함하는 컴퓨터 판독가능 기록매체로서,
    등록 인터페이스를 통해 발신자 등록 요구를 수신하는 단계;
    식별 콘텍스트 속성을 포함하는 발신자 속성을 발신자 등록과 연관시키는 단계;
    상기 발신자 등록 요구에 응답하여 상기 발신자 등록에서 상기 인터페이스에 기준(reference)을 제공하는 단계;
    등록 인터페이스를 통해 청취자 등록 요구를 수신하는 단계 - 상기 요구는 콜백 기능(callback function)을 포함 함 -;
    보안 콘텍스트 속성을 포함하는 청취자 속성을 청취자 등록과 연관시키는 단계;
    상기 청취자 등록 요구에 응답하여 상기 청취자 등록에서 인터페이스에 기준(reference)을 제공하는 단계;
    상기 발신자 등록에서 상기 인터페이스를 통해 통지 오브젝트(object)를 수신하는 단계; 및
    상기 청취자 속성과 상기 발신자 속성 사이의 일치를 검출 시 상기 콜백 기능을 통해 상기 통지 오브젝트를 전송하는 단계를 포함하는 방법을 수행하는 실행가능 명령을 포함하는 컴퓨터 판독가능 매체.
  55. 제54 항에 있어서,
    상기 청취자 등록에서 상기 인터페이스를 통해 응답 통지 오브젝트(reply notification object)를 수신하는 단계; 및
    상기 응답 통지 오브젝트를 상기 발신자에게 전송하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  56. 터미널 서버 환경에서 복수의 세션간 프린터 관련 통지를 라우팅하는 방법으로서,
    상기 터미널 서버 환경에서 새로운 세션을 시작 시, 상기 세션의 세션 식별자를 지시하는 상기 세션에 대한 청취자 등록을 생성하는 단계;
    개시 세션(initiating session)에 대한 프린트 작업을 개시함으로써 프린팅 구성 요소를 호출하는 단계;
    상기 프린팅 구성 요소의 호출에 책임을 갖는 세션의 세션 식별자를 판정하는 단계;
    프린터 관련 통지를 생성하는 경우, 상기 프린터 관련 정보를 생성하는 상기 프린팅 구성 요소에 대하여 발신자 등록을 생성하는 단계 - 상기 프린팅 구성 요소는 상기 콘솔 세션과 연관되지만 상기 발신자 등록은 상기 프린팅 구성 요소의 호출에 응답할 수 있는 상기 개시 세션을 지시함 -;
    상기 발신자 등록을 통해 상기 통지를 발신하는 단계;
    상기 발신자 등록의 상기 세션 식별자와 상기 청취자 등록의 상기 세션 식별자를 비교하는 단계;
    상기 발신자 등록의 상기 세션 식별자와 상기 청취자 등록의 상기 식별자 사이에서 일치를 발견 시, 상기 세션 식별자와 연관된 세션에 상기 통지를 전송하는 단계 - 상기 세션은 상기 개시 세션임 -; 및
    상기 전송 통지의 수신 시, 상기 개시 세션에 대한 프린터 동작과 관련된 메시지를 지시하는 사용자 인터페이스를 표시하는(presenting) 단계
    를 포함하는 것을 특징으로 하는 라우팅 방법.
  57. 채널을 통해 통지의 발신을 수용하기 위한 애플리케이션 프로그래밍 인터페이스를 구현하기 위한 컴퓨터 판독가능 명령을 포함하는 하나 이상의 컴퓨터 판독가능 매체로서, 상기 애플리케이션 프로그래밍 인터페이스는,
    상기 채널을 통해 통지를 발신하는 멤버 기능(member function) - 통지를 발신하는 멤버 기능은 상기 통지에 대한 통지 데이터를 포함하는 오브젝트에 대한 포인터(pointer)를 받아들임 -;
    통지 채널을 닫는 멤버 기능 - 통지 채널을 닫는 상기 멤버 기능은 상기 통지 채널을 닫는 이유를 지시하는 데이터를 포함하는 오브젝트에 대한 포인터를 받아들임 -; 및
    상기 채널이 지원하는 통지 유형을 질의하는 멤버 기능 - 상기 채널이 지원하는 상기 통지 유형을 질의하는 멤버 기능은 지원된 통지 유형을 지시하는 오브젝트가 어디에 저장되어 있는지를 나타내는 포인터를 받아들임 - 을 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터 판독가능 매체.
KR1020040013371A 2003-03-27 2004-02-27 공유 자원에 대한 통지 방법 KR101066682B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/402,104 US7529823B2 (en) 2003-03-27 2003-03-27 Notifications for shared resources
US10/402,104 2003-03-27

Publications (2)

Publication Number Publication Date
KR20040086543A true KR20040086543A (ko) 2004-10-11
KR101066682B1 KR101066682B1 (ko) 2011-09-21

Family

ID=32825040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040013371A KR101066682B1 (ko) 2003-03-27 2004-02-27 공유 자원에 대한 통지 방법

Country Status (7)

Country Link
US (1) US7529823B2 (ko)
EP (1) EP1463268B1 (ko)
JP (1) JP4638676B2 (ko)
KR (1) KR101066682B1 (ko)
CN (1) CN1591341B (ko)
AT (1) ATE364956T1 (ko)
DE (1) DE602004006902T2 (ko)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529823B2 (en) 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
US7508532B2 (en) * 2003-05-20 2009-03-24 Microsoft Corporation Method and system for sandboxing printer drivers
US7689986B2 (en) * 2003-10-21 2010-03-30 Gemstone Systems, Inc. Shared listeners in shared object space
US20050210129A1 (en) * 2004-03-19 2005-09-22 Microsoft Corporation Asynchronous channel for displaying user interface elements
US8125666B2 (en) 2004-10-08 2012-02-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device document management
US7920101B2 (en) 2004-10-08 2011-04-05 Sharp Laboratories Of America, Inc. Methods and systems for imaging device display standardization
US8213034B2 (en) 2004-10-08 2012-07-03 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access on an imaging device
US8115947B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for providing remote, descriptor-related data to an imaging device
US8115945B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for imaging device job configuration management
US8006176B2 (en) 2004-10-08 2011-08-23 Sharp Laboratories Of America, Inc. Methods and systems for imaging-device-based form field management
US8120793B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for displaying content on an imaging device
US8060930B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential receipt and authentication
US8060921B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential authentication and communication
US8120798B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for providing access to remote, descriptor-related data at an imaging device
US8115944B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for local configuration-based imaging device accounting
US8120797B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for transmitting content to an imaging device
US8230328B2 (en) 2004-10-08 2012-07-24 Sharp Laboratories Of America, Inc. Methods and systems for distributing localized display elements to an imaging device
US8156424B2 (en) 2004-10-08 2012-04-10 Sharp Laboratories Of America, Inc. Methods and systems for imaging device dynamic document creation and organization
US8120799B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for accessing remote, descriptor-related data at an imaging device
US8065384B2 (en) * 2004-10-08 2011-11-22 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification subscription
US8237946B2 (en) 2004-10-08 2012-08-07 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting server redundancy
US8115946B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and sytems for imaging device job definition
US8384925B2 (en) 2004-10-08 2013-02-26 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting data management
US8423602B2 (en) * 2004-10-13 2013-04-16 International Business Machines Corporation Web service broadcast engine
ES2390890T3 (es) * 2005-01-31 2012-11-19 Cortado Ag Método y sistema para imprimir a través de un servidor de aplicaciones, así como un programa informático correspondiente y un medio de memoria correspondiente ligible por ordenador
JP4432798B2 (ja) * 2005-02-24 2010-03-17 セイコーエプソン株式会社 印刷システムおよびその管理方法
US8428484B2 (en) 2005-03-04 2013-04-23 Sharp Laboratories Of America, Inc. Methods and systems for peripheral accounting
US7546582B2 (en) * 2005-03-30 2009-06-09 International Business Machines Corporation Managing dynamic configuration data for producer components in a computer infrastructure
US20060277536A1 (en) * 2005-06-01 2006-12-07 Stein Michael V Non-visible remote control of console session
US9198084B2 (en) * 2006-05-26 2015-11-24 Qualcomm Incorporated Wireless architecture for a traditional wire-based protocol
US20080045149A1 (en) * 2006-05-26 2008-02-21 Dinesh Dharmaraju Wireless architecture for a traditional wire-based protocol
US8345272B2 (en) 2006-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for third-party control of remote imaging jobs
US8180658B2 (en) * 2007-01-30 2012-05-15 Microsoft Corporation Exploitation of workflow solution spaces to account for changes to resources
US20080184250A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Synchronizing Workflows
US20080183538A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Allocating Resources to Tasks in Workflows
US7949741B2 (en) * 2007-02-20 2011-05-24 Microsoft Corporation Printer user interface redirection over a terminal services session
US20080228926A1 (en) * 2007-03-13 2008-09-18 Asher Shiratzky Methods, media, and systems for balancing session initiation protocol server load
KR101398908B1 (ko) * 2007-05-22 2014-05-26 삼성전자주식회사 모바일 아이피를 사용하는 이동 통신 시스템에서 단말의이동성 관리 방법 및 시스템
US8667144B2 (en) * 2007-07-25 2014-03-04 Qualcomm Incorporated Wireless architecture for traditional wire based protocol
JP2009098880A (ja) * 2007-10-16 2009-05-07 Canon Inc 印刷処理システム、印刷処理方法、及びコンピュータプログラム
US8838817B1 (en) 2007-11-07 2014-09-16 Netapp, Inc. Application-controlled network packet classification
US8856804B2 (en) * 2008-02-08 2014-10-07 Microsoft Corporation Performance indicator for measuring responsiveness of user interface applications to user input
US7860900B2 (en) * 2008-02-25 2010-12-28 Microsoft Corporation Consistently signaling state changes
US8566833B1 (en) * 2008-03-11 2013-10-22 Netapp, Inc. Combined network and application processing in a multiprocessing environment
US8811294B2 (en) * 2008-04-04 2014-08-19 Qualcomm Incorporated Apparatus and methods for establishing client-host associations within a wireless network
JP2010102612A (ja) * 2008-10-27 2010-05-06 Seiko Epson Corp デバイス状態通知装置
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US9398089B2 (en) * 2008-12-11 2016-07-19 Qualcomm Incorporated Dynamic resource sharing among multiple wireless devices
US8645324B2 (en) * 2009-01-09 2014-02-04 Pivotal Software, Inc. Preventing pauses in algorithms requiring pre-image information concerning modifications during data replication
US9264248B2 (en) * 2009-07-02 2016-02-16 Qualcomm Incorporated System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment
US8260960B2 (en) * 2009-07-23 2012-09-04 International Business Machines Corporation Supporting non-delivery notification between a switch and device in a network
US20110069339A1 (en) * 2009-09-21 2011-03-24 Canon Kabushiki Kaisha Network printing communication method and apparatus
EP2504772A4 (en) * 2009-11-23 2013-07-31 Hewlett Packard Development Co CONNECTION OF RESOURCES IN A COMMON COMPUTER ENVIRONMENT
US9582238B2 (en) * 2009-12-14 2017-02-28 Qualcomm Incorporated Decomposed multi-stream (DMS) techniques for video display systems
US20110239117A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Natural User Interaction in Shared Resource Computing Environment
US20110239133A1 (en) * 2010-03-29 2011-09-29 Microsoft Corporation Shared resource computing collaboration sessions management
US8892628B2 (en) 2010-04-01 2014-11-18 Microsoft Corporation Administrative interface for managing shared resources
US20110258082A1 (en) * 2010-04-14 2011-10-20 Microsoft Corporation Application Store for Shared Resource Computing
US8539020B2 (en) 2010-06-14 2013-09-17 Microsoft Corporation Sessions to host processes with special requirements
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US9065876B2 (en) 2011-01-21 2015-06-23 Qualcomm Incorporated User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays
US9413803B2 (en) 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US9582239B2 (en) 2011-01-21 2017-02-28 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US8964783B2 (en) 2011-01-21 2015-02-24 Qualcomm Incorporated User input back channel for wireless displays
US9503771B2 (en) 2011-02-04 2016-11-22 Qualcomm Incorporated Low latency wireless display for graphics
US10108386B2 (en) 2011-02-04 2018-10-23 Qualcomm Incorporated Content provisioning for wireless back channel
US8674957B2 (en) 2011-02-04 2014-03-18 Qualcomm Incorporated User input device for wireless back channel
US9525998B2 (en) 2012-01-06 2016-12-20 Qualcomm Incorporated Wireless display with multiscreen service
US8990893B2 (en) * 2012-11-12 2015-03-24 International Business Machines Corporation Enterprise application session control and monitoring in a large distributed environment
US9100421B2 (en) 2012-11-12 2015-08-04 International Business Machines Corporation Enterprise application session control and monitoring in a large distributed environment
JP5966943B2 (ja) * 2013-01-23 2016-08-10 富士ゼロックス株式会社 プラグイン配信システム及び画像処理装置並びにプラグイン配信制御方法
JP6039506B2 (ja) * 2013-06-07 2016-12-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
US10223156B2 (en) 2013-06-09 2019-03-05 Apple Inc. Initiating background updates based on user activity
US11474767B1 (en) * 2014-05-28 2022-10-18 Amazon Technologies, Inc. Print from web services platform to local printer
US9432796B2 (en) 2014-05-30 2016-08-30 Apple Inc. Dynamic adjustment of mobile device based on peer event data
US9706518B2 (en) * 2014-05-30 2017-07-11 Apple Inc. Location based application feature notification
US9917760B2 (en) 2015-06-03 2018-03-13 International Business Machines Corporation Notifying original state listeners of events in a domain model
US10491708B2 (en) 2015-06-05 2019-11-26 Apple Inc. Context notifications
CN105763601A (zh) * 2016-01-29 2016-07-13 北京小米移动软件有限公司 文件分享方法及装置
US10775956B2 (en) 2016-04-29 2020-09-15 Microsoft Technology Licensing, Llc Electronic data storage re-sharing notification
CN106649280B (zh) * 2017-02-13 2019-07-09 长沙军鸽软件有限公司 一种创建共享语料库的方法
AU2019438656A1 (en) * 2019-04-01 2021-10-14 Citrix Systems, Inc. Unified application notification framework
CN112749023A (zh) * 2019-10-30 2021-05-04 阿里巴巴集团控股有限公司 一种信息的处理方法、装置、设备及系统

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE430715B (sv) 1982-04-28 1983-12-05 Westinghouse Electric Corp Sett och inforande av sekundervatten genom ett inlopp till ett anggeneratorkerl
JPS5957337A (ja) 1982-06-04 1984-04-02 コンピユ−タ−ズ・インタ−ナシヨナル・インコ−ポレ−テツド ユニバ−サルコンピユ−タ−プリンタインタ−フエイス
JPS6123468A (ja) * 1984-07-11 1986-01-31 Nippon Telegr & Teleph Corp <Ntt> 画像処理装置
JPS6391796A (ja) * 1986-10-06 1988-04-22 シャープ株式会社 印字フオ−マツトの変更方式
US5220674A (en) * 1987-07-17 1993-06-15 Digital Equipment Corporation Local area print server for requesting and storing required resource data and forwarding printer status message to selected destination
US4829468A (en) * 1987-09-18 1989-05-09 Hitachi, Ltd. Print control system
US5014221A (en) * 1988-01-29 1991-05-07 Digital Equipment Corporation Mechanism for arbitrating client access to a networked print server
US5047957A (en) * 1988-10-21 1991-09-10 Minolta Camera Kabushiki Kaisha Printer controller
JP3168580B2 (ja) * 1990-04-05 2001-05-21 セイコーエプソン株式会社 ページ記述言語インタープリタ
US5303336A (en) * 1990-05-14 1994-04-12 Hitachi, Ltd. Printing system including print server
US5268993A (en) * 1990-06-04 1993-12-07 Minolta Camera Kabushiki Kaisha Printer
US5388201A (en) * 1990-09-14 1995-02-07 Hourvitz; Leonard Method and apparatus for providing multiple bit depth windows
JPH04227537A (ja) * 1990-10-10 1992-08-17 Fuji Xerox Co Ltd プリンタおよびプリントジョブ制御装置
US5388200A (en) * 1990-12-21 1995-02-07 Sun Microsystems, Inc. Method and apparatus for writing directly to a frame buffer
JP2661416B2 (ja) * 1991-06-29 1997-10-08 ブラザー工業株式会社 印字システム
JPH0594390A (ja) * 1991-10-03 1993-04-16 Nec Corp 出力メツセージ制御方式
US5150454A (en) * 1991-10-16 1992-09-22 Patrick Wood Printing system and method
US5299296A (en) * 1991-10-17 1994-03-29 Ricoh Company, Ltd. Multi-function machine with interleaved job execution
US5353388A (en) * 1991-10-17 1994-10-04 Ricoh Company, Ltd. System and method for document processing
US5287434A (en) * 1991-10-28 1994-02-15 Monarch Marking Systems, Inc. Barcode identification system spooler
US5276799A (en) * 1991-10-29 1994-01-04 Xerox Corporation Expandable electronic subsystem for a printing machine
US5388207A (en) * 1991-11-25 1995-02-07 Industrial Technology Research Institute Architecutre for a window-based graphics system
US5222200A (en) * 1992-01-08 1993-06-22 Lexmark International, Inc. Automatic printer data stream language determination
US5386503A (en) * 1992-06-16 1995-01-31 Honeywell Inc. Method for controlling window displays in an open systems windows environment
US6667812B1 (en) * 1992-06-19 2003-12-23 Canon Kabushiki Kaisha Information processing apparatus with device control language based program selection
US5577173A (en) * 1992-07-10 1996-11-19 Microsoft Corporation System and method of printer banding
US5287194A (en) * 1992-11-25 1994-02-15 Xerox Corporation Distributed printing
EP0601860B1 (en) * 1992-12-10 1999-10-27 Matsushita Electric Industrial Co., Ltd. Server and client
IL108002A (en) * 1992-12-18 1996-01-19 Dataproducts Corp Method and device for regulating the configuration of a printer
US5483653A (en) * 1993-04-02 1996-01-09 Xerox Corporation Printing system with file specification parsing capability
US5625757A (en) * 1993-12-24 1997-04-29 Hitachi, Ltd. Printing system
US5580177A (en) * 1994-03-29 1996-12-03 Hewlett-Packard Company Printer/client network with centrally updated printer drivers and printer status monitoring
JP3448947B2 (ja) * 1994-04-11 2003-09-22 株式会社日立製作所 リモート印刷システムおよびそのリモート印刷方法
US5559933A (en) * 1994-04-22 1996-09-24 Unisys Corporation Distributed enterprise print controller
US5699495A (en) * 1994-07-27 1997-12-16 Microsoft Corporation Point-and-print in a distributed environment
US5602974A (en) * 1994-10-05 1997-02-11 Microsoft Corporation Device independent spooling in a print architecture
US5692111A (en) * 1994-10-05 1997-11-25 Microsoft Corporation Automatic installation of printers in a distributed environment
US5905906A (en) * 1995-03-31 1999-05-18 Lexmark International, Inc. Method and apparatus for configuring multiple printers on a network
JP3546528B2 (ja) * 1995-05-19 2004-07-28 富士通株式会社 端末制御方法及びサービスプロセッサ
JPH09134298A (ja) * 1995-11-10 1997-05-20 Nec Corp コンソールメッセージ制御システム
US5931909A (en) * 1996-04-19 1999-08-03 Sun Microsystems, Inc. System for multiple-client software installation and upgrade
US5919247A (en) * 1996-07-24 1999-07-06 Marimba, Inc. Method for the distribution of code and data updates
JP3804147B2 (ja) * 1997-02-13 2006-08-02 富士通株式会社 ゲートウエイ装置
US5960167A (en) * 1997-03-24 1999-09-28 Xerox Corporation Printer configuration system
JP3608905B2 (ja) * 1997-05-29 2005-01-12 三菱電機株式会社 データ通信システム及びデータ通信方法
US6125372A (en) * 1997-10-03 2000-09-26 Hewlett-Packard Company Server system and method of updating server software
US5974454A (en) * 1997-11-14 1999-10-26 Microsoft Corporation Method and system for installing and updating program module components
US5995723A (en) * 1997-11-18 1999-11-30 Xerox Corporation Client subsystem for changing document/job attributes in a network printing system
US6031623A (en) * 1997-12-11 2000-02-29 Hewlett-Packard Company Computer system with evolving printer
JP3873427B2 (ja) * 1998-01-30 2007-01-24 ブラザー工業株式会社 プリンタ制御システムにおける中間ファイルの加工装置及びその制御プログラムが記録された記録媒体
JP4298034B2 (ja) * 1998-03-05 2009-07-15 キヤノン株式会社 印刷システム、印刷管理装置、情報処理装置、およびそれらの制御方法、記憶媒体
NL1008659C2 (nl) 1998-03-20 1999-09-21 Oce Tech Bv Statuspresentatie van printers in een informatieverwerkings-systeem.
US6301012B1 (en) * 1998-04-24 2001-10-09 Hewlett-Packard Company Automatic configuration of a network printer
US6289385B1 (en) * 1998-06-05 2001-09-11 I2 Technologies, Inc. Computer workspace providing event management based on a permissibility framework
US6694354B1 (en) * 1998-11-30 2004-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Host computer access to peripheral device drivers
US6424424B1 (en) * 1999-01-19 2002-07-23 Hewlett-Packard Company Method and apparatus for automatic installation of shared printers over a network
US6678068B1 (en) * 1999-03-11 2004-01-13 Electronics For Imaging, Inc. Client print server link for output peripheral device
US7130068B1 (en) * 1999-10-05 2006-10-31 Canon Kabushiki Kaisha Print server apparatus, information processing apparatus, print job reservation management method, reservation job generation method and memory medium
US7213054B2 (en) * 1999-12-15 2007-05-01 Microsoft Corporation Methods and apparatuses for handling single-user applications in multi-user computing environments
US6788429B1 (en) * 2000-04-14 2004-09-07 Hewlett-Packard Development Company, Lp. Remote print queue management
US6814510B1 (en) * 2000-08-02 2004-11-09 Xerox Corporation Method and apparatus for automatic update of a printer driver configuration and status
CA2315270A1 (en) * 2000-08-04 2002-02-04 Charon Systems Inc. Printer driver system for remote printing
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
US6931447B1 (en) * 2000-09-27 2005-08-16 Hewlett-Packard Development Company, L.P. Remote hard copy apparatus control including firewall penetrating protocols
US7095518B1 (en) * 2000-10-16 2006-08-22 Electronics For Imaging, Inc. Spooling server apparatus and methods for receiving, storing, and forwarding a print job over a network
EP1205843A3 (en) * 2000-11-13 2004-10-20 Canon Kabushiki Kaisha User interfaces
US7265819B2 (en) * 2000-11-30 2007-09-04 Hewlett-Packard Development Company, L.P. System and method for print system monitoring
US7207041B2 (en) * 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
JP3888452B2 (ja) * 2001-07-02 2007-03-07 セイコーエプソン株式会社 ネットワークを介した印刷方法
US7170625B2 (en) * 2001-07-31 2007-01-30 Matsushita Electric Industrial Co., Ltd. Printer system and printing data notification method
JP3800320B2 (ja) * 2001-08-01 2006-07-26 セイコーエプソン株式会社 プリントシステム及びプリント業務を監視するサーバ
US7089259B1 (en) * 2001-08-03 2006-08-08 Mcafee, Inc. System and method for providing a framework for network appliance management in a distributed computing environment
US7327482B2 (en) * 2002-10-15 2008-02-05 Sharp Laboratories Of America, Inc. Integrated printer monitoring
US7233404B2 (en) * 2002-10-29 2007-06-19 International Business Machines Corporation System for processing print jobs
US20040143651A1 (en) * 2003-01-21 2004-07-22 Allen Kram H. System and method for distributing configuration changes made to a printing device
US7529823B2 (en) 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
JP2005071175A (ja) * 2003-08-26 2005-03-17 Ricoh Co Ltd 印刷データ生成方法、その方法をコンピュータに実行させるプログラム、クライアント端末、プリンタサーバ、印刷データ生成装置および画像形成装置
JP2005165634A (ja) * 2003-12-02 2005-06-23 Canon Inc 印刷システムおよび進捗表示処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
US20050179936A1 (en) * 2004-02-13 2005-08-18 Microsoft Corporation Scalable print spooler
US20050210129A1 (en) * 2004-03-19 2005-09-22 Microsoft Corporation Asynchronous channel for displaying user interface elements

Also Published As

Publication number Publication date
CN1591341B (zh) 2010-05-26
JP4638676B2 (ja) 2011-02-23
DE602004006902T2 (de) 2008-02-14
EP1463268A3 (en) 2005-01-26
KR101066682B1 (ko) 2011-09-21
US20040193678A1 (en) 2004-09-30
US7529823B2 (en) 2009-05-05
EP1463268B1 (en) 2007-06-13
EP1463268A2 (en) 2004-09-29
DE602004006902D1 (de) 2007-07-26
JP2004310745A (ja) 2004-11-04
CN1591341A (zh) 2005-03-09
ATE364956T1 (de) 2007-07-15

Similar Documents

Publication Publication Date Title
KR101066682B1 (ko) 공유 자원에 대한 통지 방법
US20200007587A1 (en) Managing execution of programs by multiple computing systems
JP3853593B2 (ja) ウェブアプリケーションサーバにおいて拡張可能な認証機構を実現するための方法および装置
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
US7739382B2 (en) Dynamic extension of network-accessible services
US9003428B2 (en) Computer data communications in a high speed, low latency data communications environment
US6687831B1 (en) Method and apparatus for multiple security service enablement in a data processing system
EP2140625B1 (en) Filtering application messages in a high speed, low latency data communications environment
US7987278B2 (en) Web services device profile on a multi-service device: dynamic addition of services
US20080137830A1 (en) Dispatching A Message Request To A Service Provider In A Messaging Environment
US20070233869A1 (en) Restricting device access per session
JPH0962523A (ja) 分散演算環境におけるイベント管理方法及びシステム
US10223321B2 (en) Combining redirected USB interfaces into a single composite device
US10313448B2 (en) Employing an auxiliary device to implement USB device redirection
KR101137132B1 (ko) 맞춤형 태그기반 프로토콜에서의 참조에 의한 전송
JP2002505464A (ja) 分散システムの装置との通信に用いられるダウンロード可能なコードを供給するための装置及び方法
JPH11312153A (ja) オブジェクト・サ―バ間の作業負荷管理方法および装置
US20090055511A1 (en) Non-programmatic access to data and to data transfer functions
US10536559B2 (en) Blocking an interface of a redirected USB composite device
US7873647B2 (en) Web services device profile on a multi-service device: device and facility manager
US20200252485A1 (en) Accelerating isochronous endpoints of redirected usb devices
US10261933B2 (en) Enabling session level restrictions for devices having disjoint stacks
EP1936922B1 (en) Discovery and addition of services in a multi-service device
US7367029B2 (en) Method and system for handling data
US20070198732A1 (en) Object-oriented discovery framework

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140814

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 8