it-swarm-pt.tech

Qual é a diferença entre UserControl, WebControl, RenderedControl e CompositeControl?

Qual é a diferença, quais são os termos oficiais? Quaisquer termos obsoletos no ASP.NET 3.5?

50
Thomas Jespersen

UserControl : um controle personalizado, terminando em .ascx, composto por outros controles da web. É quase como uma versão pequena de uma página aspx. Consiste em uma interface do usuário (o ascx) e um código atrás. Não pode ser reutilizado em outros projetos fazendo referência a uma DLL.

WebControl : um controle hospedado em uma página da Web ou em um UserControl. Consiste em uma ou mais classes, trabalhando em conjunto, e está hospedado em uma página aspx ou em um UserControl. Os WebControls não têm uma "página" da interface do usuário e devem renderizar seu conteúdo diretamente. Eles podem ser reutilizados em outros aplicativos fazendo referência a suas DLLs.

RenderedControl : Não existe. Pode ser sinônimo de WebControl. Pode indicar que o controle é gravado diretamente no HttpResponse, em vez de renderizado em uma página aspx.

CompositeControl: Entre UserControls e WebControls. Eles codificam como UserControls, pois são compostos de outros controles. Não há interface gráfica do usuário para a composição do controle, e o suporte para edição da UI do CompositeControls deve ser codificado pelo designer de controle. A composição é feita no código abaixo. O CompositeControls pode ser reutilizado em outros projetos, como o WebControls.

48
Will

Você esqueceu o ServerControl.

No meu entendimento, é assim:

  • Existem apenas dois tipos diferentes de controles: UserControl e ServerControl
  • CompositeControls são uma espécie de UserControls "avançados". Encontre mais informações sobre Scott Guthries Blog .
  • Todos eles são WebControls (porque todos são derivados de System.Web.UI.Control)
  • Todos eles são renderizados de qualquer maneira, então eu gostaria de vê-los todos como controles renderizados.

Do MSDN:

Controle de Usuário

No ASP.NET: Um controle de servidor que é criado declarativamente usando a mesma sintaxe que uma página ASP.NET e é salvo como um arquivo de texto com uma extensão .ascx. Os controles do usuário permitem que a funcionalidade da página seja particionada e reutilizada. Na primeira solicitação, a estrutura da página analisa um controle de usuário em uma classe derivada de System.Web.UI.UserControl e compila essa classe em um Assembly, que é reutilizado em solicitações subsequentes. Os controles do usuário são fáceis de desenvolver devido à criação e implantação no estilo de página sem compilação prévia.

Controle do servidor

Um componente do lado do servidor que encapsula a interface do usuário e a funcionalidade relacionada. Um controle de servidor ASP.NET deriva direta ou indiretamente da classe System.Web.UI.Control. O superconjunto de controles do servidor ASP.NET inclui controles do servidor Web, controles do servidor HTML e controles móveis do ASP.NET. A sintaxe da página para um controle de servidor ASP.NET inclui um atributo runat = "server" na marca do controle. Consulte também: controle do servidor HTML, controles do servidor de validação, controle do servidor da Web.

8
JRoppert

Como os Web Forms, os controles do usuário podem ser criados no designer visual ou podem ser escritos com código separado do HTML. Eles também podem suportar eventos de execução. No entanto, como os controles de usuário da Web são compilados dinamicamente em tempo de execução, eles não podem ser adicionados à caixa de ferramentas e são representados por um espaço reservado simples quando adicionados a uma página.

Isso torna os controles de usuário da Web mais difíceis de usar se você estiver acostumado ao suporte completo em tempo de design do Visual Studio .NET, incluindo a janela Propriedades e as visualizações do modo Design. Além disso, a única maneira de compartilhar o controle do usuário entre aplicativos é colocar uma cópia separada em cada aplicativo, o que exige mais manutenção se você fizer alterações no controle.

Os controles personalizados da Web são código compilado, o que os torna mais fáceis de usar, mas mais difíceis de criar. Os controles personalizados da Web devem ser criados no código. Depois de criar o controle, você pode adicioná-lo à Caixa de Ferramentas e exibi-lo em um designer visual com suporte completo à janela Propriedades e todos os outros recursos de tempo de design dos controles do servidor ASP.NET. Além disso, você pode instalar uma única cópia do controle personalizado da Web no cache global do Assembly e compartilhá-lo entre aplicativos, o que facilita a manutenção.

3
Govardhan

Ao contrário da resposta de Will, é possível reutilizar UserControls em outros projetos por referenciando um projeto de implantação na web .

2
Guillaume CR

Como ainda não tenho reputação suficiente para comentar, adicionarei isso como resposta, mas refere-se à resposta de Will acima.

No link você incluiu:

Os controles compostos são a ferramenta certa para arquitetar componentes complexos nos quais vários controles filhos são agregados e interagem entre si e com o mundo externo. Os controles renderizados são adequados para agregação de controles somente leitura, na qual a saída não inclui elementos interativos, como caixas suspensas ou caixas de texto.

Acredito que a documentação esteja se referindo a UserControls que foram criados substituindo o método Render como Controles renderizados. Portanto, não é um tipo separado, como a pergunta implica, mas uma maneira de implementar um UserControl; um padrão.

0
Don