FundamentosNETC#
-
Upload
diego-andres-cepeda -
Category
Documents
-
view
256 -
download
4
Transcript of FundamentosNETC#
Microsoft .NET{Arquitectura y Fundamentos}
Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA
Twitter serandvaracoFacebook http://www.facebook.com/
unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]
@serandvaraco
Introducción a Microsoft .NET
• ¿Qué no es .NET?• ¿Qué es .NET?• .NET Como evolución de COM
¿Qué NO es .NET?
.NET no es un Sistema Operativo
.NET no es un Lenguaje de Programación
.NET no es un Entorno de Desarrollo
.NET no es un Servidor de Aplicaciones
.NET no es un producto empaquetado que se pueda comprar como tal
¿Qué es .NET?
Plataforma de Desarrollo compuesta de
• Entorno de Ejecución (Runtime)• Bibliotecas de Funcionalidad (Class Library)• Lenguajes de Programación• Compiladores• Herramientas de Desarrollo (IDE & Tools)• Guías de Arquitectura
La evolución de la plataforma COM
Librerías Administrada
s
CLR 1.1
.NET Framework1.1 SP1
Librerías Administradas
CLR 2.0
.NET Framework2.0 SP2
Librerías Administradas
(adición de WPF, WCF, WF)
CLR 2.0
.NET Framework3.0 SP1
Instalado por Windows Vista,
Windows Server 2008
Librerías Administradas
CLR 2.0
.NET Framework3.5 SP1
Instalado por Windows 7
Versión 3.5 SP1 con novedades
Librerías Administradas
CLR 4
.NET Framework 4
Versión 3.5 SP1 con novedades
Versión 4 con novedades
Preview … MetroStyle
Características de .NET (1/2)
• Plataforma de ejecución intermedia• 100% Orientada a Objetos• Multilenguaje• Plataforma Empresarial de Misión
Crítica
Características de .NET (2/2)
• Modelo de Programación único para todo tipo de aplicaciones y dispositivos de hardware
• Se integra fácilmente con aplicaciones existentes desarrolladas en plataformas Microsoft
• Se integra fácilmente con aplicaciones desarrolladas en otras plataformas
Plataforma de Ejecución Intermedia
Entorno de Desarrollo
Mic
rosoft
.N
ET
Librerías de Funcionalidad
Lenguajes de Programación
Entorno de Ejecución
Sistema Operativo (Familia Windows)
Aplicación .NET
¿Qué es el .NET Framework?
• Paquete de software fundamental de la plataforma .NET. Incluye:
• Entorno de Ejecución (Runtime)• Bibliotecas de Funcionalidad (Class Library)
• Se distribuye en forma libre y gratuita
• Existen tres variantes principales:• .NET Framework Redistributable Package
• .NET Framework SDK
• .NET Compact Framework
• Está instalado por defecto en Windows 2003 Server o superior
.NET Compact Framework
ü*ü
ü
ü*ü
AplicaciónMóvil
Aplicación de Consola
Aplicación Web
Aplicación de Escritorio
¿Dónde instalar el .NET Framework?
ServidorCliente
* Sólo si la aplicación es distribuída
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET y XML
ASP.NET Windows Forms
Common Language Specification
VB C++ C# J# …
Arquitectura del .NET Framework.N
ET
Fra
mew
ork
Red
istr
ibut
able
.NE
T F
ram
ewo
rk S
DK .N
ET
Fram
ework
Class Library
CLR - Arquitecturas de Ejecución de Aplicaciones
CLR – Common Language Runtime
El CLR es el motor de ejecución (runtime) de .NETCaracterísticas
• Compilación Just-In-Time (JIT)• Gestión automática de memoria (Garbage Collector)• Gestión de errores consistente (Excepciones)• Ejecución basada en componentes (Assemblies)• Gestión de Seguridad• Multithreading
CLR – Componentes Internos
Class Loader
IL to NativeCompilers
CodeManager
GarbageCollector
Security Engine Debug Engine
Type Checker Exception Manager
Thread Support COM Marshaler
Base Class Library Support
Código Fuente
Cualquier lenguaje .NET
Compilador
Assembly (MSIL)
Bibliotecao Ejecutable
CLR – Proceso de Compilación
CLR - MSIL
.method private hidebysig static void Main(string[] args) cil managed {
.entrypoint maxstack 8 L_0000: ldstr "Hola Mundo" L_0005: call void [mscorlib]System.Console::WriteLine(string) L_000a: ret }
¿Qué es un “Assembly”?
Un Assembly es la unidad mínima de ejecución, distribución, instalación y versionado de aplicaciones .NET
Metadata
Código CompiladoMSIL
Recursos
MiBiblioteca.DLL
Descripción de TiposClasesClases BaseInterfaces ImplementadasAtributos de las ClasesMétodos de las Clases
NombreVersiónCultura
Manifiesto del Assembly
Otros AssembliesPermisos de SeguridadTipos Externos
Assemblies - Aplicaciones .NET
Uno o más AssembliesAl ejecutar una aplicación, ¿cómo ubico los assemblies necesarios?
• El Class Loader busca en el directorio local (preferido)• Global Assembly Cache (GAC)
Diferentes aplicaciones pueden usar diferentes versiones• Actualizaciones más simples• Desinstalación más simple
.NET Framework Class Library
Conjunto de Tipos básicos (clases, interfaces, etc.) que vienen incluídos en el .NET Framework Los tipos están organizados en jerarquías lógicas de nombres, denominados NAMESPACESLos tipos son INDEPENDIENTES del lenguaje de desarrolloEs extensible y totalmente orientada a objetos
.NET Framework Class LibraryEl namespace raíz es SYSTEM
System
System.Data System.Xml
System.Web
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security
Common
OleDb
SqlClient
Odbc
XPath
XSLT
Runtime
InteropServices
Remoting
Serialization
Serialization
Configuration SessionState
Caching Security
Services
Description
Discovery
Protocols
UI
HtmlControls
WebControls
System.Drawing
Imaging
Drawing2D
Text
Printing
System.Windows.FormsDesign ComponentModel
Common Language Specification (CLS)
Especificación que estandariza una serie de características soportadas por el CLRContrato entre diseñadores de lenguajes de programación y autores de bibliotecasPermite la interoperabilidad entre lenguajesMicrosoft provee implementaciones de 4 lenguajes, todos compatibles con CLS
• Microsoft Visual Basic .NET• Microsoft Visual C# .NET• Microsoft Visual J#.NET• Microsoft Visual C++.NET
Common Language Specification (CLS)
El resto de la industria y el sector académico han desarrollado más de 20 lenguajes compatibles con la especificación CLS
Cobol
Eiffel
Fortran
Pascal
Perl
C++.NET C#
Haskell
Java JavaScript
Visual Basic.NET
Mercury
ML
PHP
Objective Caml
Oberon Smalltalk Scheme
J#
RPG
Mondrian
APL
Delphi Python
LISP Prolog
CLS - Elección del lenguaje
.NET posee un único runtime (el CLR) y un único conjunto de bibliotecas para todos los lenguajesNo hay diferencias notorias de performance entre los lenguajes provistos por MicrosoftEl lenguaje a utilizar, en gral., dependerá de su experiencia previa con otros lenguajes o de gustos personales
• Si conoce Java, Delphi, C++, etc. C#• Si conoce Visual Basic o VBScript VB.NET
Los tipos de aplicaciones .NET son INDEPENDIENTES del lenguaje que elija
VB.NETCódigoFuente
Compilador VB.NET
C++.NETC#
AssemblyCódigo MSIL
Sistema Operativo (Windows)
Common Language Runtime
Compilador JIT
Código Nativo
Código Manejado
ComponenteNo Manejado
Modelo de Ejecución del CLR
CompiladorC#
CompiladorC++ .NET
AssemblyCódigo MSIL
AssemblyCódigo MSIL
Debug Engine
CompiladorJIT
Assembly en la máquina
destino
Modelo de Ejecución del CLR
Assembly
Desarrollo Instalación
Instalación
Ejecución
AssemblyLoader
SeguridadClass Loader
.exe Nativo+
Tabla GC
Code Manager
Garbage Collector
Manejador Excepciones
Soporte MultiThread
COM Interop
Policy<?xml version="1.0" encoding="utf-8" ?><configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"
PythonBinder
RubyBinder
COMBinder
JScriptBinder
ObjectBinder
.NET Dynamic Programming
Dynamic Language Runtime
Expression Trees Dynamic Dispatch Call Site Caching
IronPython IronRuby C# VB.NET Others…
CTS (Common Type System)Define un conjunto común de “tipos” de datos orientados a objetos
Todo lenguaje de programación .NET debe implementar los tipos definidos por el CTS
Todo tipo hereda directa o indirectamente del tipo System.Object
Define Tipos de VALOR y de REFERENCIA
Todo tipo hereda directa o indirectamente del tipo System.Object
Define Tipos de VALOR y de REFERENCIA
La Memoria y los Tipos de DatosEl CLR administra dos segmentos de memoria: Stack (Pila) y Heap (Montón)
El Stack es liberado automáticamente y el Heap es administrado por el GC (Garbage Collector)
Los tipos VALOR se almacenan en el Stack
Los tipos REFERENCIA se almacenan en el Heap
Los tipos VALOR se almacenan en el Stack
Los tipos REFERENCIA se almacenan en el Heap
Microsoft .NET{Conociendo el Lenguaje C Sharp}
Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA
Twitter serandvaracoFacebook http://www.facebook.com/
unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]
VB.NET y C# - Terminación de línea
C#: la línea finaliza con un “ ; ”
VB.NET: la línea finaliza con un salto de línea
//Una linea con mas de un renglonstring nombre = primerNombre + apellido; //El punto y coma indica FINAL de linea
'Una linea con mas de un renglonDim nombre As String = primerNombre & _ apellido
VB.NET y C# - Declaración de Bloques
En C# los bloques se declaran entre llaves
En VB.NET cada bloque tiene su sentencia de apertura y su sentencia de cierre, que normalmente empieza con la palabra “End”
class MainClass{public static void Main(string[] args) {
Console.WriteLine("Hello World!");}
}
Class MainPublic Shared Sub Main()
Console.WriteLine("Hello World!")End Sub
End Class
VB.NET y C# - ComentariosC# soporta tres tipos de comentarios
string nombre = “Juan”; // Comentario de una sola línea /* Comentario con mas de una línea*/
/// <summary>/// Documentación XML que puede ser consumida por otras /// herramientas para mostrar ayuda dinámica o generar /// documentación en varios formatos/// </summary>public class Matematica { /// <summary> /// Calcula la suma de dos números enteros /// </summary> /// <param name="x">El primer operando de la suma</param> /// <param name="y">El segundo operando de la suma</param> /// <returns> La suma entera de ambos operandos</returns> public int Sumar (int x, int y) {return x + y;}}
VB.NET y C# - Case Sensitivity
C# distingue entre mayúsuclas y minúsculas
VB.NET no distingue entre mayúsuclas y minúsculas
system.console.writeline(“HOLA”); INCORRECTO
System.Console.WriteLine(“HOLA”); CORRECTO
system.console.writeline(“HOLA”) CORRECTO
System.Console.WriteLine(“HOLA”) CORRECTO
Tipos de Datos
Categoría Clase Descripción C# AliasVB.NET
Alias
Enteros Byte Un entero sin signo (8-bit) byte Byte
SByte Un entero con signo (8-bit) sbyte Sbyte
Int16 Un entero con signo (16-bit) short Short
Int32 Un entero con signo (32-bit) int Integer
Int64 Un entero con signo (64-bit) long Long
Punto Flotante Single Un número de punto flotante de simple precisión (32-bit) float Single
Double Un número de punto flotante de doble precisión (64-bit) double Double
Decimal Un número decimal de 96-bit decimal Decimal
Lógicos Boolean Un valor booleano (true o false) bool Boolean
Otros Char Un caracter Unicode (16-bit) char Char
Object La raíz de la jerarquía de objetos object Object
String Una cadena de caracteres unicode inmutable y de tamaño fijo string String
VB.NET y C# - Alcance de miembros
Miembro: se refiere a los campos, propiedades, métodos, eventos, clases anidadas, etc.
C#: todo miembro es declarado como PRIVATE por default
VB.NET: todo miembro es declarado como PUBLIC por default
Modificadores de acceso disponibles:
Protected Friendprotected internalProtectedprotectedFriendinternalPrivateprivatePublicpublic
VB.NETC#
VB.NET y C# - Declaración de Variables
C#: el tipo de dato precede al identificador (nombre)
VB.NET: comienza con “Dim” o algún modificador de acceso (Public, Private, etc.) + identificador de la variable + “As” Tipo de Dato
int x;decimal y;rectangle z;Cliente cli;
Dim x As Integer ‘Dim es = a Private por defectoDim y As DecimalDim z As RectangleDim cli As Cliente
VB.NET y C# - Inicialización de Variables
C#: toda variable debe ser inicializada EXPLICITAMENTE antes de ser usada
VB.NET: inicializa automáticamente las variables en CERO o en Nothing
int tempBalance; //variable local//ERROR: tempBalance NO ha sido inicializadaSystem.Console.WriteLine(tempBalance);
Dim tempBalance As Integer'SIN ERROR: tempBalance vale CEROSystem.Console.WriteLine(tempBalance)
VB.NET y C# - Conversiones de Tipos
C# no permite conversiones implícitas de tipos
Si falla el cast se devuelve null o InvalidCastException
VB.NET usa las directivas del compilador Option Strict
Si falla el cast siempre se genera una InvalidCastException
Cuenta cta = new CtaCte();CtaCte cc = cta; //Error: puede que cta no sea una CtaCteCtaCte cc = (CtaCte)cta; //Conversion explicita “CASTING”CtaCte cc = cta as CtaCte; //Usando el operador “as”
if (cta is CtaCte) ... //Comp. con el operador “is”
Dim cta As Cuenta = New CtaCte()
Dim cc As CtaCte = cta ‘OK Option Strict OffDim cc As CtaCte = CType(cta, CtaCte) ‘Option Strict On
If TypeOf cta Is CtaCte Then ‘Comp. con TypeOf Is
VB.NET y C# - ArreglosC# utiliza corchetes [ ] para definición de arrays
VB.NET permite definir arrays de varias formas con ()
string[] telefonos; //Definicion de un Arreglo de stringstelefonos = new string[3]; //De 3 elementostelefonos[0] = “1245”; //Seteo del 1er elemento del arreglo
//Definicion y asignacion de una veztelefonos = new string[] {“1”,“2”,“3”};
Dim telefonos As String() ó Dim telefonos() As StringDim telefonos(3) As String ‘Crea un array de 4 elementos telefonos(0) = “1245” ‘Seteo del 1er elemento del arreglo
‘Definicion y asignacion de una vezDim telefonos() As String = {“1”,“2”,“3”}
C# - Matrices
string[,] Nombres; //Definicion de un Matriz de stringsNombres = new string[2,2]; //De 2X2 elementosNombres[0,0] = “Sergio”; //Seteo del 1er elemento de la primera columnaNombres[0,1] = “Vargas”; //Seteo del 1er elemento de la segunda columna
C# utiliza corchetes [,] para definición de matrices
VB.NET y C# - Operadores
Descripción C# VB.NET
Asignación = =
Adición + +
Sustracción - -
Multiplicación * *
División / /
Negación ! not
Módulo (Parte entera de la división) % mod
Mayor > >
Menor < <
Mayor o Igual >= >=
Menor o Igual <= <=
VB.NET y C# - Operadores Lógicos
Distinto<>!=Igual ===Negacion logicaNot!Operador logico OOrllOperador logico YAnd&&
OperadorVB.NETC#
En C# todas las evaluaciones se hacen por “cortocircuito”
//Si Hacer1() es True, entonces //Si Hacer1() es False, entonces//NO se evalua Hacer2() //NO se evalua Hacer2()if (Hacer1() || Hacer2()) if (Hacer1() && Hacer2()){ {} }
En VB.NET se debe utilizar los operadores AndAlso y OrElse
‘Si Hacer1() es True, entonces ‘Si Hacer1() es False, entonces‘NO se evalua Hacer2() ‘NO se evalua Hacer2()If Hacer1() OrElse Hacer2() Then If Hacer1() AndAlso Hacer2() Then ... ...End If End If
if (x > 10) if (x < 10) if (x < 10) if (x < 10) HacerAlgo(); { { { Hacer1(); Hacer1(); Hacer1(); Hacer2(); } } } else else if (x > 20) { { Hacer2(); Hacer2(); } } else { Hacer3(); }
VB.NET y C# - Sentencias condicionalesC#: sentencia if con varios formatos
VB.NET: la sentencia If requiere de la palabra ThenIf x > 10 Then Hacer() If x < 10 Then If x < 10 Then If x < 10 Then Hacer1() Hacer1() Hacer1() Hacer2() Else ElseIf x > 20 Then End If Hacer2() Hacer2() End If Else Hacer3() End If
int a = 0;switch(a) {
case 1:{//CODIGO 1 break;}case 2: {//CODIGO 2 break;}default:{//CODIGO DEFAULT break;}
}
VB.NET y C# - Sentencias condicionalesC#: sentencia case
VB.NET: sentencia caseDim a As Integer = 0Select a
Case 1 'Código 1Case 2 'Código 2Case Else 'Código Default
End Select
VB.NET y C# - Sentencia forC#: la sentencia for consta de tres partes
VB.NET usa las palabras claves For, To, Next y Step
//Partes: declaración, prueba, acciónfor (int i=1; i < 10; i++){}
Dim i As Integer For i = 1 To 100 For i = 1 To 100 Step 2 ‘i se incrementa en 1 ‘i se incrementa en 2Next Next
VB.NET y C# - Sentencia for/each
C#: usa la palabra foreach
VB.NET usa las palabra For Each
string[] nombres = new string[5];foreach(string auxNombre in nombres){ //auxNombre es de SOLO LECTURA}
Dim nombres(5) As StringDim auxNombre As StringFor Each auxNombre In nombres ‘auxNombre NO es de SOLO LECTURA Next
For/Each permite recorrer arreglos y colecciones
VB.NET y C# - Sentencia whileC#:
VB.NET:
bool condicion = true;while (condicion == true){
//En algún momento poner condicion = false}
Dim condicion As Boolean = True While condicion = True 'Poner condicion=false en algún momento End While
Microsoft .NET{POO}
Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA
Twitter serandvaracoFacebook http://www.facebook.com/
unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]
VB.NET y C# - Clases
C#: las clases son declaradas mediante class
VB.NET usa las palabras Class / End Class
//Definicion de la clase CuentaBancariaclass CuentaBancaria{
//Definicion de miembros}
‘Definicion de la clase CuentaBancariaClass CuentaBancaria
‘Definicion de miembrosEnd Class
Sintaxis – Entry Point
C#:public class HolaMundo {
public static void Main(string[] args){//Punto de entrada de la aplicación
}}
VB.NETPublic Class HolaMundo Public Shared Sub Main(ByVal args() As String)
‘Punto de entrada de la aplicación End SubEnd Class
VB.NET y C# - Métodos
En C# todo método es una función
VB.NET usa procedimientos Sub y funciones Function
public void HacerDeposito(int importe) //No devuelve valor{}
public int ObtenerInventario(int codArticulo) //Devuelve un entero{}
Public Sub HacerDeposito(ByVal importe As Integer)‘No devuelve valorEnd Sub
Public Function Inventario(ByVal codArt As Integer) As Integer‘Devuelve un enteroEnd Function
Métodos: acciones que un objeto puede llevar a cabo.
VB.NET y C# - Constructores
En C# tienen el mismo nombre de la clase
VB.NET usa un procedimiento Sub New
class CtaCte{ public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parametro}
Class CtaCte Sub New() End Sub Sub New(ByVal i As Integer) End Sub End Class
Constructor: métodos dentro de la clase que son llamados automáticamente cuando se crea una instancia de dicha clase.
VB.NET y C# - Sobrecarga de Métodos
C#
VB.NET
public void HacerDeposito(int importe) {}
public void HacerDeposito(int importe, bool acreditar){}
Public Sub HacerDeposito(ByVal imp As Integer)End Sub
Public Sub HacerDeposito(ByVal imp As Integer, ByVal acreditar As Boolean)End Sub
Sobrecarga: varios métodos con el mismo nombre pero diferente “firma”.
VB.NET y C# - Métodos estáticos
C#
VB.NET
public static void HacerDeposito(int importe) {
}
Public Shared Sub HacerDeposito(ByVal imp As Integer)
End Sub
Miembros que no requieren de una instancia para ser invocados. Se los llama métodos “de clase”
VB.NET y C# - PropiedadesPropiedad: característica o atributo de un objeto
C# VB.NET
class CtaCte{ int balance; public int Balance { get { return balance; } set { balance = value; } }}
CtaCte cc = new CtaCte();cc.Balance = 100; //AsignaciónMostrar(cc.Balance); //Obtención
Class CtaCte Dim _balance As Integer Property Balance() As Integer Get Return _balance End Get Set (ByVal value As Integer) _balance = value End Set End PropertyEnd Class
Dim cc As New CtaCte()cc.Balance = 100 ‘AsignaciónMostrar(cc.Balance) ‘Obtención
VB.NET y C# - Herencia
En C# la herencia se define:
VB.NET usa la palabra clave Inherits
class Cuenta //Clase Base{ }class CtaCte : Cuenta //Clase Derivada{ }
Class Cuenta ‘Clase BaseEnd Class
Class CtaCte ‘Clase Derivada Inherits CuentaEnd Class
En .NET solose permiteHerenciaSimple
VB.NET y C# - Herencia (Cont.)
En C#
VB.NET
public sealed class Cuenta{//No se puede heredar de esta clase “sellada” }public abstract class Cuenta{//No se pueden crear instancias de esta clase, sólo//de sus derivadas }
Public NotInheritable Class Cuenta‘No se puede heredar de esta claseEnd Class
Public MustInherit Class Cuenta‘No se pueden crear instancias de esta clase, sólo de sus ‘derivadasEnd Class
VB.NET y C# - NamespacesC# VB.NET
namespace BancoARG{ namespace Gestion { public class CtaCte { } public class CajaAhorro { } }}
//Referencia “full”BancoARG.Gestion.CtaCte;BancoARG.Gestion.CajaAhorro;
//Referencia “corta”using BancoARG.Gestion;CtaCte cc = new CtaCte();CajaAhorro ca = new CajaAhorro();
Namespace BancoARG Namespace Gestion Public Class CtaCte End Class Public Class CajaAhorro End Class End NamespaceEnd Namespace
‘Referencia “full”BancoARG.Gestion.CtaCteBancoARG.Gestion.CajaAhorro
‘Referencia a un namespaceImports BancoARG.GestionDim cc As New CtaCte()Dim ca As New CajaAhorro()
VB.NET y C# - Admin. De Excepciones
C#: usa las palabras try/catch/finally
VB.NET usa las palabras Try/Catch/Finally
try{ int resultado = x/y;}catch(DivideByZeroException e){ //Error division por cero}catch{ //Otro error}finally{ //Siempre pasa por aca}
Try Dim resultado As Integer resultado = x/yCatch e As DivideByZeroException ‘Error division por ceroCatch ‘Otro errorFinally ‘Siempre pasa por acaEnd Try
Excepción: condición anómala de funcionamiento de una aplicación
Microsoft .NET{Generics}
Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA
Twitter serandvaracoFacebook http://www.facebook.com/
unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]
permiten definir estructuras de datos de seguridad de tipos, sin comprometerse a tipos de datos reales.
Colecciones Genéricas
List<t>Dictionary<a,b>Seek<t>Queek<t>
ArreglosListas
68
© 2008 Microsoft Corporation. Todos los derechos reservados. Microsoft, Windows, Windows Vista y otros nombres de producto son y pueden ser marcas registradas y registros en Estados Unidos y en otros países.La información contenida en el presente es sólo para fines informativos y representa la visión actual de Microsoft Corporation a la fecha de esta presentación. Debido a que Microsoft debe responder a las cambiantes condiciones del mercado, no se debe interpretar como un compromiso por parte de
Microsoft, y Microsoft no puede garantizar la precisión de ninguna información provista después de la fecha de esta presentación. MICROSOFT NO OFRECE GARANTÍA ALGUNA, EXPRESA, IMPLÍCITA O DE LEY, RESPECTO A LA INFORMACIÓN EN ESTA PRESENTACIÓN.
http://microsoft.com/spanish/msdn/latam/mediacenter/
Microsoft MSDN Latinoamérica te ofrece los últimos recursos multimedia en español para desarrolladores: presentaciones y demostraciones en directo o diferido, vía Internet, brindadas por expertos de Microsoft, las cuales te ayudarán a mantenerte al día con información sobre los productos y tecnologías que utilizas a diario en el desarrollo de tus aplicaciones.
Recursos para los desarrolladores
Preguntas