Professional Documents
Culture Documents
NET y C#
Agenda
La plataforma .NET .NET Framework El lenguaje C# Herramientas de desarrollo Por donde empezar
La plataforma .NET
Qu es .NET?
La combinacin de:
Windows 2003 Server SQL Server Sharepoint Portal Server Content Server Exchange Server Internet Information Server Biztalk Server Commerce Server
Web Services
Proveen una forma estndar de comunicacin entre aplicaciones de mltiples plataformas Utilizan internet Estan basados en estndares abiertos
Lenguajes Datos (XML, esquemas) Pantallas (HTML, WinForms) Recursos (Grficos, archivos varios) Bases de datos Sistema operativo (procesos, threads, event log, servicios) Otros servicios como colas de MSMQ
Componentes Fundamentales
ADO.NET y XML
.NET Framework
Sistema Operativo
.NET Framework
Framework .NET
Base Frame
Base Classes
Code Manager
Class Loader
Ejecucin (threading, gestin de errores) Gestin de memoria Seguridad Diagnstico (debugging, tracing) RTTI
Puntos importantes
Garbage collector Seguridad Manejo de Excepciones entre lenguajes Depuracin entre lenguajes Multi-Threading entre lenguajes Objetos distribuidos Diagnstico, tracing y profiling
Cdigo manejado
Cdigo manejado CLR
Requerimientos Ej.: abrir un archivo Funciones generales Ej.: limpiar memoria
Sistema Operativo
Cdigo intermedio (no nativo) Modelo de VM Verificable No depende de una plataforma en particular Incluye construcciones de alto nivel
Ensamblados (Assemblies)
Assembly
Cdigo MSIL
Manifest
GAC
Establece las reglas para la descripcin y manipulacin de tipos de datos Value types Reference type
Interoperabilidad Inter-lenguaje
Para consumir y ser llamado por otras clases Para heredar y ser heredado por otras clases Basado en el sistema unificado de tipos Soportado por el CLR y los compiladores Las clases deben ser CLS-Compliant El mismo debugger puede usarse para todos los lenguajes Mecanismo uniforme de gestin de errores
Soporte multi-lenguaje
Interoperabilidad
Lenguajes .NET
Ada APL Visual Basic.NET C# Managed C++ J# COBOL Component Pascal(Queensland Univ of Tech) ECMAScript (JScript) Eiffel (Monash University) Haskell (Utrecht University)
lcc (MS Research Redmond) Mondrian (Utrecht) ML (MS Research Cambridge) Mercury (Melbourne U.) Oberon (Zurich University) Oz (Univ of Saarlandes) Perl Python Scheme(Northwestern U.) S#
Interoperabilidad
COM
Los componentes COM se pueden usar como clases .NET Las clases .NET se pueden exportar como componentes COM Todos los servicios de COM+ estn disponibles Para llamar a funciones nativas
P/Invoke
WinForms
Contruccin de aplicaciones Windows Contruccin de aplicaciones Web Estructuras de datos Bases de datos Manipulacin de documentos XML Soporte de I/O (disco, redes, etc.) Sistema de base
WebForms
Clases base
Librera de clases
System.Web
Services Description Discovery Protocols Caching Configuration UI HtmlControls WebControls Security SessionState
System.WinForms
Design ComponentModel
System.Drawing
Drawing2D Imaging Printing Text
System.Data
ADO Design SQL SQLTypes XSLT XPath
System.Xml
Serialization
System
Collections Configuration Diagnostics Globalization IO Net Reflection Resources Security ServiceProcess Text Threading Runtime InteropServices Remoting Serialization
Ventajas en .NET
Entorno unificado
XML WebServices (SOAP, WSDL, etc.) Amplia biblioteca de clases base Abstraccin de los servicios del sistema
Framework de aplicacin
El lenguaje C#
C#: generalidades
(C++)+ = C+++ = C# Sintxis tipo C Orientado a objetos De propsito general Soporte de componentes Complementamente integrado a .NET Estndar
Estructura general
Basado en bloques
No hay funciones libres (fuera de clases) Sensible a maysculas El espacio en blanco no se considera
Sentencias
Soporta Strings
while( <bool expr> ) {} for( <init>; <bool test>; <mod> ) {} do {} while( <bool expr> ); try-catch-throw-finally
Sentencias 2
foreach
Iteracin de contenedores y arreglos Define el mbito de validez de un objeto Sincronizacin (seccin crtica) Protege contra integer overflows Puede trabajar como operador checked (expresin) Para fijar objetos en reas inseguras
using
lock( <object> ) {}
checked {} / unchecked {}
fixed
Operadores
Algebraicos: + - * / % Lgicos: & | ^ ! ~ && || true false Concatenacin (de strings): + Unarios: ++ -Desplazamiento: << >> Relacionales: == != < > <= >= Asignacin: = += -= *= /= %= &= |= ^= <<= >>= Acceso a miembros: . Indice: [] Condicional: :? Informacin de tipos: is sizeof typeof Type casting: () Creacin de objetos: new Indireccin y direcciones: * -> [] &
Directivas de pre-compilacin
No hay pre-procesador en C# #define, #undef #if, #elif, #else, #endif #line #error, #warning #region, #endregion
Definicin de smbolos
Compilacin condicional
Nmeros de lnea
Errores
Regiones
Sistema de Tipos
Int, float, char, structs, enums, punteros, etc Residen en la pila Pasaje como parmetros: ref, out objetos Residen en el heap Heredan de object
Boxing y unboxing
Boxing
private int entero; int i = 123; Unboxing public int MiEntero object o = i; Verifica el tipo de datos int j = (int)o; { get y extrae el valor { return entero; } set { entero = value; } }
i o j
Espacio de nombres
Todo tipo pertenece a un espacio de nombres Pueden anidarse Permiten evitar el choque de nombres Se declaran con namespace Se referencian con using Similares a los paquetes de java, pero mapeo a directorios
Clases
Object es la clase base por omisin Herencia simple Pueden denifirse como: sealed abstract Implementacin mltiple Pueden definir propiedades Son tipos por valor Pueden tener mtodos Pueden implementar interfaces
Interfaces
Structs
Modificadores de visibilidad
Metodos 1
Parmetros variables con param Parmetros de entrada-salida con ref Parmetros de salida con out
Mtodos 2
Hay que indicarlo explicacitamente virtual Al redefenirlos hay que usar el override new permite cortar la cadena virtual
Pueden ser abstractos abstract Pueden ser de clase static Puede evitarse su redefinicin sealed
Se puede definir el significado de operadores para instancias de clases y estructuras Tipos de operadores
Binarios (+, -, /, etc.) Unarios (!, ~, ++, --, etc.) Conversin (typecasting) explcita e implcita
Propiedades
Permiten el acceso a los atributos privados de una intancia Pueden ser de lectura, escritura o ambos Equivalentes a los getters/setters
private int entero; public int MiEntero { get { return entero; } set { entero = value; } }
Delegates
Punteros a funciones, pero tipados y OO Son la base para la implementacin de eventos y.....mejor vemos un ejemplo...
Eventos
No son enclusivos de IU Basados en publicacin-suscripcin Se disparan llamando a una funcin Vemos un ejemplo....
Anotaciones (atributos)
Basadas en el soporte de metadata de .NET Extensibilidad sin modificar el lenguaje Ampliamente utilizados por .NET Framework Definibles por el usuario Las clases de Reflection se usan para explotarlos
.NET 2.0
Herramientas de desarrollo
Entornos de desarrollo
Microsoft Visual Studio Microsoft Web Matrix Borland C# Builder Borland Delphi .NET SharpDevelop MonoDevelop Snippet Compiler C# for Eclipse
Utilitarios
NDoc
A partir de los comentarios de en el cdigo genera documentacin en mltiples formatos Framework de testing unitario Herramienta para hacer builds Analizador de cdigo
Nunit
Nant
FXCop
Frameworks
ORMs
Frameworks de aplicacin
Microsoft .NET Framework Rotor Mono DotGNU SnippetCompiler SharpDevelop MonoDevelop Notepad, Vi, Emacs
Windows Forms ADO.NET XML Direct X Compact Framework ASP.NET Web Services
Sitios de referencia
Proyecto Mono
DotGNU Project
Universidad .NET
Preguntas?