Está en la página 1de 45

Desarrollo de Aplicaciones

Capítulo 01
Introducción a la plataforma
Microsoft.NET

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Agenda
• Bibliografía y referencias
• Repaso sesión anterior.
• Arquitectura de aplicaciones
– Arquitectura de 2 capas
– Arquitectura de 3 capas
– Internet
– Servicios Web
– SOA
– Modelo de Capas
• Plataforma Microsoft
– Introducción
– Arquitectura .NET Framework
– Lenguajes y proceso de Compilación
– CLR (Common Language Runtime)
– Clases base (BCL)
– Framework Class Library (FCL)
– Evolución de .NET
• Visual Studio 2005 y C#
– Producto VS2005 y ediciones
– Tipos de Proyectos
– Estructura básica de un programa C# / Programación de consola
– Namespaces y jerarquías
– Clases y Objetos: creación y utilización.
• Que veremos la próxima sesión?
Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Bibliografía / Referencias
1. Separata y diapositivas del curso.
2. Learning C# 2005. Caps 1 (C# and .Net Programming), 2 (Visual Studio 2005), 6 (OOP),
7 (Classes).
3. Wikibooks C# Programming. Caps 1 (Foreword), 2 (Getting started).
4. Microsoft Visual C# 2005 Step by Step. Caps. 1 (Welcome to C#).
5. Documento de estándares de desarrollo y consideraciones de arquitectura.
6. Arquitectura de aplicaciones de .NET: Diseño de aplicaciones y servicios
(http://www.microsoft.com/spanish/msdn/arquitectura/das/distapp.mspx)
7. Smart Client Architecture and Design Guide - patterns & practices.
8. Pro Service-Oriented Smart Clients with .NET 2.0
9. NET Framework (http://en.wikipedia.org/wiki/.NET_Framework)
10. NET Languages (http://en.wikipedia.org/wiki/Microsoft_.NET_Languages)
11. Illustrated C# 2005 (Apress)
12. C# Language Specification (documento word)
13. Visual C# - Language Concepts (http://msdn2.microsoft.com/en-
us/library/kx37x362(VS.80).aspx)
14. Softsteel Tutorial: http://www.softsteel.co.uk/tutorials/cSharp/lesson1.html
15. Meshplex Tutorial: http://www.meshplex.org/wiki/C_Sharp_Tutorial
16. FunctionX Tutorial: http://www.functionx.com/csharp/index.htm
17. Msdn Express Tutorials: http://msdn.microsoft.com/vstudio/express/beginner/

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Repaso sesión anterior

• Presentación y overview del Curso.


• Ver diapositivas previas.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

• Arquitecturas y su evolución

“Thin” Client
XML
Web
Lógica del Cliente
service
Lógica del Negocio “Fat” Client
Almacenamiento

1-Tier
(monolítica) 2-Tier
3-Tier
N-Tier
Internet
Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

• Arquitectura de 2 Capas
– Capa de UI / Cliente Pesado
• Interfaz de Usuario, mediante archivos EXE.
• Servicios y librerías de lógica de negocio en DLLs.
– Capa de Datos
• Motor de Base de Datos Relacional.
• Tablas, vistas, procedimientos almacenados.

Aplicaciones: Base de Datos:


Visual Basic SQL Server
Power Builder Sybase SQL
Delphi InterBase
Developer 2000 Oracle
Java DB2

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

• Arquitectura de 3 a “n” Capas


– Capa de UI / Cliente Ligero
• Interfaz de usuario (web o windows) + lógica de validación de
cliente.
• Visualización de reportes.
– Capa de Lógica de Negocio / Servidor de Aplicaciones
• Librerías y componentes que encapsulan la lógica del proceso
del negocio.
• Comunicación con sistemas externos, interfaces.
• Lógica de reportes.
• Procesos transaccionales.
• Seguridad.
– Capa de Datos
• Motor de Base de Datos Relacional.
• Tablas, vistas, procedimientos almacenados.

Aplicaciones: Servidor de Aplicaciones:


Visual Basic Win NT 4.0: MTS
Power Builder Win 2003: COM+ Server
Delphi
Developer 2000 Base de Datos:
Java SQL Server
Sybase SQL
InterBase
Oracle
DB2
Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

• Arquitectura de Aplicaciones Web / Internet


– Capa de UI / Cliente Ligero
• Interfaz de usuario web
• Browser (Internet Explorer, Firefox, Opera, etc.)
– Capa de Lógica de Negocio / Servidor Web
• Páginas estáticas (html + css + gráficos)
• Páginas dinámicas (ASP.Net)
• Corren sobre IIS (Internet Information Server)
• Seguridad.
– Capa de Datos
• Motor de Base de Datos Relacional.
• Tablas, vistas, procedimientos almacenados.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

• Servicios Web
– Cliente: Cualquier aplicación (windows, web, otro WS, etc.)
– Servidor Web
• SOAP (Simple Objects Access Protocol)
• XML (eXtended Markup Language)
• WSDL (Web Services Description Language)
• DISCO (Discovery)
• UDDI (Universal Description, Discovery And Integration)
– Servidor de Datos
• Motor de Base de Datos Relacional.
• Tablas, vistas, procedimientos almacenados.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

• SOA
– Service-Oriented
Architecture.
– Evolución de las
arquitecturas.
– Se puede implementar
utilizando servicios Web.
– Concepto de Bus de
Servicios.
– Comunicación entre
múltiples áreas y
departamentos.
– Comunicación con el
exterior.
– Reutilización de
servicios.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

• Modelo de Capas
– Idea
• Separar las funcionalidades de la aplicación en bloques
independientes que se comunican entre sí.
– Ventajas
• Reutilización del Software.
• Estas funcionalidades pueden estar en ubicaciones diferentes,
incluso con tecnologías diferentes.
• Lenguajes diferentes de .NET.
• Posibilidad de usar Servicios Web.
• Se puede repartir el Diseño de la aplicación entre varios equipos
de desarrolladores.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Arquitectura de Aplicaciones

Modelo de Capas
• Interfaz de Usuario
– Se centra en las acciones de peticiones y
respuesta del usuario.
– Gestiona el modelado de la interfaz de usuario
– Contiene lógica para el formateo y lógica de
validación de entradas no relacionadas con el
negocio
– Maneja las excepciones lanzadas por las otras
capas.
• Lógica de Dominio
– Contiene los objetos de negocio usado a través
de las distintas capas.
– Contiene las relaciones entre los objetos del
dominio.
– Es rica en Lógica de Negocio.
• Persistencia
– Se usa para comunicarse con un
almacenamiento persistente como una base de
datos SQL Sever.
– Proporciona un lenguaje de consulta.
– Posible capacidades de mapeo de tablas
relacionales.
– Comunicación con otras interfaces de acceso a
bases de datos.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Que es .Net Framework?


• Es una infraestructura sobre la que se reúne todo un conjunto de
lenguajes y servicios que simplifican enormemente el desarrollo de
aplicaciones.
• Es el entorno para crear, distribuír y ejecutar las aplicaciones
desarrolladas en la plataforma Microsoft.
• Tiene un conjunto de componentes:
– Lenguajes de programación (VB, C#, C++, etc.)
– Runtime de Lenguaje Común (CLR)
– Librería de Clases .NET (FCL, BCL)
• Microsoft: CSharp, VisualBasic, Win32
• System: Windows, Web, Drawing, Data, XML, etc.
• Junto con Microsoft Visual Studio conforman la plataforma de desarrollo
de aplicaciones de Microsoft.
• Es componente esencial de Microsoft Windows Vista y de futuros
sistemas operativos de Microsoft.
• Es gratuito y se puede descargar desde la web oficial de Microsoft.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Arquitectura y Componentes de .NET Framework

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Lenguajes
• Net Framework soporta múltiples
lenguajes de programación y aunque
cada lenguaje tiene sus características
propias, es posible desarrollar cualquier
tipo de aplicación con cualquiera de
estos lenguajes.
• Existen más de 30 lenguajes adaptados
a .Net, desde los más conocidos como
C# (C Sharp), Visual Basic o C++ hasta
otros lenguajes menos conocidos como
Perl o Cobol.
• El compilador específico del lenguaje
genera el CIL (Common Intermediate
Language).
• El CIL se compila en lenguaje máquina
por el CLR.
• Apoyado en el CTS para el intercambio
de tipos de datos.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Proceso de Compilación y Ejecución

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Proceso de Compilación y Ejecución (otra vista)

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

CLR
• Tecnología nuclear de la plataforma
Microsoft.
• El CLR es el núcleo del Framework de
.Net, ya que es el entorno de ejecución
en el que se cargan las aplicaciones
desarrolladas en los distintos lenguajes,
ampliando el conjunto de servicios que
ofrece el sistema operativo.
• Provee el Common Type System que
permite unificar los tipos de datos entre
múltiples lenguajes.
• Soporta varios lenguajes de
programación: VB.Net, C#, J#, C++, F#,
Ruby, etc.
• Provee servicios comunes como:
excepciones, depuración, garbage
collector (GC), etc.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Base Class Library (BCL)


• Provee los bloques fundamentales para cualquier tipo de aplicación, sea windows, web, o
un servicio web.
• La administra un equipo especializado de Microsoft (http://blogs.msdn.com/bclteam).
• Sirve de base para otras clases y librerías del Framework Class Library (FCL).

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

.NET Framework Class Library (FCL)


• Conjunto de clases y tipos que
permiten desarrollar aplicaciones.
• Puede ser utilizado por cualquier
lenguaje-CLR.
• Está organizada en un árbol
jerárquico.
• System, System.Web, System.Data
(ADO.NET), System.Windows.Forms,
System.XML, etc.
• Es un superset de la Base Class
Library (BCL).

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Evolución de .NET

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Plataforma Microsoft

Evolución de .NET 3.0

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#
Microsoft Visual Studio 2005
• Entorno integrado de desarrollo de
aplicaciones.
• Provee herramientas para agilizar el desarrollo.
• Se puede crear:
– Aplicaciones de Consola
– Aplicaciones Windows
– Aplicaciones Web
– Servicios Web
– etc.
• Utilizado ampliamente en el mundo.
• Provee múltiples lenguajes de programación
(VB,C#,C++,J#) y soporta cualquier lenguaje-
CLR (python).
• Ediciones:
– Visual Studio 2005 Express
– Visual Studio 2005 Standard
– Visual Studio 2005 Professional
– Visual Studio 2005 Team System
• Para Arquitectos
• Para Desarrolladores
• Para Testers
• Para Profesionales de Bases de Datos (DBA)
• Suite (todas las ediciones de TS)
– Team Foundation Server (licenciado aparte)
• Próximamente Orcas (VS2008) !!

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Ediciones

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Tipos de Proyectos

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#
Tipos de Proyectos

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Estructura de un programa C# (Consola)


1. Crear un proyecto Consola en C# (ProgramaDeConsolaEjemplo)

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Estructura de un programa C# (Consola)


2. Crear un proyecto Consola en C# (ProgramaDeConsolaEjemplo)

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#
Estructura de un programa C# (Consola)
3. Agregar el siguiente código:
using System;
using System.Collections.Generic;
using System.Text;

namespace ProgramaDeConsolaEjemplo
{
class Program
{
static void Main(string[] args)
{
//Mostrar mensajes
Console.WriteLine("Bienvenidos !!");
Console.WriteLine("Este es un ejemplo de un programa en CSharp.");

//Esperar que el usuario presione enter


Console.ReadLine();

//Terminar el programa
return;
}
}
}
Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#
Estructura de un programa C# (Consola)
4. Ejecutar presionando F5 (Debug / Start Debugging):

5. Presionar Enter para terminar la ejecución.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Estructura de un programa C#

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Namespaces
• Proveen una manera de organizar las clases y tipos.
• Es un agrupamiento lógico, no físico (assemblies).
• Son utilizado en toda la jerarquía de clases del .Net Framework.
• Al agregar una clase a un namespace le da un nombre largo:
Namespace.NombreClase
namespace CustomerPhoneBookApp
{
using System;
CustomerPhoneBookApp.Subscriber
public class Subscriber
{
// Code for class here...
}
}

Referencias
• http://www.functionx.com/csharp/fundamentals/Lesson04.htm
Desarrollo de aplicaciones .NET
Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Namespaces
• Se puede crear jerarquías lógicas con los namespaces:
namespace Wrox
{
namespace ProCSharp
{
namespace Basics Wrox.ProCSharp.Basics.MyClass
{
class MyClass
{
// Code for the class here...
}
}
}
}

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Namespaces
• Utilizar “using” para disminuir el tamaño del nombre al
referenciar:
using Wrox.ProCSharp;

class Test
{
public static int Main()
{
Basics.MyClass tempObject = new Basics.MyClass();
// Utilizar el objeto creado.
return 0;
}
}

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Las dos formas de declarar la jerarquía de namespaces es equivalente:

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Clases y Objetos
• Una clase es un estructura de datos que combina estado (atributos) y
acciones (métodos, eventos).
• Soportan el polimorfismo, encapsulamiento y herencia.
• Todo lo que se usa en C# es un objeto.
• Objeto es la instancia de una clase.
• Los objetos son instanciados, significa que es creado de una plantilla
definida por una clase o estructura.
• Los objetos usan atributos y propiedades para cambiar y obtener su
estado.
• Los objetos disponen de métodos y eventos para realizar acciones.
• Todos los objetos derivan de la clase “object” (System.Object).
• El GC invoca automáticamente los “destructores”.
• El GC limpia la memoria automáticamente y elimina los objetos sin
utilizar o referenciar.

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

public class Point Point p1 = new Point(0, 0);


{
public int x, y; Point p2 = new Point(10, 20);
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}

public class Point Point a = new Point(10, 20);


{
public int x, y; Point b = new Point3D(10, 20, 30);
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}

public class Point3D: Point


{
public int z;
public Point3D(int x, int y, int z): base(x, y)
{
this.z = z;
}
}

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

class Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}

class Test
{
static void Main()
{
Point[] points = new Point[100];
for (int i = 0; i < 100; i++) points[i] = new Point(i, i);
}
}

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#
using System;
using System.Collections.Generic;
using System.Text;

namespace ProgramaDeConsolaEjemplo
{
class Program
{
static void Main(string[] args)
{
//Crear el objeto Circulo y asignarle el valor del radio
Circulo MiCirculo = new Circulo(5);

//Mostrar el área del circulo


Console.WriteLine("Area del Circulo = "+ MiCirculo.ObtenerArea());

//Presionar enter para terminar la ejecución


Console.ReadLine();
return;
}
}
public class Circulo
{
//Atributo
private double _radio;

// Constructor
public Circulo(double radio)
{
_radio = radio;
}

//Método
public double ObtenerArea()
{
return 3.141592 * _radio * _radio;
}
}
}

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Visual Studio 2005 y C#

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Que veremos la próxima sesión?

• Sintaxis C#
– Tipos
– Variables
– Operadores
– Constantes
– Cadenas
• Depuración de errores

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)
Fin de la sesión

• Dudas, comentarios, sugerencias?


• Comunicarse por email a eriveraa@gmail.com
• Gracias por su atención !!

Desarrollo de aplicaciones .NET


Eduardo Rivera Alva - MCTS.Net (eriveraa@gmail.com)