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