Bill Gibson, 프로그램 관리자
Microsoft Corporation
적용 대상 :
Microsoft Visual Studio 2005 Team System
응용 프로그램 디자이너에는 웹 서비스 끝점(endpoint) 지정을 ASP.NET 응용 프로그램에 복사하는 방법이 두 가지 있습니다. 여기에서는 각각의 방법과 그 차이 및 효과적 사용 방법을 설명합니다.
두가지 방법
첫번째는 매우 명백한 복사와 붙이기를 사용하는 방법입니다. 끝점(endpoint)을 포함한 응용 프로그램을 복사하는 것으로 하나 이상의 끝점을 복사할 수 있습니다. 복수의 끝점을 복사하는 경우는 같은 응용 프로그램에서 복사해야 합니다. 다른 Visual Studio 인스턴스에 복사할 수 있으므로 솔루션간에 끝점을 복사할 수 있습니다. 웹 서비스 끝점은 ASP.NET 응용 프로그램에만 붙일 수 있습니다.
다른 하나는 ASP.NET 웹 응용 프로그램에서 지원되는 "WSDL의 웹 서비스 끝점 작성 " 기능을 사용하는 방법입니다. 이 기능은 원래의 응용 프로그램이 구현된 경우에만 사용할 수 있습니다. 이 방법에서는 원래 끝점의 WSDL을 사용하고, 대상 응용 프로그램에 새로운 끝점을 작성합니다. 이것을 실시하려면, 대상 응용 프로그램을 오른쪽 클릭하여, [Create Web Service Endpoint from WSDL] 을 선택하고, 소스 끝점의 URL을 지정하면 새로운 끝점이 작성됩니다. 이 시점에서는 대상 응용 프로그램이 구현되어 있지 않아도 괜찮습니다.
두가지 방법의 차이
두자기 방법 모두 끝점과 조작 정의만이 복사되고, 구현 코드는 복사되지 않습니다. 이것에 의해, 구현 전후의 조작 일관성이 확보됩니다. 이것은 응용 프로그램의 구현 대신 사양을 표현한다는 응용 프로그램 다이어그램의 목적과도 일치합니다.
두가지 방법의 차이는 반환값 형식이나 매개 변수의 형식으로서 조작이 참조하는 복합형 처리 방법에 있습니다. 복사와 붙이기의 경우는 참조되는 모든 형식의 이름을 포함하고, 조작과 서명이 복사됩니다. 다만, 대상 응용 프로그램에는 새로운 복합형 정의가 작성되지 않고, 원래의 끝점이 참조하는 형식을 포함한 어셈블리나 프로젝트의 참조도 작성되지 않습니다.
이것에 대해서 WSDL 파일에서 끝점을 작성하는 경우는 이 파일 및 참조되는 모든 XML 스키마 문서가 처리되어 메시지 정의내에서 참조되는 모든 복합형에 대해, 새로운 CLR 형식이 정의됩니다. 대상 응용 프로그램이 미구현된 경우, 응용 프로그램을 구현 할 때까지, 이러한 새로운 형식을 표시 또는 조작할 수 없지만, 바로 사용할 수 있는 상태가 됩니다. 응용 프로그램을 구현 할 경우에 그 응용 프로그램용으로 선택한 언어를 사용하고, 적절한 클래스가 루트 프로젝트내에 생성됩니다. 구현 끝난 응용 프로그램에 WSDL에서 끝점을 작성하면, 필요한 모든 클래스를 포함한 끝점 코드가 즉시 생성됩니다.
복사와 붙이기를 사용한다
끝점 복사와 붙이기는 대상 응용 프로그램의 구현자가 매개 변수와 반환값 형식의 정의를 다른 수단으로 제공한다는 생각에 근거합니다. 구현자는 형식을 완전히 새롭게 정의하는 일도 소스에서 형식 정의를 복사하는 일도 더욱 흥미로운 것에는 원래의 응용 프로그램에서 사용되는 실제의 형식 정의를 참조할 수도 있습니다.
대부분의 경우, 원래의 응용 프로그램에서 정의되는 형식을 참조하면, 두개의 구현이 결합되기 때문에 권장하지 않습니다. 공통 형식 정의를 사용하는 경우, 형식을 제 3 의 프로젝트로 정의하여 두개의 구현을 분리하여, 각 구현을 개별적으로 진화시켜 갈 수 있도록 하는 것이 적절합니다.
기존 형식 정의를 다시 사용하는 경우는 응용 프로그램의 구현 후에 형식이 정의된 어셈블리나 클래스 라이브러리 참조를 추가합니다. 붙여진 복합형을 포함한 끝점을 컴파일하기 위해서 필요한 작업은 이것 뿐입니다. 형식을 완전히 새롭게 정의하는 경우에는 필요한 작업이 조금 더 늘어납니다.
"WSDL의 웹 서비스 끝점 작성 " 을 사용한다
WSDL의 끝점 작성은 약간 기능이 다릅니다. 이 방법은 /server 스위치를 지정한 WSDL.exe 유틸리티와 같이 기능하여, WSDL 문서 및 가져오기 된 모든 XML 스키마 문서 내의 형식에 근거해 대상 응용 프로그램에 "새로운" 클래스집합이 작성됩니다. 이 방법은 형식 대신 스키마를 공유한다는 서비스 지향 아키텍처의 원리를 반영합니다 (다만, 이 원리의 주요 목적은 서비스의 공급자 사이 대신, 공급자와 소비자 사이의 구현 의존관계(dependencies)를 피하는 것입니다.).
각각의 방법의 사용구분
두가지 방법에는 장단점이 있습니다. 데이터의 서식 설정이나 유효성 검사를 실시하기 위해, 메시지 형식 정의에 동작을 추가하는 경우, 같은 동작이 각 응용 프로그램에 필요하면, 이 동작을 사용할 수 있도록 하기 위해, 같을 데이터 유형 정의를 재사용할 가치가 있습니다. 동작이 원래의 구현에 고유한것 대신, 복사에서도 적절히 되도록해야 합니다 (필요에 따라서 다음에 구현을 분기시키는 것은 간단하지만).이미 설명한 것처럼, 형식 정의를 다시 사용하는 경우, 원래의 ASP.NET 응용 프로그램에서 정의된 형식을 그대로 두는 것은 일반적으로 권장하지 않습니다. 그대로 두면, 복사 된 응용 프로그램은 공통의 형식 뿐만이 아니라, 원래의 응용 프로그램 구현에도 바인드 됩니다.
원래의 끝점을 비슷하지만 최종적으로 다른 동작의 템플릿으로만 사용하는 경우, 기존 형식이 끝점의 최종적인 디자인에 어느 정도 도움이 되는지에 따라 사용하는 방법이 다릅니다. 복사와 붙이기는 모든 WSDL 속성을 보관 유지되기 위해, "WSDL 바인드명" 속성과 "네임 스페이스" 속성의 모두 또는 한쪽을 변경하고, 복사 된 끝점 형식이 원래의 끝점 형식과 다른 것을 보여줘야 한다는 것을 기억해 두세요.
메시지 형식 정의를 동작에 의존하지 않는 데이터의 서식 설정의 메커니즘으로만 사용하는 것이 확정된 경우는 구현 결합에 의한 이점은 없습니다. 이 경우는 WSDL에서 끝점을 작성하면, 독립한 즉시 사용 가능한 구현이 제공된다는 이점이 있습니다.
솔루션에 포함되어 있는 웹 서비스의 WSDL에서 만이 아니고, 모든 웹 서비스의 WSDL에서 끝점을 작성할 수 있습니다. 따라서 이 방법을 사용해 외부 웹 서비스의 끝점을 복사할 수 있습니다. 외부 웹 서비스의 끝점은 다른 방법에서는 복사와 붙이기를 실시할 수 없습니다.
요약
복사와 붙이기 및 "WSDL의 웹 서비스 끝점 작성"으로 끝점 지정을 복제하는 두가지 다른 방법이 제공됩니다. 소스의 웹 서비스정의에서 사용되는 형식 정의를 활용하려면 복사와 붙이기가 적절하고, 보다 독립성이 높은 복사를 작성하려면, WSDL의 웹 서비스 끝점 작성이 적절합니다.