it-swarm-ko.tech

UserControl, WebControl, RenderedControl 및 CompositeControl의 차이점은 무엇입니까?

차이점은 무엇입니까, 공식 용어는 무엇입니까? ASP.NET 3.5에서 사용되지 않는 용어는 무엇입니까?

50
Thomas Jespersen

UserControl : 다른 웹 컨트롤로 구성된 .ascx로 끝나는 사용자 지정 컨트롤입니다. 그것은 aspx 웹 페이지의 작은 버전과 거의 같습니다. UI (ascx)와 코드 숨김으로 구성됩니다. DLL을 참조하여 다른 프로젝트에서 재사용 할 수 없습니다.

WebControl : 웹 페이지 또는 UserControl에서 호스팅되는 컨트롤입니다. 하나 이상의 클래스로 구성되어 있으며 aspx 페이지 또는 UserControl에서 호스팅됩니다. WebControls에는 UI "페이지"가 ​​없으며 내용을 직접 렌더링해야합니다. DLL을 참조하여 다른 응용 프로그램에서 재사용 할 수 있습니다.

RenderedControl : 존재하지 않습니다. WebControl과 동의어 일 수 있습니다. 컨트롤이 aspx 페이지로 렌더링되지 않고 HttpResponse에 직접 작성되었음을 나타낼 수 있습니다.

CompositeControl : UserControls와 WebControls. 다른 컨트롤로 구성되어 있기 때문에 UserControls와 같은 코드입니다. 컨트롤 합성을위한 그래픽 UI는 없으며 컨트롤 디자이너가 CompositeControl의 UI 편집을 지원하도록 코딩해야합니다. 합성은 코드 숨김에서 수행됩니다. CompositeControls는 WebControls와 같은 다른 프로젝트에서 재사용 할 수 있습니다.

48
Will

ServerControl을 잊어 버렸습니다.

내 이해로는 다음과 같습니다.

  • UserControl과 ServerControl의 두 가지 종류의 컨트롤 만 있습니다.
  • CompositeControls는 일종의 "고급"UserControl입니다. Scott Guthries Blog 에 대한 자세한 정보를 찾으십시오.
  • 그들 모두는 WebControls입니다 (모두 System.Web.UI.Control에서 파생 되었기 때문에)
  • 그들은 모두 어떤 식 으로든 렌더링되므로 렌더링 된 컨트롤로 모두보고 싶습니다.

MSDN에서 :

사용자 컨트롤

ASP.NET : ASP.NET 페이지와 동일한 구문을 사용하여 선언적으로 작성되고 확장자가 .ascx 인 텍스트 파일로 저장되는 서버 컨트롤입니다. 사용자 컨트롤을 사용하면 페이지 기능을 분할하고 재사용 할 수 있습니다. 첫 요청시 페이지 프레임 워크는 사용자 정의 컨트롤을 System.Web.UI.UserControl에서 파생 된 클래스로 구문 분석하고 해당 클래스를 어셈블리로 컴파일하여 후속 요청에서 재사용합니다. 사전 컴파일없이 페이지 스타일 제작 및 배포로 인해 사용자 컨트롤을 쉽게 개발할 수 있습니다.

서버 제어

사용자 인터페이스 및 관련 기능을 캡슐화하는 서버 측 구성 요소입니다. ASP.NET 서버 컨트롤은 System.Web.UI.Control 클래스에서 직접 또는 간접적으로 파생됩니다. ASP.NET 서버 컨트롤의 상위 집합에는 웹 서버 컨트롤, HTML 서버 컨트롤 및 ASP.NET 모바일 컨트롤이 포함됩니다. ASP.NET 서버 컨트롤의 페이지 구문에는 컨트롤 태그에 runat = "server"속성이 포함되어 있습니다. HTML 서버 제어, 유효성 검사 서버 제어, 웹 서버 제어도 참조하십시오.

8
JRoppert

Web Forms와 마찬가지로 사용자 컨트롤은 비주얼 디자이너에서 만들거나 HTML과 별도의 코드로 작성할 수 있습니다. 또한 실행 이벤트를 지원할 수 있습니다. 그러나 웹 사용자 정의 컨트롤은 런타임에 동적으로 컴파일되므로 도구 상자에 추가 할 수 없으며 페이지에 추가 될 때 간단한 자리 표시 자로 표시됩니다.

따라서 속성 창 및 디자인 뷰 미리보기를 비롯하여 Visual Studio .NET의 전체 디자인 타임 지원에 익숙한 경우 웹 사용자 컨트롤을 사용하기가 더 어려워집니다. 또한 응용 프로그램간에 사용자 컨트롤을 공유 할 수있는 유일한 방법은 각 응용 프로그램에 별도의 복사본을 두는 것입니다.이 컨트롤을 변경하면 유지 관리가 더 필요합니다.

웹 사용자 지정 컨트롤은 컴파일 된 코드이므로 사용하기는 쉽지만 만들기는 더 어렵습니다. 웹 사용자 지정 컨트롤은 코드로 작성해야합니다. 컨트롤을 만든 후에는 컨트롤을 도구 상자에 추가하고 전체 속성 창 지원과 ASP.NET 서버 컨트롤의 다른 모든 디자인 타임 기능을 갖춘 시각적 디자이너에 표시 할 수 있습니다. 또한 전역 어셈블리 캐시에 웹 사용자 지정 컨트롤의 단일 복사본을 설치하고 응용 프로그램간에 공유하여 유지 관리를 쉽게 할 수 있습니다.

3
Govardhan

Will의 응답과 달리 웹 배포 프로젝트 참조 를 통해 다른 프로젝트에서 UserControls를 재사용 할 수 있습니다.

2
Guillaume CR

아직 평판이 충분하지 않기 때문에 이것을 답변으로 추가하지만 위의 Will의 답변을 나타냅니다.

link 에서 다음을 포함했습니다.

복합 컨트롤은 여러 하위 컨트롤이 집계되어 그들 자신과 외부 세계와 상호 작용하는 복잡한 구성 요소를 설계하는 데 적합한 도구입니다. 렌더링 된 컨트롤은 출력에 드롭 다운 또는 텍스트 상자와 같은 대화 형 요소가 포함되지 않은 읽기 전용 컨트롤 집계에 적합합니다.

설명서가 Render 메서드를 Rendered Controls로 재정 의하여 만든 UserControls를 참조한다고 생각합니다. 따라서 질문에서 알 수 있듯이 별도의 유형이 아니라 UserControl을 구현하는 방법입니다. 패턴.

0
Don