다음을 통해 공유


웹 파트 연결 개요

업데이트: 2007년 11월

웹 파트 컨트롤 집합을 사용하면 서버 컨트롤 간의 연결을 설정하여 연결된 컨트롤의 전체 값과 유용성이 연결되지 않은 개별 컨트롤의 전체 값과 유용성을 초과하도록 만들 수 있습니다. 연결 구성 요소의 전체 통합 집합이 제공되므로 최소 개수의 단계, 몇 줄의 코드만으로 데이터의 모든 기본 복잡성과 동기화를 처리하지 않고도 기존 WebPart(또는 서버나 사용자) 컨트롤을 사용하여 연결을 구성할 수 있습니다. 연결이 설정된 컨트롤을 사용하면 런타임 시 프로그래밍 방식으로 컨트롤 간에 동적 연결을 만들 수 있을 뿐만 아니라 웹 페이지의 태그에 선언된 미리 정의된 정적 연결을 만들 수 있습니다. 런타임 시 컨트롤을 연결하거나 연결을 끊을 수 있고 기존 연결을 관리할 수 있는 UI(사용자 인터페이스)를 사용자에게 제공할 수도 있습니다.

연결은 사용자와 개발자 모두에게 이익이 됩니다. 사용자는 연결을 사용하여 새롭고 의미 있는 방식으로 데이터를 볼 수 있습니다. 서버 컨트롤이 웹 서비스에 연결하여 시/주에 대한 일별 평균 온도의 기록 레코드를 반환하고 테이블 형식으로 데이터를 표시하는 응용 프로그램을 빌드한다고 가정해 보십시오. 사용자가 유연하게 여러 방식으로 데이터를 보려면 테이블 데이터를 다양한 차트 보기에 표시할 수 있는 차트 컨트롤에 서버 컨트롤을 연결할 수 있습니다. 사용자는 데이터를 테이블에 표시할지 또는 온도 데이터를 차트 컨트롤에 연결할지 선택할 수도 있습니다. 새 데이터 보기를 통해 사용자는 테이블 형식으로 데이터를 시각화하기 어려운 온도의 새 추세와 관계를 확인할 수 있습니다.

개발자는 연결을 사용하여 새로운 방식으로 코드를 다시 사용하고 격리된 컨트롤의 기능을 결합할 수 있습니다. 개발자가 우편 번호를 포함하여 사용자의 주소 정보를 저장하고 사용자 주문 시 항상 이 정보를 배송 주소에 채울 수 있는 컨트롤을 만든다고 가정해 보십시오. 그런 다음 개발자는 사용자 거주 지역의 날씨 정보와 헤드라인 뉴스를 표시하는 컨트롤 및 지정된 우편 주소 내의 비즈니스를 범주별로 조회하는 컨트롤과 같이 특정 우편 주소에 종속된 기타 컨트롤을 추가합니다. 우편 주소를 저장하는 동일한 기능을 가진 새 컨트롤을 각각 디자인하는 대신 개발자는 각 컨트롤에 우편 주소 입력이 필요하도록 디자인할 수 있습니다. 그런 다음 우편 번호를 입력으로 사용하는 날찌, 뉴스 및 비즈니스 목록 컨트롤에 이미 우편 번호가 저장된 컨트롤을 간단히 연결할 수 있습니다. 각 연결은 원래 컨트롤의 유용성을 확장하고 새 컨트롤 코드에서 중복을 제거합니다.

연결 개념

웹 파트 연결은 데이터 공유를 가능하게 하는 두 서버 컨트롤 간의 링크 또는 연결입니다. 연결을 만들려면 항상 두 개의 컨트롤이 필요하며 하나는 데이터 공급자이고 다른 하나는 공급자가 제공하는 데이터의 소비자입니다. 하나의 컨트롤이 동시에 소비자이자 공급자일 수 있으며 WebPart 컨트롤, 사용자 지정 컨트롤 또는 사용자 정의 컨트롤에 관계없이 모든 유형의 서버 컨트롤을 연결에 참여하도록 디자인할 수 있습니다. 날씨 정보 컨트롤, 헤드라인 뉴스 컨트롤 및 비즈니스 목록 컨트롤에 우편 번호를 제공하는 우편 번호 컨트롤의 이전 예제와 같이 공급자 컨트롤은 기본적으로 여러 소비자와의 연결을 동시에 설정할 수 있습니다. 소비자 컨트롤은 기본적으로 한 번에 하나의 공급자에만 연결할 수 있습니다.

연결은 항상 웹 파트 응용 프로그램의 컨텍스트에서 설정되므로 연결에 참여하는 두 개의 서버 컨트롤 외에 최소 두 개의 추가 컨트롤이 웹 페이지에 있어야 합니다. 두 컨트롤 중 하나는 웹 파트 컨트롤이 포함된 모든 페이지에 있는 WebPartManager 컨트롤입니다. 두 번째 필수 컨트롤은 WebPartZone 컨트롤과 같이 WebPartZoneBase 클래스에서 상속하는 영역입니다. 연결을 구성하려면 두 서버 컨트롤이 WebPartZoneBase 유형의 영역에 있어야 합니다.

연결 관계의 소비자와 공급자에는 각각 연결 지점이라는 개체가 하나 이상 있습니다. ConnectionPoint 클래스를 기반으로 하는 각 연결 지점에는 컨트롤 자체의 유형, 컨트롤이 인식하는 데이터 형식, 연결 지점 개체의 ID, 컨트롤이 여러 개의 연결을 구성할 수 있는지 여부 등 서버 컨트롤이 다른 컨트롤에 연결하는 데 필요한 세부 내용이 들어 있습니다. 하나의 서버 컨트롤에 여러 개의 연결 지점이 있을 수 있습니다. 공급자의 연결 지점은 ProviderConnectionPoint 클래스의 인스턴스에 의해 정의되고 소비자의 연결 지점은 ConsumerConnectionPoint 클래스의 인스턴스에 의해 정의됩니다.

연결을 구성하려면 소비자와 공급자가 모두 동일한 데이터 형식을 인식해야 합니다. 웹 파트 연결에서 이 데이터 형식은 인터페이스 인스턴스를 통해 전달됩니다. 컨트롤이 인식하는 데이터 형식은 해당 컨트롤의 연결 지점에 대한 InterfaceType 속성에 지정됩니다. 공급자와 소비자가 동일한 데이터 형식을 인식하면 서로 호환됩니다. 공급자와 소비자가 호환되지 않으면 개발자가 특수 변환기 개체를 사용하여 공급자의 데이터를 소비자가 작업할 수 있는 형식으로 변환해야 합니다. 이 변환 개체는 기본 WebPartTransformer 클래스에서 상속하며, 개발자는 기본 클래스에서 상속하여 사용자 지정 변환기를 개발하거나 제공된 변환기 개체(RowToFieldTransformer 또는 RowToParametersTransformer) 중 하나를 사용할 수 있습니다.

만든 연결은 WebPartConnection 개체에 포함됩니다. 이 연결 개체는 소비자 및 공급자 개체 참조, 소비자 및 공급자 ID, 모든 연결 지점 및 해당 ID 참조, 연결에 관련된 모든 변환기 참조, 활성 여부와 정적 또는 동적 여부와 같은 연결 상태 세부 내용 등을 포함하여 연결에 대한 모든 세부 내용을 포함합니다.

사용자에게 ConnectionsZone 컨트롤을 사용하여 연결을 만들고 관리하는 방법을 제공할 수 있습니다. 사용자가 컨트롤에 연결하거나 연결을 끊고 특정 연결 세부 내용을 구성할 수 있는 런타임 UI를 사용자에게 제공하는 <asp:connectionszone> 요소를 웹 페이지에서 선언할 수 있습니다.

연결 작동 방식

웹 파트 연결은 소비자가 공급자로부터 데이터를 가져오는 "끌어오기(pull)" 연결 모델을 기반으로 합니다. 연결을 만들려면 데이터 공급자 역할을 하는 컨트롤에서 자신이 제공할 수 있는 데이터를 나타내는 통신 계약을 정의합니다. 소비자 역할을 하며 이 통신 계약을 인지하는 또 다른 컨트롤은 데이터를 가져옵니다.

연결을 설정하는 메커니즘은 소비자와 공급자에 각각 하나씩 있는 특수 콜백 메서드입니다. 그러나 웹 파트 컨트롤 집합에서 모든 콜백 및 통신 세부 내용을 처리하므로 개발자는 최소 단계만 수행하면 됩니다. 개발자가 가장 간단한 방법을 사용하려면 공급자에서 콜백 메서드로 사용할 메서드를 선택하고 ConnectionProvider 특성을 사용하여 소스 코드에서 해당 메서드를 표시하기만 하면 됩니다. 그런 다음 이 메서드 내에서 소비자에게 전달할 데이터가 포함된 인터페이스 인스턴스를 반환합니다. 인터페이스 인스턴스는 매우 단순할 수 있습니다(예: 우편 번호와 같은 하나의 문자열 값이 포함된 단일 속성). 공급자는 제공된 인터페이스(IWebPartField, IWebPartRow 또는 IWebPartTable) 중 하나를 구현할 수도 있지만 대부분의 경우 소비자와 공유하려는 데이터가 포함된 하나 이상의 속성 또는 메서드가 있는 단순한 사용자 지정 인터페이스를 만들고 공급자에서 해당 인터페이스를 구현하는 것이 좋습니다. 소비자의 콜백 메서드는 공급자로부터 이 인터페이스 인스턴스를 검색합니다. 개발자는 ConnectionConsumer 특성을 사용하여 인터페이스 인스턴스를 검색한 후 처리 및 렌더링을 위해 내부 변수에 할당할 소비자의 메서드를 식별하기만 하면 됩니다. 공급자로부터 가져온 데이터는 페이지의 사전 렌더링 단계와 컨트롤 주기 중에 전달되므로 사전 렌더링이 완료된 후 소비자에서 데이터를 처리하고 논리를 업데이트하도록 계획해야 합니다.

참고:

앞에서 설명했듯이 소비자와 공급자는 인터페이스 형식과 관련해서 서로 호환되어야 하며, 그렇지 않으면 WebPartTransformer 개체를 사용하여 연결을 설정해야 합니다.

데이터 교환 시 사용되는 파이프라인은 소비자와 공급자의 연결 지점입니다. 여러 방식으로 컨트롤의 연결 지점을 만들 수 있습니다. 이전 단락에서 설명했듯이 각각 연결 지점을 만드는 ConnectionConsumerAttribute 또는 ConnectionProviderAttribute 클래스를 사용할 수 있습니다. 이 방법에서는 소스 코드에 있는 소비자의 콜백 메서드에 ConnectionConsumer 특성을 추가할 수 있으며, 마찬가지로 공급자의 콜백 메서드에 ConnectionProvider 특성을 추가할 수 있습니다. 이렇게 하면 해당 콜백 메서드가 식별되며, 사용자가 연결을 구성할 수 있도록 UI에 표시되는 ID 및 표시 이름과 같은 연결 지점 세부 내용을 지정할 수 있습니다. 다른 방법으로 ConnectionPoint에서 상속하여 사용자 지정 연결 지점을 만들거나 ConsumerConnectionPoint 또는 ProviderConnectionPoint 클래스에서 상속하거나 사용할 수도 있습니다. 앞에서 설명했듯이 소비자 또는 공급자 역할을 하는 컨트롤은 여러 개의 연결 지점을 가질 수 있습니다.

컨트롤 간의 연결은 정적이나 동적일 수 있습니다. 정적 연결은 호스팅 페이지에서 선언적으로 코딩되며 페이지를 사전 렌더링하는 동안 만들어집니다. 이렇게 하면 사용자가 페이지를 볼 때 연결이 활성화되도록 할 수 있습니다. 예제를 보려면 방법: 두 웹 파트 컨트롤 간 정적 연결 선언을 참조하십시오. 동적 연결은 컨트롤의 코드에서 프로그래밍 방식으로 만들 수도 있고 호스팅 페이지에서 선언적으로 만들 수도 있습니다. 웹 페이지의 WebPartZoneBase 영역 내에서 호환되는 두 개의 서버 컨트롤을 선언하고 이 페이지에서 ConnectionsZone 컨트롤 인스턴스를 선언하면 사용자는 런타임 시 두 컨트롤 간의 동적 연결을 만들고 구성할 수 있습니다.

웹 파트 연결 및 기타 ASP.NET 기능

연결은 웹 응용 프로그램의 컨트롤 간에 정보를 전달한다는 점에서 다른 ASP.NET 기술과 몇 가지 다른 점이 있습니다.

  • 연결은 웹 파트의 기능입니다. 웹 파트 연결을 위해 디자인되고 WebPartZoneBase 영역에 있는 컨트롤만 연결할 수 있습니다.

    참고:

    앞에서 설명했듯이 모든 ASP.NET 서버 컨트롤, 사용자 지정 컨트롤 또는 사용자 지정 컨트롤을 웹 파트 컨트롤로 사용하여 연결을 이용할 수 있습니다.

  • 연결은 데이터 바인딩과 다릅니다. 웹 파트 영역의 컨트롤 간 연결은 컨트롤 간의 통신 계약을 만들기 위해 인터페이스를 사용합니다. 데이터 바인딩은 컨트롤과 저장 장치(또는 백 엔드 데이터베이스) 사이의 연결입니다. 웹 파트 연결은 한 페이지에 있는 컨트롤 사이에서만 데이터를 이동합니다.

  • 연결은 개인 설정할 수 있습니다. 연결된 컨트롤을 나타내는 연결 설정을 다른 개인 설정 데이터와 함께 안전하게 저장할 수 있습니다. 개인 설정에 대한 자세한 내용은 웹 파트 개인 설정 개요를 참조하십시오.

주요 연결 클래스

다음 표에서는 연결에 필요하고 연결을 사용할 때마다 직접 또는 간접적으로 사용하는 웹 파트 컨트롤 집합의 세 구성 요소에 대해 설명합니다.

웹 파트 컨트롤

설명

WebPartManager

한 페이지에서 웹 파트 영역에 있는 컨트롤 간의 모든 연결을 관리합니다. 웹 파트 페이지마다 WebPartManager 컨트롤이 하나(만) 필요합니다.

WebPartZoneBase

WebPartZone

WebPartZoneBase 기본 클래스는 서버 컨트롤이 연결하여 데이터를 교환할 수 있도록 필요한 컨텍스트를 제공합니다. 기본 클래스에서 상속하여 사용자 지정 영역을 만들거나 WebPartZone 컨트롤을 연결에 참여하는 서버 컨트롤이 포함될 실제 영역으로 사용할 수 있습니다.

WebPartConnection

공급자 및 소비자와 연결의 다른 모든 필수 구성 요소에 대한 참조를 사용하여 연결을 나타냅니다.

ConnectionPoint

ProviderConnectionPoint

ConsumerConnectionPoint

ConnectionPoint 기본 클래스는 소비자 또는 공급자와 연결된 개체를 정의하고 데이터 교환에 필요한 세부 내용을 포함합니다. ProviderConnectionPoint는 공급자와 연결되고 ConsumerConnectionPoint는 소비자와 연결됩니다.

ConnectionsZone

사용자가 서버 컨트롤 간에 런타임 동적 연결을 만들 수 있는 UI를 제공합니다.

참고 항목

작업

방법: 두 웹 파트 컨트롤 간 정적 연결 선언

개념

ASP.NET 웹 파트 개요

참조

WebPartConnection

ConnectionPoint

웹 파트 컨트롤 설정 개요