lunes, 6 de enero de 2014

LINQ to SQL

En LINQ to SQL, el modelo de datos de una base de datos relacional se asigna a un modelo de objetos expresado en el lenguaje de programación del programador.Cuando la aplicación se ejecuta, LINQ to SQL convierte a SQL las consultas integradas en el lenguaje en el modelo de objetos y las envía a la base de datos para su ejecución. Cuando la base de datos devuelve los resultados, LINQ to SQL los vuelve a convertir en objetos con los que pueda trabajar en su propio lenguaje de programación.
Los desarrolladores de Visual Studio normalmente utilizan el Object Relational Designer, que proporciona una interfaz de usuario para implementar muchas de las características de LINQ to SQL.
La documentación que se incluye con esta versión de LINQ to SQL describe las unidades de creación básicas, los procesos y las técnicas que necesita para crear aplicaciones LINQ to SQL. También puede buscar en MSDN Library información sobre problemas concretos y participar en el foro de LINQ, dónde debatirá detalladamente temas más complejos con expertos. Por último, en las notas del producto LINQ to SQL: consultas integradas en el lenguaje .NET para datos relacionales se explica con detalle la tecnología LINQ to SQL, junto con ejemplos de código de Visual Basic y C#.
PREVIA DEL USO DEL LINQ TO SQL.

Seguridad de ASP.NET

a seguridad es un aspecto muy importante de las aplicaciones web ASP.NET. Los temas de esta sección proporcionan información adicional sobre los problemas de seguridad que se producen en las aplicaciones web. Se incluye información sobre cómo mitigar las amenazas de seguridad habituales, cómo proteger los recursos en una aplicación web, y cómo autenticar y autorizar a los usuarios individuales.

Acceso a datos de ASP.NET

ASP.NET contiene características que permiten agregar acceso a datos a las páginas Web ASP.NET con muy poco código o nada en absoluto. Puede conectarse a bases de datos, datos y archivos XML, y objetos comerciales para utilizarlos como orígenes de datos. A continuación, puede mostrar los datos mediante diversos controles que proporcionan gran flexibilidad para la presentación de los datos en la página. Sugerimos el siguiente orden de la documentación para ayudarle a navegar por los temas relacionados.
Introducción
Utilizar datos dinámicos
Utilizar LINQ
Proteger los datos
Enlazar a datos

Globalización y adaptación en ASP.NET

La globalización es el proceso mediante el cual se diseñan y desarrollan aplicaciones que pueden funcionar con diversas referencias culturales. Localización es el proceso mediante el cual se personaliza una aplicación para una referencia cultural y configuración regional determinadas. En los temas de esta sección se describe cómo crear aplicaciones web ASP.NET que se pueden adaptar a diferentes idiomas y referencias culturales.

Temas y máscaras de ASP.NET

Un tema es un conjunto de valores de propiedad que permiten definir la apariencia de las páginas y de los controles y, a continuación, aplicar esa apariencia de manera coherente a las páginas de una aplicación Web, en toda una aplicación Web o en todas las aplicaciones Web de un servidor.
Los temas están formados por un conjunto de elementos: máscaras, hojas de estilos en cascada (CSS), imágenes y otros recursos. Como mínimo, un tema contendrá máscaras. Los temas se definen en directorios especiales en un sitio Web o un servidor web.

Máscaras

Un archivo de máscara tiene la extensión de nombre de archivo .skin y contiene los valores de propiedades para los controles individuales como ButtonLabelTextBox oCalendar. La configuración de las máscaras de control se parece al propio marcado del control, pero sólo contiene las propiedades que se desee establecer como parte del tema. Por ejemplo, lo siguiente es una máscara de control Button:
<asp:button runat="server" BackColor="lightblue" ForeColor="black" />
Los archivos .skin se crean en la carpeta Theme. Un archivo .skin puede contener una o más máscaras de control para uno o más tipos de control. Es posible definir un archivo de máscaras independiente para cada control o definir todas las máscaras para un tema en un archivo único.
Hay dos tipos de máscaras de control, máscaras predeterminadas y máscaras con nombre:
  • Una máscara predeterminada se aplica automáticamente a todos los controles del mismo tipo cuando un tema se aplica a una página. Una máscara de control es predeterminada si no tiene un atributo SkinID. Por ejemplo, si se crea una máscara predeterminada para un control Calendar, la máscara de control se aplicará a todos los controles Calendar de las páginas en las que se utilice el tema. (Las máscaras predeterminadas coinciden exactamente atendiendo al tipo de control, de modo que una máscara de control Button se aplica a todos los controles Button pero no a los controles LinkButton ni a los derivados del objeto Button).
  • Una máscara con nombre es una máscara de controles con un conjunto de propiedades SkinID. Las máscaras con nombre no se aplican automáticamente a todos los controles según el tipo. En su lugar, una máscara con nombre se aplica explícitamente a un control estableciendo la propiedad SkinID del control. Al crear máscaras con nombre, se pueden configurar diferentes máscaras para distintas instancias del mismo control en una aplicación.

Hojas de estilos en cascada

Un tema también puede incluir una hoja de estilos en cascada (archivo .css). Cuando coloca un archivo .css en la carpeta de temas, la hoja de estilos se aplica automáticamente como parte del tema. La hoja de estilos se define utilizando la extensión de nombre de archivo .css en la carpeta de tema.

Gráficos del tema y otros recursos

Los temas también pueden incluir gráficos y otros recursos, como archivos de script o archivos de sonido. Por ejemplo, la parte de un tema de página podría incluir una máscara para un control TreeView. Como parte del tema, se pueden incluir los gráficos utilizados con el fin de representar los botones para expandir y contraer.
Normalmente, los archivos de recursos del tema están en la misma carpeta que los archivos de máscara de dicho tema, pero pueden estar en cualquier parte de la aplicación Web, por ejemplo, en una subcarpeta de la carpeta de temas. Para hacer referencia a un archivo de recursos en una subcarpeta de la carpeta de temas, utilice una ruta de acceso como la que se muestra en esta máscara de control Image:
<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />
También puede almacenar sus archivos de recursos fuera de la carpeta de temas. Si utiliza la sintaxis de la tilde (~) para hacer referencia a los archivos de recursos, la aplicación Web encontrará automáticamente las imágenes. Por ejemplo, si coloca los recursos de un tema en una subcarpeta de la aplicación, puede utilizar rutas de acceso como ~/Subcarpeta/nombreArchivo.ext para hacer referencia a los archivos de recursos, como en el siguiente ejemplo.
<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />

Puede definir temas para una aplicación Web única o como temas globales que pueden utilizar todas las aplicaciones en un servidor web. Una vez definido un tema, se puede colocar en páginas individuales utilizando el atributo Theme o StyleSheetTheme de la directiva @ Page, o se puede aplicar a todas las páginas de una aplicación configurando el elemento <pages> en el archivo de configuración de la aplicación. Si el elemento <pages> se define en el archivo Machine.config, el tema se aplicará a todas las páginas de las aplicaciones web en el servidor.

Temas de página

Un tema de página corresponde a una carpeta de temas con máscaras de control, hojas de estilos, archivos de gráficos y otros recursos creados como una subcarpeta de la carpeta \App_Themes en su sitio Web. Cada tema constituye una subcarpeta diferente con respecto a la carpeta \App_Themes. En el siguiente ejemplo de código se muestra un tema de página típico que define dos temas denominados BlueTheme y PinkTheme.
MyWebSite
  App_Themes
    BlueTheme
      Controls.skin
      BlueTheme.css
    PinkTheme
      Controls.skin
      PinkTheme.css

Temas globales

Un tema global es un tema que puede aplicar a todos los sitios Web en un servidor. Los temas globales permiten definir una apariencia de conjunto para un dominio cuando se mantienen varios sitios Web en el mismo servidor.
Los temas globales se parecen a los de página en que ambos tipos incluyen valores de propiedades, la configuración de las hojas de estilos y gráficos. Sin embargo, los temas globales se almacenan en una carpeta denominada Themes que es global al servidor web. Cualquier sitio Web del servidor y cualquier página de cualquier sitio Web pueden hacer referencia a un tema global.

Páginas maestras ASP.NET

Las páginas maestras de ASP.NET permiten crear un diseño coherente para las páginas de la aplicación. Puede definir el aspecto, el diseño y el comportamiento estándar que desea que tengan todas las páginas (o un grupo de páginas) de la aplicación en una sola página maestra. A continuación, puede crear páginas de contenido individuales que incluyan el contenido que desea mostrar. Cuando los usuarios solicitan las páginas de contenido, las combinan con la página maestra con el fin de generar una salida que combine el diseño de la página maestra con el de la página de contenido.

Las páginas maestras se componen en realidad de dos partes, la propia página maestra y una o varias páginas de contenido.
NotaNota
También se pueden anidar páginas maestras. Para obtener información detallada, vea Páginas maestras ASP.NET anidadas.

Páginas maestras

Una página maestra es un archivo de ASP.NET con la extensión .master (por ejemplo, MySite.master) que tiene un diseño predefinido que puede incluir texto estático, elementos HTML y controles de servidor. La página maestra se identifica mediante una directiva @ Master especial que reemplaza la directiva @ Page utilizada en las páginas .aspx normales. El aspecto de la directiva es el siguiente:
<%@ Master Language="VB" %>
La directiva @ Master puede contener prácticamente las mismas directivas que una directiva @ Control. Por ejemplo, la directiva de la página maestra siguiente incluye el nombre de un archivo de código subyacente y asigna un nombre de clase a la página maestra.
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
Además de la directiva @ Master, la página maestra también incluye todos los elementos HTML de nivel superior de una página, como htmlhead y form. Por ejemplo, en una página maestra podría utilizar una tabla HTML para el diseño, un elemento img para el logotipo de la compañía, texto estático para el aviso de copyright y controles de servidor para crear la navegación estándar en el sitio. Puede utilizar cualquier elemento HTML y ASP.NET en la página maestra.

Marcadores de posición de contenido reemplazables

Además del texto estático y los controles que aparecerán en todas las páginas, la página maestra también incluye uno o varios controles ContentPlaceHolder. Estos controles PlaceHolder definen las regiones que incluirán contenido reemplazable. A su vez, el contenido reemplazable se define en las páginas de contenido. Tras definir los controles ContentPlaceHolder, una página maestra tendría el siguiente aspecto:
<% @ Master Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
    1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server" >
    <title>Master page title</title>
</head>
<body>
    <form id="form1" runat="server">
        <table>
            <tr>
                <td><asp:contentplaceholder id="Main" runat="server" /></td>
                <td><asp:contentplaceholder id="Footer" runat="server" /></td>
            </tr>
        </table>
    </form>
</body>
</html>

Páginas de contenido

Para definir el contenido de los controles PlaceHolder de la página maestra, cree páginas de contenido individuales, que son páginas ASP.NET (archivos .aspx y, opcionalmente, archivos de código subyacente) que están enlazadas a una página maestra concreta. El enlace se establece en la directiva @ Page de la página de contenido al incluir un atributo MasterPageFile que apunta a la página maestra que se va a utilizar. Por ejemplo, una página de contenido podría tener la siguiente directiva@ Page, que la enlaza con la página Master1.master.
<%@ Page Language="VB" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page" %>
En la página de contenido, cree el contenido agregando los controles Content y asignándolos a los controles ContentPlaceHolder de la página maestra. Por ejemplo, la página maestra podría tener marcadores de posición de contenido denominados Main y Footer. En la página de contenido, puede crear dos controles Content, uno asignado al control ContentPlaceHolderMain y el otro asignado al control ContentPlaceHolderFooter, como se muestra en la ilustración siguiente.
Reemplazar el contenido del marcador de posición
Gráfico MasterPagesMerge
Después de crear los controles Content, agrégueles texto y controles. En una página de contenido, todo lo que no esté dentro de los controles Content (excepto los bloques de script del código del servidor) producirá un error. En una página de contenido puede realizar las mismas tareas que en una página de ASP.NET. Por ejemplo, puede generar el contenido de un control Content utilizando controles de servidor y consultas de base de datos u otros mecanismos dinámicos.
Una página de contenido podría tener el siguiente aspecto:
<% @ Page Language="VB" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
    Main content.
</asp:Content>
    
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
    Footer content.
</asp:content>
[C#]
<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
    Main content.
</asp:Content>
    
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
    Footer content.
</asp:content>
La directiva @ Page enlaza la página de contenido a una página maestra concreta y define un título para la página que se combinará en la página maestra. Tenga en cuenta que la página de contenido no incluye otro marcado fuera de los controles Content. (La página maestra debe contener un elemento head con el atributorunat="server" para que se pueda combinar la configuración del título en tiempo de ejecución.)
Puede crear varias páginas maestras para definir diseños distintos para partes diferentes del sitio, y un conjunto diferente de páginas de contenido para cada página maestra.

Las páginas maestras proporcionan una funcionalidad que tradicionalmente los programadores creaban copiando el código, el texto y los elementos de control existentes repetidamente, mediante conjuntos de marcos, archivos de inclusión de elementos comunes, controles de usuario de ASP.NET, etc. Entre las ventajas de las páginas maestras se incluyen las siguientes:
  • Permiten centralizar las funciones comunes de las páginas para que las actualizaciones puedan llevarse a cabo en un solo lugar.
  • Facilitan la creación de un conjunto de controles y código, y aplican los resultados en un conjunto de páginas. Por ejemplo, puede utilizar los controles en la página maestra para crear un menú que se aplique a todas las páginas.
  • Proporcionan un control más preciso sobre el diseño de la página final al permitir controlar el modo en que se representan los controles PlaceHolder.
  • Proporcionan un modelo de objetos que permite personalizar la página maestra a partir de páginas de contenido individuales.