ASP.NET Con Visual Studio.NET

Slides:



Advertisements
Presentaciones similares
Presentación de Visual Web Developer 2005 Express Edition Alfonso Goyeneche Torres Presidencia Nacional Comunidad Académica Microsoft Junta Directiva Nacional.
Advertisements

INSTRUCTOR: LI Ramiro Robles Villanueva
Curso de PHP Tema 5: Sesiones.
Nuevas Características de Seguridad en ASP.NET 2.0
Conceptos fundamentales de ASP.NET
Estrella 2 Introducción al desarrollo de aplicaciones Web con ASP.NET
Algunos tips en Seguridad ASP.NET 2.0
Jorge Oblitas Consultor en tecnología asociada a la gestión del Conocimiento Ha sido miembro de los programas Microsoft Regional Director (desde el 2000)
Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft.
Implementación de SQL Server 2000 Reporting Services
Planificación y despliegue de Office Sharepoint Server 2007 Rubén Alonso Cebrián
El mecanismo básico de interacción entre el usuario y un sitio web esta dado por el uso de formularios html. El server envía un formulario que el browser.
Beneficios Migración. Doors 4.0 Embedded Business Logic (EBL). Form Código VBScript Contexto de ejecución EBL Es la denominación con la que se incorpora.
Microsoft Windows Server 2008 Internet Information Services 7
ASP.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.
Introducción a Windows Forms
Administración del estado
Crear un formulario Web Form con Microsoft ASP.NET
Introducción a ASP.NET.
Validación de la entrada de datos de usuario
Seguridad en aplicaciones Web con Microsoft ASP.NET
Acceso a datos con Microsoft ADO.NET
Configurar, optimizar e implementar una aplicación Web Microsoft ASP
Agregar código a un formulario Web Form con Microsoft ASP.NET
Acceso a datos con ADO.NET
CAPTURA Y RECOLECCIÓN DE ERRORES 20 de Noviembre de 2004.
Desarrollo de aplicaciones para Windows con VB.NET 2005 Capitulo 3.
Desarrollo de una Aplicación Web sobre tecnología Microsoft .NET
Agenda Conceptos Claves.
ARCHIVOS EN PHP.
Expert.NET Development Programando Web para principiantes 2. La leyenda continua. Por Jonas Stawski
FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS PROTOTIPO, CODIFICACION DEL SISTEMA Y CONECTIVIDAD MBA CARLOS ZORRILLA VARGAS.
Desarrollo de Aplicaciones para Internet
ACCESO A BASES DE DATOS ORACLE CON PHP
Seguridad en ASP.NET Daniel Laco
Programación de aplicaciones con ASP.NET
Daniel A. Seara Director Regional MSDN NDSoft
SHAREPOINT PORTAL SERVER
Webcasts de seguridad Seguridad en ASP.NET 2.0 Partes 1 y 2 Seguridad en ASP.NET 2.0 Partes 1 y 2 Parte 1: Servicio de Membresía y controles Login Parte.
Planificación y despliegue de Office Sharepoint Server 2007 Rubén Alonso Cebrián
Carlos Walzer Vemn Sistemas Como crear un sitio con ASP.NET.
Módulo 1: Primeros Pasos
Introducción ASP .NET.
Java 2 Platform Enterprise Edition
José Antonio Rastoll Pérez Presentación PI. Índice 1. EL OBJETO SESSION Introducción. Propiedades. Funcionamiento. Variables de sesión, desventajas y.
Introducción a ASP.NET.
Sistema La Plata Módulo I INTRODUCCION A APLICACIONES WEB.
Célula Sesión 3 Trabajando con Objetos Web 11 de Septiembre de 2004.
Interacción Persona Ordenador
Herramientas del desarrollador Experiencias del usuario
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
Desarrollo de sitios web con PHP y MySQL Tema 5: Sesiones José Mariano González Romano
The OWASP Foundation OWASP AppSec Aguascalientes 2010 Guía de Desarrollo Seguro Francisco Aldrete Miembro de OWASP capítulo Aguascalientes.
Ing. Ricardo Carlos Inquilla Quispe
Curso de Creación aplicaciones dinámicas web con PHP y MySQL Continuamos.
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Práctica 4 Estado de la sesión. Más sobre Eventos Universidad de Oviedo Comercio Electrónico.
GXplorer Hacia donde vamos Graciela Listón – Gustavo Martínez ARTech Consultores SRL
Lenguajes de Programación
David Salgado MVP C# David Salgado MVP C# Desarrollo Web con ASP.NET.
Clase 6 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Introducción a ataques de tipo inyección: Inyección SQL
Clase 5 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Práctica Profesional PHP.
Secuencia de Comandos en Sitios Cruzados XSS
WINDOWS SERVER 2008 r2 ADMINISTRACION DE RECURSOS: Con el Administrador de recursos del sistema de Windows del sistema operativo Windows Server® 2008 R2,
Softlogia S.R.L. Formación de Recursos Humanos Java Server Faces Instructor: Martin R. Baspineiro.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
Transcripción de la presentación:

ASP.NET Con Visual Studio.NET

Agenda Introducción Web Forms Uso del Global.asax Como trabajar con estados Como securizar aplicaciones ASP .NET Uso del Web.Config Caching Monitorización de aplicaciones ASP .NET Web Service

Introducción Microsoft .NET FrameWork Base Class Library ADO.NET: Data & XML User Interface Common Language Runtime Web Services .NET Framework Internet COM+ Orchestration Windows .NET Enterprise Servers Building Block Services Visual Studio.NET

Introducción Modelo de ejecución de ASP.NET

Web Forms ¿Qué es un Web Form? Modelo de Código Ciclo de vida Eventos del lado del servidor Controles de servidor Validaciones

Web Forms Modelo de Código Code Behind Separación entre Lógica y Presentación Orientado a Objectos Orientado a Eventos

Web Forms Gestionando el PostBack de los Forms El control ViewState mantiene el estado de la página durante el PostBack El evento Page_Load se lanza en cada petición Usar Page.IsPostBack para ejecutar lógica condicional private void Page_Load(object server, EventArgs e) { if(Page.IsPostBack) … }

Web Forms Ciclo de vida Página ASP.NET Codificación de aplicaciones similar a Win32 Form_Initialize() ~ Page_Init() Form_Load() ~ Page_Load() Form_Activate() ~ Page_PreRender() Form_Unload() ~ Page_Unload()

Web Forms Eventos del lado del servidor Runat=“server” <form runat=“server”> <input type=button id=button1 OnServerClick=“Button1_Click” runat=“server” /> Button1_Click(Sender as Object, e as EventArgs) Button1.Text = “Save”

Web Forms Controles de Servidor Lanza Eventos al servidor Controles básicos textbox, checkbox, radio, button Controles avanzados AdRotator, Calendar, DataGrid, Validator

Web Forms Controles básicos de Servidor <asp:textbox id=text1 runat=server/> text1.text = “Hello World” <asp:checkbox id=check1 runat=server/> check1.checked=True <asp:button id=button1 runat=server/> button1_onClick() <asp:DropDownList id=DropDownList1 runat=server> DropDownList1.SelectedItem.Text = “Hello”

Web Forms Controles Avanzados de Servidor DataGrid Definido por <asp:datagrid /> Ordenación por columnas Edición en línea Tabla HTML DataBinding Paginación

Web Forms Controles Avanzados de Servidor Validaciones Required Validator Control Range Validator Control Compare Validator Control Regular Expression Validator Custom Validator Control Ejemplo: <asp:RequiredFieldValidator ControlToValidate="txtName" ErrorMessage="Please Enter Your Name" runat="server" />

Demostración 1 Web Forms Modelo de Código Modelo de Eventos Controles de Servidor

Aplicaciones ASP.NET ASP Tradicionales (global.asa) Application_OnStart Application_OnEnd Session_OnStart Session_OnEnd

Aplicaciones ASP.NET Global.ASAX Primera Petición Application_Start Primera petición por cada usuario Session_Start Cada Petición Application_BeginRequest Application_Authenticate Application_EndRequest Error en tiempo de ejecución Application_Error Logs Out de usuario/Times Out de sesión Session_End Shutdown del Servidor Web Application_End

ASP.NET Applications Global.ASAX Uso de eventos Application_BeginRequest Acciones de personalización Texto para ser incluido al principio de cada página Application_EndRequest Texto para ser añadido al final de cada página Application_Error Util para enviar email o escribir al event log cuando un ocurra un error que no pueda ser manejado

ASP.NET Applications Global.ASAX Uso de eventos Session_End Escribir a un log o base de datos los log out de cada usuario Application_End Útil para escribir a un log cuando se ha parado una aplicación web. Se podría escribir un mensaje en el event log Application_Start Útil para cargar la información de configuración específica de un site

ASP.NET Applications Salvando el estado de una aplicación Son esencialmente variables globales para la aplicación Application(“CompanyName”) Se pueden bloquear o desbloquear variables de Applicación Application.lock Application(“GlobalCounter”) = NewValue Application.unlock

ASP.NET Applications Salvando el estado de una sesión Variables por usuario Disponible para todas las páginas en el site Session(“UserID”) = 5 UserID = Session(“UserID”)

ASP.NET Applications Sesiones ASP vs. Sesiones ASP .NET Forzar “Server Affinity” Dependiente de cookies No tolerancia a fallos Sesiones ASP .NET Soporte para granjas Web No necesitan cookies Mejor tolerancia a fallos

ASP.NET Applications Configurando estados Información de configuración almacenada en Web.Config <sessionState Inproc=“true” mode=“sqlserver” cookieless=“false” timeout=“20” sqlconnectionstring=“data source=127.0.0.1;user id=sa;password=“” stateConnectionString="tcpip=127.0.0.1:42424" /> </sessionState>

ASP.NET Applications Configurando estados Modo InProc – Similar a ASP. Almacena las sesiones en la memoria del servidor web. Stateserver – Las sesiones son almacenadas en un servidorexterno,en memoria. SQLServer – Las sesiones son almacenadas en una base de datos de SQL Server. Cookieless Determina si las sesiones sin Cookies deberían ser usadas Valores posibles true o false TimeOut Determina el timeout por defecto para las sesiones en el sitio web

ASP.NET Applications Configurando estados SQLConnectionString contiene los parámetros datasource, userid, y password necesarios para conectar a la base de datos que almacena las sesiones stateConnectionString contiene toda la información necesaria para conectar al servidor de estados.

ASP.NET Applications Almacenado datos en SQL Server Para configurar SQL Server para almacenar información de estados se debe ejecutar un pequeño script en el servidor InstallSQLState.sql puede ser encontrado en [sysdrive]\winnt\Microsoft.NET\Framework\[version] Crea lo siguiente en el servidor Una base de datos llamada ASPState Procedimientos almacenados Tablas en TempDB para almacenar los datos de los estados. Para desinstalar ejecutaremos el script UninstallSQLState.sql

Demostración 2 Aplicaciones ASP. NET Uso del Global Demostración 2 Aplicaciones ASP.NET Uso del Global.asax Salvando el estado de la aplicación

Seguridad Conceptos de seguridad Autentificación Autorización Impersonación

Seguridad Autentificación Windows Basic Digest Integrated Passport Form

Seguridad Autentificación Windows Se habilita através de Internet Services Manager

Seguridad Autentificación Windows Se habilita para ASP.NET através de Web.config <security> <authentication mode="Windows" /> </security>

Seguridad Autentificación Windows El Site puede acceder fácilmente al Nombre de usuario Dim UserName As String UserName = User.Identity.Name Grupos “NT” son automáticamnete mapeados a Roles ASP.NET If User.IsInRole(“Administrators”) Then…

Seguridad Autentificación Form El sitio web es el responsable de la seguridad, no IIS Configurar IIS para permitir acceso anonimo Configurar Web.Config para forzar a los usuarios a autentificarse através de un formulario <authentication mode="Forms"> <forms loginUrl="Registration.aspx"> </forms> </authentication> <authorization> <deny users="?" /> </authorization> Cualquier usuario no autentificado será enviado a “Registration.aspx”

Seguridad Autentificación Form Se codifica un formulario para obtener el User ID y Password Para Autentificar un usuario: FormAuthentication.RedirectFromLoginPage(UserName, False) RedirectFromLoginPage Marca un usuario como autentificado Lleva al usuario a la página que ha pedido originalmente Si el usuario ha pedido la página de login, takes se redirige a Default.aspx Se puede persistir la autentificación en una cookie

Seguridad Autentificación Form - Declarativa Para Sites simples, se puede almacenar el User ID y Password en el Web.config <credentials passwordFormat="clear"> <user name="MSDN" password="online" /> <user name="Guest" password="guest" /> </credentials>

Seguridad Autentificación Form - Declarativa Authenticate devuelve true o false FormsAuthentication.Authenticate( _ UserName, Password)

Seguridad Autentificación Form - Programaticamente Código usado para autentificar un usuario SQL = “Select * From Users ” & _ “Where UserID = ‘” & UserName & “’” If UserFoundInDataBase then FormAuthentication.RedirectFromLoginPage(UserNam e,false) Else lblLoginError.Text = “User Not Found or Invalid Password” end if

Seguridad Roles WEB Jane Comercial John Jill Admins Jamie Jenny Contenido Comercial Jane Comercial John Jill Admins Jamie Contenido Admin. Jenny

Seguridad Roles Construir la aplicación basándose en Roles Acceso a Páginas Contenido personalizado de páginas Después del Deployment, asignar usuarios a roles

Seguridad Roles Asignación programática de usuarios a roles Sub Application_AuthenticateRequest(ByVal Sender As Object, ByVal e As EventArgs) If request.IsAuthenticated = True Then sql = “select role from roles where userid=‘“ & UserID & “’” ‘ Get Roles from Result Set context.User = New GenericPrincipal(user, roles) End If End Sub

Seguridad Roles Mostrar contenido basado en roles If User.IsInRole(“HumanRes”) Then cmdEditSalary.Visible = true End If

Seguridad Impersonalización Autentificación Windows Web.config <identity> <impersonation enable="true" name="username" password="password" /> </identity>

Demostración 3 Seguridad Autentificación Windows Registro basado en formularios Autentificación basada en formularios Asignación de usuarios a roles

Configuración y Optimización Web.Config Fichero de configuración del site Se distribuye con el Site Almacena la mayoría de las opciones de configuración Fácil mantenimiento y despliegue Los cambios toman efecto inmediatamente

Configuración y Optimización Configuración jerárquica Web.Config y sus configuraciones son heredadas en una jerarquía Configuración a nivel de máquina (Winnt\Microsoft .NET\Version\) Directorio raiz de la aplicación web Sub directorios

Configuración y Optimización Configuración jerárquica La configuración puede apuntar a un conjunto específico de ficheros o directorios mediante el uso del tag <location> <configuration> <location path=“/admin”> <system.web> <security> <authorization> <allow roles=“Admins”> </authorization> </security> </system.web> </location> </configuration>

Configuración y Optimización Configuración jerárquica Machine.config Tracing Disabled Execution Timeout 90 Seconds Session State Enabled, Inproc Authentication Allow Anonymous Multi CPU Support Disabled

Configuración y Optimización Configuración personalizada Ejemplos de Personalización AppSettings CustomErrors Trace Settings Authentication Session Settings

Configuración y Optimización Configuración Personalizada Personalizar configuración en el Web.config <configuration> <appSettings> <add key="DSN" value="server=localhost… </appSettings> </configuration> Accediendo con código DSN = ConfigurationSettings.AppSettings("DSN")

Configuración y Optimización Configuración Personalizada Redirigir ciertos errores a ciertas páginas <customErrors mode="On"> <error statusCode="404" redirect="errorpage404.aspx" /> </customErrors> <customErrors mode=“RemoteOnly">

Configuración y Optimización Configuración Personalizada Tracing <trace enabled=“true" requestLimit="10" pageOutput=“true" traceMode="SortByTime" />

Configuración y Optimización Configuración Personalizada Opciones de Traza Enabled Se almacena información de traza . Esta información se puede consultar através de la siguiente página http://site/trace.axd RequestLimit Limita el almacenamiento de las trazas a un límite de peticiones PageOutput Se muestran la información de las trazas en la página. TraceMode Permite ordenar la información de las trazas por tiempo o categoría.

Configuración y Optimización Configuración Personalizada Escribir al log de trazas Trace.Write(“Page_Load”,”Entering Event”) Trace.Warn(“GetCustomer”,”Invalid Argument”)

Demostración 4 Configuración y Optimización Configuración ASP.NET

Configuración y Optimización Cacheo de Páginas Páginas que no cambian frecuentemente Incremento dramático de rendimiento <%@ OutputCache Duration= "500" %>

Configuración y Optimización Cacheando fragmentos User Control Datos que no cambian frecuentemente <%@ OutputCache Duration=“60" %>

Configuración y Optimización API’s de cacheo Cachear datos programaticamente Cache.Insert( _ Key, _ Value, _ CacheDependency, _ AbsoluteExpiration, _ SlidingExpiration, _ Priority, _ PriorityDecay, _ Callback)

Configuración y Optimización Cache API’s Key String usado para buscar el elemento cacheado Value Elemento almacenado en caché CacheDependency El elemento en caché puede expirar automáticamente cuando un fichero, directorio u otro elemento en caché cambie

Configuración y Optimización Cache API’s AbsoluteExpiration Un elemento en caché puede expirar en algún tiempo fijo SlidingExpiration Un elemento en caché puede expirar después de una cierta cantidad de inactividad Priority Elementos con prioridad baja son eliminados antes que elementos con prioridad alta PriorityDecay Dentro de un rango de prioridad, este elemento expira antes o después que otro elemento

Demostración 5 Configuración y Optimización Cacheo

Configuración y Optimización Monitorizando Aplicaciones ASP.NET Herramientas de monitorización Performance Monitor Tracing Control de servicios y monitorización

Configuración y Optimización Contadores de rendimiento Algunos contadores son ahora mas específicos de aplicación como oposición al tradicional ASP que son mas específicos para servidor Grupos de contadores Contadores de rendimiento globales Contadores específicos de aplicación

Configuración y Optimización Contadores globales de rendimiento Reinicio de Aplicaciones Aplicaciones en ejecución Peticiones Encoladas Tiempo de espera de peticiones

Configuración y Optimización Contadores especificos de aplicación Contadores de rendimiento de Aplicaciones Entradas totales en caché Cache Total Hit Ratio Bytes pedidos en total Ejecuciones Pedidas Timed Out Pedidos Time Out de sesiones

Configuración and Monitorización Clase PerformanceCounter La clase PerformanceCounter permite acceder a los datos de los contadores desde código Dim Req_Bytes_Total As New PerformanceCounter(“asp .net applications", “Request Bytes Out Total”, _Total_) Dim s as Integer S = Req_Bytes_Total.NextValue()

Configuración and Monitorización Tracing Habilitar Tracing para una página específica <%@ Page trace=true Language="vb" AutoEventWireup="false" Codebehind="Write_Trace_Info.aspx.vb" Inherits="Opt_Monitor.Write_Trace_Info"%> Escribiendo sentencias de traza personalizadas Trace.Write(“Custom Trace”, “Begin Load DataSet”)

Configuración and Monitorización Accediendo a Servicios Clase ServiceController Permite acceder a servicios locales o remotos Constructor Nombre del servicio como parámetro Métodos Stop Start Pause WaitForStatus Srv.WaitForStatus(ServiceControllerStatus.Stopped, System.TimeSpan.FromSeconds(30)) Te permite esperar a que un servicio cambie al estado deseado antes de seguir Propiedades MachineName Obtiene o asigna el nombre de la máquina

Configuración and Monitorización Comprobando el estado de un servicio Protected Sub CheckServiceState(ByVal ServiceName As String) as String Dim Srv As New ServiceController(ServiceName) Select Case Srv.Status Case ServiceControllerStatus.Running CheckServiceState = "Started" Case ServiceControllerStatus.Stopped CheckServiceState = "Stopped" Case Else CheckServiceState = "Unknown" End Select End Sub

Demostración 6 Configuración y Optimización ASP Demostración 6 Configuración y Optimización ASP .NET Optimización y Monitorización

Web Service Agenda ¿Qué es un Web Service? Llamando a un Web Service desde un browser Llamando a un Web Service usando un proxy Creando un Web Service usando C# Creando y llamando un Web Service usando Visual Studio .NET

Web Service Características de Web Services Permite que aplicaciones se comuniquen a través de internet Independiente del lenguaje Independiente del protocolo Independiente de la plataforma Arquitectura sin estados

Web Service Modelo de ejecución de Web Services

Web Service Ejemplos de Web Services existentes http://www.xmethods.net http://www.gotdotnet.com

Web Service Llamando a un Web Service desde un browser 1/2 http://server/vroot/webservice.asmx

Web Service Llamando a un Web Service desde un browser 2/2 Pasar el nombre del método y todos los parámetros requeridos en la URL del Web Service http://server/vroot/webservice.asmx/method?param=value Se devuelve el resultado en XML

Web Service Compilando un fichero .asmx dentro de un proxy Una clase proxy Parece la clase original pero no tiene ninguna lógica de la aplicación Permite a un cliente acceder a un Web Service como si fuera un objeto COM local Creando una clase proxy desde un fichero .asmx Wsdl /l:vb /n:mynamespaces http://location/service.asmx?wsdl

Web Service Compilando el proxy dentro de una dll Compilando una clase proxy dentro de una DLL vbc /out:..\bin\proxyclassname.dll /t:library /r:System.Web.Services.dll /rs:system.dll /r:system.xml.dll proxyclassname.dll La dll se publica en la carpeta /bin

Web Service Llamando métodos de Web Service Creando una instancia del proxy myStore.Store myStoreProxy; myStoreProxy= new myStore.Store(); Llamando a métodos DataSet ds; ds=myStoreProxy.products();

Web Service Escribiendo un Web Service Añadiendo una Directiva de página <%@ WebService Language=“C#” Class=“MyStore” %> Importando namespaces using System; using System.Web.Services; Definiendo una clase con Web Methods public class MyStore{ <WebMethod()>public int price(){ }

Web Service Llamando a un Web Service usando Visual Studio .NET Abrir una aplicación Web Crear una referencia Web para el Web Service usando la opción Add Web Reference Crear una instancia del Web Service Llamar a las funciones del Web Service Compilar el proyecto

Recursos adicionales http://www.microsoft.com/spanish/msdn/wmatrix.asp http://www.microsoft.com/spanish/msdn/spain http://www.microsoft.com/spanish/msdn/wmatrix.asp http://www.microsoft.com/spanish/msdn/comunidad/dce http://www.microsoft.com/spanish/msdn/spain/eventos/presentaciones/online.asp http://www.asp.net/ http://www.microsoft.com/spanish/msdn/comunidad/uni.net