Criando módulos em ASP.NET

Parece que a instrução include do C, C++, HTML/ASP é meio bobona.
Parece que ela joga todo o código pra dentro de quem a chama, independentemente das rotinas não utilizadas. Em C e C++ isso não afeta tanto porque os códigos serão compilados. Já em ASP não. O servidor pode receber uma página grande pra interpretar. O sensato então é criar módulos pequenos, a fim de evitar dum chamador passar rotinas não utilizadas pro interpretador.

Essa maneira arcaica de trabalhar inexiste no ASP.NET.
A ideia é modularizar principalmente com classes. A tarefa é extremamente cômoda.

Pegando aquele exemplo de modularização em ASP, as rotinas CnvDH, CnvDH_SQL e CnvDH_ODBC serão métodos duma classe chamada TDHConversao.
A página dessa classe ficará armazenada no diretório App_Code (que se cria facilmente no Visual Web Developer 2008 Express Edition).
Todas as classes armazenadas nesse diretório especial ficam automaticamente disponíveis em toda a aplicação (não é necessário usar using pra acessá-las).


Nesse exemplo a aplicação ficou resumida em 3 módulos apenas→

dh_conversao.cs → responsável pelas conversões de data/hora;

default.aspx.cs → elo de ligação entre o interfaceador e os demais módulos (nesse caso apenas dh_conversao.cs);

default.aspx → interface com usuário.


O elo entre default.aspx.cs e default.aspx é estabelecido na propriedade CodeFile dessa última página.



  App_Code/dh_conversao.cs  
public class TDHConversao

{
  protected string Cnv2 (int Valor)

  {
    if (Valor <= 9)
      return (Valor.ToString ().PadLeft (2, '0'));
    else
      return (Valor.ToString ());
  }

  public string CnvDH (DateTime ADH)

  {
    string Data, Hora;

    Data= Cnv2 (ADH.Day) + "/" + Cnv2 (ADH.Month) + "/" + ADH.Year.ToString ();
    Hora= Cnv2 (ADH.Hour) + ":" + Cnv2 (ADH.Minute);

    return (Data + " " + Hora);
  }

  public string CnvDH_SQL (DateTime ADH)

  {
    string SQLData, SQLHora;

    SQLData= ADH.Year.ToString () + "-" + Cnv2 (ADH.Month) + "-" + Cnv2 (ADH.Day);
    SQLHora= Cnv2 (ADH.Hour) + ":" + Cnv2 (ADH.Minute) + ":" + Cnv2 (ADH.Second);

    return "'" + SQLData + " " + SQLHora + "'";
  }

  public string CnvDH_ODBC (DateTime ADH)

  {
    return "{ts " + CnvDH_SQL (ADH) + "}";
  }
}

  default.aspx.cs  
public partial class _Default: System.Web.UI.Page

{
  protected void Page_Load (object sender, EventArgs e)

  {
    DateTime DHAtual;
    TDHConversao Conversao;

    DHAtual     = DateTime.Now;
    Conversao   = new TDHConversao ();
    DH.Text     = Conversao.CnvDH (DHAtual);
    DH_ODBC.Text= Conversao.CnvDH_ODBC (DHAtual);
    DH_SQL.Text = Conversao.CnvDH_SQL (DHAtual);
  }
}

  default.aspx  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="default.aspx.cs" Inherits="_Default" %>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title>Modularização em ASP.NET</title>
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="expires" content="0" />
  </head>
  <body>
    <form id="Formulario" runat="server">
      DataHora corrente: <asp:TextBox id="DH" runat="server"></asp:TextBox>
      <br /><br />
      DataHora pro ODBC: <asp:TextBox id="DH_ODBC" runat="server"></asp:TextBox>
      <br /><br />
      DataHora em SQL: <asp:TextBox id="DH_SQL" runat="server"></asp:TextBox>
    </form>
  </body>
</html>



Código fonte





http://transeberiano.brinkster.net