Está en la página 1de 83

Programacinen ASP.

NET
BeatrizHernndezCruz ReynaldoHernndezHernndez

ProgramacinenASP.NET 2 JEREYBE

Advertencia
Todos los nombres propios de programas, sistemas operativos, hardware, etc., que aparecen en este documento son marcas registradas de sus respectivascompaas uorganizaciones. Reservados todos los derechos. Los autores prohben cualquier tipo de fijacin, reproduccin, transformacin, distribucin, ya sea mediante venta y/o prstamo y/o cualquier otra forma de cesin de uso, y/o comunicacin pblica de la misma, total o parcialmente, por cualquier sistema o en cualquier soporte, ya sea por fotocopia, medio mecnico o electrnico, incluido el tratamiento informtico de la misma, en cualquier lugar del universo,sinlapreceptivaautorizacin. Estaobraestdestinadaexclusivamenteparaelusoparticulardelusuario, si usteddeseaautorizacinparaelusoprofesional, puedeobtenerlaenviando unemailajereybe@hotmail.com

CapituloI IntroduccinaASP .NET

ProgramacinenASP.NET 4 JEREYBE

Fundamentosdelanuevaarquitecturadeprogramacin
ASP .NET marca un antes y un despus en la era de la programacin por Internet. Microsoft ha dado un paso decidido y fundamental hacia la plena programacin en entornos distribuidos, dejando atrs las limitaciones propiasdel usode lenguajesscriptcomoVBScript. GraciasaASP.NETelprogramadorpuedeusartodoelpotencialqueofrecen lenguajescomoVisualBasic.NET,VisualC.NETyVisualC#.NET.Ellosedebe alanuevaarquitecturadeprogramacinquesehaestablecidoenelnuevo entornode VisualStudio.NET. La clave de la interoperatividad de los distintos lenguajes dentro de una misma aplicacin radica en el nuevo motor de ejecucin de lenguajes: CommonLanguage Runtime (CLR).Seencuentraenelnivelinferiordentrode laarquitectura .NET. El motor CLR se encarga de compilar el cdigo antes de ejecutarlo, independientementedellenguajeutilizadoporelprogramador. En vez de compilar a cdigo binario (como es usual en cualquier lenguaje), CLR crea una representacin a un lenguaje compartido dentro de la estructura.NET,ellenguaje MicrosoftlntermediateLanguage(MSIL). Laprimeravezqueseejecutauncdigo,elmotorCLRinvocauncompilador llamado Just In Time (JIT) que traduce el lenguaje MSIL en instrucciones propiasalprocesadordelsistemaquelo ejecuta,es decir,quelaestructura .NETpuedeadaptarsey ejecutarseendistintoslenguajesysistemas. Cabenotarquelaarquitectura.NETutilizaelmismomotorCLRparacompilar cualquiertipodecdigoescritoencualquieradeloslenguajes.NET,porello, elrendimientoserelmismo,seacualseaellenguajeescogidoalahorade disearla aplicacin.

ProgramacinenASP.NET 5 JEREYBE

Esquemticamente,laestructura.NETes:

Figura1. EstructuradeVisualStudio.NET

La arquitectura .NET, se destaca por la completa compatibilidad entre los distintoslenguajesalahora deprogramaraplicacionesoserviciosASP.NET. DentrodelmotorCLRseejecutaun sistemallamadoCommonTypesSystem. Base Class Library son unas bibliotecas de clases agrupadas por tipos, en funcin de las aplicaciones que tengan asignadas (seguridad, almacenamiento de datos, etc.). Cada uno de los distintos grupos de clases (Namespace)derivadeun grupofundamentalllamadoSystem. Enunnivelsuperioresdondesediseanlasaplicaciones,quepuedenserde ASP .NET como las tpicas de Microsoft (usando formularios para entornos localesdeejecucin). Dentro de la estructura ASP .NET, podemos ejecutar aplicaciones y/o servicios ASP .NET, aplicaciones de ejecucin en red, tanto del lado del

ProgramacinenASP.NET 6 JEREYBE

servidor como del cliente usando para ello formularios Web y otras herramientasrelacionadasconlosserviciosonline. Las aplicaciones ASP .NET se sirven de formularios Web para facilitar enormemente la tarea de diseo y creacin. nicamente con seleccionar y arrastrar encima del formulario Web un determinado control, Visual Studio .NETseencarga decrearelcdigoHTMLcorrespondiente.Unadelasmuchas ventajas que ofrece la estructura ASP .NET es que, automticamente, se encargadedetectareltipodenavegadorutilizadoporelclientealahorade realizar una peticin a nuestro servidor y en consecuencia, determina la versinHTMLquestesoporta.Porello, elprogramadordeaplicacionesASP .NETnotienequepreocuparseporlacompatibilidadconlosnavegadores,ya queASP.NETseencargardeconfeccionarlarespuestaadecuadaaltipode navegadorquerealizalaconsulta. Los servicios Web son un tipo particular de aplicaciones ASP .NETpensadas para ser utilizadas dentro de otras aplicaciones ASP .NET. La idea es crear aplicaciones Web ASP .NET de acceso en red que sean accesibles a otras aplicaciones y de esta forma disminuir enormemente la cantidad de cdigo necesario para realizar una aplicacin. Por ejemplo, si queremos crear una aplicacin ASP .NET encargada de realizar facturas a partir de los datos suministradosporunclienteysabemosqueexiste unservicioWebquenos calculaelIVA(porejemplo),lopodemosincluirdentrodenuestraaplicacin (mediantellamadas)yahorrarnoseltrabajodecodificarlonosotros. Todalaestructuraanteriorestcontenidaenunentornodedesarrollonico llamado Visual Studio .NET. Este nuevo y completo entorno sustituye la anterior coleccindeentornosaisladoscomoeranVisualBasic6,VisualC++y Visual InterDev.Enunmismoentorno(VB .NET)unprogramadorpuedecrear aplicaciones Web o locales, usar VB .NET o Visual C# .NET, disear con formulariosWeboWindows, directamenteomedianteHTML.

CapituloII EstructuradeASP .NET

ProgramacinenASP.NET 8 JEREYBE

Elsalto definitivo hacia la nueva estructura .NETvino motivado porelxito comercialdelaaplicacinJava2EnterpriseEdition(J2EE).Microsoftalverse a un segundo plano, cre una arquitectura integral que permita al desarrollador de aplicaciones olvidarse completamente del sistema operativo, la gestin de memoria, etc., y mediante diferentes interfaces de programacin soportadas por bibliotecas y plataformas de ejecucin comunes,gestaraplicacionesyserviciosWebolocales,estaarquitecturaera .NET. La plataforma .NET integra software de distintos lenguajes, adems de programas por Internet y aplicaciones de servidores SQL Server. El objetivo es simplificaralmximoelcdigonecesarioparacrearunaaplicacin. Con tal fin, Microsoft se ha querido adelantar al futuro creando una arquitectura que permite la elaboracin de aplicaciones ejecutables en Internet, telfonos mviles, televisin digital, Intranets, etc. ste es el xito de.NET.

Fundamentosde ASP .NET


El entorno necesario para poder desarrollar aplicaciones ASP .NET es el nuevo producto de Microsoft: .NET Framework. Este entorno de programacinpermitetratarASP.NETcomounlenguajedeltipoorientadoa objetos. En este punto es donde podemos afirmar que ASP .NET rompe completamenteconlasanterioresversionesdeASP. LospuntosfundamentalesdelanuevaestructuraASP .NETson: Bsicamente, los lenguajes para programar ASP .NET son: VB .NET, JScriptyelnuevoVisualC#.NET,aunquerealmenteexistenmsde20 (Perl .NET,Cobol .NET,etc.). ASP .NET forma parte de la estructura .NET (lenguajes orientados a objetos)ynoesunaversinASP4(lenguajesinterpretados).

ProgramacinenASP.NET 9 JEREYBE

ASP .NET crea aplicaciones Web rpidas, escalables, manejables y flexibles, pero porencimadetodo,sonfciles deentenderycodificar. El cdigo de las aplicaciones ASP .NET se compila a travs del motor CLR,quecompilaJIT.Optimizayalmacenalacompilacinenmemoria cach. Recuerde que el paso intermedio consista en traducirlo a un lenguajecomnMSIL. Los parmetros de configuracin se almacenan en archivos de tipo XML,porqueesdelecturauniversalysepuedegenerarconcualquier editorde textos. La seguridad de las aplicaciones ASP .NET es muy adaptable a las necesidades de cada situacin, pues se basa en un conjunto de esquemas deautorizacinquepuedeconfigurarseampliamente. ASP .NET puede acceder al potente grupo de libreras y clases que contiene .NET Framework para configurar transmisiones TCP/IP y DomainNameSystem(DNS),atravsdeXMLy conlosserviciosWeb.

Particularidadesdellenguaje
Los tres lenguajes subministrados por Microsoft para la programacin de aplicaciones Web con ASP .NETson JScript, VB .NETyVisualC# .NET. Otros fabricanteshan enunciadomuchosms:Python,Cobol .NET,Perl .NET,etc. JScript ha sido modificado para comportarse como un lenguaje orientado a objetos. Antiguos desarrolladores notarn algunas diferencias, pero quedarn gratamentesorprendidosconloscambiosefectuados. VB.NetreemplazaVBScriptcomobaseenlaprogramacinASP.Elpotencial de desarrollo, evidentemente, ha aumentado muchsimo pues no se ve limitadoal reducidonmerodefuncionesqueposeaellenguajescript.

ProgramacinenASP.NET 10 JEREYBE

El nuevo lenguaje C# .NET en su estructura de programacin se parece mucho a la del lenguaje C++. Se ha mejorado este ltimo eliminando los errores ylaoptimizacinfinalse corresponderaconC#. Gracias al entorno .NET Framework, una aplicacin Web escrita en un lenguajedeterminadopuedeheredarfuncionesescritasenotroslenguajes.A su vez, dicha aplicacin puede extenderse o referenciarse por otras aplicacionesescritasenotros lenguajes. En definitiva, gracias al lenguaje comn de compilacin MSIL, la comunicacinentreobjetosyaplicacionesdentrodelaarquitectura.NETno implica ningnproblemaaadido. Hoy en da existen proyectos para ir ms all y poder extender el lenguaje MSILentornosfueradeWindows(comohaceJava).SonlosproyectosMono y Portable .NET.

Ejecucindelosarchivos ASP .NET


Cuando un visitante quiereaccedera un sitioWeb,escribe la direccinURL en el navegador y ste realiza una peticin HTML al servidor que est alojandoesesitioWeb.Enelmomentoenqueelservidorrecibelapeticin, determina el tipo de archivo solicitado y lo enva a la aplicacin correspondienteparaqueloprocese. EnelcasodepaginasASP.NET,stassoncompiladas(normalmentesiesla primera vez que se seleccionan) y ejecutadas, reenviando al visitante los resultadosdela consultaatravsdesunavegador. La compilacin realizada la primera vez implica un lapso de tiempo de reenvomayorqueconlasanterioresversionesdeASP,pero,adiferenciade stas, para todas las sucesivas peticiones de la misma pgina ASP .NET la respuestaser muchoms rpida.

ProgramacinenASP.NET 11 JEREYBE

EjecucindelladodelCliente
En las aplicaciones ASP .NET se mezcla una parte de ejecucin del lado del cliente y otra del lado del servidor. Cuando una pgina Web ASP .NET es descargadaporelnavegadordeunvisitante,enellatambinseenvacdigo para realizar comprobaciones e iniciar funciones del lado del cliente y as liberar de recursos al servidor. Previamente, el servidor ha determinado el tipo de navegador del cliente y en consecuencia, ha codificado las instruccionesaunaversinHTML queelnavegadorpuedasoportar. Cuando el servidor recibe la respuesta de un formulario, los valores son guardadosenunanuevaherramientadeASP.NETllamadabolsadeestadoy son comprimidos y ocultados en una pgina llamada vista de estado. El objetivo es que, una vez enviado elformulario, ste recupere su apariencia anterior. DebedetenerpresentequelosformulariosWebnosecomportanigualque unformulario Windows.Enelltimo,sirellenamosunacasillaoborramosun texto,loescondemosdetrsdeotroformulario,etc.Windowslorecuperar automticamente sinquetengamosquecodificarniunasolalneadecdigo. Enelcasodelos formulariosWeb,estonoesas. Elprocedimientomshabitualparaqueunnavegadorrealiceunapeticina unservidorolemande informacines medianteeluso delosdos mtodos HTML:GET yPOST. El mtodo GET almacena toda la informacin que requiere dentro de la direccinURL. CuandounnavegadorenvainformacinmedianteelmtodoPOST,losdatos seestructuranigualqueenelmtodoGET,peroseubicanenunacabecera HTMLseparadadelapgina,porloquenosonvisibles.Porestarazn,enla mayora de los casos los programadores prefieren este mtodo. Cabe notar que en la cabecera tambin figura informacin til como el tipo de navegadorutilizado,etc.

ProgramacinenASP.NET 12 JEREYBE

EjecucindelladodelServidor
Cuando el servidor recibe la peticin, localiza la pgina usando la URL. A continuacin y mediante especiales .DLL y objetos de la estructura .NET, compila y ejecuta la aplicacin ASP .NET para generar la respuesta. La respuesta es reenviada al navegador traducida a cdigo HTML y ste representalarespuestaenlapantalladelcliente. Elciclosimplificadodeejecucindelladodelservidorsera:

Figura2. Ciclosimplificadodeejecucindelladoservidor

Conunpocodedetalle,lospasosquesesiguenenelservidordesdequese recibelapeticinhastaqueseenvalarespuestason: 1. InternetInformationSever(IIS)comparalaURLdelapeticinconuna direccinfsica dedelarchivoenelsistema,traduciendoeldirectorio

ProgramacinenASP.NET 13 JEREYBE

virtual, porejemplo:/tiempo/index.aspxenun directorio delsistema, porejemplo: C:\Inetpub\wwwroot\tiempo\index.aspx. 2. Una vez se ha localizado el archivo, se identifica de qu tipo es, comparando la extensin .aspx con una lista que posee el sistema o porqueloidentificael propiocliente. 3. Sistaeslaprimeravezqueelclienterealizaunapeticinsobreesta pgina, ASP .NET la compila usando el motor CLR traducindola al lenguaje MSIL y posteriormente, al cdigo binario, preparada para ejecutarse. 4. El cdigo binario es una clase .DLL de la estructura .NET que se almacenaen unarchivotemporal. 5. Laprximavezquesearequeridaestapgina,elservidorcomprobar si el cdigo ha cambiado. Si es el mismo, entonces se omitir la compilacin y se proceder automticamente a la ejecucin. En caso contrario, la clase es eliminada y el cdigo ASP .NET se vuelve a compilar. 6. Elcdigocompiladoesejecutadoylosvaloresenviadosenlapeticin (GETo POST)soninterpretados. 7. Elsiguientepasoconsisteendetectareltipodenavegadorqueusael cliente: Explorer, Netscape o telfono mvil (Wireless Markup Lenguaje). 8. Seenvalarespuestaalnavegadordelcliente.

CapituloIII Instalacindel ServidorWeb

ProgramacinenASP.NET 15 JEREYBE

Estructuramnimanecesaria
Para poder desarrollar aplicaciones Web con ASP .NET, es necesario tener configuradoelordenadorcomounservidorWeb. La estructura mnima necesaria para poder codificar, compilar y ejecutar pginas ASP .NET se basa en dos elementos: .NET Framework y IIS 5. Microsoft recomienda usar como sistemas operativos Windows XP Professional o Windows TI Server, aunque tambin puede funcionar en los sistemasWindows2000ProfessionaloServer. Entodocaso,nosotrosusaremosunentornodedesarrollomsamplioenel que queden integradas todas las funciones y lenguajes, as como las bibliotecas de clases, el motor de compilacin CLR y dems herramientas. Nosreferimos,evidentemente,aVisualStudio.NET. Si el programador trabaja en un entorno Visual Studio .NET, no ser necesarioqueejecutelasfuncionesen lalnea decomandos(enMSDOS)y adems, podr trabajar con otros sistemas operativos: Windows NT 4.0, WindowsMeyWindows98.

Instalacindeelementosnecesarios
Elordendeinstalacindelosdistintoselementosdesoftwarequeformarn nuestro servidor Web es inalterable. Si no se respeta, el servidor no funcionarcorrectamente. Instalaremosenelordensiguiente: 1. Sistemaoperativo(preferibleWindowsXPProfesional). 2. Navegador:mnimoInternetExplorer5.5. 3. InternetInformationServer5(IIS 5). 4. SQLServer. 5. .NETFramework. 6. VisualStudio.NET.

ProgramacinenASP.NET 16 JEREYBE

Instalacinde IIS5
Internet Information Server contiene el software necesario para que su ordenadorpuedaoperarcomounservidorWeb.Noeselms potente niel nico pero s el ms extendido y fcil de manejar. Usado junto a sistemas operativos como Windows XP Professional, est haciendo una fuerte competenciaaservidorescomoUnix. IIS es compatible con otras herramientas Microsoft: Word, Excel, Access, Power Point, ADO, ODBC, ASP .NET, etc., por lo que las posibilidades de construccinypublicacinenWebsonenormes. Supuntodbilesquenosoportaungrannmerodepeticionesdeclientesa la vez. Es muy til para el aprendizaje y uso como banco de pruebas de aplicacionesdeservidor,peronoparaemplearloengrandesempresas. Junto con el paquete IIS 5, se incluye el servicio FTP de transferencia de archivos,elservicioSMTPdecorreoelectrnico, losserviciosOLEDB,ADOde accesoabasededatos,etc. Antesdeiniciarpropiamentelainstalacinde IIS5,asegresedequenoest conectadoalared.Durantelainstalacin,susistemaesmuyvulnerable alos ataquesexteriorespuesanno haconfiguradosuseguridad. Lospasosaseguirson: 1. Seleccione Inicio Configuracin PaneldeControl.

ProgramacinenASP.NET 17 JEREYBE

Figura3.Inicio, Configuracin, Paneldecontrol

2. En el Panel de Control, haga doble clic sobre el icono de Agregar o quitar programas.

Figura4. Paneldecontrol,Agregaroquitarprogramas

ProgramacinenASP.NET 18 JEREYBE

3. Seleccione Agregar o quitar componentes de Windows al lado izquierdodelapantalla.

Figura5. AgregaroquitarcomponentesdeWindows

4. Seleccione Serviciosde InternetInformationServer (IIS).

Figura6. AsistenteparacomponentesdeWindows

ProgramacinenASP.NET 19 JEREYBE

5. PulseelbotnDetallesyseleccionelosrecursosquedeseeinstalaren su servidor.

Figura7. ServiciosdeInternetInformationServer

6. Pulse Aceptar y luego Siguiente para proceder a la instalacin. Recuerde quenecesitarusarelCDROMdel SistemaOperativo. 7. Al acabar, pulse Finalizar y cierre las ventanas de Agregar o quitar programas.

Verificacindelas extensionesdeServidor
ElsiguientepasoconsistirenverificarquelasextensionesdelservidorFront Page2000estncorrectamenteconfiguradas.Estepasolodebencomprobar obligatoriamenteaquellosservidoresque utilizanarchivosdeltipoFAT, que son mucho ms vulnerables a los hackers que los del tipo NTFS (los ms comunes).Sienestemomentonosabequtipousasuservidor,pulseconel botn derecho sobre el icono de su disco duro (C:\) y en la ventana Propiedadesaparecerescrito.

ProgramacinenASP.NET 20 JEREYBE

Encualquiercaso,lospasosaseguirson: 1. Seleccione Inicio Configuracin PaneldeControl.

Figura8. Inicio,Configuracin,Paneldecontrol

2. EnelPaneldeControl,hagadobleclicsobreeliconodeHerramientas Administrativas.

Figura9. Paneldecontrol, Herramientasadministrativas

ProgramacinenASP.NET 21 JEREYBE

3. Haga doble clic sobre el icono de Administracin de equipos. Esto activar una instancia del programa Microsoft Management Console (MMC).

Figura10. Herramientasadministrativas, Administracindeequipos

Figura11. AdministracindeEquipos, ServiciosdeInternetInformationServer

ProgramacinenASP.NET 22 JEREYBE

4. Expanda la carpeta Sitios Web. Seleccione con el botn derecho del ratn Sitio Web predeterminado y a continuacin Todas las tareas, Comprobar extensionesdeservidor.

Figura12. Administracindeequipos, Comprobacindeextensionesdel servidor

5. Responda No alapreguntayfinalmentepulse Cerrar parasalir.

Caractersticasde IIS
La primera caracterstica que nos llama la atencin es que no hace falta rebotarelservidorparadeteneryreiniciarelserviciodeInternet.Elcontrol sobreelfuncionamientodelservidorWebsecontroladesdeMMC.Adems, permite al administrador del servidor Web controlar el uso que de la CPU hacenlosdiferentes sitiosWeby,encasoderequerirlo,puedelimitarsuuso. IIS puede manejar los mensajes de error para que sean ms detallados. En caso de producirse un error en la ejecucin de un sitio Web, IIS lanzar al navegadorunmensajedeerrorque, normalmente,consistirentraducirsu cdigonumricoa unaexpresininteligible. IIS permite que el administrador pueda acceder a l desde otro equipo mediante la red. La recomendacin es que, aunque sea factible hacerlo, lo evite puesnodejadesermuypeligroso.

ProgramacinenASP.NET 23 JEREYBE

En cuanto a la seguridad, IIS ofrece una encriptacin de contraseas mediante hashing gracias a la cual el servidor aade informacin aleatoria alrededordelpassword.As,encasodeserinterceptado,nosepodrusar,a diferencia de anteriores versiones en las que se encriptaba nicamente el password. Aniveldecomunicaciones, IIS soportalossistemasSecureSocketsLayer (SSL) yTransportLayerSecurity(TLS)querestringenlacomunicacinentre clientes yservidores;conelloselograqueelservidorverifiquequineselclienteque intentaaccederalsistemaantesdequesteseautentifiqueenelservidor. Complementando los anteriores niveles de seguridad, tambin se pueden restringirelaccesoalsistemaadeterminadasIP,ogruposdecomputadoras o dominios.stesueleserelcasodelasIntranetsqueestnalmismotiempo en Internet. Dando nicamente permisos de acceso a los usuarios de la Intranet, evitamos que los usuarios de Internet tengan acceso a los documentosyarchivos quepertenecenalaIntranet. IIS normalmente ejecuta y controla los sitios Web en un entorno comn. Pero, si queremos realizar pruebas con aplicaciones Web que pueden acarrear fallos en el sistema, IIS permite que se ejecuten Out of Process, aisladamente. UnagrannovedadesqueIISpermitecrearvariossitiosWebconunasolaIP. Gracias a las cabeceras del servidor host, una empresa puede hospedar distintossitiosWebcon unasolaIP mercedal direccionamientodelIP,esto es,quecada clientetendrsupropiodominio(realmentesubdominio)ysuIP particular. UnalimitacindeIISeselcorreoelectrnico,puesslopermiteelenvode correo (SMTP, SimpleMail Transfer Protocol) y no la recepcin (POP3, Post Office Protocol). SedebedestacarlafuncionalidaddelservicioFrPparalapublicacinenredo descargadearchivo.Enestaversinde IIS sepermitecontinuarunadescarga interrumpida.

ProgramacinenASP.NET 24 JEREYBE

La compresin de HTTP permite aumentar la velocidad de transmisin de sitiosWebenelcaso deanchodebanda limitado.Y,finalmente,elservicio MicrosoftIndexServer(MIS)permiteindexartodalainformacinreferentea lossitiosWebquecontieneunservidorIISparafacilitarsuconsulta.Deeste modosepuedeconfigurar unbuscadorWeb.

AccederalServidorWeb
Podemos acceder al servidor Web para comprobar si se ha instalado correctamente IIS. Para ello simplemente debemos escribir http://localhost/localstart.asp en Internet Explorer y debera aparecer una pgina Web informando que IIS est correctamente instalado. Adems, aparecerladocumentacindeIISenunaventanaemergente,siesquefue instalada.

Figura13. PginaWebdeinformacindeIIS

ProgramacinenASP.NET 25 JEREYBE

Figura14. DocumentacindeIIS5.1

CapituloIV InstalacindeVisual Studio.NET

ProgramacinenASP.NET 27 JEREYBE

Preparacindelentornodetrabajo
Antes de poder comenzar a escribir aplicaciones para .NET Framework, debemos instalar en nuestra mquina de trabajo las herramientas que nos permitirneldesarrollodeprogramasparaesteentorno deejecucin.

.NETFrameworkSDK
Se trata del kit de desarrollo de software para .NET Framework (Software Development Kit o SDK), que contiene la propia plataforma .NET y un conjunto de herramientas independientes, algunas funcionan en modo comando(enunaventanaMSDOS)yotrasenmodogrfico.Loselementos imprescindibles para poder desarrollar aplicaciones para .NET estn contenidosenesteconjuntodeherramientas.

VisualStudio.NET
Es la nueva versinde la familia de herramientas de desarrollo de software de Microsoft, naturalmente orientadas hacia su nuevo entorno de programacin:.NETFramework. Sibienes posiblelaescritura de programasempleandosloelSDKde.NET Framework, este ltimo, al estar compuesto de herramientas independientes,constituyeunmediomscmodo detrabajo. Visual Studio .NET al tratarse de un entorno de desarrollo integrado (Integrated Development Environment o IDE), an a todas las herramientas del SDK: compiladores, editores, ayuda, etc., facilitando en gran medida la creacindeprogramas. Poreste motivo, todas las explicaciones y ejemplos desarrollados a lo largo deestetextoseharnbasndoseenesteentornodeprogramacin.

ProgramacinenASP.NET 28 JEREYBE

RequisitosHardware
La siguiente tabla muestra una lista con las caractersticas mnimas y recomendadas que debetenerelequipo enelque instalemosVisualStudio .NET. Mnimo PentiumII 450MHz 128MB 3GB Recomendado PentiumIV2.80GHz 512MB

Procesador Memoria Espacioendiscoduro

Tabla1. CaractersticasmnimasyrecomendadasparainstalarVisualStudio.NET

SistemaOperativo
Visual Studio .NET puede ser instalado en un equipo con uno de los siguientessistemasoperativos: Windows2000 (serequieretenerinstalado ServicePack2). WindowsNT4.0.(serequieretenerinstaladoServicePack5). WindowsMe. Windows98. WindowsXPProfessional. Para aprovechar todo el potencial de desarrollo de la plataforma, es recomendableusar comosistemaoperativoWindowsXPProfessional,yaque ciertosaspectosdelentorno(lascaractersticasavanzadasdegestingrfica por ejemplo) no estn disponibles si instalamos .NET en otro sistema con menosprestaciones.

ProgramacinenASP.NET 29 JEREYBE

InstalacindeVisualStudio.NET
MicrosoftVisualStudio.NETEnterpriseArchitect2003(Versin7.1.6030),se componede tres CDROMs de instalacindelproducto. Procederemos insertando el disco de instalacin rotulado como Microsoft Visual Studio .NET Enterprise Architect 2003 01, el cul detectar si es necesario actualizar algn componente a nivel del Sistema Operativo, pulsaremossobreelpaso1 VisualStudio.NET Prerequisites,enelquesenos pedireldiscorotuladoconelmismonombre.

Figura15. SeleccindeprerrequisitosparaVisualStudio.NET

UnavezinsertadoeldiscodeVisualStudio.NETPrerequisites,semostrarla pantalla de la Figura 16. En caso de aceptar el contrato de licencia para requisitos previos, haremos clic sobre Continuar, para que el instalador detectequcomponentesfaltanporactualizar.

ProgramacinenASP.NET 30 JEREYBE

Figura16. Contratodelicenciapararequisitosprevios

Una vez detectados los componentes que necesitan actualizacin, sern mostrados a continuacin en la lista de la Figura 17, donde daremos clic sobre Instalar ahora, con lo que se proceder a la actualizacin de los componentesdelalista.Unavezterminadaestaactualizacin,daremosclic sobre Listo yseguiremos con la instalacin normal de Visual Studio .NET, lo quenosrequerirdenuevolaintroduccindeldiscodeinstalacinrotulado como MicrosoftVisualStudio.NETEnterpriseArchitect2003 01.

Figura17. ListadecomponentesnecesariosparaVisualStudio.NET

ProgramacinenASP.NET 31 JEREYBE

Una vez actualizado los componentes del sistema, el siguiente paso ser la instalacin de Visual Studio .NET, que pondremos en marcha al hacer clic sobreelpaso2delainstalacin,quetieneelnombredeVisualStudio.NET. Ver Figura 18.

Figura18. InstalacindeVisualStudio.NET

A continuacin se mostrar la pantalla con la informacin del contrato de licencia de Visual Studio .NET. En caso de estar de acuerdo con todos estos trminosyaceptarelcontrato,haremosclicsobre Continuar.Ver Figura19.

Figura19.InformacindelcontratodelicenciadeVisualStudio.NET

ProgramacinenASP.NET 32 JEREYBE

A continuacin debemos seleccionar aquellos elementos del producto que deseamosinstalar,elentornodeejecucin,lenguajes,utilidades,ayuda,etc., y su ubicacin en el disco duro, como muestra la Figura 20. Terminada la seleccin,pulsaremos sobre Instalarahora paraquecomienceelproceso.

Figura20.SeleccindeloselementosainstalardeVisualStudio.NET

Este proceso de instalacin nos indica el archivo que se est instalando en cadamomento,ascomolainformacindesuestadoatravsde una barra de progreso, el tiempo aproximado para realizar una instalacin es de dos horas.Ver Figura21.

Figura21. Informacinsobreelprogresodelainstalacin

ProgramacinenASP.NET 33 JEREYBE

Durantelainstalacin,elprogramasolicitareldiscodeinstalacinrotulado como MicrosoftVisualStudio.NETEnterpriseArchitect2003 02. Concluida la instalacin, elprograma nos informar de sise produjo alguna incidencia. En caso de que no se hayan producido errores, finalizaremos haciendoclicsobreListo,conloqueyatendremosinstaladoMicrosoftVisual Studio.NETEnterpriseArchitect2003 ennuestroordenador.Ver Figura 22.

Figura22.Instalacincompleta

CapituloV UsodeVisualStudio .NET

ProgramacinenASP.NET 35 JEREYBE

Introduccin
VisualStudio.NETeselentornodedesarrolloglobalqueseutilizaparacrear potentesyfiablessolucionesWebempresariales.Ofreciendocapacidadesde desarrollo Web extremo a extremo ycomponentes de servidorescalables y reutilizables, Visual Studio .NET permite incrementar la productividad y ayudaracrearaplicacionesysitiosWebASP.NETmseficazmente.

PorquVisualStudio.NET?
Visual Studio .NET simplifica el desarrollo de soluciones Web empresariales potentes yfiableseincrementalaeficaciadeldesarrolladoralproporcionar un entorno de desarrollo compartido y familiar. Los componentes ya desarrollados, los asistentes de programacin y la posibilidad de reutilizar componentes escritos en cualquier lenguaje pueden reducir significativamenteeltiempodedesarrollo.Laopcindecompletarelcdigo basada en Microsoft IntelliSense permite producir cdigo preciso ms rpidamente. El potente soporte de depuracin multilenguaje extremo a extremoayudaaquelasaplicacionesestnoperativasmsrpidamente. VisualStudio.NETtieneunnicoIDEqueproporcionaunaspectocoherente, con independencia dellenguaje de programacinque se utilice o eltipo de aplicacin que se desarrolle. Las caractersticas que antes estaban disponibles para un nico lenguaje, ahora estn disponibles para todos los lenguajes. VisualStudio.NETsoportaeldesarrolloenvariosdeloslenguajesbasadosen Microsoft .NET. Este soporte de diversos ydistintos lenguajes permite a los desarrolladores trabajar con el lenguaje que prefieran, puesto que ya no necesitanaprenderunnuevolenguajeparacadanuevoproyecto. LoslenguajesqueseincluyenenVisualStudio.NETson: MicrosoftVisualBasic.NET C#

ProgramacinenASP.NET 36 JEREYBE

J# MicrosoftVisualC++ VisualStudio.NETsoportaeldesarrollodemltiplestiposdeproyectos,que abarcan desde aplicaciones basadas en Microsoft Windows hasta aplicacionesWebASP.NETyserviciosWebXML. Este soporte para mltiples tipos de proyectos permite trabajar de forma simultnea en varios proyectos sin necesidad de cambiar el entorno de desarrollooaprendernuevasinterfacesdeherramientasolenguajes. Visual Studio .NET contiene un navegador integrado basado en Microsoft InternetExplorer.ElnavegadorestintegradoenelIDEypuedeaccedersea ldesdemltiplesventanasymens. EstaaccesibilidadalnavegadorpermitevisualizarelsitioWebduranteelciclo dedesarrollosintenerquetransferiraotroprogramayvolveraescribirlas cadenasdelaURL(UniformResourceLocator). Visual Studio .NET est diseado para soportar depuracin desde el cdigo inicialhastaeldespliegue de laaplicacin.Elsoporte de depuracinincluye puntosdeinterrupcin,expresionesbreak,expresioneswatchylaposibilidad derecorrerelcdigodeinstruccionesoprocedimientospasoapaso. El IDE de Visual Studio .NET puede personalizarse a nivel de ventanas y herramientas. Por tanto, podemos mostrar nicamente las herramientas o ventanasqueutilicemosenunmomentodeterminadoyocultarelresto.

Pginadeinicio
Cada vez que iniciamos Visual Studio .NET, se muestra la pgina de inicio. Esta pgina proporciona una ubicacin centralizada para establecer preferencias, leer noticias sobreproductos, accedera discusiones con otros desarrolladores y obtener otra informacin que puede utilizarse para iniciarseenelentornodeVisualStudio.NET.

ProgramacinenASP.NET 37 JEREYBE

Podemos visualizar la pgina de inicio en cualquier momento mientras trabajamosenelentornodedesarrollo.

Figura23. Pginadeinicio

Si hacemos clic en Introduccin, la ayuda dinmica muestra temas sobre el iniciodenuevosproyectos,ysemuestranlasdoscarpetassiguientes: Proyectos La carpeta Proyectos muestra enlaces a los ltimos proyectos en los que se ha trabajado. Esta carpeta permite abrir rpidamente Visual Studio.NETycargartodoslosarchivosrelacionadosconlosproyectos actuales. Recursosenlnea Hacer clic en Comunidad en lnea proporciona acceso a los sitios de MicrosoftVisualStudio.NETWebylosgruposdenoticiasrelacionados.

ProgramacinenASP.NET 38 JEREYBE

Miperfil Hacer clic en Mi perfil permite establecer un perfil de usuario que ajustaelcuadrodeherramientas,elnuevoproyectopredeterminadoy la ayuda dinmica para adaptarlos a nuestras preferencias de programacin.Podemoscambiarnuestroperfilencualquiermomento paramodificarestasopciones deconfiguracinpersonalizadas. Tenemos la opcin de escoger un perfil ya existente, como DesarrolladorVisual Basic, o modificar manualmente cada uno de los elementosdelperfil.

Plantillasdeproyectosdisponibles
Visual Studio .NET proporciona plantillas que soportan la creacin de los tipos de proyectos ms habituales. Estas plantillas contienen todos los archivos necesarios y trabajan con nuestro perfil para ajustar el IDE a la configuracincorrectadelproyectoseleccionado. Estasplantillasnosayudanaaprovecharmejoreltiempoalpermitirquenos concentremosenagregarfuncionesalproyectoynotenerqueestablecerla infraestructuracadavezquecambiamosdetipodeproyecto. Cuando creamos un proyecto en Visual Studio .NET, tambin creamos un contenedor de mayor tamao denominado Solucin. Esta Solucin puede contener mltiples proyectos, del mismo modo que un contenedor de proyectospuedecontenermltiplespginas. Lassolucionespermitenquenosconcentremosenelproyectooconjuntode proyectos necesarios para desarrollar e implementar nuestra aplicacin, en lugar de tener que centrarnos en los detalles de administracin de los objetosydelosarchivosquelosdefinen. AlutilizarelconceptodeSolucin comocontenedor,stanos permite: TrabajarconmltiplesproyectosenunamismainstanciadelIDE.

ProgramacinenASP.NET 39 JEREYBE

Trabajar con elementos, configuraciones y opciones aplicables a un grupodeproyectos. Administrar archivos miscelneos que se abren fuera delcontexto de unaSolucinodeunProyecto. UtilizarelExploradordesoluciones,queesunavisualizacingrficade nuestra solucin, para organizar y administrar todos los proyectos y archivos necesarios para disear, desarrollar e implementar una aplicacin. Visual Studio .NET incluye mltiples plantillas de proyectos clasificadas por lenguajeytipo.Paraseleccionarlaplantillacorrecta,esnecesarioespecificar antesellenguajeenelquetrabajaremos. LasplantillasdeproyectosdisponiblesenVisualBasicyMicrosoftVisualC# incluyen: AplicacinparaWindows La plantilladeproyectoAplicacinpara Windowsseutiliza paracrear aplicacionesWindowsestndar.Estaplantillaagregaautomticamente las referencias y archivos de proyecto esenciales que la aplicacin necesitacomo puntodeinicio. Bibliotecadeclases La plantilla Biblioteca de clases se utiliza para crear clases y componentes reutilizables que pueden compartirse con otros proyectos. BibliotecadecontrolesdeWindows La plantilla Biblioteca de controles de Windows se utiliza para crear controlespersonalizadosparausarlosenformulariosWindowsForms.

ProgramacinenASP.NET 40 JEREYBE

AplicacinWebASP.NET La plantilla de proyecto Aplicacin Web ASP.NET se utiliza para crear unaaplicacinWebASP.NETenunequipoenelquesehayainstalado Internet Information Server (IIS) versin 5.0 o posterior. La plantilla crea los archivos bsicos que se necesitan en el servidor como ayuda parainiciareldiseodelaaplicacin. ServicioWebASP.NET LaplantilladeproyectoServicioWebASP.NETseutilizaparaescribirun servicio Web XML que pueda ser consumido por otros servicios o aplicacionesWebenunared.LosserviciosWebXMLsoncomponentes disponiblesenInternetyestndiseadosparainteractuarnicamente conotrasaplicacionesWeb. BibliotecadecontrolesWeb LaplantillaBibliotecadecontrolesWebseutiliza paracrearcontroles de servidor Web personalizados. La plantilla agrega los elementos de proyecto necesarios para iniciar la creacin de un control que pueda agregarseposteriormenteacualquierproyectoWeb. Aplicacindeconsola Normalmente,lasaplicacionesdeconsolasediseansinunaIUgrfica y se compilan en un archivo ejecutable autnomo. Una aplicacin de consola se ejecuta desde la lnea de comandos intercambiando la informacin de entrada y de salida entre el smbolo de sistema y la aplicacinqueseestejecutando. ServiciodeWindows La plantilla Servicio de Windows se utiliza para crear aplicaciones de servicios de Windows, aplicaciones ejecutables de ejecucin de larga duracinqueseejecutanensupropiasesindeWindows.

ProgramacinenASP.NET 41 JEREYBE

Proyectovaco La plantilla Proyecto vaco se utiliza para crear un tipo de proyecto propio. La plantilla crea la estructura de archivos necesaria para almacenarlainformacinsobrelaaplicacin.Lasreferencias,archivos ocomponentesdebenagregarsealaplantillamanualmente. ProyectoWebvaco LaplantillaProyectoWebvacoesparausuariosavanzadosquedeseen empezar con un proyecto vaco. La plantilla crea la estructura de archivosnecesariaparaunproyectobasadoenservidorenunservidor IIS.Lasreferenciasycomponentes(comopginasdeformulariosWeb Forms)debenagregarsemanualmente. Nuevoproyectoencarpetaexistente LaplantilladeproyectoNuevoproyectoencarpetaexistenteseutiliza para crear un proyecto en blanco en un directorio de aplicacin existente.Podemosdecidiragregarlosarchivosdesdeeldirectoriode laaplicacinexistenteenelnuevoproyectohaciendoclicconelbotn derechoencadaunodeloselementosdelExploradordesolucionesy seleccionandoIncluirenelproyectodelmencontextual.

Figura24. VentanaNuevoproyecto

ProgramacinenASP.NET 42 JEREYBE

Entornodedesarrollointegrado(IDE)
El IDE de Visual Studio .NET contiene mltiples ventanas que proporcionan diversas herramientas y servicios. Muchas de las caractersticas de Visual Studio .NET estn disponibles desde varias de las ventanas, mens y barras deherramientasdelIDE. NopodemosmoverniocultarlasventanasdelIDEdependiendodenuestras preferenciaspersonales.ElmenVerseutilizaparaseleccionarlasventanas a mostrar. Podemos hacer clic en el botn del alfiler Ocultar automticamente para convertir ventanas estticas en ventanas emergentes.

Figura25. EntornodeDesarrolloIntegradodeMicrosoftVisualStudio.NET

Editor/navegador
Eleditor/navegadoreslaventanadeinterfazprincipaldeVisualStudio.NET. En modo editor, el editor/navegador muestra el cdigo para editar y

ProgramacinenASP.NET 43 JEREYBE

proporcionaunainterfazgrficaquustedveesloqueustedconsigue,para laubicacindeloscontroles.Podemosarrastrarysoltarparacreareldiseo visual de nuestra aplicacin. A continuacin, podemos gestionar el diseo lgico de la aplicacin modificando el cdigo del control Web predeterminado. Haydosopcionesparapantalladeleditor:modoDiseoymodoHTML: ModoDiseo EnmodoDiseo,eleditorpermitemoverloscontrolesyloselementos grficosporlaventanamedianteunasencillaoperacindearrastrary soltar. Visual Studio .NET proporciona dos esquemas de posicionamiento de controles para disear pginas Web: FlowLayout y GridLayout. En FlowLayout,loscontrolesseubicanenlapginaunoacontinuacindel otro, mientras que GridLayout permite posicionar con exactitud cada control, agregando automticamente etiquetas DHTML (Dynamic HypertextMarkupLanguage)aloscontroles. Cuando agregamos un control a una pgina Web en modo Diseo, VisualStudio.NETagregaalformularioWebFormcdigodesoportey predetermina las propiedades. A continuacin, podemos cambiar a modoHTMLparamostrarelcdigoyeditarlo. ModoHTML EnmodoHTML,VisualStudio.NETdestacanuestrocdigoparaquelos distintos elementos, como los nombres de variables y las palabras clave, sean identificables al instante. La caracterstica de IntelliSense proporciona sugerencias para la finalizacin automtica y permite generarfunciones simplemente seleccionando desde listas de sintaxis disponibles.

ProgramacinenASP.NET 44 JEREYBE

CuandoutilizamoslaventanadeleditorenmodoHTML,aparecendos listas desplegablesen lapartesuperiordelaventana:la listaNombre deClase,alaizquierda,ylalistaNombredeMtodo,aladerecha.La lista Nombre de Clase muestra todos los controles del formulario asociado.Sihacemosclicenelnombredeuncontroldelalista,lalista Nombre de Mtodo mostrar todos los eventos de ese control. Los eventos son acciones que puede realizar el control y que pueden ser interpretadas por nuestra aplicacin. Utilizando conjuntamente las listas Nombre de Clase y Nombre de Mtodo, podemos localizar y editarrpidamenteelcdigodenuestraaplicacin.

Figura26. Editor/ Navegador

Examinadordeobjetos
El Examinador de objetos es una herramienta que proporciona informacin sobrelosobjetosysusmtodos,propiedades, eventosyconstantes.

ProgramacinenASP.NET 45 JEREYBE

Figura27. Examinadordeobjetos

Exploradordesoluciones
ElExploradordesolucionesmuestralajerarquadelosarchivosdelproyecto. Desdeestaventana,podemosmoverymodificararchivos,porejemplo: Utilizarunaoperacindearrastrarysoltarparareorganizarelementos. Seleccionar un elemento del Explorador de soluciones y la ventana Propiedadesmostrarlas propiedadesde eseelemento. Esto permite cambiarlaspropiedadesaniveldeproyectoodepgina. Hacerclic conelbotnderechoenelarchivo,proyectoosolucinpara ver las opciones disponibles, incluyendo agregar, generar y editar pginas. LostiposdearchivosquemuestraelExploradordesolucionesincluyen: Referenciasdeproyectosquelistanlasclasesqueutilizalapginaylos controlesWeb. TodoslosformulariosWebFormsdelproyecto.

ProgramacinenASP.NET 46 JEREYBE

Todas las pginas de cdigo subyacente que contienen la lgica que soportalosformulariosWebForms. Carpetasrelacionadasconproyectosysubelementos.

Figura28. Exploradordesoluciones

Ayudadinmica
Laayuda dinmicaproporcionaaccesoatemasde laayuda localyenlnea, enfuncindelaconfiguracindeMiperfil,elTipodeproyectoylaubicacin actualdelcursor.AmedidaquenosmovemosporelIDEoeditamoscdigo, lasopcionesdisponiblesenlaayudadinmicaseajustanparacorresponderse connuestraactividad.

Figura29. Ayudadinmica

ProgramacinenASP.NET 47 JEREYBE

Propiedades
Visual Studio .NET permite ajustar las propiedades de documentos, clases y controlesutilizandounaventanacomndePropiedades.Cuandocreamoso seleccionamos un elemento, la ventana Propiedades muestra automticamente las propiedades relacionadas. Como muestra la siguiente ilustracin, las propiedades disponibles se listan en la columna izquierda, mientrasquelasopcionesdeconfiguracinselistanaladerecha.

Figura 30. Propiedades

Listadetareas
La Lista de Tareas permite hacer un seguimiento del estado de las tareas mientrassedesarrollanlasaplicaciones.VisualStudio.NETtambinutilizala Listadetareasparasealarerrorescuandosegeneraunaaplicacin. ExistenvariasformasdeagregarunatareaalaListadetareas,porejemplo: Agregar tareas manualmente, haciendo clic en la Lista de tareas e introduciendoelementos.La tareasuperiordela Lista detareasenla siguienteimagendepantallaesunatareaaadidamanualmente.

ProgramacinenASP.NET 48 JEREYBE

Visual Studio .NET agrega automticamente una tarea con smbolos, como el comentario 'TODO en el cdigo. La segunda tarea de la siguiente imagen de pantalla ha sido aadida automticamente por Visual Studio .NET debido a un comentario 'TODO del cdigo. Para acceder a esta seccin del cdigo, hacemos clic en el elemento de la Lista de tareas y Visual Studio .NET abrir la pgina referida en esa lnea de comentario. Existen varios smbolos (tokens) preestablecidos que pueden utilizarse en el cdigo y que aadirn automticamente unatareaalaListadetareas.Veryagregaralalistadesmbolos: a) EnelmenHerramientas,hacerclicenOpciones. b) b. En el cuadro de dilogo Opciones, en la carpeta Entorno, hacerclicenListadetareas. VisualStudio.NETagregaautomticamenteloserroresproducidosen la generacin a la Lista de tareas. La tarea inferior de la siguiente imagen de pantalla se aadi automticamente cuando se gener la pgina. Para acceder a esta seccin del cdigo, hacer clic en el elemento de la lista de tareas y Visual Studio .NET abrir la pgina referidaenlalneaquecontieneelerror.

Figura 31. Listadetareas

Exploradordeservidores
El Explorador de servidores permite examinar conexiones a datos locales, servidores y servicios de Windows. El Explorador de servidores soporta la integracindeserviciosexternosennuestrositioWeb.

ProgramacinenASP.NET 49 JEREYBE

Figura 31. Exploradordeservidores

Cuadrodeherramientas
El Cuadro de herramientas permite arrastrar y soltar los controles que formarnnuestraaplicacin. Las herramientas disponibles se agrupan por categoras en los siguientes mens: Datos Esta categora contiene objetos que permiten a la aplicacin conectarse y acceder a datos de una base de datos Microsoft SQL Serveryotrasbasesdedatos. WebForms Esta categora contiene un conjunto de controles de servidor que puedenagregarseapginasWeb. Componentes Esta categora contiene componentes que soportan la infraestructura denuestraaplicacin.

ProgramacinenASP.NET 50 JEREYBE

HTML Esta categora contiene un conjunto de controles HTML que pueden agregarsealapginaWeb.Estoscontrolespuedenejecutarsetantoen elladoservidorcomoenelladocliente.

Figura 32. Cuadrodeherramientas

CrearunproyectodeaplicacinWebASP.NET
Visual Studio .NET contiene todo lo necesario para generar una aplicacin WebASP.NETdeprincipioafin. Crear una aplicacin Web ASP.NET con Visual Studio .NET implica los siguientespasosbsicos: 1. Crearunaespecificacindediseo. Laespecificacindediseoeslaguaqueutilizaremoscuandocreemos una aplicacin Web. Debemos tomarnos tiempo antes de escribir cdigoparadisearlaaplicacinquecrearemos.AunqueVisualStudio .NET proporciona herramientas que nos ayudan a desarrollar rpidamenteunasolucin,tenerunaideaclaradelasnecesidadesdel

ProgramacinenASP.NET 51 JEREYBE

usuarioydelconjuntoinicialdecaractersticasnosayudaraserms eficaces en nuestro trabajo de desarrollo. Empezar con una especificacin de diseo tambin nos ayudar a ahorrar tiempo minimizandoelpotencialdereescrituradecdigodebidoaunapobre oinexistenteespecificacindediseo. 2. Crearunnuevoproyecto. Cuando seleccionamos una nueva plantilla de proyecto, Visual Studio .NET crea automticamente los archivos y el cdigo predeterminado necesariosparasoportarelproyecto. Comopartedeestacreacininicialdelproyecto,deberamostransferir las principales tareas de codificacin desde nuestra especificacin de diseo a la Lista de tareas de Visual Studio .NET. Esta transferencia permite hacer un seguimiento de nuestro desarrollo contra la especificacin. 3. Crearlainterfaz. Para crear la interfaz de nuestra aplicacin Web, en primer lugar necesitaremosubicarcontrolesyobjetosenlaspginasWebutilizando laventanaEditor/NavegadorenmodoDiseo. Amedidaqueagregamosobjetosaunformulario,podemosestablecer sus propiedades desde la tabla en la ventana Propiedades o como cdigoenlaventanadeEdicin. 4. Escribircdigo. Tras establecer las propiedades inciales del formulario Web Form ASP.NET y sus objetos, podremos escribir los procedimientos de eventos que se ejecutarn al realizar diferentes acciones sobre un controluobjeto.

ProgramacinenASP.NET 52 JEREYBE

Esposiblequetambinnecesitemosescribircdigoparaagregarlgica denegocioyparaaccederadatos. 5. Generar. Cuando generamos un proyecto, compilamos todo el cdigo de las pginas Web y dems archivos de clases en una librera de enlace dinmico(DynamicLinkLibrary,DLL)denominada ensamblado. VisualStudio.NETtienedosopcionesdegeneracin:debugyrelease. Cuando desarrollamos un proyecto por primera vez, generamos versiones de depuracin. Cuando estamos preparados para liberar el proyecto,crearemosunaversin release delproyecto. 6. Probarydepurar. Probarydepurarnoesunpasoarealizarunanicavez,sinoalgoque se realiza repetidamente durante el proceso de desarrollo. Cada vez que realizamos un cambio importante, es necesario generar una versin de depuracin de la aplicacin para asegurarnos de que funcionasegnloprevisto. VisualStudio.NETofrecenumerosasherramientasdedepuracinque podemos utilizar para encontrar y solucionar errores de nuestra aplicacin. 7. Implementar. Cuando un proyecto est totalmente depurado yse ha generado una versin release, podemos implantar los archivos generados en un servidorWebenproduccin.

ProgramacinenASP.NET 53 JEREYBE

Figura 33. CrearunproyectodeaplicacinWeb conVisualStudio.NET

Archivosen aplicacionesWeb
Cuandocreamosunnuevo proyectootrabajamosconproyectosexistentes, Visual Studio .NET crea un determinado conjunto de archivos que soportan nuestrodesarrollo. Alcrearunnuevoproyecto,tambinsecreaunasolucin,aunquelasolucin nicamentetengaunproyecto.Secreaunacarpetaparacadasolucinenla carpeta \Mis documentos\Visual Studio Projects que contiene los archivos .slny.suo. Archivosdesolucin(.sln) LaextensindearchivoNombreSolucin.slnseutilizaparaarchivosde solucin que enlazan uno o ms proyectos, y almacena informacin global. Los archivos .sln son similares a los archivos de grupo Visual Basic(.vbg),queaparecenenversionesanterioresdeVisualBasic.

ProgramacinenASP.NET 54 JEREYBE

SolutionUserOptions(.suo) La extensin de archivo NombreSolucin.suo se utiliza para archivos que acompaan los registros de solucin y las personalizaciones que agreguemos a nuestra solucin. Este archivo guarda nuestra configuracin, como puntos de interrupcin y elementos de tareas, para queseanrecuperadoscadavezqueabramoslasolucin. CadaproyectoesunanicaaplicacinWebalmacenadaensupropiacarpeta. Dentro de la carpeta de proyecto se encuentra el archivo de configuracin delproyectoylosarchivosrealesqueconstituyenelproyecto.Elarchivode configuracindelproyectoesundocumentoXMLquecontienereferenciasa todos los elementos del proyecto, como formularios y clases, adems de referenciasdeproyectoyopcionesdecompilacin. Los archivos de proyecto Visual Basic .NET utilizan una extensin .vbproj. Estas extensiones permiten diferenciar entre archivos escritos en otros lenguajescompatiblescon.NETyfacilitanlainclusindemltiplesproyectos basadosendiferenteslenguajesenlamismasolucin. Los proyectos de aplicaciones Web se crean en una nueva carpeta \Inetpub\wwwroot.Adems,enIIS,secreaundirectoriovirtualqueapunta alacarpetadelproyecto. Visual Studio .NET soporta varios tipos de archivos de aplicaciones y extensiones: Formularios WebFormsASP.NET(.aspx) Los formularios Web Forms ASP.NET se utilizan cuando es necesario generar sitios Web dinmicos a los que los usuarios accedern directamente. Los formularios Web Forms ASP.NET pueden estar soportados por una pgina de cdigo subyacente diseada por la extensinWebForm.aspx.vb. ServiciosWebASP.NET(.asmx)

ProgramacinenASP.NET 55 JEREYBE

Los servicios Web se utilizan cuando deseamos crear sitios Web dinmicosalosquenicamenteaccedernotrosprogramas. LosserviciosWebASP.NETpuedenestarsoportadosporunapginade cdigo subyacente designada por la extensin WebService.asmx.vb o WebService.asmx.vb. Clasesypginasdecdigosubyacente(.vb) Las versiones anteriores de Visual Basic utilizaban diferentes extensiones de archivo para distinguir entre clases (.cls), formularios (.frm), mdulos (.bas), y controles de usuario (.ctl). Visual Basic .NET permitemezclarmltiplestiposenunnicoarchivo.vb. Las pginas de cdigo subyacente utilizan dos extensiones: el tipo de pgina(.aspxo.asmx)ylaextensindeVisualBasic(.vb).Porejemplo, elnombredearchivocompletoparalapginadecdigosubyacentede un formulario Web Form ASP.NET predeterminado es WebForm1.aspx.vbparaunproyectoVisualBasic.NET. Archivosdedescubrimiento(.discoy.vsdisco) Los archivos de descubrimiento son archivos basados en XML que contienen enlaces (URLs) a recursos que proporcionan informacin paraeldescubrimientoprogramticodeunservicioWebXML. Clasesdeaplicacinglobal(global.asax) El archivo Global.asax, tambin conocido como el archivo de la aplicacin ASP.NET, es un archivo opcional que contiene cdigo para responder a eventos a nivel de aplicacin provocados por ASP.NET o porHttpModules. En tiempo de ejecucin, se parsea Global.asax y se compila en una clase .NET Framework generada dinmicamente y derivadadelaclasebaseHttpApplication.

ProgramacinenASP.NET 56 JEREYBE

Archivosderecursos(.resx) Un recurso es cualquier dato no ejecutable implantado lgicamente con una aplicacin. Un recurso puede mostrarse en una aplicacin comounmensajedeerrorocomopartedelaIU.Losrecursospueden contener datos de diversos tipos, incluyendo cadenas, imgenes y objetos persistentes. Almacenar los datos en un archivo de recursos permitemodificarlossinnecesidadderecompilar todalaaplicacin. Styles.css Styles.css es el archivo de hojas de estilo predeterminado para la aplicacinWeb. ArchivoWeb.config EstearchivoWeb.configcontieneopcionesdeconfiguracinqueelCLR lee,comopolticasdeenlacedeensamblados,objetosremoting,etc.,y otras configuraciones que la aplicacin puede leer. Los archivos Web.config tambin contienen las clases de aplicacin global soportadasporunproyecto. Losarchivosquenoestnbasadosenunlenguajedeprogramacintendrn sus propias extensiones. Por ejemplo, un archivo Crystal Reports utiliza la extensin.rptyunarchivodetextoutiliza.txt. Cuando se compila un proyecto Web, se crean dos tipos adicionales de archivos: Archivosensambladosdelproyecto(.DLL) Todas las pginas de cdigo subyacente (.aspx.vb y .aspx.cs) de un proyecto estn compiladas en un nico archivo ensamblado que se almacena como ProjectName.dll. Este archivo ensamblado del proyectoseubicaeneldirectorio/bindelsitioWeb.

ProgramacinenASP.NET 57 JEREYBE

AssemblyInfo.vboAssemblyInfo.cs ElarchivoAssemblyInfoseutilizaparadescribirlainformacingeneral delensamblado,comolaversinylosatributosdelmismo.

EstructuradelosarchivosdeunaaplicacinWeb
Cuando creamos una aplicacin Web ASP.NET, Visual Studio .NET crea dos carpetas para almacenar los archivos que soportan esa aplicacin. Cuando compilamos un proyecto, se crea una tercera carpeta para almacenar el archivo.DLL resultante. Visual Studio .NET crea una carpeta para la solucin, Proyecto_A, que contieneelarchivoProyecto_A.sln.Estearchivoes unmapa de losdiversos archivosquesoportanelproyecto. Tambin podemos crear una solucin en blanco y agregarle proyectos. Si creamos una solucin en blanco, tendremos una solucin con un nombre distinto aldelproyecto. VisualStudio.NETtambincreaunacarpetadenominadaProyecto_A,enla carpeta Inetpub\wwwroot, que contiene los archivos que requiere la aplicacinWeb.Estosarchivosincluyen: Elarchivodeproyecto,Proyecto_A.vbproj,queesundocumentoXML que contiene referencias a todos los elementos del proyecto, como formulariosyclases,ademsdereferenciasdeproyectoyopcionesde compilacin. Formularios ASP.NET Web Forms, WebForm1.aspx, o servicios Web XML,WebService.asmx. Pginas de cdigo WebService1.asmx.vb. subyacente, WebForm1.aspx.vb,

ProgramacinenASP.NET 58 JEREYBE

UnarchivoWeb.config,quecontienelasopcionesdeconfiguracinde laaplicacinWeb. Un archivo Global.asax que gestiona los eventos que son invocados mientraslaaplicacinWebseestejecutando. Cuando generamos un proyecto de aplicacinWeb, VisualStudio .NET crea un ensamblado en la carpeta Inetpub\wwwroot\Proyecto_A\bin. Un ensambladoesunarchivo.DLL quesecreadesdetodaslaspginasdecdigo subyacentequeconstituyenunaaplicacinWeb.

Figura 34. EstructuradelosarchivosdeunaaplicacinWeb

CapituloV Crearformularios WebFormsconVisual Studio.NET

ProgramacinenASP.NET 60 JEREYBE

LosformulariosWebFormssonpginasWebprogramablesquesirvencomo interfaz de usuario (IU) para un proyecto de aplicacin Web utilizando ASP .NET. Un formulario Web Form presenta informacin al usuario visualizable encualquiertipodenavegador,eimplementalgicadeaplicacinutilizando cdigoejecutableenelservidor.

QuesunformularioWebForm? LosformulariosWebFormsestnformadosporunacombinacin deHTML, cdigoycontrolesqueseejecutanenunservidorWebejecutandoMicrosoft Internet Information Server (IIS). Los formularios Web Forms muestran una interfazde usuario que generaHTMLyqueseenvaal navegador,mientras queelcdigodesoporteyloscontrolesquelacomponenpermanecenenel servidor Web. Esta divisin entre el interfaz en el cliente y el cdigo en el servidoresunaimportantediferenciaentrelosformulariosWebFormsylas pginas Web tradicionales. Mientras una pgina Web tradicional requiere que todo el cdigo se enve y se procese en el navegador, los formularios Web Forms nicamente necesitan enviar al navegador los controles de la interfaz,yelprocesodelaspginassemantieneenelservidor.Estadivisin entre IU y cdigo aumenta el nmero de navegadores soportados e incrementalaseguridadyfuncionalidaddelapginaWeb. LosformulariosWebFormssedenominanhabitualmentepginasASP.NETo pginas ASPX. Los formularios Web Forms tienen una extensin .aspx y funcionan como contenedores para el texto y los controles que deseamos mostrarenelnavegador. Las pginas ASP.NET (.aspx) y Active Server Pages (ASP) (.asp) pueden coexistir en el mismo servidor. La extensin del archivo determina si la pginalaprocesaASPoASP.NET. LosformulariosWebFormsestnfrecuentementeformadospordosarchivos distintos: el archivo .aspx contiene la IU para el formulario Web Form, mientrasqueelarchivo.aspx.vb,denominadopginadecdigosubyacente, contieneelcdigodesoporte.

ProgramacinenASP.NET 61 JEREYBE

LasfuncionesdeunformularioWebFormestndefinidasportresnivelesde atributos. Los atributos de pgina definen las funciones globales, los atributosdecuerpodefinencmosemostrarunapginaylosatributosde formulariodefinencmoseprocesarnlosgruposdecontroles. Laetiqueta <@Page> defineatributosespecficosdelapginaqueutilizael parseadordepginasASP.NETyelcompilador.nicamentepodemosincluir una etiqueta <@ Page> por archivo .aspx. Los siguientes ejemplos son etiquetas<@Page>tpicasparaMicrosoftVisualBasic.NET:
<%@PageLanguage="vb"AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>

Losatributosdeuna etiqueta<@Page> incluyen: Language. ElatributoLanguagedefineellenguajeenelqueestescritoelscript delapginaWeb.Algunosdelosvaloresdeesteatributoson:vb,c#y JScript. Codebehind. El atributo de pgina Codebehind identifica la pgina de cdigo subyacente que tiene la lgica que soporta el formulario Web Form. Cuando Visual Studio .NET crea un formulario Web Form, como WebForm1.aspx, tambin crea una pgina de cdigo subyacente, WebForm1.aspx.vb. SmartNavigation. El atributo SmartNavigation de ASP.NET permite al navegador actualizarnicamentelasseccionesdelformularioquehancambiado. Las ventajas de SmartNavigation son que la pantalla no parpadea mientras se actualiza; en lugar de ello, se mantiene la posicin de desplazamiento y se mantiene la "ltima pgina" en el historial.

ProgramacinenASP.NET 62 JEREYBE

SmartNavigation nicamente est disponible para los usuarios con MicrosoftInternetExplorer5osuperior. Losatributosdelaetiqueta <body> definenelaspectodelosobjetosquese muestran en el navegador del cliente. La siguiente es una etiqueta <body> tpica:
<bodyMS_POSITIONING="GridLayout">

Losatributosdeunaetiqueta<body> incluyen: PageLayout. ElatributopageLayout(etiquetadocomo MS_POSITIONING)determina cmo se posicionan los controles y el texto en la pgina. Existen dos opcionesparapageLayout: FlowLayout. EnFlowLayout,eltexto, lasimgenesyloscontrolesfluyen por lapantalla,dependiendodelanchodelaventanadelnavegador. GridLayout. EnGridLayout,loscamposdetexto,lasimgenesyloscontroles de una pgina estn fijados por coordinadas absolutas. GridLayout es el valor de pageLayout predeterminado para VisualStudio.NET. La etiqueta <form> define cmo se procesarn los grupos de controles. La etiqueta <form> esdiferentedeltrminoWebFormutilizadoparadefinirla pginaWebcompleta.Losatributosdelaetiqueta <form> definencmose procesarnloscontroles.AunquepodemostenermuchosformulariosHTML en una pgina, nicamente podemos tener un formulario del lado del servidorenunapgina.aspx.

ProgramacinenASP.NET 63 JEREYBE

Elsiguienteejemploesdeunaetiqueta<form>tpica:
<formid="Form1"method="post"runat="server"> ... </form>

Losatributosdeunaetiqueta<form> incluyen: Method. ElatributoMethodidentificaelmtodoparaenviarvaloresdecontrol deretornoalservidor.Lasopcionesdeesteatributoson: Post. Losdatossepasanenparesnombre/valordentrodelcuerpode lapeticinHTTP(HypertextTransferProtocol). Get. Losdatossepasanenunacadenade consulta. Runat. Una de las principales caractersticas de un formulario Web Form es queloscontrolesseejecutanenelservidor.Elatributorunat="server" hacequeelformulariopubliqueinformacindecontrolderetornoala pginaASP.NETenelservidordondeseejecutaelcdigodesoporte.Si el atributo runat no est establecido en "server", el formulario funcionacomounformularioHTMLnormal. El siguiente cdigo procede del formulario Web Form predeterminado de VisualStudio.NETalcrearun nuevoproyectodeaplicacinWebASP.NETcon VisualBasic.NET:

ProgramacinenASP.NET 64 JEREYBE

<%@PageLanguage="vb"AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%> <!DOCTYPEHTMLPUBLIC"//W3C//DTDHTML4.0 Transitional//EN"> <html> <head> <title>WebForm1</title> <metaname="GENERATOR"content="MicrosoftVisualStudio .NET7.1"> <metaname="CODE_LANGUAGE"content="VisualBasic.NET 7.1"> <metaname=vs_defaultClientScriptcontent="JavaScript"> <metaname=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5"> </head> <bodyMS_POSITIONING="GridLayout"> <formid="Form1"method="post"runat="server"> </form> </body> </html>

CrearunformularioWebFormconVisualStudio.NET
Dependiendodelpuntoenquenosencontremosenelprocesodedesarrollo, existenvariosmodosdecrearunformularioWebForm. Cuando creamos un nuevo proyecto en Visual Studio .NET, se incluye automticamente en el proyecto un formulario Web Form predeterminado denominadoWebForm1.aspx. CrearunnuevoproyectodeaplicacinWebASP.NETyunformulario WebFormpredeterminado. 1. EnVisualStudio.NET,enlaPginadeinicio,hacerclicenNuevo proyecto.

ProgramacinenASP.NET 65 JEREYBE

2. EnelcuadrodedilogoNuevoproyecto,hacerclicenAplicacin Web ASP.NET, escribir el nombre del proyecto en el campo Ubicacin yhacerclicen Aceptar. VisualStudio.NETcreaunanuevaaplicacinWebyunformularioWeb FormpredeterminadodenominadoWebForm1.aspx. Si estamos expandiendo un proyecto existente, podemos utilizar el Exploradordesoluciones paraagregar rpidamenteformulariosWebForms adicionales. Agregar formularios Web Forms adicionales a un proyecto de aplicacinWeb. 1. En la ventana del Explorador de soluciones, hacer clic con el botnderechoenelnombredelproyecto,seleccionarAgregar, y hacer clic en Agregar Web Forms. Se abrir el cuadro de dilogo Agregarnuevoelemento NombreProyecto. 2. En el cuadro de dilogo Agregar nuevo elemento NombreProyecto,cambiarelnombredelformularioWebForm,y hacerclicen Abrir. SecrearunnuevoformularioWebFormyseagregaralproyecto. Si estamos revisando un sitio Web existente, podemos importar pginas HTML a Visual Studio .NET y actualizar esas pginas a formularios Web Forms. ActualizarpginasHTMLexistentes. 1. En elExploradorde soluciones, hacerclic con elbotn derecho en el nombre del proyecto, seleccionar Agregar y hacer clic en Agregarelementoexistente.

ProgramacinenASP.NET 66 JEREYBE

2. En el cuadro de dilogo Agregar elemento existente, navegar hastalaubicacindelarchivoHTML,hacerclicenelnombredel archivoyposteriormenteen Abrir. 3. Cambiar el nombre del archivo nombreArchivo.htm por nombreArchivo.aspx, y hacer clic en S a la pregunta de si estamossegurosdedesearcambiarlaextensindel archivo. 4. Cuandosenospreguntesideseamoscrearunnuevoarchivode clase,hacerclicen S.

Usodecontrolesdeservidor
Los controles de servidor ASP.NET son componentes que se ejecutan en el servidor y encapsulan la IU y dems funcionalidades relacionadas. Los controlesdeservidorseutilizanenpginasASP.NETyenlasclasesdecdigo subyacente. Los controles de servidor incluyen botones, cuadros de texto y listasdesplegables. ElsiguienteejemploeseldeuncontroldeservidorButton:
<asp:Buttonid="Button1"runat="server"Text="Submit"/>

Los controles de servidor tienen un atributo runat="server", el mismo atributo que los formularios Web Forms. Esto significa que la lgica del control se ejecuta en el servidor y no en el navegador del usuario. Los controles de servidor se diferencian de los controles HTML en que stos ltimos nicamente se ejecutan en el navegador del cliente y no realizan ningunaaccinenelservidor. Otra caracterstica de los controles de servidores que elestado de la vista, lasopcionesdeconfiguracinylaentradadedatosdeusuarioenelcontrol se guardan automticamente cuando la pgina viaja entre el cliente y el servidor. Los controles HTML tradicionales no tienen estado y vuelven a su

ProgramacinenASP.NET 67 JEREYBE

configuracin predeterminada cuando la pgina retorna del servidor al cliente. Lafuncionalidad deuncontrolesloqueseproducecuandoelusuariohace clic en un botn o en un cuadro de lista. A estos procesos se denominan procedimientosdeeventos.ComoprogramadoresdelformularioWebForm, debemosdeterminarlosprocedimientosdeeventosasociadosacadacontrol deservidor. En ASP.NET, los controles de servidor se basan en un modelo de objetos comn,yportanto,compartenvariosatributosentres. Cuando un navegador interpreta una pgina, los controles de servidorWeb determinan el tipo de navegador que solicita la pgina, y enva el cdigo HTMLadecuado. Existen numerosos tipos de controles de servidor disponibles en ASP.NET. Algunos controles de servidor se parecen mucho a los controles HTML tradicionales, mientras que otros son nuevos en ASP.NET. Esta amplia variedad de controles nos permite personalizar nuestro formulario Web Formparaqueseadaptealaaplicacinqueestamoscreando. Por defecto, el servidor no tiene disponibles los elementos HTML de una pginadeunformularioWebForm;loselementosHTMLsontratadoscomo texto opaco que pasa a travs del navegador. Sin embargo, al agregar el atributo runat="server" se convierten los elementos HTML en controles de servidor HTML, exponindolos por tanto como elementos que podemos programarconcdigodelladodelservidor. LoscontrolesdeservidorWebnosloincluyencontrolesdetipoformulario, comobotonesycuadrosdetexto,sinotambincontrolesconfuncionalidad especial,comoelcontrolcalendario.LoscontrolesdeservidorWebsonms abstractosqueloscontrolesdeservidorHTML,porquesumodelodeobjetos noreflejanecesariamentelasintaxisHTML. LoscontrolesdeservidorWebseclasifican como:

ProgramacinenASP.NET 68 JEREYBE

Controlesintrnsecos. Los controles intrnsecos concuerdan con los sencillos elementos HTML, como botones o cajas de listas. Utilizamos estos controles del mismomodoqueutilizamosloscontrolesdeservidorHTML. Controlesdevalidacin. Los controles de validacin incorporan lgica que permite verificar la entradadedatosdeunusuario.Paraprobarlaentradadeunusuario, adjuntamos un control de validacin al control de entrada y especificamos las condiciones de entrada de datos de usuario correctas. Controlesricosestndar. Loscontrolesestndarsoncontrolescomplejosqueincluyenmltiples funciones. Ejemplos de controles estndar incluyen el control AdRotator,queseutilizaparamostrarunasecuenciadeanunciosoel controlCalendar,queproporcionauncalendariodecitas. Controlesenlazadosalistas. Loscontrolesenlazadosalistaspuedenmostrarlistasdedatosenuna pgina ASP.NET. Estos controles nos permiten mostrar, reformatear, clasificaryeditardatos. ControlesWebdeInternetExplorer. Los controles Web de Internet Explorerson un conjunto de controles complejos,comoMultiPage,TabStrip,ToolbaryTreeView,quepueden descargarsedesdeInterneteintegrarseenelentornodeVisualStudio .NET para ser reutilizados en cualquier aplicacin Web con ASP.NET. Estos controles pueden ser interpretados en todos los navegadores utilizados habitualmente, yalmismo tiempo aprovechan las potentes

ProgramacinenASP.NET 69 JEREYBE

caractersticassoportadasporlasversionesdeInternet Explorer5.5o superior.

ControlesdeservidorHTML
Los controles HTML de un formulario Web Form no estn disponibles en el servidor.SiconvertimosloscontrolesHTMLencontroles deservidorHTML, podemosexponerloscomoelementosanuestrocdigodelladodelservidor. Estaconversinnospermite utilizarloscontrolespara disparareventosque songestionadosenelservidor. Los controles de servidor HTML incluyen el atributo runat="server", y deben residir en una etiqueta contenedora <form runat="server"></form>. LaventajadeloscontrolesdeservidorHTMLesquenospermitenactualizar rpidamentepginasexistentesaformulariosWebForms.Adems,podemos optimizar el rendimiento de una pgina ajustando qu controles deben funcionar localmente en el navegador y qu controles se procesan en el servidor.

ControlesdeservidorWeb
Los controles de servidor Web son controles de servidor creados especficamente para ASP.NET. A diferencia de los controles de servidor HTML, los controles de servidor Web no funcionarn si falta el atributo runat="server". LoscontrolesdeservidorWebsebasanenunmodelodeobjetoscomn;por ello, todos los controles comparten varios atributos, incluyendo la etiqueta <asp:TipoControl...>, y un atributo id. Los controles de servidor Web existen en el espacio de nombres System.Web.UI.WebControls y pueden utilizarseencualquierformularioWebForm.

CapituloVI Agregarcdigoaun formularioWebForm conASP.NET

ProgramacinenASP.NET 71 JEREYBE

Podemos agregar cdigo a nuestro formulario Web Form de los siguientes modos: Cdigomezclado. El cdigo se encuentra en el mismo archivo que el contenido Web, entremezclado con elcontenido Hypertext Markup Language (HTML). Este mtodo es el menos elegido, ya que es difcil leery trabajar con un archivo de este tipo. Sin embargo, es un mtodo utilizado con frecuenciaenpginasActiveServerPages(ASP). Cdigoenlnea. El cdigo se encuentra en el mismo archivo en una seccin SCRIPT distinta,aligualqueelcontenidoHTML. Cdigosubyacente. Elcdigo se encuentra en un archivo distinto delcontenido HTML. El archivo decdigosedenominapgina decdigosubyacente.Cuando seutilizaVisualStudio.NET,elmtodopredeterminadoesubicartodo elcdigoenunapginadecdigosubyacente. Aunque elmtodo predeterminado para implementarcdigo en ellado del servidor en Visual Studio .NET es utilizar una pgina de cdigo subyacente, podemos encontrar pginas que utilizan cdigo en lnea, concretamente pginasASP. CuandoseutilizacdigoenlneaenunapginaWeb,elHTMLyelcdigose encuentranenseccionesdistintasdeunnicoarchivo.aspx.Estaseparacin seproduceparaofrecerclaridadenlalecturadelapgina;lafuncionalidad, elcdigoyHTMLpuedencoexistirencualquierlugardelapgina. Elsiguientecdigoesunejemplodecdigoenlnea:
<HTML>

ProgramacinenASP.NET 72 JEREYBE

<asp:Buttonid="btn"runat="server"/> ... </HTML> <SCRIPTLanguage="vb"runat="server"> Subbtn_Click(sAsObject,eAsEventArgs)_ Handlesbtn.Click ... EndSub </SCRIPT>

Qusonlaspginasdecdigosubyacente?
Elmtodo predeterminadoparaimplementarcdigoenellado delservidor en Visual Studio .NET es utilizar pginas de cdigo subyacente. Cuando utilizamos pginas de cdigo subyacente, la lgica de programacin se encuentraenunarchivo distintodeloselementosvisualesdelapgina. Separar la lgica del diseo permite a los desarrolladores trabajar en la pgina de cdigo subyacente mientras los diseadores de la interfaz de usuario(IU)trabajanenlapginaASP.NET. Laspginas decdigosubyacentecontienentodalalgicadeprogramacin para una sola pgina Web. Cada pgina de una aplicacin Web tiene su propia pgina de cdigo subyacente. De forma predeterminada, una pgina de cdigo subyacente tiene el mismo nombre que la pgina Web a la que est asociada; sin embargo, la pgina de cdigo subyacente tambin tiene unaextensin.aspx.vb. Por ejemplo la pgina Web Form1.aspx tendr una pgina de cdigo subyacenteMicrosoftVisualBasic.NETdenominadaForm1.aspx.vb

Cmofuncionanlaspginasdecdigosubyacente
Paraquelaspginasdecdigosubyacentefuncionen,cadapgina.aspxdebe estar asociada a una pgina de cdigo subyacente, y esa pgina de cdigo

ProgramacinenASP.NET 73 JEREYBE

subyacente debe estar compilada antes de que la informacin se enve de vueltaa unnavegadorclientequelasolicite. Aunque cada pgina Web Form est formada por dos archivos distintos (la pgina.aspxylapgina decdigosubyacente),ambosarchivosformanuna nica unidad cuando se ejecuta la aplicacin Web. La pgina de cdigo subyacente puede ser precompilada por Visual Studio .NET cuando generamos el proyecto de aplicacin Web, o puede ser compilada justin time(JIT)laprimera vezqueunusuarioaccedealapgina. Lapgina.aspxdebeestarasociadaalapginadecdigosubyacente.Visual Studio .NET agrega los tres atributos siguientes a la directiva @ Page de la pgina.aspxparaconseguirestaasociacin: Codebehind. EselatributoqueVisualStudio.NETutilizainternamenteparaasociar losarchivos. Src. Este atributo es el nombre de la pgina de cdigo subyacente, y se utiliza silaaplicacinWebnoestprecompilada. Inherits. Este atributo permite a la pgina .aspxheredar clases yobjetos de la pginadecdigosubyacente. Elsiguientecdigomuestraunejemplodedirectiva @Page paraunarchivo denominadoPage1.aspx:
<%@PageLanguage="vb"Inherits="Project.WebForm1" Codebehind="Page1.aspx.vb"Src="Page1.aspx.vb"%>

ProgramacinenASP.NET 74 JEREYBE

Cuando una pgina est compilada JIT, las pginas de cdigo subyacente se compilanlaprimeravezqueunclientesolicitalapgina.aspx.Traslaprimera peticin, las siguientes utilizan el archivo compilado existente. Por tanto, la primerapeticindeunapginadurams,perolassiguientespeticionesson ms rpidas. Si se desea utilizar la compilacin JIT para una pgina, debera utilizarse el atributo Src deladirectiva@Page. Cuandounusuariosolicitalapgina.aspx,elarchivoDLLprocesalapeticin entrante y responde creando el cdigo HTML y el scripting adecuados y devolvindolosalnavegadorsolicitante. Si omitimos el atributo Src de la directiva @ Page en un archivo .aspx, la pginaseprecompilacuandogeneramoslaaplicacinenVisualStudio.NET. De modo predeterminado, Visual Studio .NETno agrega elatributo Src; por ello, todas las pginas de cdigo subyacente en los formularios Web Forms de un proyecto se compilan cuando se genera el proyecto. Este proceso ahorrauntiempo considerabledeprocesoenelservidorWeb. Precompilarpginasdecdigosubyacentetambinsimplificalaimplantacin del sitio Web ya que no es necesario implantar las pginas de cdigo subyacente juntoconlaspginas.aspx.

Procedimientosdeeventoacontrolesde servidorWeb
Los formularios Web Forms dinmicos e interactivos normalmente reaccionanalaentrada dedatosdelusuario.Losprocedimientosdeevento se utilizan para gestionar las interacciones de los usuarios en un formulario WebForm. Cuando un usuario interacta con un formulario Web Form, se genera un evento. Diseamos nuestra aplicacin Web para realizar una determinada tareacuandosegeneraelevento.Un procedimientodeeventoeslaaccin queocurreen respuestaaleventogenerado.

ProgramacinenASP.NET 75 JEREYBE

MuchosformulariosWebFormspermitenalusuariointroducirinformaciny hacerclic en un botn Enviar. Se genera un evento cuando el usuario hace clicenelbotnEnviar.Porejemplo,unprocedimientodeeventopodraser enviarla informacindelusuarioaunabasededatosMicrosoftSQLServer.

Procedimientosdeeventoenelladodelcliente
Existendostiposdeprocedimientosdeevento:enelladodelclienteyenel lado delservidor.Ambostienenventajaseinconvenientes. Losprocedimientosdeeventoenelladodelclientesoneventosgestionados en el equipo que solicita el formulario Web Form (el cliente). Cuando se genera un evento, no se enva ninguna informacinal servidor. En lugarde ello,el navegadordelclienteinterpretaelcdigoytambinrealizalaaccin. Los procedimientos de evento en el lado del cliente nicamente pueden utilizarse con controles HTML. Adems, los procedimientos de evento en el ladodelclientenuncatienenaccesoalosrecursosdelservidor.Porejemplo, nopodemosutilizarscriptsenelladodelclienteparaaccederaunabasede datosSQLServer. Los procedimientos de evento en el lado del cliente resultan tiles para eventos quedeseamosqueocurraninmediatamenteporquenorequierenun viajedeidayvueltaalservidorWeb(envodeinformacinalservidorWeby esperadeunarespuesta).Porejemplo,esposiblevalidarinformacinenun cuadro de texto antes de enviarla al servidor. Podemos utilizarscripts en el lado del cliente para validar la informacin rpida y eficazmente antes de enviarlainformacindel usuarioalservidorWebparacontinuarsuproceso. Especificamosunprocedimientodeeventoenelladodelclientecreandoun bloque<SCRIPT>enlapginaWeb,comomuestrael siguientecdigo:
<SCRIPTlanguage="javascript">

ProgramacinenASP.NET 76 JEREYBE

Procedimientosdeeventoenelladodelservidor
A diferencia de los procedimientos de evento en el lado del cliente, los procedimientos de evento en el lado del servidor requieren el envo de informacin al servidor Web para su proceso. Aunque el uso de procedimientos deeventoenelladodelservidorsuponeuncosteentiempo, son mucho ms potentes que los procedimientos de evento en el lado del cliente. Los procedimientos de evento en el lado del servidor estn formados por cdigo compilado que reside en el servidor Web. Los procedimientos de eventoenellado delservidorpuedenutilizarse para gestionareventos que songenerados desdeloscontrolesdeservidorWebyHTML. Los procedimientos de evento en el lado del servidor tienen acceso a recursos del servidor que normalmente no estn disponibles para los procedimientosdeeventoenelladodelcliente. Paraespecificarunprocedimientodeeventoenelladodelservidor,seutiliza el atributo runat="server" en la etiqueta script, como muestra el siguientecdigo:
<SCRIPTlanguage="vb"runat="server">

Debidoaquelosprocedimientosdeeventoenelladodelservidorrequieren unviajedeidayvueltaalservidorWeb,existenunnmerolimitadodetipos de eventosdecontrolsoportados. Con los procedimientos de evento en el lado del cliente, podemos incluir cdigo para procesar eventos asociados a botones de ratn y eventos onChange. Mientras los procedimientos de evento en el lado del servidor soportan eventos click y una versin especial del evento onChange, no pueden soportar eventos que ocurren frecuentemente, como eventos asociadosa botonesdelratn.

ProgramacinenASP.NET 77 JEREYBE

Crearprocedimientosdeevento
Crear un procedimiento de evento en el lado del servidor en Visual Studio .NETimplicadospasos.Enelprimerpaso,creamoselcontrolquegenerael eventoenelformularioWebForm.Enelsegundo,proporcionamoselcdigo necesarioen lapginadecdigosubyacenteparaprocesarelevento. CuandohacemosdobleclicenuncontrolenVisualStudio.NET,VisualStudio .NET declara una variable (con el mismo nombre que el atributo id del control) y crea una plantilla para el procedimiento de evento. Cuando utilizamos Visual Basic .NET, Visual Studio .NET tambin agrega la palabra claveHandles,queadjuntaelprocedimientodeeventoalcontrol.Lapalabra clave Handles permitecrearmltiplesprocedimientosdeeventoaunnico evento. El siguiente cdigo HTML muestra un formulario Web Form que tiene un nico botn con un atributo id igual a cmd1; el evento clic del botn se gestionaren elservidor:
<formid="form1"method="post"runat="server"> <asp:Buttonid="cmd1"runat="server"/> </form>

El siguiente cdigo Visual Basic .NET muestra la declaracin de variables necesariaenlapginadecdigosubyacente.


ProtectedWithEventscmd1As_ System.Web.UI.WebControls.Button

En elcdigo anterior, el nombre de la variable debe coincidircon el id del control Web, y debemos utilizar la palabra clave WithEvents para indicar que estecontrolhacequeseejecutenlosprocedimientosdeevento. En el siguiente cdigo Visual Basic .NET, que muestra el procedimiento de evento para el evento Click, la palabra clave Handles indica que el procedimientodeeventoseejecutaenrespuestaaleventoClick delcontrol cmd1:

ProgramacinenASP.NET 78 JEREYBE

PrivateSubcmd1_Click(ByValsAsSystem.Object,_ ByValeAsSystem.EventArgs)_ Handlescmd1.Click ... EndSub

Todos los eventos pasan dos argumentos al procedimiento de evento: el remitente del evento y una instancia de la clase que guarda los datos del evento. Normalmente, este ltimo es del tipo EventArgs, y a menudo no contiene ningunainformacinadicional;sinembargo,paraalgunoscontroles,esdeun tipoqueesespecficoparaesecontrol. Por ejemplo, para un control Web ImageButton, el segundo argumento es de tipo ImageClickEventArgs, que incluye informacin sobre las coordenadas donde el usuario ha hecho clic. El siguiente procedimiento de evento enva las coordenadas de la ubicacin donde ocurre un clic en un controlLabel:
Subimg_OnClick(ByValsAsSystem.Object,_ ByValeAsSystem.Web.UI.ImageClickEventArgs)_ HandlesImageButton1.Click Label1.Text=e.X&","&e.Y EndSub

Interactuarconcontrolesenprocedimientosdeevento
En muchas aplicaciones Web, necesitamos leer y escribir a controles de un formulario. Podemos hacerlo dentro de los procedimientos de evento en el lado delservidor. En un procedimiento de evento en el lado del servidor, podemos leer informacinde uncontroldeservidor.Porejemplo,sitenemoselsiguiente formularioconun controlTextbox yuncontrolButton:
<FORMid="Form1"runat="server">

ProgramacinenASP.NET 79 JEREYBE

<asp:TextBoxid="txtName"runat="server"/> <asp:Buttonid="cmd1"runat="server"/> </FORM>

Cuandoelusuariohaceclicenelbotn,podemosleereltextoqueelusuario ha escrito en el cuadro de texto. El siguiente cdigo asigna la variable de cadena strGreeting a una concatenacin deltexto Hello yeltexto del cuadrodetextotxtName:
DimstrGreetingAsString="Hello"&txtName.Text

Podemos enviar informacin directamente a un control de servidor Web utilizando las propiedades del control. Por ejemplo, supongamos que tenemos un control de servidor Web denominado Label en la pgina ASP.NET,comosigue:
<asp:Labelid="lblGreeting" runat="server">Greeting</asp:Label>

El siguiente cdigo en el lado del servidor asigna la propiedad Text del control deservidorWeblblGreetingaunacadenadetexto:
lblGreeting.Text="newtext"

Ciclodevidadeloseventosdepgina
CuandosesolicitaunapginaASP.NET,seproducenunaseriedeeventosde pgina.Estoseventossiempreocurrenenelmismoorden,denominadociclo de vidadeloseventosdepgina. Elciclodevidadeloseventosdepginaconstadelossiguienteseventosde pgina,queocurrenenelsiguienteorden: 1. Page_Init.

ProgramacinenASP.NET 80 JEREYBE

Este evento de pgina inicializa la pgina creando e inicializando los controlesdeservidorWebdelapgina. 2. Page_Load. Esteeventodepginaseejecutacadavezquesesolicitala pgina. 3. Eventos Control. Este evento de pgina incluye eventos de cambio (por ejemplo, Textbox1_Changed) y eventos de accin (por ejemplo, Button1_Click). 4. Page_Unload. Este evento de pgina ocurre cuando la pgina se cierra o cuando el controlpasaaotrapgina. El final del ciclo de vida de los eventos de pgina incluye el borrado de la pgina enmemoria. La mayora de eventos de control no ocurren hasta que el formulario Web Form se enve de nuevo al servidor. Por ejemplo, los eventos Change se gestionan en orden aleatorio en el servidor despus de que el formulario haya sido enviado. En cambio, los eventos Click pueden hacer que el formularioseaenviadoalservidor inmediatamente. Por ejemplo, si un usuario introduce texto en varios controles de un formulario y hace clic en un botn Submit, los eventos Change de los controles de texto no se procesarn hasta que el evento Click enve el formularioalservidor. En ASP .NET, los formularios estn diseados para enviar informacin de retornoalapginaASP.NETremitente parasuprocesamiento.Esteproceso se denomina postback. Los postbacks pueden producirse por determinadas acciones del usuario. De modo predeterminado, nicamente los eventos

ProgramacinenASP.NET 81 JEREYBE

clickButton hacenqueelformularioseaenviadodenuevoalservidor.Sin embargo,siestablecemoslapropiedad AutoPostBack deuncontrola true,

forzamosunpostbackparalos eventosdeesecontrol. Por ejemplo, el siguiente cdigo HTML es un ejemplo del uso de AutoPostBack en un cuadro de lista. Cada vez que el usuario modifica el valordelcuadrode lista,elevento SelectedIndexChanged seinvocaenel servidoryactualizael cuadrodetexto:
<asp:DropDownListid="ListBox1"runat="server" AutoPostBack="True"> <asp:ListItem>FirstChoice</asp:ListItem> <asp:ListItem>SecondChoice</asp:ListItem> </asp:DropDownList> Elcdigodelapginadecdigosubyacenteescomosigue: PrivateSubListBox1_SelectedIndexChanged_ (ByValsAsSystem.Object,ByValeAsSystem.EventArgs)_ HandlesListBox1.SelectedIndexChanged TextBox1.Text=ListBox1.SelectedItem.Value EndSub

GestindeloseventosPage.IsPostback
EleventoPage_Load seejecutaencadapeticindeunapgina,tantosiesla primerapeticindelapginaoun postback. Debido a que el evento Page_Load se ejecuta con cada peticin de una pgina, todo el cdigo del evento Page_Load se ejecutar cada vez que la pgina sea solicitada. Sin embargo, cuando utilizamos eventos postback, es posiblequenodeseemosqueseejecutenuevamentetodoelcdigo.Siste es el caso, podemos utilizar la propiedad Page.IsPostBack para controlar qu cdigo se ejecuta nicamente cuando la pgina se solicita por primera vez,comomuestrael siguientecdigo:
PrivateSubPage_Load(ByValsAsSystem.Object,_ ByValeAsSystem.EventArgs)_ HandlesMyBase.Load IfNotPage.IsPostBackThen

ProgramacinenASP.NET 82 JEREYBE

'ejecucinsloenlacargadepginainicial EndIf 'estecdigoseejecutaencadapeticin EndSub

Vnculoentredoscontroles
Podemos vincular un control con el contenido de otro. Vincular es especialmente til para mostrar valores de cuadros de lista o listas desplegables. El siguiente cdigo de ejemplo muestra cmo vincular un control Label al contenidodeunalistadesplegable.Utilizandolasetiquetasdeenlace <%# y %>, establecemos el atributo Text del control Label para el elemento seleccionado (SelectedItem)delcuadrodelista:
<asp:Labelid="lblSelectedValue"runat="server" Text="<%#lstOccupation.SelectedItem.Text%>"/>

El siguiente ejemplo muestra el cdigo de un formulario Web Form que se utiliza paravincularelcontrolLabelalcuadrodelista:
<formrunat="server"> <asp:DropDownListid="lstOccupation" autoPostBack="true"runat="server"> <asp:ListItem>ProgramManager</asp:ListItem> <asp:ListItem>Tester</asp:ListItem> <asp:ListItem>UserAssistance</asp:ListItem> </asp:DropDownList> <p>Youselected:<asp:Labelid="lblSelectedValue" Text="<%#lstOccupation.SelectedItem.Text%>" runat="server"/> </p> </form>

Enelcdigoanterior,lapropiedadAutoPostBack delalistadesplegableest establecida a True, que provoca el postback automtico cuando cambia el valor delcuadrodelista.

ProgramacinenASP.NET 83 JEREYBE

Enelprocedimientodeevento Page_Load,invocamoselmtodo DataBind de todalapginaodelcontrolLabel,comomuestraelsiguientecdigo:


SubPage_Load(sAsObject,eAsEventArgs)_ HandlesMyBase.Load lblSelectedValue.DataBind() EndSub

También podría gustarte