[go: up one dir, main page]

KR101219855B1 - 동적 서비스 대리자 - Google Patents

동적 서비스 대리자 Download PDF

Info

Publication number
KR101219855B1
KR101219855B1 KR1020060017162A KR20060017162A KR101219855B1 KR 101219855 B1 KR101219855 B1 KR 101219855B1 KR 1020060017162 A KR1020060017162 A KR 1020060017162A KR 20060017162 A KR20060017162 A KR 20060017162A KR 101219855 B1 KR101219855 B1 KR 101219855B1
Authority
KR
South Korea
Prior art keywords
service
web service
delegate
legacy
instance
Prior art date
Application number
KR1020060017162A
Other languages
English (en)
Other versions
KR20060099403A (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 KR20060099403A publication Critical patent/KR20060099403A/ko
Application granted granted Critical
Publication of KR101219855B1 publication Critical patent/KR101219855B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명의 실시예는, 개발자가 새로운 인터페이스들을 정의하고, 웹 서비스 환경에서 달리 통신할 수 없는 레가시 컴포넌트를 위해 이들 새로운 인터페이스를 구현하는 커스텀 변환 코드를 삽입하게 하기 위한 메커니즘을 제공한다. 이들 새로운 인터페이스는 레가시 컴포넌트 인터페이스로부터 웹 서비스 클라이언트를 추상화하는 방식으로 웹 서비스 클라이언트에 노출된다. 새로운 인터페이스를 구현하는 오브젝트는 본 명세서에서 "서비스 대리자"라고 지칭되고, 새로운 인터페이스는 흔히, "대리 인터페이스"라고 지칭될 것이다. 이들 대리 인터페이스는 서비스를 제공하는 어플리케이션의 시작 시에, 서비스 대리자의 인스턴스와 함께 개시될 수 있다. 또한, 동적 웹 서비스는 서비스 대리자에 의해 제공된 특징을 필요로 하지 않을 수 있는 서비스에 대한 서비스 대리자와 함께 동시에 실행될 수 있다.
Figure R1020060017162
커스텀 오브젝트, 레가시 컴포넌트, 서비스 대리자, 대리 인터페이스

Description

동적 서비스 대리자{DYNAMIC SERVICE SURROGATES}
도 1a는 본 발명의 실시예에 따라 동적 웹 서비스를 생성하도록 구성된 분산 시스템을 도시.
도 1b는 본 발명의 실시예에 따라 서비스 대리자 및 동적 웹 서비스를 통해 웹 서비스를 제공하도록 구성된 분산 시스템을 도시.
도 2는 실시예에 따라 개발자가 생성한 커스텀 오브젝트를 통해 웹 서비스를 제공하는 방법에 대한 순서도를 도시.
도 3은 실시예에 따라 서비스 대리자의 인스턴스를 개시하는 방법에 대한 순서도를 도시.
도 4는 본 발명에 적합한 오퍼레이팅 환경을 제공하는 예시적인 시스템을 도시.
<도면의 주요 부분에 대한 부호의 설명>
104 : 대리 메타데이터
106 : 대리 디스크립션
108 : 구축기
114 : 대리 인터페이스
115 : 호출
116 : 대리 인스턴스
110 : 서비스
112 : 다른 시스템
120 : 반환 값
122 : 웹 서비스 인프라구조
125 : 어플리케이션
130 : 응답
135 : 레가시 컴포넌트
140 : 요구
145 : 웹 서비스 클라이언트
150 : 웹 서비스 디스크립션
155 : 구성 파일
160 : 컴포넌트 메타데이터
175 : 동적 웹 서비스
180 : 웹 서비스 초기화기
본 발명은 일반적으로 웹 서비스에 관련된 것이다. 더 상세하게, 본 발명은 웹 서비스 환경 내에서 통신하도록 개발되지 않은 레가시 어플리케이션 컴포넌트를 위한 동적 웹 서비스 및 동적 서비스 대리자를 생성한다. 또한, 서비스 대리자는 이롭게도, 웹 서비스 클라이언트와 레가시 인터페이스 간에서 추상화 계층을 제공함으로써 웹 서비스 클라이어트에 노출된 인터페이스를 통한 개발자의 더 엄격한 제어를 허용한다.
컴퓨터 시스템 및 관련 기술은 사회의 여러 면에 영향을 끼친다. 실제로, 정보를 프로세싱하는 컴퓨터 시스템의 능력은 우리가 살아가고 일하는 방식을 바꾸었다. 이제, 컴퓨터 시스템은 흔히, 컴퓨터 시스템의 출현 전에는 수동으로 수행되었던 태스크(예를 들어, 워드 프로세싱, 스케줄링, 데이터베이스 관리 등)의 운영자 역할을 한다. 최근에, 컴퓨터 시스템들은 서로 연결되어, 컴퓨터 시스템들이 데이터를 공유하기 위해 전자적으로 통신할 수 있는 컴퓨터 네트워크를 형성하였다. 웹 서비스는 컴퓨터 시스템들 간의 그러한 통신을 진보시키는 구동력이었으며, 우리가 소프트웨어를 구축하고 사용하는 방식을 뒤집고 있다.
웹 서비스는 어플리케이션들이 데이터를 공유하게 하며, 특히, 이들 어플리케이션이 어떻게 구축되었는지, 이들 어플리케이션이 어떤 오퍼레이팅 시스템 또는 플랫폼 상에서 실행되는지, 및 이들 어플리케이션에 액세스하는 데 어떤 장치가 사용되는지를 고려하지 않고서, 다른 어플리케이션으로부터 기능을 호출하게 한다. 웹 서비스는 SOAP(Simple Open Access Protocol), XML(eXtensible Markup Language), UDDI(Universal Description Discovery Integration), WSDL(Web Service Description Language) 등을 포함한 산업-표준 프로토콜에 의해 인터넷을 통해 호출된다. 웹 서비스들은 서로에 대해 독립적으로 남아있지만, 특정 태스크를 수행하는 협력 그룹에 스스로를 느슨하게 링크시킬 수 있다.
종종, 웹 서버 네트워크 상의 전자 통신은 서버 컴퓨터 시스템(이하, "서버", "서비스" 또는 "웹 서비스"라고 지칭)에서 네트워크 서비스(예를 들어, 웹 서비스)로의 액세스를 요구하는 클라이언트 컴퓨터 시스템(이하, "클라이언트"라고 지칭)을 포함한다. 따라서, 클라이언트는 시스템 자원으로의 특정 액세스에 대한 요구를 서비스에 송신하며, 여기서, 클라이언트가 인가 및 검증되면, 서비스는 요구된 정보를 제공하는 응답 메시지로 응답한다. 물론, 클라이언트와 서비스 간의 다른 메시징 패턴이 이용가능하며, 단순한 단일의 메시지 뿐만 아니라, 예를 들어, 통지, 요청-응답, 펍-서브 패턴(pub-sub pattern), 폴링, 킥-푸쉬(kick-push), 큐잉 등과 같은 더 복잡한 복수-메시지 교환도 포함한다. 또한, 이러한 유형의 통신은 분산 시스템(예를 들어, 웹 서비스)에 대한 계약에서 클라이언트와 서비스 둘 다에 의해 정의된 다양한 요건 및 능력에 의해 관리된다.
계약은 서비스(또는, 클라이언트) 행위의 가시적인 양태의 표현이다. 계약은 기계-판독가능한 언어와 인간 언어의 혼합으로 나타난다. 추가적 정확성을 위한 명백한 기회 이외에, 기계-판독가능한 언어는 툴링이 부분적인 서비스 구현을 구성하고, 서비스 배치를 자동화하고, 교환된 메시지를 심사/검증하고, 서비스를 관리하게 하며, 다른 네트워크-관련 기능의 호스트를 가능하게 한다. 그러나, 기계-판독가능한 언어의 표현력에 있어서의 제한으로 인해, 인간 언어는 원칙적으로는, 메시지 및 메시지 교환 패턴 시멘틱을 설명하기 위해, 계약의 중요한 구성요소 로 남아있다.
네트워크 프로토콜 기술 언어(예를 들어, WSDL)는 공통 또는 표준 언어로 계약(예를 들어, 웹 서비스 계약)을 설명하기 위한 전체적인 래퍼 또는 명세를 제공한다. 그러한 명세는 개발자 및 개발자 툴이 계약을 생성하고 번역하는 것을 용이하게 한다. 이러한 네트워크 프로토콜 기술 언어(이하, "NPDL"이라고 지칭)는 확장적인 툴링 스위트를 가지며, 이것은 주로 그것의 인기도를 나타낸다.
웹 서비스의 출현 전에, 수년 동안, 여러 벤더(예를 들어, COM(Component Object Model), DCOM(Distributed Component Object Model), CORBA(Common Object Request Broker Architecture))로부터의 레가시 컴포넌트(legacy component) 기반의 아키텍처를 이용하여 상당한 수의 분산 어플리케이션이 작성되었다. 그러나, 표준 기반의 웹 서비스의 출현 및 발전으로, 웹 서비스로서 이들 레가시 컴포넌트로부터 비지니스 논리를 노출시키는 것에 대한 관심이 존재한다. 예를 들어, 다음의 접근과는 관계없이, 목적은, 일반적으로 다음의 인터페이스
interface IStockSystem : IDispatch {
HRESULT GetProductDescription (
[in] BSTR ProductID,
[out, retval] BSTR *ProdDesc);
HRESULT GetProductInventory(
[in] BSTR ProductID,
[out, retval] short *ProdCount);
};
를 지원하고 그 컴포넌트 정의로부터 다음의 WSDL 프레그먼트
<wsdl : portType name = "StockSystem">
<wsdl : operation name = "GetProductDescription">
<wsdl : input message = "tns : GetProductDescriptionIn" />
<wsdl : output message = "tns : GetProductDescriptionOut" />
</wsdl : operation>
<wsdl : operation name = "GetProductInventory">
<wsdl : input message = "tns : "GetProductInventoryIn" />
<wsdl : input message = "tns : "GetProductInventoryOut" />
</wsdl : operation>
</wsdl : portType>
에서 설명된 두개의 동작과 대응하는 웹 서비스 계층을 생성한 것과 같은 어플리케이션 컴포넌트를 취하는 것이다.
최근에는, 웹 서비스 환경 내에서 레가시 컴포넌트를 변환 또는 사용하기 위해 따르는 두개의 주요 패턴 또는 접근만이 존재한다. 한 접근은 이주 또는 변경인데, 이것은 개발자가 웹 서비스 지원을 추가하도록 컴포넌트 소스 코드를 변경하기를 요구한다. 어플리케이션이 컴파일되고 실행될 때, 어플리케이션은 적절한 웹 서비스 지원으로 시작하는 반면, 여전히 전형적인 클라이언트가 기저 어플리케이션에 접속하게 할 것이다.
다른 접근은 툴링 및 메타데이터 구동된 접근인데, 이것은 정적 래핑 서비스를 생성한다. 컴포넌트 소스 코드 변경을 요구하기 보다, 이 접근은 더 외부의 접근을 이용하여, 컴포넌트에 대한 현존의 레지스터된 메타데이터를 검사하여, 컴포넌트가 제공해야하는 서비스를 결정한다. 이것은 외부적이지만 적어도 초기에는 기저의 수정되지 않은 컴포넌트에 일관되는 정적 웹 서비스 래퍼를 생성한다.
상술된 변경 접근 및 정적 접근은 레가시 컴포넌트의 비지니스 논리가 웹 서비스 환경에서 액세스될 수 있게 하였지만, 이들 접근 둘 다에 관련된 몇몇 단점 및 문제점이 있다. 예를 들어, 변경 접근은 비지니스 논리를 변경하려는 요구가 없을 때에도 소스 코드 변경을 요구하기 때문에, 이것은 단순한 운영 프로시저이라기보다 개발 태스크이다. 따라서, 그러한 태스크는 일반적인 운영자 역할의 범위를 넘어서고, 추가적인 기술 집합을 요구한다. 또한, 웹 서비스를 가능하게 하는 개발 변경은 원래의 코딩 환경을 이용하여 이용가능하지 못할 수 있다. 예를 들어, 더 이상 지원되지 않는 레가시 언어를 이용하여 작성된 컴포넌트를 변경하는 경우에, 컴포넌트는 우선, 현재의 언어에 이식되어야 한다. 따라서, 초기에 메소드에 속성을 추가하는 것처럼 보이는 변경은 사실, 상이한 언어, 런타임 및 개발 환경으로의 이주이다.
정적 툴링 접근에서, 기저 컴포넌트가 변경되거나 새로운 버전이 배치될 때 문제가 존재한다. 그러한 예에서, 변경은 서비스가 재생성될 때까지 래핑 서비스에 자동적으로 반영되지 않을 것이다. 또한, 웹 서비스 동작에 있어서, 서비스와 기처 컴포넌트 간의 명백한 의존성이 존재한다. 따라서, 컴포넌트와 웹 서비스의 수명이 동기화될 것(즉, 래핑 서비스는 컴포넌트가 활성화되기를 요구하고, 컴포넌트는 래퍼가 활성화되기를 요구할 것)을 보장하기 위한 관리가 취해져야 한다. 또한, 래퍼의 환경 및 외부 특징에 따라, 일반적으로, 배치되고 운영될 추가적인 컴포넌트가 존재한다. 다시 말하면, 컴포넌트가 다른 머신으로 옮겨지는 경우, 래퍼 컴포넌트도 그에 따라 식별되어 옮겨져야 한다.
상술된 변경 접근 및 정적 접근의 단점 및 장애를 해결하는 한가지 접근은 본 명세서에 설명된 바와 같이, 그리고 본 명세서에서 참조로서 통합되는 2005년 3월 8일자의 미국 특허 출원 제______호인 "DYNAMIC SERVICE GENERATION FOR LEGACY COMPONENTS"에 더 상세히 설명되는 바와 같이, 웹 서비스를 동적으로 생성하는 것이다. 그러나, (상술된 시스템 뿐만 아니라) 이 접근도 여전히 여러 장애를 갖는다. 예를 들어, 이들 시스템이 갖는 한 문제점은, 여러 이유로 변경될 수 없거나 웹 서비스로서의 노출에 적절하지 못할 수 있는 인터페이스를 갖는 분산 어플리케이션이 존재한다는 것이다. 예를 들어, 그것은 웹 서비스 메시지, 예를 들어, SOAP 메시지로 변환될 수 없는 매개변수를 요구하는 호출을 가질 수 있다. 다르게, 또는 그와 함께, 그것은 일반적인 웹 서비스에 의해 지원되지 않는 하나의 동작을 위해 메소드 호출 라운드트립(roundtrip)을 요구하는 방식으로 작성되었을 수 있다.
웹 서비스로서 노출하기 위한 부적절한 인터페이스의 예로서, 다음의 인터페이스를 취한다.
[object, uuid(a0753298-46bc-444e-a89b-b66d8a0cec57)]
interface IOrderDescription : IUnknown
{
HRESULT GetProductName([out] BSTR *ppszName);
HRESULT GetQuantity([out] DWORD *pdwQuantity);
HRESULT GetNegotiatedPrice([out] DWORD *pdwPrice);
}
[object, uuid(5605102f-d914-4633-a974-4369a1af8db9)]
interface IComPlusObject : IUnknown
{
HRESULT PlaceOrder([in] IOrderDescription *pOrderDescription);
}
도시된 바와 같이, IComPlusObject는 현존의 COM 오브젝트에 의해 노출되고, IComPlusObject를 구현하는 오브젝트(즉, IOrderDescription)를 단일의 매개변수로서 취한다. 그러나, 일반적인 웹 서비스 인프라구조는 오브젝트를 매개변수로서 취하는 메소드 호출을 지원하지 않기 때문에, IComPlusObject는 있는 그대로 웹 서비스로서 노출될 수 없다는 것을 유념한다.
그러한 단점에 대한 보상을 위해, 현재의 실시는 적어도 변경 접근으로 상술된 컴포넌트 및 컴포넌트 인터페이스(및, 가능하게는 전체 어플리케이션)의 재작성 을 제공한다. 그럼에도 불구하고, 상술된 바와 같이, 재작성을 통해 새로운 서비스를 생성하기 위한 이 원시적 접근은 매우 과도한 태스크이다. 클라이언트와 서비스는 동일한 인터페이스의 동일한 인스턴스의 사용을 통해 단단히 연결되어 있기 때문에, 클라이언트와 서버 둘 다는 서비스에 대한 변경 시에 업데이트되어야 한다. 또한, 이 발전된 재작성은 일반적으로 대부분의 사용자의 기술 집합 내에 있지 않을 것이다.
적어도 상술된 이유 때문에, 개발자가 기저 컴포넌트 소스 코드를 변경하기를 요구하지 않고서 레가시 컴포넌트에 웹 서비스 및 비지니스 로직을 제공하여, 컴포넌트 변경 또는 개작을 허용할 뿐만 아니라, 서비스와 기저의 컴포넌트 간의 명백한 의존성을 지원할 필요가 있다. 또한, 개발자가 어플리케이션 컴포넌트 또는 컴포넌트 인터페이스를 재작성할 필요없이, 동작불가능하거나 효율적이지 못한 컴포넌트 인터페이스에 대한 인터페이스를 생성하게 하는 메커니즘을 제공할 필요가 있다.
웹 서비스 환경에서 레가시 컴포넌트에 서비스 및 비지니스 논리를 제공하는 전형적인 시스템의 상술된 단점 및 장애는 본 발명의 실시예를 통해 극복된다. 예를 들어, 본 발명은 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 레가시 컴포넌트를 위해 개발자가 생성한 커스텀 오브젝트를 통해 웹 서비스를 지원하기 위한 메커니즘을 제공한다. 커스텀 오브젝트는 레가시 컴포넌트 또는 컴포넌트 인터페이스의 재작성을 요구하지 않고서, 웹 서비스의 상 호동작성, 강건성 및 효율성에 대한 개발자의 엄격한 제어를 허용한다.
예를 들어, 본 발명의 실시예는 웹 서비스 클라이언트로부터, 레가시 컴포넌트들을 갖는 어플리케이션에 의해 제공된 서비스에 액세스하고자 하는 요구를 수신한다. 레가시 컴포넌트들은 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 이용하여 통신한다. 그 후, 그 요구는 서비스 대리자(service surrogate)에 의해 제어되는 서비스에 대응하는 것으로서 식별되는데, 서비스 대리자는, 웹 서비스 클라이언트와 레가시 인터페이스 간에서 추상화로서 대리 인터페이스를 노출시키기 위해 개발자가 생성한 커스텀 오브젝트이다. 이 요구의 적어도 일부분은 더 이상의 프로세싱을 위해, 대리 인터페이스를 통해 서비스 대리자의 인스턴스에 전달된다. 서비스 대리자는 하나 이상의 레가시 컴포넌트로의 호출, 서비스 대리자의 인스턴스로의 호출, 또는 어플리케이션 및 서비스 대리자의 인스턴스 외부의 다른 시스템들로의 호출 중 하나 이상에 의해 그 요구의 적어도 일부분을 프로세싱하도록 구성된다.
다른 실시예는 개발자가 생성한 커스텀 오브젝트의 초기화를 제공한다. 이 실시예에서, 어플리케이션을 초기화하고자 하는 요구가 수신되며, 이 때, 어플리케이션은 서비스를 제공하기 위한 하나 이상의 레가시 컴포넌트들을 포함한다. 또한, 레가시 컴포넌트들은 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 이용하여 통신한다. 어플리케이션을 초기화하고자 하는 요구에 기초하여, 서비스 대리자의 인스턴스는 생성될 필요가 있는 것으로서 식별되는데, 이 때, 서비스 대리자는 웹 서비스 클라이언트와 레가시 인터페이스 간에서 추상화로서 대 리 인터페이스를 노출시키기 위해 개발자가 생성한 커스텀 오브젝트이다. 그 후, 웹 서비스 클라이언트에 노출될 대리 인터페이스를 설명하는 메타데이터가 액세스된다. 이 메타데이터는 대리 인터페이스를 포함하는 서비스 대리자의 인스턴스를 생성하는 데 사용된다. 서비스 대리자의 인스턴스는 또한, 하나 이상의 레가시 컴포넌트로의 호출, 서비스 대리자의 인스턴스로의 호출, 또는 어플리케이션 및 서비스 대리자의 인스턴스 외부의 다른 시스템들로의 호출 중 하나 이상에 의해 웹 서비스 클라이언트로부터의 요구의 적어도 일부분을 프로세싱하도록 구성된다.
본 발명의 추가적 특징 및 장점은 다음의 설명에서 설명될 것이며, 부분적으로는 이 설명으로부터 명백해질 것이고, 본 발명의 실시에 의해 학습될 수도 있다. 본 발명의 특징 및 장점은 첨부된 청구범위에서 특별히 지적된 수단 및 결합에 의해 실현되고 획득될 수 있다. 본 발명의 이러한 특징 및 그 외의 특징은 다음의 설명 및 첨부된 청구범위로부터 더 완전히 명백해질 것이고, 이후에 기술되는 본 발명의 실시에 의해 학습될 수도 있다.
본 발명의 상술된 장점 및 특징, 및 그 외의 장점 및 특징이 획득될 수 있는 방법을 설명하기 위해, 첨부된 도면에 도시된 특정 실시예를 참조함으로써, 간단히 상술된 본 발명에 대한 더 상세한 설명이 제공될 것이다. 이들 도면은 본 발명의 일반적인 실시예만을 도시하는 것이므로 그 범위를 제한하는 것으로 간주되어서는 안된다는 것을 이해하면서, 본 발명은 첨부 도면의 사용을 통해 추가의 특이성 및 상세사항으로 설명될 것이다.
본 발명은 웹 서비스 환경 내에서 통신하도록 개발, 설계 또는 코딩되지 않 은 레가시 어플리케이션 컴포넌트를 위한 동적 웹 서비스 및 대리 서비스의 인스턴스를 생성하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 대리 서비스는 레가시 컴포넌트 또는 인터페이스의 재작성을 요구하지 않고서, 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 개발자의 더 엄격한 제어를 허용하는 커스텀 오브젝트 또는 코드이다. 본 발명의 실시예는 이하에 더 상세히 설명되는 바와 같이, 다양한 컴퓨터 하드웨어 컴포넌트 또는 모듈을 포함하는 특수 목적 또는 범용 컴퓨터를 포함할 수 있다.
제1 실시예에서, 본 발명은 레가시 어플리케이션 컴포넌트의 초기화 동안 운영 이벤트가 동적 웹 서비스의 생성을 트리거하거나 야기하게 하는 메커니즘을 제공한다. 다른 유형의 정적 툴링 접근과 마찬가지로, 본원에서 지원되는 동적 접근은 레가시 컴포넌트와 통신하기 위한 인터페이스를 설명하는 이용가능한 메타데이터를 이용한다. 1회 또는 가끔씩의 툴링을 통해 웹 서비스를 생성하고 나타내기 보다, 실시예는 어플리케이션 초기화의 표준 부분으로서 지원 인프라구조에 의한 웹 서비스의 생성을 제공한다. 어플리케이션을 중지시킬 때, 대응하는 동적 웹 서비스를 중지시키고 동적 웹 서비스를 생성하는 데 사용된 웹 서비스 디스크립션(web service description)을 삭제하는 종료 시퀀스가 제공된다. 따라서, 어플리케이션이 시작될 때마다, 이용가능한 메타데이터가 고려될 필요가 있을 것이며 일관된 서비스가 즉시 구축될 것이다.
도 1a는 상술된 다양한 실시예를 도시한다. 도시된 바와 같이, 분산 시스템(100)은 웹 서비스 클라이언트(145)와 레가시 클라이언트(105) 둘 다를 지원하고, 이에 의해, 서비스(110) 지향의 어플리케이션(125)으로의 액세스를 허용하도록 규정되어 있다. 더 상세하게, 서비스(110)는 레가시 컴포넌트(135)를 포함하는 어플리케이션(125)을 가지고 있다. 실시예는 운영자(도시되지 않음)가 운영 구성 설정(155)을 설정하게 하는데, 운영 구성 설정(155)은 어플리케이션(125)의 시작 시에 동적 웹 서비스(175)가 생성되어야 한다는 것을 나타낸다. 따라서, 운영 구성 설정(155)에 기초하여, 어플리케이션(125)의 시작 시에(및, 가능하게는, 어플리케이션 특정 구성 파일로부터 추상화된 다른 구성을 조건으로), 웹 서비스 초기화기(180)는 카탈로그 데이터베이스(165)로부터의 메타데이터(160)에 액세스할 것이다.
실시예는 어플리케이션(125)(및 대응하는 동적 웹 서비스(175))의 초기화를 위한 몇몇 방법을 허용한다는 것을 유념한다. 예를 들어, 어플리케이션(125)의 초기화에 대한 요구는 운영자 사용자 인터페이스로부터의 입력을 통해 수신될 수 있다. 다른 실시예는 어플리케이션(125)에 의해 제공된 서비스로의 액세스에 대한 요구(140)(또는 다른 유사한 유형의 요구)가 수신될 때 어플리케이션(125)을 자동으로 초기화한다. 물론, 본 발명에서는, 어플리케이션(125)을 초기화하는 다른 잘 알려진 방법도 이용가능하다. 따라서, 어플리케이션(125)을 초기화하기 위한 임의의 특정 방법 또는 프로세스는 단지 예시를 위한 것일 뿐이며, 명시적으로 주장되지 않는 한, 본 발명의 범위를 제한하거나 달리 좁히는 것으로 의도되지 않는다.
어플리케이션(125)이 초기화되는 방법에 상관없이, 전술된 바와 같이, 초기화 시에, 컴포넌트 인터페이스 설명 메타데이터(160)가 액세스된다. 이 메타데이터(160)는 동적 웹 서비스(175)가 레가시 컴포넌트(135)와 어떻게 통신해야 하는지 에 관한 정보이다. 다시 말하면, 메타데이터(160)는 다른 것들 중에, 레가시 컴포넌트(135)에 대해 어떤 호출(115)이 요구되는지; 레가시 컴포넌트(135)에 어떤 매개변수(115)를 전달할지; 어떤 순서로 매개변수(115)를 전달해야 하는지; 및 메시지 교환 패턴(이것은, 예를 들어, 레가시 컴포넌트(135)로부터 반환 값(120)이 수신되어야 하는지를 나타냄) 중 하나 이상을 나타낸다. 모든 호출(115)이 매개변수(115)를 포함하는 것은 아님을 유념한다. 예를 들어, FormatAllAvailableDisks() 및 그 외의 호출의 동작은 매개변수를 요구하지 않는다. 따라서, 메타데이터(160)는 물론 생성될 호출(115)의 유형에 따라, 레가시 컴포넌트(135)에 전달할 매개변수(115)에 대한 상세사항을 가질 수도 있고 갖지 않을 수도 있다.
어떤 경우든, 메타데이터(160)에 액세스할 때, 웹 서비스 초기화기(180)는 웹 서비스 디스크립션(150) 또는 계약(예를 들어, WSDL 문서)을 생성할 수 있다. 또한, 웹 서비스 초기화기(180)는 웹 서비스 디스크립션(150)을 이용하여 런타임동안 동적 웹 서비스(175)를 시작할 것이다. 또한, 웹 서비스 디스크립션(150)을 이용하여 그것에 일치하는 웹 서비스 클라이언트(145)를 생성하는 것이 필요할 것이다. 생성된 웹 서비스 디스크립션(150)이 동적 웹 서비스(175)를 생성하는 데 사용되었지만, 그러한 경우가 본 발명에 필수적인 것은 아님을 유념한다. 다시 말하면, 웹 서비스 초기화기(180)는 메타데이터(160)에 액세스할 때, 웹 서비스 디스크립션(150)을 사용하지 않고서, 동적 웹 서비스(175)를 자동으로 생성할 수 있다. 따라서, 동적 웹 서비스(175)를 생성하기 위해 웹 서비스 디스크립션(150)을 사용하는 것은 단지 예시를 위한 것일 뿐이며, 명시적으로 주장되지 않는 한, 본 발명 의 범위를 제한하거나 달리 좁히는 것으로 의도되지 않는다.
동적 웹 서비스(175)가 생성되고 레가시 컴포넌트(135)가 활성화되면, 웹 서비스 클라이언트(145)는 레가시 컴포넌트(135)에 의해 제공된 서비스에 액세스하기 위한 요구(140)를 생성할 수 있다. 요구(140)는 레가시 컴포넌트(135)에 의해 제공된 서비스를 요구하기 위한 동작, 및/또는 (있다면) 레가시 컴포넌트(135)가 필요로 하는 매개변수(115)와 같은 것들을 포함할 수 있다. 요구(140)의 수신 시에, 그 요구 내의 동작에 기초하여, 동적 웹 서비스(175)는 요구(140)의 컨텐츠를 검사하고 레가시 컴포넌트(135)에 대해 (있다면) 적절한 매개변수를 갖는 적절한 호출(115)을 행한다. 다시 말하면, 동적 웹 서비스(175)는 공통 웹 서비스 요구 메시지(140)(예를 들어, XML 문서)와, 레가시 컴포넌트(135)와 통신하기 위한 적절한 호출 및 (있다면) 요구된 매개변수(115) 간의 변환기로서 동작한다.
전술된 바와 같이, 적절한 호출(115) 및 (있다면) 요구된 매개변수(115) 외에, 동적 웹 서비스(175)는 레가시 컴포넌트(135)에 대한 적절한 메시지 교환 패턴을 알도록 구성되어야 한다. 따라서, 반환 값(120)이 요구되면, 동적 웹 서비스(175)는 그러한 반환을 기대할 것이다. 이 반환 값(120)은 동적 웹 서비스(175)에 의해 생성된 적절한 웹 서비스 응답(130)으로 포맷팅될 수 있다. 이 예에서의 메시지 교환 패턴은 요구-응답이지만, 본 발명에서는 다른 메시지 교환 패턴도 이용가능하다는 것을 유념한다. 따라서, 본 명세서에 설명된 임의의 특정 유형의 메시지 교환 패턴의 사용은 단지 예시를 위한 것일 뿐이며, 명시적으로 주장되지 않는 한, 본 발명의 범위를 제한하거나 달리 좁히는 것으로 의도되지 않는다.
다른 실시예는 어플리케이션(125)에 대한 종료 시퀀스를 제공한다. 레가시 어플리케이션(125)이 종료되거나 정지될 때, 실시예는 동적 웹 서비스(175)를 종료하고, 예를 들어, 웹 서비스 디스크립션(150)을 휴지통(170)에 송신함으로써 웹 서비스 디스크립션(150)을 삭제한다. 따라서, 웹 서비스 디스크립션(150)이 지속되고/되거나 재사용되지 않기 때문에, 레가시 컴포넌트(175)가 수정되거나 업데이트된 버전이 제공되는 경우, 모순은 없을 것이다.
본 발명은 또한, 레가시 클라이언트(105)도 지원한다는 것을 유념한다. 따라서, 레가시 클라이언트(105)는 직접 레가시 어플리케이션(125)에 대해 (있다면) 적절한 매개변수(115)를 갖는 적절한 호출을 행할 수 있다. (있다면) 반환 값(120)도 레가시 어플리케이션(125)으로부터 레가시 클라이언트(105)로 직접 전달될 수 있다.
전술된 바와 같이, 상술된 동적 웹 서비스가 레가시 컴포넌트에 대한 웹 서비스의 수정된 정적 접근법에 관련된 현재의 문제를 극복하더라도, 여전히 이 동적 시스템을 강화시키거나 개선시킬 필요가 있다. 예를 들어, 상술된 바와 같이, 인터페이스를 변경하는 것이 불가능할 수도 있고, 인터페이스는 많은 이유로 웹 서비스로서의 노출에 적절하지 못할 수도 있다. 따라서, 본 발명의 실시예는, 개발자가 새로운 인터페이스들을 정의하고, 이들 새로운 인터페이스를 구현하는 커스텀 변형 코드를 삽입하게 하기 위한 메커니즘을 제공한다. 이들 새로운 인터페이스는 레가시 컴포넌트 인터페이스로부터 웹 서비스 클라이언트를 추상화하는 방식으로 웹 서비스 클라이언트에 노출된다. 새로운 인터페이스를 구현하는 오브젝트는 여 기에서 "서비스 대리자"라고 지칭되며, 새로운 인터페이스는 흔히, "대리 인터페이스"라고 지칭될 것이다.
서비스 대리자가 구현될 수 있는 방법에 대한 예로서, "발명이 이루고자 하는 기술적 과제" 섹션을 상기해보자. 그곳에서, IComPlusObject는 오브젝트 참조를 단일의 매개변수로서 취한다. 전술된 바와 같이, 일반적 웹 서비스 인프라구조는 오브젝트를 매개변수로서 취하는 메소드 호출을 지원하지 않기 때문에, IComPlusObject는 실패할 것이고 이 서비스는 비-레가시 클라이언트에는 이용가능하지 않을 것이다. 그러나, 실시예는 사용자 또는 개발자가 다음의 인터페이스를 구현하는 서비스 대리자를 정의하게 함으로써, 상술된 IComPlusObject 인터페이스가 웹 서비스로서 노출되게 하는 메커니즘을 제공한다.
[ServiceContract]
interface ISurrogateInterface
{
void PlaceOrder(string productName, int quantity, int price);
}
개발자는 레가시 COM 오브젝트의 PlaceOrder 메소드에 대한 IOrderDescription 매개변수를 채우기 위해 서비스 대리자를 생성함으로써 새로운 PlaceOrder 함수를 구현할 수 있다.
서비스 대리자가 웹 서비스 클라이언트에 노출하는 대리 인터페이스는 레가시 컴포넌트를 위한 레가시 인터페이스에 관련된 어떠한 방식일 필요가 없음을 유 념한다. 예를 들어, 대리 인터페이스는 레가시 인터페이스와는 다른 개수의 호출을 가질 수 있고, 서비스 대리자 호출은 현존의 레가시 호출에 임의의 방식으로 맵핑될 수 있다. 사실, 이하에 더 상세히 설명되는 바와 같이, 서비스 대리자는 레가시 컴포넌트로의 호출없이, 또는 요구의 일부분을 프로세싱하고 다른 필요한 함수를 지원하는 레가시 컴포넌트에 의존하는 방법으로, 요구 또는 그것의 부분들을 프로세싱하도록 구성될 수 있다. 다르게, 또는 그와 함께, 서비스 대리자는 어플리케이션 및 서비스 대리자의 인스턴스 외부의 다른 시스템을 통해 요구의 적어도 일부분을 프로세싱하도록 구성될 수 있다.
예를 들어, 한 서비스 대리자 함수가 복수의 현존 함수 또는 레가시 함수를 호출할 수도 있고, 다수의 서비스 대리자 함수가 동일한 레가시 컴포넌트를 호출할 수도 있다. 또한, 상술한 바와 같이, 주어진 서비스 대리자 함수는 현존 레가시 컴포넌트에 대해 호출할 필요 조차 없으며, 호출 자체를 핸들링하기 보다는 선택한다. 이러한 방식으로, 대리자는 예전의 서비스로부터 새로운 서비스 어플리케이션으로 이주하는 방법도 될 수 있다.
이해되는 바와 같이, 상술된 서비스 대리자는 레가시 컴포넌트에 웹 서비스를 제공하기 위한 기존의 매커니즘에 비해 다수의 이로운 특징을 제공한다. 예를 들어, 종래기술에서는, 클라이언트 및 서버가 단단히 연결되어 남아있기를 요구한다. 이것은 부분적으로, 클라이언트는 서버가 구현하는 동일한 인터페이스를 사용해야 한다는 사실 때문이다. 그러하듯이, 서비스 또는 그것의 인터페이스에 대한 어떠한 수정도 웹 서비스 클라이언트에 대해 업데이트되어야 한다.
그러나, 본 발명의 서비스 대리자 메커니즘을 통해, 웹 서비스 클라이언트 및 레가시 컴포넌트에 의해 제공된 서비스는 느슨하게 연결된다. 따라서, 서비스 대리자는 현존의 레가시 서비스 또는 레가시 컴포넌트에 보이지 않는(transparent) 반면, 노출된 대리 인터페이스는 클라이언트에 가시적이다. 클라이언트는 서비스 대리자에 의해 노출된 이 대리 인터페이스를 이용하여 통신한다. 웹 서비스 클라이언트는 서비스에 대한 레가시 인터페이스로부터 추상화되기 때문에, 서비스 또는 그것의 인터페이스를 제공하는 레가시 컴포넌트에 대한 임의의 수정은 웹 서비스 클라이언트의 업데이트를 요구하지 않는다. 어플리케이션에 대한 수정에 적응하기 위해 서비스 대리자에 대한 소정의 조정이 필요할 수 있지만, 그러한 수정은 웹 서비스 클라이언트 및/또는 재기록을 업데이트하는 것에 비교하여 매우 작은 것이다. 또한, 이러한 매우 작은 쉼(shim)은 개발자에 의해 제어되고, 서비스 대리자에 대한 그러한 수정은 개발자의 기술 수준 및 제어 내에서 잘 이루어진다.
본 발명의 다른 이로운 특징은 인터페이스들의 분리이다. 종래기술은 웹 서비스 인터페이스 상에서의 메소드 호출의 개수가 레가시 또는 서버 인터페이스 상에서의 메소드 호출의 개수와 매칭되기를 요구한다. 웹 서비스를 생성하기 위한 메타데이터의 사용은 레가시 인터페이스를 웹 서비스로 리터럴 변환(literal translation)하는 것을 발생시키기 때문에, (상술된) 그러한 리터럴 변환은 레가시 컴포넌트에 의해 제공된 모든 서비스에 적합하지 못할 수 있다.
전술된 바와 같이, 본 발명은 대리 인터페이스가 레가시 인터페이스에 관련되지 않게 한다. 따라서, 대리 인터페이스는 원래의 인터페이스와는 다른 개수의 메소드 호출을 가질 수 있고, 서비스 대리자 메소드 호출은 임의의 방식으로, 현존 메소드에 맵핑될 수 있다. 그러하듯이, 개발자는 레가시 컴포넌트 또는 레가시 인터페이스의 재작성을 요구하지 않고서 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 더 엄격한 제어를 갖는다. 또한, 전술된 바와 같이, 대리 인터페이스는 레가시 컴포넌트와 통신하기 위한 레가시 인터페이스로부터 분리되기 때문에, 서비스 대리자는 레가시 서비스로부터 새로운 서비스로 코드를 이주시키는 방법이 될 수 있다. 특히, 인터페이스들이 분리되기 때문에, 시간이 지남에 따라 각각의 서비스는 점차 레가시 컴포넌트로부터 서비스 대리자로 이주될 수 있다.
본 발명은 이롭게도, 서비스 대리자의 분리도 제공한다. 그러나, 종래기술은 인터페이스에 대한 대리가 그 인터페이스의 모든 인스턴스에 관련되기를 요구한다. 그럼에도 불구하고, 본 발명은 현존 서비스를 지원하는 서비스 대리자가 그 서비스에만 느슨하게 연결되는 것을 제공한다. 서비스 대리자는 서비스별로 선택되며, 이것은, 서로 다른 서비스가 동일한 현존 서비스에 의해 뒷받침될 수 있거나 동일한 인터페이스를 구현할 수 있더라도, 서로 다른 서비스가 서로 다른 대리들을 갖게 한다.
도 1b는 상술된 본 발명의 다양한 실시예를 도시한다. 도시된 바와 같이, 분산 시스템(100)은 상술된 동적 웹 서비스(175)를 생성할 뿐만 아니라 대리 서비스(여기에서, "대리 인스턴스", "서비스 대리자의 인스턴스" 또는 "서비스 대리자 인스턴스"라고 지칭됨)의 인스턴스(116)도 생성하기 위한 메커니즘을 제공한다. 이 특정 실시예에서, 분산 시스템(100)은 웹 서비스 초기화기(180) 및 구성 파일 (155)을 포함하는 웹 서비스 인프라구조(122)를 제공한다. 어플리케이션(125)의 초기화 시에(또는, 다른 인스턴스를 통해), 웹 서비스 초기화기(180)는 구성 파일(155)을 참고하고, 어플리케이션(125)에 의해 제공된 하나 이상의 서비스를 위한 서비스 대리자의 인스턴스(116)가 생성되어야 하는지를 결정할 수 있다. 이 구성 파일(155)은 사용될 서비스와 서비스 대리자 둘 다를 식별하기 위한 고유한 식별자를 포함할 수 있다. 물론, 본 발명에서는 그러한 모듈을 식별하고 위치를 알아내는 다른 방법도 이용가능하다.
어플리케이션(125)의 초기화 시에 서비스 대리자의 인스턴스(116)가 생성되더라도, 서비스 대리자 인스턴스(116)를 초기화하거나 생성하는 다른 방법이 있을 수 있음을 유념한다. 예를 들어, 본 명세서에서 설명된 서비스 대리자 실시예는 상술된 정적 접근법에서도 동일하게 동작할 것이다. 따라서, 웹 서비스 초기화기(180)를 이용한 어플리케이션(125)의 초기화 시의 서비스 대리자의 인스턴스(116)의 초기화는 예시를 위한 것일 뿐이며, 명시적으로 주장되지 않는 한, 본 발명의 범주를 제한하거나 달리 좁히는 것으로 의도되지 않는다. 그럼에도 불구하고, 이 실시예에서는, 어플리케이션 및 대리 인스턴스(116)를 개시하기 위한 동적 웹 서비스(175)에 관한 상술된 프로세스도 이용가능하다. 예를 들어, 어플리케이션(125) 및 대리 인스턴스(116)의 초기화는 요구(140)의 수신, 또는 서비스(110)에서의 사용자로부터의 입력으로부터일 수 있다.
서비스 대리자의 인스턴스(116)가 초기화되는 방법에 관계없이, 상술된 컴포넌트 메타데이터(160)와 유사하게 대리 메타데이터(104)가 액세스된다. 대리 메타 데이터(104)는 서비스 대리자의 인스턴스(116)와 통신하기 위한 서비스 대리자 및 대리 인터페이스(114)("SIF"라고 지칭됨)를 설명한다. 대리 메타데이터(104)는 카탈로그 데이터베이스(102)로부터 액세스되고, 그 후, 대리 디스크립션(surrogate description)(106)을 생성하기 위한 서비스 인프라구조(122)에 전달될 수 있다. 이 서비스 디스크립션은 서비스 대리자의 인스턴스(116) 및 대리 인터페이스(114)를 생성하기 위한 구축기(108)에 전달된다. 대리 인터페이스(114)와 동적 웹 서비스(175) 둘 다를 위한 구축기(108)는 구분된 컴포넌트로서 도시되어 있지만, 이들 구축기(108)는 단일의 모듈일 수 있음을 유념한다. 실제로, 구축기(108)는 웹 서비스 인프라구조(122)의 일부분, 또는 심지어 웹 서비스 초기화기(180)의 일부분일 수 있다. 따라서, 구축기(108)의 위치는 편의 및 예시의 목적으로 사용되며, 명시적으로 주장되지 않는 한, 본 발명의 범주를 제한하거나 달리 좁히는 것으로 의도되지 않는다.
대리 인스턴스(116) 및 대리 인터페이스(114)가 생성되면, 그에 관련된 서비스에 대응하는 요구(140)가 웹 서비스 클라이언트(145)로부터 수신될 수 있다. 웹 서비스 인프라구조(122)에서 요구 메시지(140)가 수신될 때, 웹 서비스 인프라구조는 서비스 대리자에 의해 제어되는 서비스에 전달되는 그러한 요구(140)(또는, 그것의 일부분)를 식별할 수 있다. 이들 요구(140)는 대리 인터페이스(114)를 통해 대리 인스턴스(116)에 직접 전송된다. 이 때에, 전술된 바와 같이, 서비스 대리자의 구성에 따라, 대리 인스턴스(116)가 요구(140)를 프로세싱하는 데 임의의 개수의 프로세스가 사용될 수 있다.
예를 들어, 대리 인스턴스(116)는 호출을 생성하거나, 레가시 컴포넌트(135)에 매개변수를 전달하지 않고서, 요구(140)를 프로세싱하도록 구성되어, 내부 함수에 대한 모든 프로세싱을 보유할 수 있다. 다르게, 대리 인스턴스(116)는 전체 모든 요구(140)의 적어도 일부분에 대해 호출을 배치하고 매개변수(115)를 레가시 컴포넌트(135)에 전달하도록 선택할 수 있다. 또한, 대리 인스턴스(116)는 요구(140)의 임의의 부분을 처리하기 위해 어플리케이션 및 대리 인스턴스(116) 외부의 다른 시스템(112)에 대해 호출할 수 있다. 또한, 대리 인스턴스(116)에 따라 요구를 프로세싱하기 위한 이들 메커니즘(116, 135, 112)의 임의의 결합은 커스텀 오브젝트 또는 서비스 대리자의 개발자 구성에 따라, 본 발명의 범주 내에 있다. 또한, 다른 시스템(112)은 서비스(100)의 외부에 도시되어 있지만, 그렇지 않을 수 있음을 유념한다. 예를 들어, 다른 시스템(112)은 서비스(110) 내의 다른 어플리케이션일 수 있다. 따라서, 다른 시스템(112)를 서비스(110) 외부에 배치하는 것은 예시를 위한 것일 뿐이며, 명시적으로 주장되지 않는 한, 본 발명의 범위를 제한하거나 달리 좁히는 것으로 의도되지 않는다.
요구 메시지(140)가 프로세싱되는 방법에 관계없이, 동적 웹 서비스(175)와 유사하게, 대리 인스턴스(116) 및/또는 대리 인터페이스(114)는 다양한 컴포넌트(116, 135, 112)로부터의 반환 값(120)이 수신될 때를 인식하기 위해 서비스에 대한 메시지 교환 패턴을 알아야 한다. 반환 값(120)이 메시지 교환 패턴의 일부분이면, 반환 값(120)은 응답 메시지(130)로 포맷팅되고 웹 서비스 클라이언트(145)에 송신될 수 있다. 물론, 반환 값의 유형에 따라(예를 들어, 반환 값이 단순한 수신된 요구 OK인 경우), 클라이언트(145)로의 응답(130)이 필요할 수도 있고 필요하지 않을 수도 있다.
대리 인스턴스(116)는 대리 인터페이스(114)와, 레가시 컴포넌트(135)와의 통신을 위한 인터페이스 사이에 있음을 유념한다. 전술된 바와 같이, 이러한 이로운 특징은 웹 서비스 클라이언트(145)와, 어플리케이션(125)에 의해 제공된 현존 서비스를 느슨하게 연결시키는 것을 제공한다. 또한, 대리 인터페이스(114)는 레가시 컴포넌트(135)와 통신하기 위한 레가시 인터페이스로부터 분리된다. 이것은 클라이언트(145)를 업그레이드시킬 필요없이 레가시 컴포넌트(135) 내에서의 수정을 허용할 뿐만 아니라, 레가시 컴포넌트(135)로부터 새로운 서비스로의 이주를 위한 메커니즘을 제공한다. 그러나, 대리 인터페이스(114)는 분리된 모듈로서 도시되어 있지만, 대리 인스턴스(116)의 필수 부분이며, 따라서 대리 인스턴스(116)의 일부분으로서 간주될 수 있음을 유념한다.
또한, 대리 서비스에 의해 지원되지 않는 어플리케이션(125)에 의해 제공된 다른 서비스에 대하여, 웹 서비스 초기화기(180)는 서비스 대리자 인스턴스(116) 대신에 동적 웹 서비스(175)도 생성할 수 있음을 유념한다. 따라서, 잘 동작하는 레가시 컴포넌트 인터페이스의 리터럴 변환은 동적 웹 서비스(175)를 이용하여 바뀌도록 요구될 수 있는데, 이 때, 전술된 바와 같이, 호출 및 매개변수(115)가 레가시 컴포넌트(135)에 직접 전달된다. 따라서, 분산 시스템은 적절히 변환하는 레가시 컴포넌트에 대한 인터페이스를 위한 요구(140)를 프로세싱할 수 있지만, 달리 동작할 수 없거나 비효율적인 서비스가 본 명세서에 설명된 서비스 대리자 프로세 스를 이용할 수 있다.
도 1a의 레가시 클라이언트(105)가 도시되어 있지는 않지만, 이 대리 서비스 실시예는 레가시 클라이언트(105)에 대한 지원도 제공한다는 것도 유념한다. 또한, 어플리케이션(125)의 종료 시에, 상술된 동적 웹 서비스(175)와 유사하게, 대리 디스크립션(106)은 휴지통(175)에 송신함으로써 삭제될 수 있고, 대리 서비스의 인스턴스(116)는 종료된다. 따라서, 대리 디스크립션(112), 대리 인스턴스(116) 및 대리 인터페이스(114)가 종료되어, 어플리케이션의 다음의 초기화 시에 새로운 대리 디스크립션(106), 새로운 서비스 대리자 인스턴스(116) 및 새로운 대리 인터페이스(114)가 생성되도록 할 것이다.
마지막으로, 도 1a 뿐만 아니라 도 1b 내의 다양한 컴포넌트들이 웹 서비스 인프라구조 또는 다른 모듈로부터 분리된 것으로서 서로 관련되어 도시되어 있지만, 실시예는 모듈들의 임의의 유형의 구성 및/또는 배치로 제한되지 않음을 유념한다. 따라서, 도 1b 및 도 1a 내의 모듈들의 위치 및 구성은 예시를 위해 사용되는 것일 뿐이며, 본 발명의 범주를 제한하거나 달리 좁히는 것으로 의도되지 않는다.
서비스 대리자 실시예를 간단히 요약하면, 서비스 대리자는 웹 서비스 인프라구조(122)에의 두개의 후크(hook)로서 구현된다. 제1 후크는 서비스 또는 어플리케이션(125) 구동 동안이다. 서비스 대리자가 서비스에 대해 구성되면, 웹 서비스 인프라구조(122)는 메타데이터(104)를 사용하여, 웹 서비스 클라이언트(145)에 노출될 대리 인터페이스(115)를 형성하기 위한 대리 디스크립션(106)를 구축한다. 제2 후크는 대리 인스턴스(116) 생성 동안이며, 여기서, 서비스 대리자가 구성되면, 현존 어플리케이션(125) 또는 서비스의 새로운 인스턴스를 생성하는 것 외에, 인프라구조는 서비스 대리자의 새로운 인스턴스(116)도 생성한다. 웹 서비스 인프라구조(122)는 레가시 서비스 또는 어플리케이션(125)에 대한 그것의 참조를 서비스 대리자의 인스턴스(116)에 전달하고, 어플리케이션(125) 대신에 서비스 대리자 상에 메소드 호출이 디스패치(dispatch)된다.
본 발명은 기능적 단계 및/또는 비기능적 동작을 포함하는 방법의 측면에서도 설명될 수 있다. 다음은 본 발명을 실시하는 데 수행될 수 있는 단계 및/또는 동작에 대한 설명이다. 보통, 기능적 단계는 달성되는 결과의 측면에서 본 발명을 설명하지만, 비기능적 단계는 특정 결과를 성취하기 위한 더 특정적인 액션을 설명한다. 기능적 단계 및/또는 비기능적 동작은 특정 순서로 설명 또는 주장될 수 있지만, 본 발명은 반드시 단계 및/또는 동작들의 임의의 특정 순서 또는 결합으로 제한되지는 않는다. 또한, 청구범위의 기술(및, 도 2 및 도 3의 순서도에 대한 다음의 설명)에서의 단계 및/또는 동작의 사용은 그러한 용어의 요구된 특정 사용을 나타내는 데 사용된다.
도 2 및 도 3은 본 발명의 다양한 실시예에 대한 순서도를 도시한다. 도 2 및 도 3에 대한 다음의 설명은 때때로, 도 1a 및 도 1b의 대응 구성요소를 참조할 것이다. 이들 도면의 특정 구성요소에 대한 참조가 이루어질 수 있지만, 그러한 구성요소는 예시를 위한 것일 뿐이며, 명시적으로 주장되지 않는 한, 본 발명의 범주를 제한하거나 달리 좁히는 것으로 의도되지 않는다.
도 2는 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 레가시 컴포넌트를 위해 개발자가 생성한 커스텀 오브젝트를 통해 웹 서비스를 제공하는 방법(200)의 순서도를 도시한다. 커스텀 오브젝트는 레가시 컴포넌트의 재작성을 요구하지 않고서 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 개발자의 더 엄격한 제어를 허용한다. 방법(200)은 레가시 컴포넌트를 갖는 어플리케이션에 의해 제공된 서비스에 액세스하고자 하는 요구를 웹 서비스 클라이언트로부터 수신하는 단계(205)를 포함한다. 예를 들어, 요구(140)는 레가시 컴포넌트(135)를 갖는 어플리케이션(125)에 의해 제공된 서비스에 액세스하기 위해 웹 서비스 인프라구조(122)에서 웹 서비스 클라이언트(145)로부터 수신될 수 있는데, 이 레가시 컴포넌트(135)는 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 이용하여 통신한다.
그 후, 방법(200)은 서비스 대리자를 이용하여 요구를 프로세싱하는 단계(220)를 포함한다. 특히, 단계(220)는 그 요구가 서비스 대리자에 의해 제어되는 서비스에 대응한다는 것을 식별하는 동작(210)을 포함한다. 예를 들어, 요구(140)가 웹 서비스 인프라구조(122)에서 수신될 때, 그것은 서비스 대리자에 대응하는 것으로서 식별될 수 있는데, 이 서비스 대리자는 웹 서비스 클라이언트(145)와 레가시 인터페이스 간에서 추상화로서 대리 인터페이스(114)를 노출시키기 위해 개발자가 생성한 커스텀 오브젝트이다.
단계(220)는 또한, 대리 인터페이스를 통해 서비스 대리자의 인스턴스에 요구의 적어도 일부분을 전달하는 동작(215)도 포함한다. 예를 들어, 요구(140)를 수신할 때, 웹 서비스 인프라구조(122)는 더 이상의 프로세싱을 위해, 대리 인터페이스(114)를 통해 서비스 대리자의 인스턴스(116)에 요구(140)의 적어도 일부분을 전달할 수 있다. 서비스 대리자의 인스턴스(116)는 하나 이상의 레가시 컴포넌트(135)로의 호출, 서비스 대리자의 인스턴스(116)로의 호출, 또는 어플리케이션 및 서비스 대리자 외부의 다른 시스템(112)으로의 호출 중 하나 이상에 의해 요구의 적어도 일부분을 프로세싱하도록 구성될 수 있다.
서비스 대리자의 인스턴스(116)는 어플리케이션(125)의 초기화 시에 생성될 수 있음을 유념한다. 그러한 경우, 상술된 방법은 어플리케이션(125)을 중지시키고자 하는 요구를 수신하는 동작도 포함할 수 있다. 어플리케이션(125)을 중지시키고자 하는 요구에 기초하여, 서비스 대리자의 인스턴스(116)도 자동적으로 중지될 수 있다. 또한, 서비스 대리자 디스크립션(106)도 삭제되어, 어플리케이션(125)의 다음의 초기화 시에, 서비스 대리자의 새로운 인스턴스(116) 및 새로운 대리 디스크립션(106)이 생성되도록 할 수 있다.
서비스 대리자의 인스턴스(106)가 생성되는 시기에 관계없이, 서비스 대리자의 인스턴스(116) 및 대리 인터페이스(114)를 생성하는 데 대리 디스크립션(106)이 사용될 수 있는데, 여기서, 대리 디스크립션(106)은 호출 동작, 매개변수, 또는 하나 이상의 레가시 컴포넌트(135), 서비스 대리자의 인스턴스(116), 또는 어플리케이션(125) 및 서비스 대리자의 인스턴스(116) 외부의 다른 시스템(112)과 통신하기 위한 메시지 교환 패턴 중 하나 이상을 설명한다.
대리 메타데이터(104)에 따라 대리 디스크립션(106)에 기초하여 대리 인터페 이스(114)가 생성될 때, 상술된 방법은 다음을 더 포함할 수 있다. 대리 디스크립션(106)에 기초하여, 메시지 교환 패턴은 웹 서비스 클라이언트(145)에 대한 응답을 요구하는 사람 또는 레가시 컴포넌트(135)에 대해 식별될 수 있다. 그러하듯이, 하나 이상의 반환 값(120)은 하나 이상의 레가시 컴포넌트, 서비스 대리자의 인스턴스(116), 또는 어플리케이션(125) 및 서비스 대리자(116)의 인스턴스(116) 외부의 다른 시스템(112) 중 하나 이상으로부터 수신될 수 있다. 그 후, 서비스 대리자(116)의 인스턴스는 하나 이상의 반환 값(120)을 응답(130)으로 포맷팅하는 데 사용될 수 있으며, 이 응답은 더 이상의 프로세싱을 위해 웹 서비스 클라이언트(145)에 송신된다.
또한, 서비스 대리자 또는 그것의 인스턴스(116)는 동적 웹 서비스(175)와 함께 사용되어, 레가시 컴포넌트(135)에 의해 제공된 어플리케이션(125)에 대한 다른 서비스가 본 명세서에 설명된 동적 웹 서비스(175)를 이용할 수 있도록 할 수 있다는 것을 유념한다. 그러한 경우에, 컴포넌트 메타데이터(160) 내에 설명된 레가시 인터페이스에 대한 인터페이스 설명은 하나 이상의 레가시 컴포넌트(135)를 갖는 어플리케이션(125)에 의해 제공된 다른 서비스에 대한 동적 웹 서비스(175)를 생성하는 데 사용될 수 있다. 동적 웹 서비스(175)는 어플리케이션(125)의 초기화 시에 생성되는데, 여기서, 동적 웹 서비스(175)는 레가시 인터페이스의 리터럴 변환이다. 그러한 경우에, 다른 서버를 통해 대응하는 다른 서비스 요구 메시지(140)가 수신될 수 있다. 웹 서비스 요구 메시지(140)는 하나 이상의 레가시 컴포넌트(135)에 의해 제공된 서비스를 요구하기 위한 하나 이상의 매개변수(115) 및 하나 이상의 동작을 포함할 수 있다. 그 후, 동적 웹 서비스(175)는 하나 이상의 레가시 컴포넌트(135)에 대해 하나 이상의 레가시 호출(115)을 행하는 데 사용될 수 있다. 하나 이상의 매개변수(115)는 더 이상의 프로세싱을 위해 하나 이상의 레가시 컴포넌트(135)에 전달될 수 있다.
다른 실시예에서는, 레가시 인터페이스 설명에 기초하여 하나 이상의 레가시 컴포넌트(135)에 대한 메시지 교환 패턴이 식별되어, 웹 서비스 클라이언트(145)에 대한 응답(130)이 요구되도록 할 수 있다. 그러한 경우에, 하나 이상의 레가시 컴포넌트(135)로부터 하나 이상의 반환 값(120)이 수신될 수 있는데, 여기서, 동적 웹 서비스(175)는 반환 값(120)을 웹 서비스 응답 메시지(130)로 포맷팅하는 데 사용된다. 그 후, 웹 서비스 응답 메시지(130)는 더 이상의 프로세싱을 위해 웹 서비스 클라이언트(145)에 송신된다.
도 3은 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 하나 이상의 레가시 컴포넌트를 위해 개발자가 생성한 커스텀 오브젝트의 초기화를 제공하기 위한 방법(300)의 순서도를 도시한다. 방법(300)은 어플리케이션을 초기화하고자 하는 요구를 수신하는 단계(305)를 포함한다. 예를 들어, 서비스(110)는 서비스를 제공하기 위한 레가시 컴포넌트(135)를 포함하는 어플리케이션(125)을 초기화하고자 하는 요구를 수신할 수 있다. 레가시 컴포넌트들(135)은 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 이용하여 통신한다. 어플리케이션을 초기화하고자 하는 요구는 웹 서비스 클라이언트(145)로부터 서비스 요구 메시지(140)에 응답하여 수신될 수 있다. 다르게, 어플 리케이션(125)을 초기화하고자 하는 요구는 서비스(110) 컴퓨팅 장치에서 사용자 인터페이스로부터의 입력에 응답하여 수신될 수 있다.
어플리케이션을 초기화하고자 하는 요구에 기초하여, 방법(300)은 서비스 대리자의 인스턴스를 생성하는 단계(325)도 포함한다. 특히, 서비스 대리자의 인스턴스가 생성되는 것을 식별하는 단계(310)를 포함한다. 예를 들어, 어플리케이션(125)의 초기화 시에, 웹 서비스 초기화기(180)는 예를 들어, 어플리케이션(125)의 초기화 시에 서비스 대리자의 인스턴스(116)가 생성되는 것을 나타내기 위한 고유한 식별자 및 다른 정보를 포함하는 구성 파일(155)을 참고할 수 있다. 서비스 대리자는 웹 서비스 클라이언트(145)와 레가시 인터페이스 간에서 추상화로서 대리 인터페이스(114)를 노출시키기 위해 개발자가 생성한 커스텀 오브젝트이다. 단계(325)는 대리 인터페이스를 설명하는 메타데이터에 액세스하는 단계(315)도 포함한다. 예를 들어, 대리 메타데이터(104)는 대리 인터페이스(114)를 설명하는 카탈로그 데이터베이스(102)로부터 액세스될 수 있는데, 이 대리 인터페이스(114)는 웹 서비스 클라이언트(145)에 노출될 것이다.
그 후, 단계(325)는 메타데이터를 이용하여, 대리 인터페이스를 포함하는 서비스 대리자의 인스턴스를 생성하는 단계(320)를 포함한다. 특히, 웹 서비스 초기화기(180)는 대리 메타데이터(104)를 이용하여, 대리 인터페이스(114)를 포함하는 서비스 대리자의 인스턴스(116)를 생성할 수 있다. 서비스 대리자의 인스턴스(116)는 하나 이상의 레가시 컴포넌트(135)로의 호출, 서비스 대리자의 인스턴스(116)로의 호출, 또는 어플리케이션(125) 및 서비스 대리자의 인스턴스(116) 외부 의 다른 시스템(112)으로의 호출 중 하나 이상에 의해 웹 서비스 클라이언트(125)로부터 요구(140)의 적어도 일부분을 프로세싱하도록 구성된다.
대리 메타데이터(104)는 또한, 대리 디스크립션(106)을 먼저 생성하고, 그 후, 서비스 대리자의 인스턴스(116) 및 대리 인터페이스(114)를 생성하는 데 사용될 수 있다. 대리 디스크립션(106)은 호출 동작, 매개변수, 또는 하나 이상의 레가시 컴포넌트(135), 서비스 대리자의 인스턴스(116), 또는 어플리케이션(125) 및 서비스 대리자의 인스턴스(116) 외부의 다른 시스템(112)과 통신하기 위한 메시지 교환 패턴 중 하나 이상을 설명한다. 대리 디스크립션(106)은 WSDL 문서일 수 있다.
또한, 대리 디스크립션(106)에 기초하여, 하나 이상의 레가시 컴포넌트(135)에 대한 메시지 교환 패턴은 웹 서비스 클라이언트(145)에 대한 응답(130)을 요구한다는 것이 식별될 수 있다. 그 후, 하나 이상의 반환 값(120)은 하나 이상의 레가시 컴포넌트(135), 서비스 대리자의 인스턴스(116), 또는 어플리케이션(125) 및 서비스 대리자의 인스턴스(116) 외부의 다른 시스템(112) 중 하나 이상으로부터 수신될 수 있다. 서비스 대리자의 인스턴스(116)는 하나 이상의 반환 값(120)을 웹 서비스 응답 메시지(130)로 포맷팅하는 데 사용될 수 있다. 웹 서비스 응답 메시지(130)는 더 이상의 프로세싱을 위해 웹 서비스 클라이언트(145)에 송신될 수 있다.
다른 실시예에서는, 동적 웹 서비스(175)는 대리 인스턴스(116)와 함께 실행될 수 있다. 이 실시예에서, 컴포넌트 메타데이터(160)로부터의 인터페이스 설명 은 레가시 컴포넌트(135)를 갖는 어플리케이션(125)에 의해 제공된 다른 서비스에 대한 동적 웹 서비스(175)를 생성하는 데 사용된다. 어플리케이션(125)의 초기화 시에 생성된 동적 웹 서비스(175)는 레가시 인터페이스의 리터럴 변환이다. 이 실시예에서, 다른 서비스에 대응하는 다른 서비스 요구 메시지(140)가 수신될 수 있다. 웹 서비스 요구 메시지(140)는 (있다면) 하나 이상의 변수, 및 하나 이상의 레가시 컴포넌트(135)에 의해 제공된 서비스를 요구하기 위한 하나 이상의 동작을 포함할 수 있다. 동적 웹 서비스(175)는 레가시 컴포넌트(135)에 대해 하나 이상의 레가시 호출(115)을 행하는 데 사용된다. 매개변수(115)는 더 이상의 프로세싱을 위해 레가시 컴포넌트들(135) 중 하나 이상에 전달될 수 있다.
상술된 실시예에서는, 또한, 컴포넌트 메타데이터(160)로부터의 레가시 인터페이스 설명에 기초하여, 웹 서비스 클라이언트(145)에 대한 응답(130)을 요구하는 레가시 컴포넌트(135)에 대한 메시지 교환 패턴이 식별된다. 그 후, 레가시 컴포넌트(135)로부터 하나 이상의 반환 값(120)이 수신될 수 있는데, 여기서, 동적 웹 서비스(175)는 반환 값(120)을 웹 서비스 응답 메시지(130)로 포맷팅하는 데 사용된다. 웹 서비스 응답 메시지(130)는 더 이상의 프로세싱을 위해 웹 서비스 클라이언트(145)에 송신될 수 있다. 웹 서비스 요구 메시지(140) 및 웹 서비스 응답(130) 뿐만 아니라 여기에 설명된 다른 문서도 XML 문서일 수 있다.
동적 웹 서비스(175)와 대리 인스턴스(116) 둘 다가 동시에 실행되고 있는 경우에, 다른 실시예는 어플리케이션(125)을 중지시키고자 하는 요구를 수신하는데, 그 결과, 서비스 대리자의 인스턴스(116) 및 동적 웹 서버(175)는 자동으로 중 지 또는 종료된다. 또한, 대리 디스크립션(106) 및 웹 서비스 디스크립션(150)이 삭제되어, 어플리케이션(125)의 다음의 초기화 시에, 서비스 대리자의 새로운 인스턴스(116), 새로운 동적 웹 서비스(175), 새로운 대리 디스크립션(106) 및 새로운 웹 서비스 디스크립션(150)이 생성되도록 할 것이다.
본 발명의 범주 내의 실시예는 또한, 컴퓨터-실행가능 명령어 또는 그에 저장된 데이터 구조를 수반하거나 갖기 위한 컴퓨터-판독가능 매체를 포함한다. 그러한 컴퓨터-판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예를 들어, 그러한 컴퓨터-판독가능 매체로는, RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장장치, 자기 디스크 저장장치 또는 다른 자기 저장 장치, 또는 요구된 프로그램 코드 수단을 컴퓨터-실행가능 명령어 또는 데이터 구조 형태로 수반하거나 저장하는 데 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이것으로 제한되지 않는다. 네트워크 또는 다른 통신 접속(유선, 무선, 또는 유선 또는 무선의 결합)을 통해 컴퓨터에 정보가 전송되거나 제공될 때, 컴퓨터는 적절하게 컴퓨터-판독가능 매체라고 지칭된다. 상술된 것의 결합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다. 컴퓨터-실행가능 명령어는 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 프로세싱 장치가 특정 기능 또는 기능들의 그룹을 수행하게 하는 명령어 및 데이터를 포함한다.
도 4 및 다음의 논의는 본 발명이 구현될 수 있는 적합한 컴퓨팅 환경에 대한 간단하고 일반적인 설명을 제공하는 것으로 의도된다. 요구되지는 않지만, 본 발명은 네트워크 환경에서 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터-실행가능 명령어의 일반 문맥으로 설명될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터-실행가능 명령어, 관련된 데이터 구조 및 프로그램 모듈은 본 명세서에 개시된 방법의 단계들을 실행하기 위한 프로그램 코드 수단의 예를 나타낸다. 그러한 실행가능 명령어 또는 관련된 데이터 구조의 특정 시퀀스는 그러한 단계들에서 설명된 기능을 구현하기 위한 대응하는 동작의 예를 나타낸다.
본 기술분야에 숙련된 기술자들은, 본 발명이 개인용 컴퓨터, 핸드-헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반의 또는 프로그램가능한 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다수의 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 알 것이다. 본 발명은 또한, 통신 네트워크를 통해 (유선 링크, 무선 링크, 또는 유선 또는 무선 링크의 결합에 의해) 링크되어 있는 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 원격 메모리 저장 장치에 위치할 수 있다.
도 4를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은, 프로세싱 유닛(421), 시스템 메모리(422), 및 시스템 메모리(422)를 포함한 다양한 시스템 컴포넌트들을 프로세싱 유닛(421)에 연결시키는 시스템 버스(423)를 포함한 통상의 컴퓨터(420) 형태의 범용 컴퓨팅 장치를 포함한다. 시스템 버스(423)는 메모리 버 스 또는 메모리 제어기, 주변출력 버스, 및 다양한 버스 아키텍처들 중 임의의 것을 사용하는 버스를 포함하는 여러 유형의 버스 구조들 중 임의의 것일 수 있다. 시스템 메모리로는 ROM(424) 및 RAM(425)이 있다. 시작 동안 등에, 컴퓨터(420) 내의 구성요소들 간의 정보의 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(426)은 ROM(424) 내에 저장될 수 있다.
컴퓨터(420)는 또한, 자기 하드 디스크(439)에 대해 판독하고 기록하기 위한 자기 하드 디스크 드라이브(427), 분리형 자기 디스크(429)에 대해 판독하거나 기록하기 위한 자기 디스크 드라이브(428), 및 CD-ROM 또는 다른 광 매체와 같은 분리형 광 디스크(431)에 대해 판독하거나 기록하기 위한 광 디스크 드라이브(430)를 포함할 수 있다. 자기 하드 디스크 드라이브(427), 자기 디스크 드라이브(428) 및 광 디스크 드라이브(430)는 각각, 하드 디스크 드라이브 인터페이스(432), 자기 디스크 드라이브-인터페이스(433) 및 광 드라이브 인터페이스(434)에 의해 시스템 버스(423)에 접속된다. 드라이브 및 그에 관련된 컴퓨터-판독가능 매체는 컴퓨터-실행가능 명령어, 데이터 구조, 프로그램 모듈 및 다른 데이터를 컴퓨터(420)에 제공한다. 본 명세서에 개시된 예시적인 환경은 자기 하드 디스크(439), 분리형 자기 디스크(429) 및 분리형 광 디스크(431)를 채용하지만, 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM 등을 포함한 다른 유형의 데이터 저장용 컴퓨터 판독가능 매체가 사용될 수 있다.
오퍼레이팅 시스템(435), 하나 이상의 어플리케이션 프로그램(436), 다른 프로그램 모듈(437) 및 프로그램 데이터(438)를 포함한 하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은 하드 디스크(439), 자기 디스크(429), 광 디스크(431), ROM(424) 또는 RAM(425) 상에 저장될 수 있다. 사용자는 키보드(440), 포인팅 장치(442), 또는 마이크로폰, 조이스틱, 게임패드, 위성 접시, 스캐너 등의 다른 입력 장치(도시되지 않음)를 통해 컴퓨터(420)에 명령어 및 정보를 입력할 수 있다. 이러한 입력 장치 및 그 외의 입력 장치는 종종, 시스템 버스(423)에 연결된 직렬 포트 인터페이스(446)를 통해 프로세싱 유닛(421)에 접속된다. 다르게, 입력 장치는 병렬 포트, 게임 포트 또는 USB와 같은 다른 인터페이스에 의해 접속될 수 있다. 모니터(447) 또는 다른 디스플레이 장치도 비디오 어댑터(448)와 같은 인터페이스를 통해 시스템 버스(423)에 접속된다. 모니터 외에, 개인용 컴퓨터는 일반적으로 스피커 및 프린터와 같은 다른 주변 출력 장치(도시되지 않음)를 포함한다.
컴퓨터(420)는 네트워크 환경에서 원격 컴퓨터(449a 및 449b)와 같은 하나 이상의 원격 컴퓨터로의 논리 접속을 이용하여 동작할 수 있다. 원격 컴퓨터(449a 및 449b)는 각각, 다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 도 4에는 메모리 저장 장치(450a 및 450b) 및 그에 관련된 어플리케이션 프로그램(436a 및 436b)이 도시되었지만, 일반적으로, 컴퓨터(420)에 관련하여 상술된 구성요소들 다수 또는 전부를 포함한다. 도 4에 도시된 논리 접속은 본 명세서에서 예로서 제공되는 LAN(451) 및 WAN(452)를 포함하지만, 이것으로 제한되지 않는다. 그러한 네트워크 환경은 사무실 또는 기업형 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔하다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(420)는 네트워크 인터페이스 또는 어댑터(453)를 통해 네트워크(451)에 접속된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(420)는 모뎀(454), 무선 링크, 또는 인터넷과 같은 WAN(452)을 통한 통신을 설정하기 위한 다른 수단을 포함할 수 있다. 내장형 또는 외장형일 수 있는 모뎀(454)은 직렬 포트 인터페이스(446)를 통해 시스템 버스(423)에 접속된다. 네트워크 환경에서, 컴퓨터(420) 또는 그것의 일부분에 관련하여 도시된 프로그램 모듈은 원격 메모리 저장 장치 내에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며 WAN(452)을 통한 통신을 설정하기 위한 다른 수단이 사용될 수 있음을 이해할 것이다.
본 발명은 그것의 취지 또는 필수 특징으로부터 벗어나지 않고서 다른 특정 형태로 구현될 수 있다. 설명된 실시예는 모든 측면에서 단지 예시적인 것이며 제한적이지 않은 것으로서 간주되어야 한다. 따라서, 본 발명의 범주는 앞선 설명보다는 첨부된 청구범위에 의해 나타난다. 본 청구범위의 동등물의 의미 및 범주 내에 오는 모든 변경은 그것의 취지 내에 포함되어야 한다.
본 발명은 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 레가시 컴포넌트를 위해 개발자가 생성한 커스텀 오브젝트를 통해 웹 서비스를 지원하여, 커스텀 오브젝트가 레가시 컴포넌트 또는 컴포넌트 인터페이스의 재기록을 요구하지 않고서, 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 개발자의 엄격한 제어를 허용하게 한다.

Claims (20)

  1. 분산 시스템 내의 서비스 컴퓨팅 장치에서, 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 레가시 컴포넌트(legacy components)를 위해 커스텀 오브젝트를 통해 웹 서비스를 제공하는, 상기 서비스 컴퓨팅 장치에 의해 수행되는 방법으로서 - 상기 커스텀 오브젝트는 상기 레가시 컴포넌트의 재작성을 요구하지 않고도, 상기 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 개발자 제어를 허용함 -,
    웹 서비스로부터, 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 이용하여 통신하는 하나 이상의 레가시 컴포넌트를 갖는 어플리케이션에 의해 제공된 서비스에 액세스하라는 요구를 수신하는 단계;
    상기 요구가 서비스 대리자에 의해 제어되는 서비스에 대응하는 것으로 식별하는 단계 - 상기 서비스 대리자는 웹 서비스 클라이언트와 상기 레가시 인터페이스 간에 대리 인터페이스(surrogate interface)를 노출시키기 위한 커스텀 오브젝트이며, 상기 대리 인터페이스는 대리 디스크립션에 기초하여 생성됨 -;
    대리 메타데이터에 액세스하는 단계 - 상기 대리 메타데이터는 상기 서비스 대리자 및 상기 서비스 대리자의 인스턴스와 통신하기 위한 대리 인터페이스를 기술함 -;
    컴포넌트 메타데이터에 액세스하는 단계 - 상기 컴포넌트 메타데이터는 상기 하나 이상의 레가시 컴포넌트에 전달될 수 있는 호출들, 상기 하나 이상의 레가시 컴포넌트에 전달될 수 있는 매개변수들, 및 매개변수들이 전달될 순서를 기술함 -;
    상기 대리 인터페이스를 통해 상기 서비스 대리자의 인스턴스에 상기 요구의 적어도 일부분을 전달하는 단계;
    상기 서비스 대리자의 인스턴스가 상기 하나 이상의 레가시 컴포넌트로의 호출, 상기 서비스 대리자의 인스턴스로의 호출, 및 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들로의 호출 중 하나 이상의 호출에 의해 상기 요구의 적어도 일부분을 프로세싱하는 단계;
    상기 대리 디스크립션에 기초하여, 상기 하나 이상의 레가시 컴포넌트에 대한 메시지 교환 패턴이 상기 웹 서비스 클라이언트에 대한 응답을 요구하는 것으로 식별하는 단계;
    상기 하나 이상의 레가시 컴포넌트, 상기 서비스 대리자의 인스턴스, 및 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들 중 하나 이상으로부터 하나 이상의 반환 값을 수신하는 단계;
    상기 서비스 대리자의 인스턴스를 이용하여 상기 하나 이상의 반환 값을 웹 서비스 응답 메시지로 포맷팅하는 단계; 및
    추가의 프로세싱을 위해 상기 웹 서비스 클라이언트에 상기 웹 서비스 응답 메시지를 송신하는 단계
    를 포함하는, 웹 서비스 제공 방법.
  2. 제1항에 있어서,
    상기 서비스 대리자는 상기 어플리케이션을 초기화하라는 요구 시에 생성된 것인, 웹 서비스 제공 방법.
  3. 제2항에 있어서,
    상기 서비스 대리자의 인스턴스 및 상기 대리 인터페이스를 생성하는 데 대리 디스크립션(surrogate description)이 사용되고,
    상기 대리 디스크립션은, 호출 동작, 매개변수, 및 상기 하나 이상의 레가시 컴포넌트, 상기 서비스 대리자의 인스턴스, 또는 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들과 통신하기 위한 메시지 교환 패턴 중 하나 이상을 기술하는, 웹 서비스 제공 방법.
  4. 제3항에 있어서,
    상기 어플리케이션을 중지시키라는 요구를 수신하는 단계;
    상기 어플리케이션을 중지시키라는 요구에 기초하여, 상기 서비스 대리자의 인스턴스를 자동으로 중지시키는 단계; 및
    상기 어플리케이션의 다음 초기화 시에 상기 서비스 대리자의 새로운 인스턴스 및 새로운 대리 디스크립션이 생성되도록 상기 대리 디스크립션을 삭제하는 단계
    를 더 포함하는, 웹 서비스 제공 방법.
  5. 제1항에 있어서, 상기 레가시 인터페이스에 대한 인터페이스 디스크립션에 기초하여, 상기 하나 이상의 레가시 컴포넌트를 갖는 상기 어플리케이션에 의해 제공된 다른 서비스에 대하여 동적 웹 서비스가 생성되고, 상기 동적 웹 서비스는 상기 어플리케이션의 초기화 시에 생성되고, 상기 동적 웹 서비스는 상기 레가시 인터페이스의 리터럴 변환(literal translation)이고, 상기 방법은,
    상기 다른 서비스에 대응하는 다른 서비스 요구 메시지를 수신하는 단계 - 상기 다른 서비스 요구 메시지는 상기 하나 이상의 레가시 컴포넌트에 의해 제공된 서비스들을 요구하기 위한 하나 이상의 동작 및 하나 이상의 매개변수를 포함함 -;
    상기 동적 웹 서비스를 이용하여 상기 하나 이상의 레가시 컴포넌트에 대해 하나 이상의 호출을 행하는 단계; 및
    추가의 프로세싱을 위해 상기 하나 이상의 레가시 컴포넌트 중 하나 이상에 상기 하나 이상의 매개변수를 전달하는 단계
    를 더 포함하는, 웹 서비스 제공 방법.
  6. 제5항에 있어서,
    동적 레가시 인터페이스 디스크립션에 기초하여, 상기 하나 이상의 레가시 컴포넌트에 대한 메시지 교환 패턴이 상기 웹 서비스 클라이언트에 대한 응답을 요구하는 것으로 식별하는 단계;
    상기 하나 이상의 레가시 컴포넌트로부터 하나 이상의 반환 값을 수신하는 단계;
    상기 웹 서비스를 이용하여 상기 반환 값들을 웹 서비스 응답 메시지로 포맷팅하는 단계; 및
    추가의 프로세싱을 위해 상기 웹 서비스 클라이언트에 상기 웹 서비스 응답 메시지를 송신하는 단계
    를 더 포함하는, 웹 서비스 제공 방법.
  7. 분산 시스템 내의 서비스 컴퓨팅 장치에서, 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 하나 이상의 레가시 컴포넌트를 위해 커스텀 오브젝트를 초기화하는, 상기 서비스 컴퓨팅 장치에 의해 수행되는 방법으로서 - 상기 커스텀 오브젝트는 상기 하나 이상의 레가시 컴포넌트의 재작성을 요구하지 않고도 상기 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 개발자 제어를 허용함 -,
    어플리케이션을 초기화하라는 요구를 수신하는 단계 - 상기 어플리케이션은 서비스를 제공하기 위한 하나 이상의 레가시 컴포넌트를 포함하고, 상기 하나 이상의 레가시 컴포넌트는 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 이용하여 통신함 -;
    상기 어플리케이션을 초기화하라는 요구에 기초하여, 서비스 대리자의 인스턴스가 생성될 것으로 식별하는 단계 - 상기 서비스 대리자는 웹 서비스 클라이언트와 상기 레가시 인터페이스 간에 대리 인터페이스를 노출시키기 위한 커스텀 오브젝트임 -;
    대리 메타데이터에 액세스하는 단계 - 상기 대리 메타데이터는 상기 서비스 대리자 및 상기 서비스 대리자의 인스턴스와 통신하기 위한 대리 인터페이스를 기술함 -;
    컴포넌트 메타데이터에 액세스하는 단계 - 상기 컴포넌트 메타데이터는 상기 하나 이상의 레가시 컴포넌트에 전달될 수 있는 호출들, 상기 하나 이상의 레가시 컴포넌트에 전달될 수 있는 매개변수들, 및 매개변수들이 전달될 순서를 기술함 -;
    상기 대리 메타데이터를 이용하여 대리 디스크립션을 생성하는 단계;
    상기 대리 디스크립션을 이용하여 상기 대리 인터페이스 및 상기 서비스 대리자의 인스턴스를 생성하는 단계 - 상기 서비스 대리자의 인스턴스는 상기 하나 이상의 레가시 컴포넌트로의 호출, 상기 서비스 대리자의 인스턴스로의 호출, 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들로의 호출 중 하나 이상의 호출에 의해 상기 웹 서비스 클라이언트로부터의 요구의 적어도 일부분을 프로세싱하도록 구성됨 -;
    상기 대리 디스크립션에 기초하여, 상기 하나 이상의 레가시 컴포넌트에 대한 메시지 교환 패턴이 상기 웹 서비스 클라이언트에 대한 응답을 요구하는 것으로 식별하는 단계;
    상기 하나 이상의 레가시 컴포넌트, 상기 서비스 대리자의 인스턴스, 및 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들 중 하나 이상으로부터 하나 이상의 반환 값을 수신하는 단계;
    상기 서비스 대리자의 인스턴스를 이용하여 상기 하나 이상의 반환 값을 웹 서비스 응답 메시지로 포맷팅하는 단계; 및
    추가의 프로세싱을 위해 상기 웹 서비스 클라이언트에 상기 웹 서비스 응답 메시지를 송신하는 단계
    를 포함하는, 웹 서비스 제공 방법.
  8. 제7항에 있어서,
    상기 어플리케이션을 초기화하라는 요구는 상기 웹 서비스 클라이언트로부터의 상기 서비스 요구 메시지에 응답하여 수신되는, 웹 서비스 제공 방법.
  9. 제7항에 있어서,
    상기 어플리케이션을 초기화하라는 요구는 상기 서비스 컴퓨팅 장치에서 사용자 인터페이스로부터의 입력에 응답하여 수신되는, 웹 서비스 제공 방법.
  10. 제1항에 있어서,
    상기 대리 디스크립션은 호출 동작, 매개변수, 및 상기 하나 이상의 레가시 컴포넌트, 상기 서비스 대리자의 인스턴스, 또는 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들과 통신하기 위한 메시지 교환 패턴 중 하나 이상을 기술하는, 웹 서비스 제공 방법.
  11. 제1항에 있어서,
    상기 대리 디스크립션은 WSDL 문서인, 웹 서비스 제공 방법.
  12. 제1항에 있어서, 상기 레가시 인터페이스에 대한 인터페이스 디스크립션에 기초하여, 상기 하나 이상의 레가시 컴포넌트를 갖는 상기 어플리케이션에 의해 제공된 다른 서비스에 대하여 동적 웹 서비스가 생성되고, 상기 동적 웹 서비스는 상기 어플리케이션의 초기화 시에 생성되고, 상기 동적 웹 서비스는 상기 레가시 인터페이스의 리터럴 변환이고, 상기 방법은,
    상기 다른 서비스에 대응하는 다른 서비스 요구 메시지를 수신하는 단계 - 상기 다른 서비스 요구 메시지는 상기 하나 이상의 레가시 컴포넌트에 의해 제공된 상기 다른 서비스를 요구하기 위한 하나 이상의 동작을 포함함 -; 및
    상기 하나 이상의 동작에 기초하여, 상기 동적 웹 서비스를 이용하여 상기 하나 이상의 레가시 컴포넌트에 대해 하나 이상의 호출을 행하는 단계
    를 더 포함하는, 웹 서비스 제공 방법.
  13. 제12항에 있어서, 상기 웹 서비스 요구 메시지는 하나 이상의 매개변수를 더 포함하고, 상기 방법은,
    추가의 프로세싱을 위해 상기 하나 이상의 레가시 컴포넌트들 중 하나 이상에 상기 하나 이상의 매개변수를 전달하는 단계를 더 포함하는, 웹 서비스 제공 방법.
  14. 제13항에 있어서,
    레가시 인터페이스 디스크립션에 기초하여, 상기 하나 이상의 레가시 컴포넌트에 대한 메시지 교환 패턴이 상기 웹 서비스 클라이언트에 대한 응답을 요구하는 것으로 식별하는 단계;
    상기 하나 이상의 레가시 컴포넌트로부터 하나 이상의 반환 값을 수신하는 단계;
    상기 동적 웹 서비스를 이용하여 상기 반환 값을 웹 서비스 응답 메시지로 포맷팅하는 단계; 및
    추가의 프로세싱을 위해 상기 웹 서비스 클라이언트에 상기 웹 서비스 응답 메시지를 송신하는 단계
    를 더 포함하는, 웹 서비스 제공 방법.
  15. 제14항에 있어서,
    상기 어플리케이션을 중지시키라는 요구를 수신하는 단계;
    상기 어플리케이션을 중지시키라는 요구에 기초하여, 상기 서비스 대리자의 인스턴스 및 상기 동적 웹 서비스를 자동으로 중지시키는 단계; 및
    상기 어플리케이션의 다음 초기화 시에 상기 서비스 대리자의 새로운 인스턴스, 새로운 동적 웹 서비스, 새로운 대리 디스크립션 및 새로운 웹 서비스 디스크립션이 생성되도록 상기 대리 디스크립션 및 상기 웹 서비스 디스크립션을 삭제하는 단계
    를 더 포함하는, 웹 서비스 제공 방법.
  16. 제7항에 있어서,
    상기 어플리케이션을 중지시키라는 요구를 수신하는 단계;
    상기 어플리케이션을 중지시키라는 요구에 기초하여, 상기 서비스 대리자의 인스턴스를 자동으로 중지시키는 단계; 및
    상기 어플리케이션의 다음 초기화 시에 상기 서비스 대리자의 새로운 인스턴스 및 새로운 대리 디스크립션이 생성되도록 상기 대리 디스크립션을 삭제하는 단계
    를 더 포함하는, 웹 서비스 제공 방법.
  17. 분산 시스템 내의 서비스 컴퓨팅 장치에서, 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 하나 이상의 레가시 컴포넌트를 위한 커스텀 오브젝트를 초기화하는 방법을 구현하기 위한 프로그램을 저장한 컴퓨터 판독가능 저장 매체로서 - 상기 커스텀 오브젝트는 상기 하나 이상의 레가시 컴포넌트의 재작성을 요구하지 않고도 상기 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 개발자 제어를 허용함 -,
    상기 프로그램은 프로세서에 의해 실행될 때, 상기 분산 시스템으로 하여금 제7항의 방법을 수행하게 할 수 있는 컴퓨터 실행가능 명령어들을 포함하는, 웹 서비스를 제공하기 위한 컴퓨터 판독가능 저장 매체.
  18. 분산 시스템 내의 서비스 컴퓨팅 장치에서, 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 통해 통신하는 레가시 컴포넌트를 위한 커스텀 오브젝트를 통해 웹 서비스를 제공하는, 상기 서비스 컴퓨팅 장치에 의해 수행되는 방법으로서 - 상기 커스텀 오브젝트는 상기 레가시 컴포넌트의 재작성을 요구하지 않고도 상기 웹 서비스의 상호동작성, 강건성 및 효율성에 대한 개발자 제어를 허용함 -,
    웹 서비스로부터, 웹 서비스 환경에서 통신하도록 개발되지 않은 레가시 인터페이스를 이용하여 통신하는 하나 이상의 레가시 컴포넌트를 갖는 어플리케이션에 의해 제공된 서비스에 액세스하라는 요구를 수신하는 단계;
    상기 요구가 서비스 대리자에 의해 제어되는 서비스에 대응하는 것으로 식별하는 단계 - 상기 서비스 대리자는 웹 서비스 클라이언트와 상기 레가시 인터페이스 간에 대리 인터페이스를 노출시키기 위한 커스텀 오브젝트임 -;
    대리 메타데이터에 액세스하는 단계 - 상기 대리 메타데이터는 상기 서비스 대리자 및 상기 서비스 대리자의 인스턴스와 통신하기 위한 대리 인터페이스를 기술함 -;
    컴포넌트 메타데이터에 액세스하는 단계 - 상기 컴포넌트 메타데이터는 상기 하나 이상의 레가시 컴포넌트에 전달될 수 있는 호출들, 상기 하나 이상의 레가시 컴포넌트에 전달될 수 있는 매개변수들, 및 매개변수들이 전달될 순서를 기술함 -;
    상기 대리 인터페이스를 통해 상기 서비스 대리자의 인스턴스에 상기 요구의 적어도 일부분을 전달하는 단계;
    상기 서비스 대리자의 인스턴스가 상기 하나 이상의 레가시 컴포넌트로의 호출, 상기 서비스 대리자의 인스턴스로의 호출, 및 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들로의 호출 중 하나 이상의 호출에 의해 상기 요구의 적어도 일부분을 프로세싱하는 단계;
    상기 어플리케이션을 중지시키라는 요구를 수신하는 단계;
    상기 어플리케이션을 중지시키라는 요구에 기초하여, 상기 서비스 대리자의 인스턴스를 자동으로 중지시키는 단계; 및
    상기 어플리케이션의 다음 초기화 시에 상기 서비스 대리자의 새로운 인스턴스 및 새로운 대리 디스크립션이 생성되도록 상기 대리 디스크립션을 삭제하는 단계
    를 포함하고,
    상기 서비스 대리자는 상기 어플리케이션을 초기화하라는 요구 시에 생성된 것이고,
    상기 대리 디스크립션은 상기 서비스 대리자의 인스턴스 및 상기 대리 인터페이스를 생성하는 데 사용되고, 상기 대리 디스크립션은, 호출 동작, 매개변수, 및 상기 하나 이상의 레가시 컴포넌트, 상기 서비스 대리자의 인스턴스, 또는 상기 어플리케이션과 상기 서비스 대리자의 인스턴스 외부의 다른 시스템들과 통신하기 위한 메시지 교환 패턴 중 하나 이상을 기술하는, 웹 서비스 제공 방법.
  19. 삭제
  20. 삭제
KR1020060017162A 2005-03-08 2006-02-22 동적 서비스 대리자 KR101219855B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/074,619 US7593994B2 (en) 2005-03-08 2005-03-08 Generating a dynamic web service and dynamic service surrogate for legacy application components
US11/074,619 2005-03-08

Publications (2)

Publication Number Publication Date
KR20060099403A KR20060099403A (ko) 2006-09-19
KR101219855B1 true KR101219855B1 (ko) 2013-01-21

Family

ID=36570927

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060017162A KR101219855B1 (ko) 2005-03-08 2006-02-22 동적 서비스 대리자

Country Status (5)

Country Link
US (1) US7593994B2 (ko)
EP (1) EP1701513A1 (ko)
JP (1) JP5420139B2 (ko)
KR (1) KR101219855B1 (ko)
CN (1) CN1832476B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590988B2 (en) * 2005-03-08 2009-09-15 Microsoft Corporation Dynamic service generation for legacy components
US7802230B1 (en) * 2005-09-19 2010-09-21 Sap Ag Heterogeneous software integration systems and methods
US7661113B2 (en) 2006-09-28 2010-02-09 Sap Ag Method and system for data preparation and communication between software applications
US7971183B2 (en) * 2007-02-23 2011-06-28 Accenture Global Services Limited Tool for converting legacy applications to web services
US7971184B2 (en) * 2007-02-23 2011-06-28 Accenture Global Services Limited GUI-based application to web services conversion system
CN100578458C (zh) 2007-03-22 2010-01-06 华为技术有限公司 分布式系统中的调用请求处理方法及分布式系统和服务器
CN101286131B (zh) * 2007-04-09 2010-06-09 国际商业机器公司 服务测试方法和服务测试系统
US8019812B2 (en) * 2007-04-13 2011-09-13 Microsoft Corporation Extensible and programmable multi-tenant service architecture
US8528058B2 (en) * 2007-05-31 2013-09-03 Microsoft Corporation Native use of web service protocols and claims in server authentication
US8091094B2 (en) 2007-10-10 2012-01-03 Sap Ag Methods and systems for ambistateful backend control
US8146110B2 (en) * 2007-12-10 2012-03-27 Microsoft Corporation Service platform for in-context results
US20090228804A1 (en) * 2008-03-05 2009-09-10 Microsoft Corporation Service Preview And Access From an Application Page
US7904508B2 (en) * 2008-10-24 2011-03-08 Microsoft Corporation Providing functionality to client services by implementing and binding contracts
CN101923461A (zh) * 2009-06-12 2010-12-22 徐晓松 一种数据处理方法及其系统
CN102262527B (zh) 2010-05-31 2015-12-09 国际商业机器公司 生成网络服务的方法和系统
JP5743724B2 (ja) 2011-02-15 2015-07-01 キヤノン株式会社 管理装置及び管理方法、管理システムとネットワークデバイス
US10250519B2 (en) * 2014-05-21 2019-04-02 Oracle International Corporation System and method for supporting a distributed data structure in a distributed data grid
US9940112B2 (en) 2014-11-06 2018-04-10 Capgemini Technology Services India Limited Efficient framework for deploying middleware services
EP3041187B1 (en) * 2014-12-30 2022-05-04 Accenture Global Services Limited Method and mobile device for communicating information between a mobile device and an enterprise system
US10171493B2 (en) 2016-03-05 2019-01-01 Sears Brands, L.L.C. Method and system to dynamically obfuscate a web services interface
US10262006B2 (en) 2016-04-29 2019-04-16 Microsoft Technology Licensing, Llc Contextually triggered entry point
CN107784221B (zh) * 2016-08-30 2021-07-27 斑马智行网络(香港)有限公司 权限控制方法、服务提供方法、装置、系统及电子设备
KR102076829B1 (ko) 2018-11-30 2020-02-12 인하대학교 산학협력단 친환경 전자파 차폐재 조성물의 제조방법
KR102076833B1 (ko) 2018-11-30 2020-02-12 인하대학교 산학협력단 탄소 소재를 포함한 환경 친화적 전자파 차폐재 조성물의 제조방법
KR102076837B1 (ko) 2018-11-30 2020-02-12 인하대학교 산학협력단 AgSnO2-탄소소재를 포함한 친환경 전자파 차폐재 조성물의 제조방법
CN111209122B (zh) * 2019-12-24 2024-06-11 广州华多网络科技有限公司 接口调用方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157936A (en) 1997-09-30 2000-12-05 Unisys Corp. Method for extending the hypertext markup language (HTML) to support a graphical user interface control presentation
KR20010105932A (ko) * 2000-05-19 2001-11-29 정재현 인터넷 환경에서의 시스템들간에 호환을 이루게 하도록컨넥터 기능을 갖는 운영시스템
KR100370748B1 (ko) 2000-04-15 2003-02-05 주식회사 케미스 기존 시스템을 웹에서 사용 가능한 시스템으로 전환하는방법
US6792605B1 (en) 1999-06-10 2004-09-14 Bow Street Software, Inc. Method and apparatus for providing web based services using an XML Runtime model to store state session data

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2332288A (en) * 1997-12-10 1999-06-16 Northern Telecom Ltd agent enabling technology
US20020116454A1 (en) * 2000-12-21 2002-08-22 William Dyla System and method for providing communication among legacy systems using web objects for legacy functions
US6993585B1 (en) * 2000-12-22 2006-01-31 Unisys Corporation Method and system for handling transaction requests from workstations to OLTP enterprise server systems utilizing a common gateway
US7627658B2 (en) * 2001-02-12 2009-12-01 Integra Sp Limited Presentation service which enables client device to run a network based application
US20020152210A1 (en) * 2001-04-03 2002-10-17 Venetica Corporation System for providing access to multiple disparate content repositories with a single consistent interface
CA2348706A1 (en) * 2001-05-25 2002-11-25 Ibm Canada Limited-Ibm Canada Limitee Converting user interface source code of a legacy application to web pages
US7340714B2 (en) * 2001-10-18 2008-03-04 Bea Systems, Inc. System and method for using web services with an enterprise system
US7188163B2 (en) * 2001-11-26 2007-03-06 Sun Microsystems, Inc. Dynamic reconfiguration of applications on a server
US7284039B2 (en) * 2002-12-17 2007-10-16 International Business Machines Corporation Apparatus and method for flexible web service deployment
US7805713B2 (en) * 2003-10-27 2010-09-28 Hewlett-Packard Development Company, L.P. Transaction processing architecture
US7266550B2 (en) * 2004-01-29 2007-09-04 Sap Aktiengesellschaft Managing application status information for a computer application
US7590988B2 (en) * 2005-03-08 2009-09-15 Microsoft Corporation Dynamic service generation for legacy components

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157936A (en) 1997-09-30 2000-12-05 Unisys Corp. Method for extending the hypertext markup language (HTML) to support a graphical user interface control presentation
US6792605B1 (en) 1999-06-10 2004-09-14 Bow Street Software, Inc. Method and apparatus for providing web based services using an XML Runtime model to store state session data
KR100370748B1 (ko) 2000-04-15 2003-02-05 주식회사 케미스 기존 시스템을 웹에서 사용 가능한 시스템으로 전환하는방법
KR20010105932A (ko) * 2000-05-19 2001-11-29 정재현 인터넷 환경에서의 시스템들간에 호환을 이루게 하도록컨넥터 기능을 갖는 운영시스템

Also Published As

Publication number Publication date
KR20060099403A (ko) 2006-09-19
CN1832476A (zh) 2006-09-13
US20060206567A1 (en) 2006-09-14
EP1701513A1 (en) 2006-09-13
JP2006252537A (ja) 2006-09-21
US7593994B2 (en) 2009-09-22
CN1832476B (zh) 2012-05-02
JP5420139B2 (ja) 2014-02-19

Similar Documents

Publication Publication Date Title
KR101219855B1 (ko) 동적 서비스 대리자
JP5259924B2 (ja) レガシーコンポーネントのための動的サービスの生成
US6622175B1 (en) System and method for communications in a distributed processing environment
EP1960899B1 (en) Conforming web services to an updated contract
US20200092235A1 (en) Method and Apparatus for Composite User Interface Generation
US6874020B1 (en) System uses application manager and master agent to communicate with mini-agents for remotely managing application resources distributed across multiple Java virtual machines
US8091097B2 (en) Distributed virtual machine architecture
US6629128B1 (en) System and method for distributed processing in a computer network
US6839897B2 (en) Stub search loading system and method, server apparatus, client apparatus, and computer-readable recording medium
US6947965B2 (en) System and method for communications in a distributed computing environment
Newmarch A programmer's guide to Jini technology
US20030233477A1 (en) Extensible infrastructure for manipulating messages communicated over a distributed network
WO2001073550A2 (en) System and method of generating and using proxy beans
MX2007015887A (es) Flujos de trabajos centricos de datos.
WO2001090884A2 (en) Modular and portable deployment of a resource adapter in an application server
US20030055862A1 (en) Methods, systems, and articles of manufacture for managing systems using operation objects
WO2007005849A2 (en) Using messages to extend crm functionality
Newmarch Foundations of Jini 2 programming
US20060156296A1 (en) Distributed computing system
US20040163086A1 (en) WebDAV servlet
Jololian et al. A framework for a meta-semantic language for smart component-adapters
US7926068B2 (en) Printing interface for a computer platform
Jorelid J2EE frontend technologies: A programmer's guide to Servlets, JavaServer Pages, and enterprise JavaBeans
Madhoun et al. On the creation of distributed simulation Web-Services in CD++
Jörelid Servlet Theory

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20060222

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20110208

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20060222

Comment text: Patent Application

PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20120607

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20121214

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20130102

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20130102

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20151217

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20161220

Start annual number: 5

End annual number: 5

LAPS Lapse due to unpaid annual fee