Story Transcript
2007 | 2
2007 | 3
Introducción a Microsoft .NET Framework
2007 | 4
Introducción a Microsoft .NET Framework
2007 | 5
VB
C#
J#
Microsoft JScript®
…
Common Language Specification Framework Class Library
Common Language Runtime Windows Introducción a Microsoft .NET Framework
LINUX 2007 | 6
VB
C#
J#
Microsoft JScript®
…
Common Language Specification Framework Class Library
Common Language Runtime (CLR), es el motor de ejecución de las aplicaciones .NET NET Framework Framework.
Common Language Runtime Windows
LINUX
Los objetivos principales del CLR son simplificar el desarrollo de aplicaciones, ofrecer un entorno de ejecución robusto y seguro, facilitar la distribución y administración, y ofrecer soporte para múltiples lenguajes. p p p g j
Introducción a Microsoft .NET Framework
2007 | 7
VB
C#
J#
Microsoft JScript®
…
Common Language Specification Framework Class Library
Common Language Runtime Windows
Framework Class Library (FCL), ofrece un conjunto de clases, interfaces y tipos p reusables con las funcionalidades más básicas y comunes de la plataforma.
LINUX
Permite implementar:
Aplicaciones de consola. (System.Console). Aplicaciones basadas en formularios Windows. (System.Windows.Forms) Aplicaciones Web ASP.NET y servicios Web (System.Web) Acceso a fuentes de datos (System.Data) A Acceso d de fificheros h y flflujos j (S (System.IO) t IO) y más...
Introducción a Microsoft .NET Framework
2007 | 8
VB
C#
J#
Microsoft JScript®
…
Common Language Specification Framework Class Library
Common Language Runtime Windows
Framework Class Library (FCL), ofrece un conjunto de clases, interfaces y tipos p reusables con las funcionalidades más básicas y comunes de la plataforma.
LINUX
Permite implementar:
Aplicaciones de consola. (System.Console). Aplicaciones basadas en formularios Windows. (System.Windows.Forms) Aplicaciones Web ASP.NET y servicios Web (System.Web) Acceso a fuentes de datos (System.Data) A Acceso d de fificheros h y flflujos j (S (System.IO) t IO) y más...
Introducción a Microsoft .NET Framework
2007 | 9
VB
C#
J#
Microsoft JScript®
…
Common Language Specification Framework Class Library
Common Language Runtime Windows
Common Language Specification (CLS), se trata de un conjunto de construcciones y restricciones que sirve como guía para los escritores de bibliotecas y compiladores.
LINUX
Su finalidad no es otra que la de mejorar la comunicación entre programas escritos en otros lenguajes. Cuando un programa declara su compatibilidad con CLS, significa que puede p ser utilizado con seguridad g en un entorno de múltiples p lenguajes. Introducción a Microsoft .NET Framework
2007 | 10
VB
C#
J#
Microsoft JScript®
…
Common Language Specification Framework Class Library
Microsoft provee compiladores CIL (Common Intermediate Language) g g ) p para C#, J#, C++, VB y JScript.
Common Language Runtime Windows
LINUX
Los lenguajes de programación difieren en su sintaxis p pero (p (prácticamente)) coinciden es su p potencia. Todo código fuente escrito para el framework se reduce a CIL. Terceros desarrollan compiladores CIL para Eiffel Eiffel, Pascal, Python, Cobol, Prolog, etc.
Introducción a Microsoft .NET Framework
2007 | 11
VB
C#
J#
Microsoft JScript®
…
Common Language Specification Framework Class Library
Common Language Runtime Windows
Introducción a Microsoft .NET Framework
LINUX
2007 | 12
VB
C#
J#
Código Fuente
Código Fuente
Código Fuente
Assembly (Dll o Exe) Manifest
VB
C#
J#
Compilador
Compilador
Compilador
Metadata IL Code Resources
Assembly (Dll o Exe)
Introducción a Microsoft .NET Framework
2007 | 13
VB
C#
J#
Código Fuente
Código Fuente
Código Fuente
VB
C#
J#
Compilador
Compilador
Compilador
CLR
( ejecución) (en j ió )
Assembly (Dll o Exe)
Introducción a Microsoft .NET Framework
JIT Compilador
Código Nativo
2007 | 14
class Hello { public static void Main() { System.Console.WriteLine("Hello World!"); } }
. . . .method public static default void Main() cil managed { // Method begins at RVA 0x20f4 .entrypoint // Code size 11 (0xb) .maxstack 8 IL_0000: IL 0000 ldstr ld t "Hello "H ll World!" W ld!" IL_0005: call void class [corlib]System.Console::WriteLine(string) IL_000a: ret } // end of method default void Main() } // end of type Hello
C#
CLR
(en ejecución)
Código Fuente
C# Compilador
Assembly (Dll o Exe)
push %ebp mov %esp,%ebp p, p sub $0x30,%esp push $0x80c9eb0 mov 0x805462c,%eax push %eax cmpl $0x0,(%eax) mov (%eax),%eax call *0x94(%eax) add $0x8,%esp mov 0x805462c,%eax push %eax cmpl $0x0,(%eax) mov (%eax),%eax call *0xb4(%eax) add $0x4,%esp leave JIT ret Compilador
Native x86 machine code (in AT&T assembly language syntax) Introducción a Microsoft .NET Framework
2007 | 15
C#
VB
Introducción a Microsoft .NET Framework
2007 | 16
El objetivo de la ofuscación es crear confusión.. A medida que crece la confusión, confusión disminuye la capacidad de la mente para comprender conceptos intelectuales de varias facetas.. facetas Observe que no se dice nada acerca de modificar la lógica final (ejecutable), sólo de representarla de manera incomprensible incomprensible..
Introducción a Microsoft .NET Framework
2007 | 17
Introducción a Microsoft .NET Framework
2007 | 18
1
Introducción a Microsoft .NET Framework
2007 | 19
2
Introducción a Microsoft .NET Framework
2007 | 20
4
Introducción a Microsoft .NET Framework
2007 | 21
1 2 3 4
Introducción a Microsoft .NET Framework
2007 | 22
C# es un lenguaje de programación simple y robusto orientado a objetos que combina la as simplicidad p c dad de Visual sua Basic as c co con e el pode poder y flexibilidad de C++. C++.
Lenguaje: Visual C#
2007 | 23
C# es un lenguaje de programación simple y robusto orientado a objetos que combina p de Visual Basic con el p poder y la simplicidad flexibilidad de C++. C++.
C# ha sido diseñado específicamente por Microsoft para ser la opción de lenguaje para escribir las aplicaciones para su nueva plataforma .NET (plataforma de desarrollo desa o o diseñada d se ada pensando pe sa do e en Internet) e e)
Lenguaje: Visual C#
2007 | 24
La primero por comprender cuando se codifica en C#, es que cuando uno define una clase y sus métodos, la definición de éstos métodos d b deben estar t d t dentro d l propio del i cuerpo de d la l clase.. clase
Lenguaje: Visual C#
2007 | 25
C++ Lenguaje: Visual C#
C# 2007 | 26
TODO ES UN OBJETO, herencia OBJETO ya que tiene i h i implícita de System. System.Object Object
Value Types
Reference Types
Primitive types: int, double, etc.
Classes
Enumeration
Arrays
User defined types: structs
Interfaces
Lenguaje: Visual C#
2007 | 27
Lenguaje: Visual C#
Espacio
C#
VB .NET
.NET Framework
2 Bytes
short
Short
System.Int16
4 Bytes
int
Integer
System.Int32
8 Bytes
long
Long
System.Int64
…
…
…
… 2007 | 28
Posibles Valores
Espacio
C#
VB .NET
.NET Framework
-32768 / 32767
2 Bytes
short
Short
System.Int16
-2147483648 / 2147483647
4 Bytes
int
Integer
System.Int32
-9223372036854775808 / 9223372036854775807
8 Bytes
long
Long
System.Int64
0 / 255
1 Byte
byte
Byte
System.Byte
-128 / 127
1 Byte
sbyte
---
System.Sbyte
0 / 65535
2 Byte
ushort
---
System.UInt16
0 / 4294967295
4 Byte
uint
---
System.UInt32
0 / 18446744073709551615
8 Byte
ulong
---
System.UInt64
±1.5 × 10−45 / ±3.4 × 1038
4 Byte
float
Single
System.Single
324 / ±1.7 ±5 0 × 10−324 ±5.0 ±1 7 × 10308
8B Byte t
d bl double
D bl Double
S t System.Double D bl
±1.0 × 10−28 / ±7.9 × 1028
12 Byte
decimal
Decimal
System.Decimal
true / false
2 Byte
bool
Boolean
System.Boolean
Cualquier Caracter Unicode 16-bit
2 Byte
char
---
System Char System.Char
Cualquier cadena de caracteres
variable
string
String
System.String
Lenguaje: Visual C#
2007 | 29
Los arreglos están L l á basados en la clase System..Array System de .NET Framework y sus índices comienza i en cero cero..
Lenguaje: Visual C#
2007 | 30
Los arreglos están L l á basados en la clase System..Array System de .NET Framework y sus índices comienza i en cero cero..
Lenguaje: Visual C#
2007 | 31
Las estructuras (structs structs)) permiten agrupar código y datos pero, a diferencia de las clases, no permiten herencia, eventos y siempre son pasadas por valor. valor.
Lenguaje: Visual C#
2007 | 32
Lenguaje: Visual C#
2007 | 33
Una clase es como una plantilla que describe cómo deben ser las instancias de dicha clase (objetos), de forma que cuando se crea una instancia,, ésta tendrá exactamente los mismos métodos y variables que tiene la clase. clase.
Lenguaje: Visual C#
2007 | 34
Lenguaje: Visual C#
2007 | 35
Campos (variables miembros)
Cuerpo
Constructor (sobrecargado)
Propiedades (valores accedidos a través de get/set )
Métodos (funcionalidad)
Lenguaje: Visual C#
2007 | 36
La herencia es un mecanismo que permite que una clase p pueda adquirir q las cualidades de otra ya existente. existente. C# posee herencia simple y puede implementar más de una Interface (igual que Java) Java)..
2007 | 37
La herencia es un mecanismo que permite que q una clase p pueda adquirir las cualidades de otra ya existente. existente. C# posee herencia simple y puede implementar más de una Interface (igual que Java) Java).. ∃/ Herencia Multiple de Clases como C++
Anfibio Auto
Lenguaje: Visual C#
Lancha
2007 | 38
Clase Abstracta
Clase Base
Clases Derivadas
Lenguaje: Visual C#
2007 | 39
Es una declaración que define un tipo de que p puede ser usada p para referencia q encapsular un método con una signatura específica.. específica Delgates son aproximadamente similares a los p punteros a funciones en C++ C++..
Lenguaje: Visual C#
2007 | 40
Lenguaje: Visual C#
2007 | 41
Una interface es un contrato entre dos piezas de código código.. Permite definir métodos y propiedades “abstractas”, “abstractas” ya que no requieren definir código de ejecución interno.. interno
Una interface siempre implementada por una clase. clase.
Lenguaje: Visual C#
es
2007 | 42
Lenguaje: Visual C#
2007 | 43
Forma de agrupar F d LÓGICAMENTE clases. clases. Un namespace puede contener a clases y a otros namespace.. namespace Referenciados con using
Lenguaje: Visual C#
2007 | 44
Category of Operator
Operators
Primary
new, typeof, sizeof
Unary
+, -, !, ~, ++x, - -x
Multiplicative
*, /, %
Additive
+ +,
Shift
Relational
Admiten sobrecarga
, =, is(is used to check whether the run-time type of an object is compatible with a given type)
Equality
==
Logical AND
&
Logical XOR
^
Logical OR
|
Conditional AND
&&
Conditional OR
||
Conditional
?:
Assignment
=, *=, /=, %=, -=, =, &=, ^=, |=
Lenguaje: Visual C#
2007 | 45
Statements St t t
Selection Statements
if (expression) statement1 [else statement2]
if (expression) { statement1 statement2 }
switch (switch_expression) {case constant-expression: statement jump-statement case constant-expressionN: statementN [default]}
while hil (Boolean-expression) ( l i ) embedded-statement Iteration Statements
Branching with Jump Statements
Lenguaje: Visual C#
do embedded-statement while(Boolean-expression)
for (initialization; Boolean-expression; step) embedded statement embedded-statement
foreach (type in expression) embedded-statement
break; continue; goto;
2007 | 46
Los programas deben poder d b d controlar l los l errores que se producen durante la ejecución de manera uniforme. uniforme Todas las operaciones de .NET Framework i f informan d un error iniciando de i i i d excepciones i y son controladas mediante las sentencias Try/Catch/Finally
Lenguaje: Visual C#
2007 | 47
Lenguaje: Visual C#
2007 | 48
Los atributos son un mecanismo para añadir metadatos a un programa (como instrucciones all compilador y otros datos sobre il d t d t b propiedades, métodos, y clases). Los atributos son insertados en la sección de Metadata de un Assembly y son visible a través de ILDasm y otras herramientas para leer Metadata. You can use the [MethodImpl] attribute to synchronize a method: using System.Runtime.CompilerSerives; class Example { [MethodImpl(MethodImplOptions.Synchronized)] //Atributo void SynchronizedMethod() {...} } Lenguaje: Visual C#
2007 | 49
• C# fue pensado para ser una simplificación del lenguaje C++, C++ aunque en su lanzamiento incluyo varias características del lenguaje Delphi Delphi,, Visual Basic y Java Java.. Esto es debido a que el principal diseñador Anders Hejlsberg había estado trabajando previamente en el desarrollo de Delphi y de Visual J++ J++.. • Pointers and Unsafe code (código no administrado) administrado).. Delegates.. • Delegates • Reflection Reflection.. • Etc Etc..
Lenguaje: Visual C#
2007 | 50
En el release de Visual Studio 2005, el lenguaje C# ha sido actualizado a la versión 2.0, 2 0 el cual soporta las siguientes nuevas características: Generic G i types t :
List PointList
Partial types: public partial class Employee {…} Nullable Types: object bj t i; i i=null; i ll Anonymous Methods: int n = 0; Del d = delegate(){Console.WriteLine("Copy #:{0}", ++n);};
Iterator Etc…
Lenguaje: Visual C#
2007 | 51
Lenguaje: Visual C#
2007 | 52
En el release de Visual Studio 2008, el lenguaje C# ha sido actualizado a la versión 3.0, 3 0 el cual soporta las siguientes nuevas características: Extension E t i methods th d . Lambda expressions. Implicity typed local variables. variables Object initializers. Extended anonymous types
L
IN
Q
Query expressions. Expression trees. Etc… Lenguaje: Visual C#
2007 | 53
Lenguaje: Visual C#
2007 | 54
The C# 3.0
Project VB 9.0
Others… …
.NET NET Language IN INttegrated INtegrated t t d Query Standard Query Operators
DLinq (ADO.NET)
XLinq (System.Xml)
Objects Lenguaje: Visual C#
SQL
WinFS
XML 2007 | 55
from c in db.Customers where c.City == "London" select new { c.Name, c.Phone }
LINQ Query
Application
Objects
SubmitChanges()
Services: - Change tracking - Concurrency control - Object bj identity id i
DLinq (ADO.NET)
SQL Query
select Name, Phone from customers where city = 'London'
Rows
SQL or Stored Procs
SQLServer 2007 | 56
var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone };
Query expressions
Local variable t type inference i f Lambda expressions
var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone }); Extension methods
Anonymous types
Object initializers
2007 | 57
Restriction
Where
Projection
Select, Select SelectMany
Ordering
OrderBy,, ThenBy OrderBy
Grouping
GroupBy
Quantifiers
Any, All
Partitioning
Take, Skip, TakeWhile TakeWhile,, SkipWhile
Sets
Distinct, Union, Intersect, Except
Elements
First,, FirstOrDefault, FirstOrDefault, ElementAt
Aggregation
Count, Sum, Min, Max, Average
Conversion
ToArray, ToList, ToDictionaryy ToArray y, ToList,
Casting
OfType OfType 2007 | 58
Lenguaje: Visual C#
2007 | 59
g Code The Managed Programming Model for Windows
Lenguaje: Visual C#
2007 | 60
g Code The Managed Programming Model for Windows
Lenguaje: Visual C#
2007 | 61