viernes, 27 de diciembre de 2013

estructura de directorios

Estructura de directorios[editar · editar código]

En general, la estructura de directorios de ASP.NET puede ser determinada por las preferencias del desarrollador. Aparte de unos pocos nombres de directorios reservados, el sitio puede expandirse a cualquier número de directorios. La estructura es típicamente reflejada directamente en lasurls.
Los nombres de directorios especiales (a partir de ASP.NET 2.0 son):16
App_Browsers
Contiene archivos de definición específicos para navegadores.
App_Code
Es un directorio para códigos. El servidor ASP.NET automáticamente compilará los archivos (y subdirectorios) en esta carpeta en un ensamblado que es accesible desde cualquier página del sitio. App_Code es típicamente usada para código de acceso a datos, código de modelo o código de negocios. También cualquier manejador http específico para el sitio e implementación de módulos y servicios web van este directorio. Como alternativa a utilizar App_Code el desarrollador puede optar por proporcionar un ensamblado independiente con código precompilado.
App_Data
Directorio por defecto para las base de datos, tales como archivos mdb de Microsoft Access y archivos mdf de Microsoft SQL Server. Este directorio es usualmente el único con permisos de escritura en la aplicación.
App_LocalResources
Contiene archivos de recursos localizados para páginas individuales del sitio.
App_GlobalResources
Contiene archivos resx con recursos localizados disponibles para cada página del sitio. Este es donde el desarrollador ASP.NET típicamente almacenara mensajes que serán usados en más de una página.
App_Themes
usado para temas alternativos del sitio.
App_WebReferences
Usado para archivos de descubrimiento y archivos WSDL para referencias a servicios web para ser consumidos en el sitio.
Bin
Contiene código compilado (archivos .dll) para controles, componentes, y otro código que pueda ser referenciado por la aplicación. Cualquier clase representada por código en la carpeta Bin es automáticamente referenciada en la aplicación. Son archivos o librerias que tienen como principal acción ejecutar una función cuando estas son llamadas o se invocan.

Evolución respecto al ASP clásico[editar · editar código]

En el modelo de desarrollo web basado en páginas activas, la programación ASP actual tiene diversas limitaciones:
  • Para que todo ocurra en una página web, es habitual escribir una gran cantidad de código para resolver necesidades sencillas. ASP.NET incorpora un modelo declarativo a la programación web: los controles de servidor funcionan en una página Web simplemente declarándolos. Cuando se carga la página ASP.NET, se instancian los controles listados en la página ASP y es responsabilidad del control emitir código HTML que el navegador pueda entender.
  • ASP clásico es un tanto desorganizado. En una página ASP podemos incluir casi todo: HTML plano, código script, objetos COM y texto. No hay una distinción formal entre el contenido de una página y su comportamiento: simplemente, insertamos código en la página, y a ver qué pasa. ASP.NET impone un cierto orden sobre el modelo de programación estándar ASP. En cierto modo, esta "desorganización" puede evitarse fácilmente usando el sentido común y algunas de las nuevas tecnologías. Por ejemplo, podemos escribir en nuestras páginas ASP únicamente código VBScript. Dicho código generaría un mensaje XML, que luego seria interpretado por un archivo XSLT. De esta forma conseguimos evitar el llamado "código spaguetti", aumentando la claridad del código y la velocidad de ejecución de las páginas ASP. Sin embargo, en la medida en que el programador deba trabajar con código escrito por otros, se enfrentará a menudo con las malas prácticas que son en gran medida acentuadas por la permisividad del ASP clásico.
  • La tercera limitación en el desarrollo con ASP es que con el tradicional utilizamos lenguajes de scripting no tipados como VBScript o JScript. Podemos instalar otros motores de scripting que impongan verificación de tipos; sin embargo, no son universalmente conocidos o utilizados como los anteriores. ASP.NET claramente separa la porción basada en script de una página web de su contenido.
  • ASP.Net, puede decirse que es un nuevo nivel de abstracción en la construcción de sitios web, por que se pueden crear rápidamente aplicaciones web, basándose en los controles incluidos en el frameWork o muchos gratuitos que hay en la red, ocultando el código de mucho Ej: Puedes crear fácilmente un grid o tabla, y ésta se auto-ordena, página, etc, obteniendo sus datos desde cualquier base de datos. Incluye una gran herramienta para la construcción de reportes, y esto incluyen medios automáticos para exportarlos a XLS o PDF, y de igual forma incluye CristalReport. Además permite separar completamente la interfaz de la lógica de negocio. Excelente para desarrollo de aplicaciones multicapas.
  • Es muy sencilla la creación de páginas con AJAX, sólo incluyendo unos controles, así como descargar gratuitamente el ToolKit de ASP.Net Ajax.

características de asp.net

Páginas[editar · editar código]

Las páginas de ASP.NET, conocidas oficialmente como "web forms" (formularios web), son el principal medio de construcción para el desarrollo de aplicaciones web.8 Los formularios web están contenidos en archivos con una extensión ASPX; en jerga de programación, estos archivos típicamente contienen etiquetas HTML o XHTML estático, y también etiquetas definiendo Controles Web que se procesan del lado del servidor yControles de Usuario donde los desarrolladores colocan todo el código estático y dinámico requerido por la página web. Adicionalmente, el código dinámico que se ejecuta en el servidor puede ser colocado en una página dentro de un bloque <% -- código dinámico -- %> que es muy similar a otras tecnologías de desarrollo como PHPJSP y ASP, pero esta práctica es, generalmente, desaconsejada excepto para propósitos de enlace de datos pues requiere más llamadas cuando se genera la página.

ASP.NET sólo funciona sobre el servidor de Microsoft IIS, lo que supone una desventaja respecto a otros lenguajes del lado de servidor, ejecutables sobre otros servidores más populares como Apache. Ejemplos de esto son PHPPerl o Python.

Formulario web de ejemplo[editar · editar código]

Este es un ejemplo que utiliza código "en línea", opuesto al código independiente (code-behind).
<%@ Page Language="C#" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<script runat="server">
 
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToLongDateString();
    }
 
</script>
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Página de Ejemplo</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label runat="server" id="Label1" />
    </div>
    </form>
 
</body>
</html>

El modelo Code-behind[editar · editar código]

Microsoft recomienda que para realizar programación dinámica se use el modelo code-behind, o de respaldo, que coloca el código en un archivo separado o en una etiqueta de script especialmente diseñada. Los nombres de los archivos code-behind están basados en el nombre del archivo ASPX tales como MiPagina.aspx.cs o MiPagina.aspx.vb (esta práctica se realiza automáticamente en Microsoft Visual Studio y otros entornos de desarrollo). Cuando se usa este estilo de programación, el desarrollador escribe el código correspondiente a diferentes eventos, como la carga de la página, o el clic en un control, en vez de un recorrido lineal a través del documento.
El modelo code-behind de ASP.NET marca la separación del ASP clásico y alienta a los desarrolladores a construir aplicaciones con la idea de presentación y contenido separados en mente. En teoría, esto permite a un diseñador web, por ejemplo, enfocarse en la creación del diseño con menos posibilidades de alterar el código de programación mientras lo hace. Esto es similar a la separación en el Modelo Vista Controlador

Ejemplo[editar · editar código]

<%@ Page Language="C#" CodeFile="EjemploCodeBehind.aspx.cs" Inherits="SitioWeb.EjemploCodeBehind" 
AutoEventWireup="true" %>
La etiqueta superior es colocada al inicio del archivo ASPX. La propiedad CodeFile de la directiva @ Page especifica qué archivo (.cs o .vb) contiene el código code-behind mientras que la propiedad Inherits especifica la clase de la cual deriva la página. En este ejemplo, la directiva @ Page está incluida en EjemploCodeBehind.aspx y el archivo EjemploCodeBehind.aspx.cs contendrá el código para esta página:
using System;
 
namespace SitioWeb
{
 public partial class EjemploCodeBehind: System.Web.UI.Page
 {
  protected void Page_Load(object sender, EventArgs e)
  {
 
  }
 }
}
En este caso, el método Page_Load() será llamado cada vez que la página ASPX sea solicitada al servidor. El programador puede implementar manejadores de eventos en varias etapas del proceso de ejecución de la página..

Controles de usuario[editar · editar código]

ASP.NET permite la creación de componentes reutilizables a través de la creación de Controles de Usuario (User Controls). Un control de usuario sigue la misma estructura que un formulario web, excepto que los controles derivan de la clase System.Web.UI.UserControl, y son almacenados en archivos ASCX. Como los archivos ASPX, un ASCX contiene etiquetas HTML o XHTML, además de etiquetas para definir controles web y otros controles de usuario. También pueden usar el modelo code-behind.
Los programadores pueden agregar sus propias propiedades y métodos,9 y manejadores de eventos.10 Un mecanismo de eventos en burbuja proporciona la capacidad de pasar un evento disparado por un control de usuario a la página que lo contiene .

Administración del estado[editar · editar código]

Las aplicaciones ASP.NET son alojadas en un servidor web y se tiene acceso a ellas mediante el protocolo sin estado HTTP, que no guarda ninguna información sobre conexiones anteriores. Por lo tanto, si la aplicación requiere interacción entre conexiones, tiene que implementar su propia administración del estado. ASP.NET proporciona varias maneras de administrar el estado de las aplicaciones ASP.NET.

Estado de la aplicación[editar · editar código]

El estado de la aplicación (Application state) es una colección de variables definidas por el usuario que son compartidas por todas las invocaciones de una aplicación ASP.NET. Estas son establecidas e inicializadas cuando el evento Application_OnStart se dispara en la carga de la primera instancia de las aplicaciones y están disponible hasta que la última instancia termina. Las variables de estado o variables de sesión de la aplicación son identificadas por nombres.11

Estado de la sesión[editar · editar código]

El estado de la sesión (Session state) es una colección de variables definidas por el usuario, las cuales persisten durante la sesión de un usuario. Estas variables son únicas para diferentes instancias de una sesión de usuario, y son accedidas usando la colección Session. Las variables de sesión pueden ser preparadas para ser automáticamente destruidas después de un determinado tiempo de inactividad, incluso si la sesión no ha terminado. Del lado del cliente, una sesión de usuario es identificada por una cookie o codificando el ID de la sesión en la misma URL.11
ASP.NET proporciona tres modos de persistencia para variables de sesión:11
InProc
Las variables de sesión son mantenidas dentro del proceso. Sin embargo, en este modo, las variables son destruidas cuando el proceso ASP.NET es reciclado o terminado.
StateServer
En este modo, ASP.NET ejecuta un servicio de Windows separado que mantiene las variables de estado. Como esta administración de estado ocurre fuera del proceso ASP.NET, tiene un impacto negativo en el rendimiento, pero permite a múltiples instancias de ASP.NET compartir el mismo estado del servidor, permitiendo que una aplicación ASP.NET pueda tener su carga balanceada y escalada en múltiples servidores. También, como el servicio de administración del estado se ejecuta independiente de ASP.NET, las variables pueden persistir a través de las finalizaciones del proceso ASP.NET.
SqlServer
En este modo, las variables de estado son almacenadas en un servidor de base de datos, accesible usando SQL. Las variables de sesión pueden persistir a través de finalizaciones de procesos también en este modo.

infraestructura de ASP.NET


En este tema se describe el diseño de las aplicaciones de datos dinámicos de ASP.NET y se incluye información sobre las carpetas y los archivos que se crean de forma predeterminada cuando se usa scaffolding de datos dinámicos.
Puede crear aplicaciones web de datos dinámicos de ASP.NET en Visual Studio 2010 usando las plantillas de proyecto de datos dinámicos de ASP.NET. Estas plantillas generan los controles de usuario, las plantillas y los archivos web ASP.NET que los datos dinámicos usan para crear una interfaz de usuario para trabajar con los datos.
Una aplicación web de datos dinámicos requiere un objeto MetaModel y un contexto de datos registrado. El contexto de datos puede ser una clase de LINQ to SQL (una instancia de la clase System.Data.Linq.DataContext) o una clase de ADO.NET Entity Framework. La clase de contexto de datos debe estar en la carpeta App_Code de la aplicación. Para obtener más información, vea Personalización del nivel de datos dinámicos de ASP.NET.
En la tabla siguiente se describen los archivos y carpetas que se crean en el nivel raíz de un sitio web de datos dinámicos de ASP.NET.
Archivo o carpeta
Descripción
Datos dinámicos
Contiene carpetas para controles personalizados y para páginas que muestran datos. Para obtener más información sobre las subcarpetas de la carpeta de datos dinámicos, veaEstructura de la carpeta DynamicData más adelante en este tema.
Default.aspx
Una página ASP.NET que muestra las tablas y vistas que están registradas en la instancia deMetaModel. Cada nombre de tabla se representa como un control HyperLink que muestra el contenido de la tabla seleccionada.
Global.asax
Contiene un método para registrar una instancia de la clase MetaModel y para agregar rutas al objeto RouteCollection.
Site.css
Una hoja de estilos en cascada que utilizan las plantillas de página y controles de los datos dinámicos.
Site.master
La página maestra del sitio. Default.aspx y las plantillas de página de los datos dinámicos utilizan la página maestra.

Archivo Global.asax

En un sitio web de datos dinámicos, el archivo Global.asax contiene un controlador para el eventoApplication_Start que se provoca cuando se inicia la aplicación web. En el controlador, se llama al métodoRegisterRoutes. El método RegisterRoutes contiene una instancia de MetaModel y una llamada con comentarios al método MetaModel.RegisterContext. Para habilitar las operaciones de datos dinámicos, debe habilitar el método RegisterContext y pasarle un contexto de datos válido, por ejemplo una instancia de DataContext o un contexto de ADO.NET Entity Framework.
De forma predeterminada, el archivo Global.asax de un sitio web de datos dinámicos llama al método Add de la clase RouteCollection para agregar enrutamiento a las plantillas de páginas List.aspx, Details.aspx, Edit.aspx e Insert.aspx para cada acción.
Puede cambiar el enrutamiento a las plantillas de página agregando y quitando las definiciones de ruta en el archivo Global.asax. (El archivo Global.asax incluye rutas alternativas predefinidas, pero están dentro de comentarios.) Para obtener más información, vea los comentarios del archivo Global.asax. Para obtener más información sobre las plantillas de páginas, vea Scaffolding de datos dinámicos de ASP.NET.
Para dejar todas las tablas de la base de datos visibles mediante los datos dinámicos, establezca la propiedadScaffoldAllTables del objeto ContextConfiguration en true. Como alternativa, puede establecer el atributoScaffoldTableAttribute en true en la clase parcial que representa la tabla que desea mostrar. El atributoScaffoldTableAttribute permite mostrar selectivamente las tablas mediante datos dinámicos. Para obtener un ejemplo sobre la forma de realizar esta operación, vea la información general sobre la claseScaffoldTableAttribute.

Archivo Site.master

El archivo Site.master es la página maestra del sitio web de datos dinámicos. La utilizan todas las plantillas de página de datos dinámicos. El archivo Site.master contiene un control System.Web.UI.ScriptManager cuya propiedad EnablePartialRendering está establecida en true. Para obtener más información, vea Páginas maestras ASP.NET.
NotaNota
Cuando la propiedad EnablePartialRendering se establece en true, las excepciones que genera el servidor de bases de datos producen un error en tiempo de ejecución en el explorador. Por ejemplo, si intenta actualizar una fila que tiene una restricción de columna definida en la base de datos, y los datos de la actualización infringen la restricción, el explorador mostrará un error en tiempo de ejecución. Si la propiedadEnablePartialRendering está establecida en false, el explorador no muestra un mensaje de excepción detallado. En su lugar, el explorador muestra un error HTTP 500 que indica que se ha producido un problema durante el procesamiento del servidor.
En la tabla siguiente se describen las subcarpetas de la carpeta DynamicData.
Archivo o carpeta
Descripción
Content
De forma predeterminada, contiene la carpeta Images y un control de usuario (GridViewPager.ascx). La carpeta Images contiene archivos gráficos que se utilizan como iconos del control de paginación.
CustomPages
Carpeta contenedora para plantillas de página personalizadas. Las plantillas de página personalizadas se utilizan para invalidar las plantillas de página que se definen en DynamicData\PageTemplates. Por ejemplo, si el contexto de datos contiene una tabla denominada Products, puede crear una carpeta DynamicData\CustomPages\Products y agregar páginas .aspx en la nueva carpeta que se utilizan para mostrar los datos de Products. Una manera fácil de comenzar es copiar las páginas de la carpeta DynamicData\PageTemplates en DynamicData\CustomPages\Products y, a continuación, modificar las plantillas. Para obtener más información sobre las plantillas de página personalizadas, vea Cómo: Personalizar el diseño de una tabla individual mediante una plantilla de página personalizada.
PageTemplates
Contiene plantillas de página que crean la interfaz de usuario para ver y editar datos. Para obtener más información, vea Scaffolding de datos dinámicos de ASP.NET.
EntityTemplates
Contiene plantillas de entidad que crean una interfaz de usuario de tabla para ver y editar datos. Para obtener más información, vea Scaffolding de datos dinámicos de ASP.NET.
FieldTemplates
Contiene controles de usuario que crean la interfaz de usuario para ver y editar campos de datos. Para obtener más información, vea Scaffolding de datos dinámicos de ASP.NET.
FilterTemplates
Contiene controles de usuario que crean la interfaz de usuario para filtrar filas de datos.Para obtener más información, vea Scaffolding de datos dinámicos de ASP.NET.

El archivo GridViewPager.ascx es un control de usuario que procede de WebControl. Se utiliza para mejorar la paginación cuando hay más de una página de datos para una tabla. El control de usuario GridViewPager.ascx se usa en las plantillas de página List.aspx y ListDetails.aspx.

Modelos de programación en ASP.NET

Actualmente, ASP.NET soporta tres modelos de programación: ASP.NET Web Forms, ASP.NET MVC y ASP.NET Web Pages. Aunque los tres modelos de programación se ejecutan sobre la misma base de ASP.NET, cada uno de ellos estructura la aplicación de maneras completamente distintas, promueve metodologías de desarrollo diferentes y se adapta a perfiles de desarrolladores distintos. Algunas características que son virtudes en unos modelos de programación, pueden ser consideradas debilidades en el otro. ¿Qué es más importante, desarrollar a un gran nivel de abstracción o tener control total cada uno de los aspectos de la aplicación? Simplicidad vs. Control. Flexibilidad vs. Eficiencia. Estas son las compensaciones que hay que baremar a la hora de elegir. En esta serie de artículos repasaremos las diferencias entre los tres modelos de programación, y los escenarios favorables a cada uno de ellos.
Es importante recalcar que el hecho de elegir uno de los modelos de programación al comenzar un proyecto de ASP.NET no excluye necesariamente a los otros, sino que es posible tener aplicaciones “híbridas” y en muchos casos tendrá todo el sentido desarrollar ciertas partes de la aplicación con un modelo de programación y otras partes con otro modelo distinto.
ASP.NET Web Forms fue el primero de los tres modelos de programación en existir, y proporciona un gran nivel de abstracción con un modelo de programación familiar basado en eventos y controles que favorece la productividad mediante la programación declarativa reduciendo la cantidad de código necesaria para implementar una determinada funcionalidad.
ASP.NET MVC se concibió como alternativa a Web Forms y proporciona un modelo de programación basado en el popular patrón de arquitectura MVC. Entre sus principales características destacan su completa integración con pruebas unitarias y su separación más clara entre la lógica de presentación, la lógica de negocio y la lógica de acceso a datos.
Comunidad ASP.NET MVC en español: https://groups.google.com/d/forum/mundoaspnetmvc
ASP.NET Web Pages es el más reciente de los tres modelos de programación, y fue creado como respuesta a una creciente demanda de desarrolladores web sin experiencia previa con ASP.NET, cuya iniciación en ASP.NET Web Forms o MVC les suponía una inversión inicial de tiempo demasiado grande. Web Pages proporciona un modelo de programación más simple y rápido de aprender, sin renunciar a toda la funcionalidad y flexibilidad de ASP.NET.

ASP ventajas y desventajas

asp es un entorno de secuencias de comandos del que puede utilizar para crear páginas dinámicas o para generar eficaces  web. las páginas asp son  que contienen etiquetas , texto y comandos de secuencias de comandos. las páginas asp pueden llamar a componentes activex para que realicen tareas, como la  con  de datos o cálculos comerciales. 
las siglas asp corresponden a las palabras active server pages (páginas activas en el servidor). es una que impulsó microsoft hace ya varios años, y que en la actualidad es uno de los lenguajes de programación web más utilizados. su funcionamiento se basa, principalmente, sobre servidores microsoft con internet information server para windows nt o 2000, y en caso de contar con un sistema operativo windows 95 o 98 se utiliza un servidor web personal, especialmente el personal web server.  
asp nos permite tomar ventaja del server-side scripting (scripting que se ejecuta en el servidor). asp nos provee de una gran cantidad de componentes y objetos con los cuales se puede manejar de manera sencilla la interacción del navegador y el servidor web. lenguajes de scripts como javascript o vbscript se usan para manipular estos objetos. asp no es un lenguaje en si. esto quiere decir que no hay código asp, por eso se puede usar el lenguaje de scripting que le sea más cómodo.
  una de las características más importantes de las páginas asp es la posibilidad de conectar con diferentes tipos de bases de datos, para extraer-agregar-eliminar datos de ellas, y generar páginas con esos datos. estas paginas se generan en forma dinámica, dependen de las sentencias que se establezcan, para si obtener los resultados del proceso realizado. pueden conectarse a motores de bases de datos sql, access, oracle, y a cualquier otro con soporte de conexión odbc.
ventajas de asp:
·    costos predecibles
·    experiencia especial en el asp
·    más rápido de implementar que aplicaciones adquiridas
·    niveles de desempeño garantizados
·    actualizaciones automáticas del software
·    permite a los funcionarios de ti enfocarse en asuntos internos
·    falta de recursos internos
·    disponibilidad garantizada
·    permite probar software antes de comprarlo
·    alquilar es más eficiente en costos que comprar

desventaja de asp:
  ¿cuáles son los beneficios que entrega asp a una organización?
rta: asp, es un beneficio para las organizaciones ya que es una solución integral que centraliza todos los procesos tecnológicos de una organización en un único proveedor. es un servicio que permite a las empresas e instituciones ahorrar tiempo y dinero
 asp libera a cualquier organización de inversiones de capital, costos administrativos y gastos ocultos. ya son muchas las empresas e instituciones que desde hace más de 5 años controlan el costo de actualización tecnológica y evitan los ciclos de renovación de hardware y redes.
en definitiva los beneficios de cualquier asp son:
·                          reducción y control de costos.
·                          compatibilidad
·                          conexión remota