sexta-feira, 18 de julho de 2025

O Que é Web Forms?

Web Forms é um modelo de desenvolvimento web que faz parte do ASP.NET, a estrutura de desenvolvimento da Microsoft para a construção de aplicações web. Ele foi introduzido com o .NET Framework e foi uma das primeiras abordagens para criar sites dinâmicos usando C# (ou VB.NET).


A Ideia Central

A grande sacada do Web Forms era tentar trazer a experiência de desenvolvimento de aplicações desktop (como as feitas em Windows Forms) para a web. Em vez de lidar diretamente com HTML, CSS, JavaScript e o ciclo de vida HTTP de requisições e respostas, os desenvolvedores trabalhavam com controles visuais (como botões, caixas de texto, grids) que podiam ser arrastados e soltos em uma página.

Pense assim:

  • Aplicações Desktop: Você arrasta um botão para um formulário, dá um clique duplo e escreve o código que será executado quando o botão for clicado.

  • Web Forms: A Microsoft tentou replicar isso. Você arrastava um asp:Button para sua página .aspx, dava um clique duplo e escrevia o código C# (ou VB.NET) em um arquivo "code-behind" (.aspx.cs ou .aspx.vb) que seria executado no servidor quando o botão fosse clicado no navegador.


Como Funciona

  1. Páginas .aspx: São arquivos de texto que contêm o HTML estático e os controles de servidor ASP.NET (elementos com o prefixo asp:).

  2. Code-Behind (.aspx.cs ou .aspx.aspx.vb): Para cada página .aspx, há um arquivo de código separado onde você escreve a lógica de programação para os eventos dos controles, acesso a banco de dados, etc.

  3. Controles de Servidor: São objetos que você adiciona à sua página (<asp:TextBox>, <asp:Button>, <asp:GridView>, etc.). Eles são renderizados como HTML no navegador, mas você programa a lógica deles no servidor.

  4. Estado da Página (View State): Este é um conceito chave no Web Forms. Como o HTTP é "stateless" (não guarda informações de uma requisição para outra), o Web Forms usa o View State (um campo oculto na página HTML) para manter o estado dos controles entre as postbacks (envios de formulário de volta ao servidor). Isso ajudava a dar a sensação de que a página estava mantendo seu estado, como uma aplicação desktop.

  5. Ciclo de Vida da Página: Uma página Web Forms tem um ciclo de vida bem definido (inicialização, carregamento, manipulação de eventos, renderização), o que ajuda o desenvolvedor a saber quando e onde colocar seu código.

  6. Postbacks: Quando um usuário interage com um controle (como clicar em um botão), a página inteira é enviada de volta ao servidor (um "postback"), o código no servidor é executado e a página é renderizada novamente e enviada de volta ao navegador.


Vantagens do Web Forms

  • Curva de Aprendizagem Suave (para desenvolvedores desktop): Para quem vinha do desenvolvimento de aplicações Windows Forms, a transição para Web Forms era relativamente intuitiva devido ao modelo de eventos e controles.

  • Produtividade Rápida: Era possível criar formulários e aplicações simples rapidamente, arrastando e soltando controles.

  • Abstração do HTML: O desenvolvedor não precisava se preocupar tanto com os detalhes do HTML, JavaScript e CSS, pois o ASP.NET Web Forms gerava grande parte disso.

  • Rico Conjunto de Controles: Oferecia uma vasta gama de controles de servidor prontos para uso, desde caixas de texto e botões até grids de dados complexos e validadores.


Desvantagens do Web Forms

  • HTML Gerado: O HTML gerado pelo Web Forms podia ser verboso e difícil de otimizar para SEO ou para design responsivo.

  • View State Pesado: O View State, embora útil, podia inchar o tamanho da página, tornando-a mais lenta para carregar, especialmente em páginas com muitos controles ou dados.

  • Controle Limitado sobre o HTML/JavaScript: Para personalizações avançadas ou para integrar frameworks JavaScript modernos, o Web Forms podia ser um desafio, pois abstraía demais a camada front-end.

  • Acoplamento Forte: O modelo de postback e View State criava um acoplamento forte entre o cliente e o servidor, o que dificultava a criação de Single Page Applications (SPAs) ou APIs RESTful.


Onde o Web Forms se Encaixa Hoje

Embora o Web Forms ainda seja usado em muitas aplicações legadas e em algumas novas aplicações internas (onde a velocidade de desenvolvimento e a familiaridade com o modelo são prioridades), ele foi largamente substituído por abordagens mais modernas para o desenvolvimento web com .NET:

  • ASP.NET MVC (Model-View-Controller): Oferece maior controle sobre o HTML e uma separação de preocupações mais clara, sendo ideal para aplicações web complexas e públicas.

  • ASP.NET Core: A versão mais recente e multiplataforma do ASP.NET, que unifica MVC, Web API e outros modelos, sendo a escolha preferencial para novos desenvolvimentos.

  • Blazor: Permite construir interfaces de usuário interativas da web usando C# em vez de JavaScript, executando o código C# diretamente no navegador (via WebAssembly) ou no servidor.

Em resumo, o Web Forms foi um passo importante na evolução do desenvolvimento web com .NET, tornando-o acessível a muitos desenvolvedores. No entanto, o cenário web evoluiu, e outras tecnologias do ASP.NET oferecem hoje maior flexibilidade e controle para atender às demandas de aplicações web modernas.

ASP.NET Web Forms - Obter o Caminho Completo

Entendendo o Objetivo

O principal objetivo desses exemplos de código é obter o caminho completo para um arquivo chamado "Ranking.pdf" dentro da pasta "Downloads" do usuário. 


 Opção 1: Usando Environment.GetFolderPath

string CaminhoCompleto = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads", "Ranking.pdf");

Usando Environment.GetFolderPath e Path.Combine

string CaminhoCompleto = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads", "Ranking.pdf");

Esta é geralmente a abordagem recomendada para construir caminhos de arquivo em C#. Veja por que e como funciona:

  • Environment.GetFolderPath(Environment.SpecialFolder.UserProfile):

    • Environment é uma classe que fornece informações sobre o ambiente e a plataforma atuais.

    • GetFolderPath é um método estático que recupera o caminho para uma pasta especial do sistema.

    • Environment.SpecialFolder.UserProfile é um membro de enumeração que representa o diretório de perfil do usuário (por exemplo, C:\Users\SeuNomeDeUsuario no Windows, /home/seunomedeusuario no Linux). Esta é uma maneira confiável de obter a raiz dos arquivos pessoais do usuário.

  • Path.Combine(...):

    • Path é uma classe que executa operações em instâncias string que contêm informações de caminho de arquivo ou diretório.

    • Combine é um método crucial aqui. Ele concatena inteligentemente múltiplos componentes de caminho em um único caminho. 


Opção 2: Mais direto

string CaminhoCompleto = @$"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\Downloads\Ranking.pdf";

Esta opção é mais "direta" no sentido de que ela constrói a string do caminho usando interpolação de string e um string literal verbatim.

Por que "mais direto"?: Ele cria o caminho combinando as partes diretamente na string.

Desvantagem: Embora funcione bem no Windows, esta abordagem não é automaticamente compatível com outras plataformas (como Linux ou macOS) que usam barras normais (/) como separadores de caminho. Se você executar este código em um sistema Linux, ele ainda tentará usar barras invertidas, o que pode causar problemas. Por isso, a Opção 1 é geralmente preferível para código multi-plataforma.


sexta-feira, 25 de abril de 2025

Principais categorias de comandos SQL — DDL, DML, DCL, e TCL

Principais categorias de comandos SQL — DDL, DML, DCL, e TCL — com exemplos típicos para cada:


🔷 DDL (Data Definition Language)

Usado para definir ou modificar a estrutura do banco de dados (tabelas, índices, etc.)

Comando Função

CREATE Cria objetos no banco (ex: tabelas, views)

ALTER Altera a estrutura de um objeto

DROP Remove um objeto do banco

TRUNCATE Apaga todos os registros de uma tabela, mas mantém a estrutura

RENAME Renomeia objetos

Exemplo:

sql

CopiarEditar

CREATE TABLE clientes (

    id NUMBER PRIMARY KEY,

    nome VARCHAR2(100),

    email VARCHAR2(100)

);


🔸 DML (Data Manipulation Language)

Usado para manipular os dados das tabelas

Comando Função

INSERT Insere dados

UPDATE Atualiza dados

DELETE Apaga dados

MERGE Insere ou atualiza (upsert)

Exemplo:

sql

CopiarEditar

INSERT INTO clientes (id, nome, email)

VALUES (1, 'João Silva', 'joao@email.com');


🔐 DCL (Data Control Language)

Controla permissões e acessos

Comando Função

GRANT Concede permissões

REVOKE Remove permissões

Exemplo:

sql

CopiarEditar

GRANT SELECT, INSERT ON clientes TO usuario_app;


🔄 TCL (Transaction Control Language)

Controla transações no banco de dados

Comando Função

COMMIT Confirma as alterações

ROLLBACK Desfaz alterações não confirmadas

SAVEPOINT Marca um ponto para possível rollback parcial

Exemplo:

sql

CopiarEditar

BEGIN

   UPDATE clientes SET nome = 'Maria' WHERE id = 1;

   COMMIT;

END;


 

segunda-feira, 31 de março de 2025

Criar uma propriedade com get e set utilizando ViewState e trabalhando com uma lista parametrizada

Para criar uma propriedade com get e set utilizando ViewState e trabalhando com uma lista parametrizada, você pode usar a abordagem a seguir em ASP.NET:


csharp

public List<T> MinhaLista

{

    get

    {

        return ViewState["MinhaLista"] as List<T> ?? new List<T>();

    }

    set

    {

        ViewState["MinhaLista"] = value;

    }

}

Explicação:


A propriedade é definida como MinhaLista, sendo do tipo List<T> onde T é o parâmetro genérico.


Get:


O método get retorna o valor armazenado no ViewState. Caso não exista, ele retorna uma nova lista vazia (new List<T>()) para evitar valores nulos.


Set:


O método set atribui o valor passado à propriedade ao ViewState.


Como usar:

Você pode usar essa propriedade em sua página ou controle da seguinte maneira:


csharp

// Configurar valores na lista

MinhaLista = new List<string> { "Item1", "Item2", "Item3" };


// Recuperar valores da lista

foreach (var item in MinhaLista)

{

    Console.WriteLine(item);

}

Essa abordagem permite gerenciar dados no ViewState enquanto utiliza o poder das listas parametrizadas.

sexta-feira, 21 de março de 2025

Comando GitLab

Aqui estão algumas opções úteis para trabalhar com o GitLab usando o Git no terminal:


Clonar um repositório do GitLab:


git clone https://gitlab.com/usuario/nome-do-repositorio.git

Adicionar uma URL remota ao seu repositório local:


git remote add origin https://gitlab.com/usuario/nome-do-repositorio.git

Fazer commit das alterações:


git add .

git commit -m "Mensagem descritiva"

Enviar as alterações para o GitLab (branch principal):


git push origin main

Obter alterações do repositório remoto:


git pull origin main

Criar e enviar uma nova branch:


git checkout -b minha-nova-branch

git push origin minha-nova-branch