You are on page 1of 18

Sergio e Israel

POO - Qu es?
La programacin orientada a objetos o POO es un paradigma de programacin que usa los objetos en sus interacciones, para
disear aplicaciones y programas informticos.
- Qu es herencia, encapsulamiento y polimorfismo?
La herencia permite crear nuevas clases que reutilizan, extienden y modifican el comportamiento que se define en otras clases. La
clase cuyos miembros se heredan se denomina clase base y la clase que hereda esos miembros se denomina clase derivada. Una
clase derivada solo puede tener una clase base directa. Sin embargo, la herencia es transitiva. Si ClassC se deriva de ClassB y ClassB
se deriva de ClassA, ClassC hereda los miembros declarados en ClassB y ClassA. Conceptualmente, una clase derivada es una
especializacin de la clase base.
Cuando una clase base declara un mtodo como virtual, una clase derivada puede invalidar el mtodo con su propia
implementacin. Si una clase base declara un miembro como abstracto, ese mtodo se debe sobrescribir en cualquier clase no
abstracta que herede directamente de dicha clase. Si una clase derivada es abstracta en s misma, hereda los miembros abstractos
sin implementarlos. Los miembros abstractos y virtuales son la base para el polimorfismo, la segunda caracterstica principal de la
programacin orientada a objetos.
Polimorfismo
En tiempo de ejecucin, los objetos de una clase derivada pueden ser tratados como objetos de una clase base en lugares como
parmetros de mtodos y colecciones o matrices. Cuando ocurre, el tipo declarado del objeto ya no es idntico a su tipo en tiempo
de ejecucin.
Las clases base pueden definir e implementar mtodosvirtuales, y las clases derivadas pueden invalidarlos, lo que significa q ue
pueden proporcionar su propia definicin e implementacin. En tiempo de ejecucin, cuando el cdigo de cliente llama al mtod o,
CLR busca el tipo en tiempo de ejecucin del objeto e invoca esa invalidacin del mtodo virtual. Por lo tanto, en el cdigo fuente
puede llamar a un mtodo en una clase base y hacer que se ejecute una versin del mtodo de la clase derivada.
Los mtodos virtuales permiten trabajar con grupos de objetos relacionados de manera uniforme. Por ejemplo, supongamos que
tiene una aplicacin de dibujo que permite a un usuario crear varios tipos de formas en una superficie de dibujo. En tiempo de
compilacin, no sabe qu tipos especficos de formas crear el usuario. Sin embargo, la aplicacin tiene que realizar el seguimiento
de los distintos tipos de formas que se crean, y tiene que actualizarlos en respuesta a las acciones del mouse del usuario. Para
solucionar este problema en dos pasos bsicos, puede usar el polimorfismo:
Crear una jerarqua de clases en la que cada clase de forma especfica deriva de una clase base comn.
Usar un mtodo virtual para invocar el mtodo apropiado en una clase derivada mediante una sola llamada al mtodo de la clase
base.
Primero, cree una clase base llamada Shape y clases derivadas como Rectangle, Circle y Triangle. D a la clase Shape un mtodo
virtual llamado Draw e invaldelo en cada clase derivada para dibujar la forma determinada que la clase representa. Cree un objeto
List<Shape> y agregue Circle, Triangle y Rectangle a l. Para actualizar la superficie de dibujo, use un bucle foreach para iterar por
la lista y llamar al mtodo Draw en cada objeto Shape de la lista. Aunque cada objeto de la lista tenga un tipo declarado de Shape,
se invocar el tipo en tiempo de ejecucin (la versin invalidada del mtodo en cada clase derivada)
La encapsulacin significa que un grupo de propiedades, mtodos y otros miembros relacionados se tratan como si de una sola
unidad u objeto se tratase.
La encapsulacin significa que un grupo de propiedades, mtodos y otros miembros relacionados se tratan como si de una sola
unidad u objeto se tratase.

Herencia describe la posibilidad de crear nuevas clases basadas en una clase existente.
Polimorfismo significa que puede tener mltiples clases que se pueden utilizar de forma intercambiable, si bien cada clase
implementa las mismas propiedades o los mismos mtodos de maneras diferentes.
- Ejemplo de sobrecarga de un mtodo

- Objeto y clase
Las clases describen el tipo de los objetos, mientras que los objetos son instancias de clases que se pueden usar.
- Interfaz y clase abstracta
Puede declarar una clase como abstracta si desea evitar la creacin directa de instancias por medio de la palabra clave new. Si hace
esto, la clase solo se puede utilizar si una nueva clase se deriva de ella. Una clase abstracta puede contener una o ms firm as de
mtodo que se declaran a s mismas como abstractas. Estas firmas especifican los parmetros y el valor devuelto pero no tienen
ninguna implementacin (cuerpo del mtodo). Una clase abstracta no tiene que contener miembros abstractos; sin embargo, si una
clase contiene un miembro abstracto, la propia clase se debe declarar como abstracta. Las clases derivadas que no son abstractas
por s mismas deben proporcionar la implementacin de cualquier mtodo abstracto de una clase base abstracta.
Una interfaz es un tipo de referencia similar en cierto modo a una clase base abstracta compuesta nicamente por miembros
abstractos. Cuando una clase implementa una interfaz, debe proporcionar una implementacin para todos los miembros de la
interfaz. Una clase puede implementar varias interfaces aunque solo puede derivar de una nica clase base directa.
Las interfaces se utilizan para definir funciones especficas para las clases que no tienen necesariamente una relacin de id entidad.
Por ejemplo, la interfaz IEquatable puede ser implementada por cualquier clase o struct que deba permitir al cdigo de cliente
determinar si dos objetos del tipo son equivalentes (sin embargo, el tipo define la equivalencia). IEquatable no implica el m ismo tipo
de relacin "es un(a)" que existe entre una clase base y una clase derivada
3. Qu es un constructor?
Un constructor es el mtodo de una clase que se llama cuando un objeto de esa clase se crea. El constructor inicializa parmetros
de la clase y tiene el mismo nombre que la clase.
Cmo se sobrecargan mtodos en C#?
Puede sobrecargar mtodos en C# especificando un nmero diferente de parmetros en la definicin del mtodo. La sobrecarga
puede ayudar a dar a su programa la flexibilidad que necesita para operar con diferentes tipos de entrada de datos.

Qu es una interfaz y qu es una clase abstracta?


Respuesta 1.
En una interfaz, todos los mtodos son abstractos, sin implementacin. Mientras en una clase abstracta algunos mtodos pueden
ser concretos. En una interfaz no estn permitidos los modificadores de acceso. Las interfaces y las clases abstractas son
bsicamente un conjunto de reglas que tienes que seguir en caso quieras usarlas (heredndolas).
Respuesta 2.

Las clases abstractas estn relacionadas con las interfaces. Son clases que no pueden ser instanciadas y son frecuentemente
partialmente implementadas o no implementadas. Una diferencia clave entre clases abstractas e interfaces es que una clase puede
implementar un ilimitado nmero de interfaces pero puede heredar slo de una clase (abstracta o de cualquier otra clase). Una
clase que est derivada de abstract puede an implementar interfaces. Las clases abstractas son tiles cuando se crean
componentes porque ellas te permiten especificar un nivel que no vara de funcionalidad en algunos mtodos pero dejan la
implementacin de otros mtodos hasta que una especfica implementacin de la clase sea necesaria. Ellas favorecen el
versionamiento porque si una funcionalidad adicional es necesaria en las clases derivadas, puede ser agregada a la clase base sin
romper el cdigo.

Qu es una clase esttica y cuando se debe utilizar?

Una clase esttica es una forma de organizar mtodos no asociados a objetos particulares. Con una clase esttica, no tienew q ue
crear un objeto con el fin de llamar a sus mtodos, por lo que es inherentemente ms rpido. La clase de matemticas en el espacio
de nombres del sistema es un buen ejemplo de una clase esttica bien pensada.
ASPX
- Ciclo de vida de una pgina

- Global.asax, qu es, para qu sirve, puede haber ms de uno


Global.asax es un archivo opcional usado en las aplicacin web de ASP.NET para declarar y manejar eventos y objetos a nivel de
aplicacin y de sesin. Global.asax es la extensin de archivo Global.asa utilizado en ASP. El archivo Global.asax reside en e l
directorio virtual raz de una aplicacin ASP.NET en IIS. En tiempo de ejecucin, antes de la llegada de la primera solicitud,
Global.asax es analizado y compilado en una clase dinmicamente generada del .NET Framework. ASP.NET est configurado para
que cualquier solicitud directa del Global.asax sea automticamente rechazada, los usuarios externos no pueden ver o descargar el
cdigo en el.1

El cdigo para manejar eventos de aplicacin (tales como el inicio y el final de una aplicacin) residen en el Global.asax. T ales
cdigos de eventos no pueden residir en una pgina web o en un servicio web, pues durante el inicio o el final de la aplicacin, su
cdigo no ha sido cargado (o descargado). Global.asax es tambin usado para declarar datos que estn disponibles en diferente s
solicitudes de la aplicacin y a travs de diferentes sesiones del navegador. Este proceso es conocido como administracin del
estado de sesin y aplicacin.

El archivo Global.asax debe residir en la raz virtual del IIS. Un directorio virtual puede ser visto como un contenedor de una
aplicacin web. Los eventos y estado especificados en el archivo global son entonces aplicados a todos los recursos alojados dentro
de la aplicacin web. Si, por ejemplo, Global.asax define una variable de estado a nivel de aplicacin, todos los archivos .aspx dentro
del directorio virtual tendr acceso a la variable.
- Web.config, qu es, para qu sirve, puede haber ms de uno
- ViewState, ventajas y desventajas
- AJAX, UpdatePanel
ADO.NET Entity Framework
Entity Framework, sin duda destacaramos los siguientes puntos:

Se trata de un Framework que permite manipular y acceder a los datos como clases .NET.
Permite realizar un modelado de datos a nivel conceptual, es decir, habilita la separacin de las aplicaciones y los
esquemas de BD.
Permite una mejor interactuacin de los datos con el entorno .NET: Se interacta con objetos, frente a hacerlo con filas y
columnas.
Proporciona una serie de servicios en tiempo de ejecucin y en tiempo de diseo que permite a los desarrolladores
describir los datos de la aplicacin e interactuar con ellos a un nivel de abstraccin conceptual claramente alineado con
el concepto de implementacin de aplicaciones de negocio, y que adems ayuda a aislar la aplicacin respecto a los
esquemas de base de datos (BD) sobre los que se ha definido.
Como coment Jorge en su post, se apoya en LINQ para definir las consultas a objetos del esquema EDM (Entity Data
Model).
Supone una capa ms, pero independiza las aplicaciones de el esquema de BD subyacente, independientemente de la
tecnologa de BD que se est utilizando.

Qu es Definiendo el EDM (Entity Data Model)?


Cmo coment Jorge en su post, el primer paso para trabajar con ADO.NET Entity Framework pasa por crear un modelo de
entidades a partir de un cierto esquema de BD. Para ello aadimos al proyecto un elemento de tipo ADO.NET Entity Data Model
con lo que se iniciar un asistente que nos guiar en la creacin del modelo a partir de:

Especificar la opcin de generacin del EDM (a partir de una BD o bien un EDM vaco.
Especificar la cadena de conexin a la BD (que como siempre, puede ser un archivo fsico o bien una instancia de SQL
Server).
Especificar que objetos de la BD queremos que formen de nuestro EDM (en este caso, tablas y procedimientos
almacenados).

ADO.NET Entity Framework permite a los desarrolladores crear aplicaciones de acceso a datos programando con un modelo de
aplicaciones conceptuales en lugar de programar directamente con un esquema de almacenamiento relacional. El objetivo es
reducir la cantidad de cdigo y el mantenimiento necesarios para las aplicaciones orientadas a datos. Las aplicaciones de Entity
Framework ofrecen las siguientes ventajas:

Las aplicaciones pueden funcionar en trminos de un modelo conceptual ms centrado en la aplicacin, que incluy e
tipos con herencia, miembros complejos y relaciones.

Las aplicaciones estn libres de dependencias de codificacin rgida de un motor de datos o de un esquema de
almacenamiento.
Las asignaciones entre el modelo conceptual y el esquema especfico de almacenamiento pueden cambiar sin tener que
cambiar el cdigo de la aplicacin.
Los desarrolladores pueden trabajar con un modelo de objeto de aplicacin coherente que se puede asignar a diversos
esquemas de almacenamiento, posiblemente implementados en sistemas de administracin de base de datos diferentes.
Se pueden asignar varios modelos conceptuales a un nico esquema de almacenamiento.

La compatibilidad con Language Integrated Query (LINQ) proporciona validacin de la sintaxis en el momento de la
compilacin para consultas en un modelo conceptual.

Cuales son las ventajas de usar LINQ?

Sintaxis familiar para escribir consultas.


Comprobacin en tiempo de compilacin de errores de sintaxis y seguridad de tipos.
Compatibilidad mejorada con el depurador.
Compatibilidad con IntelliSense.
Capacidad para trabajar directamente con elementos XML en lugar de crear un documento XML contenedor, que es lo
que se requiere en W3C DOM.
Modificacin de documentos XML en memoria de gran eficacia, an ms fcil de usar que XPath o XQuery.
Funciones de filtrado, ordenacin y agrupacin eficaces.
Modelo coherente para trabajar con datos en varios tipos de formatos y orgenes de datos.

Qu es una expresin lambda?

Una expresin lambda es una funcin annima que puede contener expresiones e instrucciones y se puede utilizar para crear
delegados o tipos de rboles de expresin.
Para crear una expresin lambda, especifique parmetros de entrada (si existen) a la izquierda del operador =>lambda, y coloq ue
la expresin o bloque de instrucciones en el otro lado. Por ejemplo, la expresin lambda x => x * x especifica un parmetro
denominado x y devuelve el valor x elevado al cuadrado. Puede asignar esta expresin a un tipo delegado, como se muestra en e l
ejemplo siguiente:

Para crear un tipo de rbol de expresin:

Ejemplo Bsico de Expresin Lambda


delegate int SumaDeledado(int a, int b);

SumaDeledado SumaFuncion = (a, b) => a + b;

Ejemplos de Expresiones Lambda en LINQ


El principal uso de las expresiones lambda est vinculado con las expresiones de consultas LINQ. As que veamos algunos ejemp los
de estas expresiones, estos ejemplos son bien sencillos pero nos vienen bien para comprender el uso de las expresiones lambda.

int[] nums = { 3, 4, 5, 6, 4, 5, 7 };

var numMayores = nums.Where(n => n > 5).ToList();


var numPares = nums.Where(n => n % 2 == 0).ToList();
var numImpares = nums.Where(n => n % 2 != 0).ToList();
El en cdigo de ejemplo anterior tenemos 3 consultas LINQ:

La primera consulta la usamos para guardar en la variable de tipo annimo (numMayores) los nmeros que sean mayores de 5, y
para lograrlo usamos la expresin lambda (n => n > 5). El resultado sera evidentemente { 6, 7 }.
En la segunda consulta (numPares) obtendremos los nmeros pares usando la siguiente expresin lambda (n => n % 2 == 0). El
resultado sera evidentemente { 4, 6, 4 }.
En la tercera consulta (numImpares) obtendremos los nmeros impares usando la siguiente expresin lambda (n => n % 2 != 0).
Condiciones que debemos tener en cuenta a la hora de definir una expresin lambda:

Las expresiones lambda se definen usando el operador lambda =>.


Para devolver el valor no se utiliza la instruccin return, (salvo que el contenido de la expresin lambda sea un bloque encerrado
entre llaves).
Los tipos de los parmetros de las expresiones lambda siempre se infieren, ya que siempre habr algn delegado asociado con el
uso de la expresin lambda. Si se indica el tipo de uno de los parmetros, debemos indicarlos todos, independientemente de que
se pueda inferir el tipo.
Los parmetros de la expresin lambda no pueden ser opcionales, por tanto, no podemos usar params.
Los parmetros no pueden ser de tipo ref u out.
No podemos indicar parmetros generic.
Los nombres de los parmetros no pueden ser los mismos que los de otros elementos que estn en el mismo mbito.
Los parmetros de una expresin lambda son solo visibles dentro de esa funcin.

Las expresin lambda las podemos usar para cualquier tipo de delegado, ya sean definidos por nosotros o los definidos por el
propio .NET.
Delegates
Un delegado es un tipo que representa referencias a mtodos con una lista de parmetros determinada y un tipo de valor devuelto.
Cuando se crea una instancia de un delegado, puede asociar su instancia a cualquier mtodo mediante una firma y un tipo de valor
devuelto compatibles. Puede invocar (o llamar) al mtodo a travs de la instancia del delegado.
Los delegados se utilizan para pasar mtodos como argumentos a otros mtodos. Los controladores de eventos no son ms que
mtodos que se invocan a travs de delegados. Cree un mtodo personalizado y una clase, como un control de Windows, podr
llamar al mtodo cuando se produzca un determinado evento. En el siguiente ejemplo se muestra una declaracin de delegado:
public delegate int PerformCalculation(int x, int y);
Un delegado es un tipo que encapsula de forma segura un mtodo, similar a un puntero de funcin en C y C++. A diferencia de los
punteros de funcin de C, los delegados estn orientados a objetos, proporcionan seguridad de tipos y son seguros. El tipo de un
delegado se define por el nombre del delegado. En el ejemplo siguiente se declara un delegado denominado Del que puede
encapsular un mtodo que toma una cadena como argumento y devuelve void:
public delegate void Del(string message);
Normalmente, un objeto delegado se construye con el nombre del mtodo que el delegado encapsular o con un mtodo
annimo. Una vez que se instancia un delegado, una llamada al mtodo hecha al delegado ser pasada por el delegado a ese
mtodo. Los parmetros pasados al delegado por el autor de la llamada se pasan a su vez al mtodo, y el valor devuelto desde el
mtodo, si lo hubiera, es devuelto por el delegado al autor de la llamada. Esto se conoce como invocar al delegado. Un delegado
con instancias se puede invocar como si fuera el propio mtodo encapsulado. Por ejemplo:
public static void DelegateMethod(string message)
{
System.Console.WriteLine(message);
}

Cules son los operadores en linq?

Filtering (Filtrado)

Projection (Proyeccin)

Partitioning (Particionado)

Join (Unin)

Concatenation (Concatenacin)

Ordering (Ordenacin)

Grouping (Agrupacin)

Set (Conjunto)

Conversion (Conversin)

Equality (Igualdad)

Element (Elemento)

Generation (Generacin)

Quantifier (Cuantificadores)

Aggregation (Agregacin)

Qu funcin ocuparas para regresar el total linq?


Sum

La siguiente funcin de agregacin ser Sum, que devuelve una suma de todos los valores de un campo concreto perteneciente a
la lista. As, la siguiente operacin devolvera la suma del beneficio obtenido por todas las ventas:

var consulta = (from lineaPedido in DataLists.ListaLineasPedido

join producto in DataLists.ListaProductos

on lineaPedido.IdProducto equals producto.Id

select lineaPedido.Cantidad * producto.Precio);

// Usamos la funcin de agregacin Sum para calcular la suma de todos los elementos

float resultadoTotal = consulta.Sum();

Clases parciales.

Existen diversas situaciones en las que es conveniente dividir una definicin de clase:

Al trabajar en proyectos grandes, el hecho de dividir una clase en archivos independientes permite que varios programadores
trabajen al mismo tiempo con ella.

Al trabajar con un cdigo fuente generado automticamente, se puede agregar el cdigo a la clase sin tener que volver a crear el
archivo de cdigo fuente. Visual Studio utiliza este enfoque al crear formularios Windows Forms, cdigo contenedor de un serv icio
Web, etc. Se puede crear cdigo que utilice estas clases sin tener que modificar el archivo creado por Visual Studio.

Para dividir una definicin de clase, utilice el modificador partial, como se muestra a continuacin:

Clases internas:

Si va a programar un componente complejo, es posible que necesite implementar clases anidadas. Las clases anidadas son clases
cuya declaracin est contenida por completo en la declaracin de clase de otra clase y que resultan tiles para programar
modelos de objetos en los componentes.

La implementacin de clases anidadas es un asunto trivial. Una vez que la declaracin de clase se encuentra contenida por
completo dentro de otra declaracin de clase, la clase se considera anidada y slo permite el acceso a travs de la clase envolvente.

public class TheClass

// This is the nested class

private class NestedClass

// Insert code to implement NestedClass.

// Insert code to implement TheClass.

}
Qu es WCF? Parte 1
Una de las preguntas ms comnes cuando hablamos de servicios y arquitecturas orientadas a servicios en tecnologas Microsoft es:
Qu es WCF? Pues vamos a tratar de dar una breve introduccin referente a que es WCF.
WCF significa Windows Comunication Foundation. Esta disponible desde la versin 3.0 del framework de .NET. Muchos gurs de
SOA incluso dicen que WCF es un framework aparte al framework de .NET algo con lo que coincido escencialmente por que el
framework de .NET conoce de componentes y no de servicios.
Que es un contrato de servicios?
Un contrato de servicios es una instruccin que proporciona informacin sobre:

La agrupacin de operaciones en un servicio.


La firma de las operaciones en trminos de mensajes intercambiados.
Los tipos de datos de estos mensajes.
La ubicacin de las operaciones.
Los protocolos concretos y formatos de serializacin que se utilizan para admitir la comunicacin correcta con el servicio.

Qu es un mensaje?
Unidad autnoma de datos que puede constar de varias partes, incluyendo un cuerpo y encabezados.
Qu es un servicio?
Construccin que expone uno o ms extremos, y en la que cada extremo expone una o ms operaciones de servicio.
Qu es un contrato de operacin?

Un contrato de operacin define los parmetros y el tipo de valor devuelto de una operacin. Al crear una interfaz que define el
contrato de servicio, se significa un contrato de operacin mediante la aplicacin del atributo OperationContractAttribute a cada
definicin de mtodo que forma parte del contrato. Las operaciones se pueden modelar como tomar un mensaje nico y devolver
un mensaje nico, o como tomar un conjunto de tipos y devolver un tipo. En el ltimo caso, el sistema determinar el formato de
los mensajes que han de intercambiarse para esa operacin.
Qu es un canal y cuantos tipos hay?
Un canal es un componente que procesa un mensaje de alguna manera, por ejemplo, autenticando un mensaje. Un conjunto de
canales tambin se conoce como una pila de canales. Los canales funcionan en los mensajes y encabezados del mensaje. Esto es
diferente de la capa en tiempo de ejecucin del servicio, que se ocupa principalmente de procesar el contenido de los cuerpos de
los mensajes.
Hay dos tipos de canales: canales de transporte y canales de protocolo.
Los canales de transporte leen y escriben mensajes de la red (o algn otro punto de la comunicacin con el mundo externo).
Algunos transportes utilizan un codificador para convertir los mensajes (que se representan como conjuntos de informacin XML s)
hacia y desde la representacin de la secuencia de bytes utilizada por la red. Son ejemplos de transportes HTTP, canalizaciones con
nombre, TCP y MSMQ. Son ejemplos de codificaciones XML y binario optimizado.
Los canales de protocolo implementan protocolos de procesamiento de mensajes, a menudo leyendo o escr ibiendo encabezados
adicionales en el mensaje. Los ejemplos de tales protocolos incluyen WS-Security y WS-Reliability.
Qu es LINQ?
Language Integrated Query (LINQ, pronunciado link) es un componente de la plataforma Microsoft .NET que agrega capacidades
de consulta a datos de manera nativa a los lenguajes .NET, si bien existen implementaciones para Java, PHP, JavaScript y
ActionScript

LINQ extiende el lenguaje a travs de las llamadas expresiones de consulta, que son parecidas a las sentencias SQL y pueden ser
usadas para extraer y procesar convenientemente datos de arrays, clases enumerables, documentos XML, bases de datos
relacionales y fuentes de terceros. Otros usos, que utilizan expresiones de consulta como plataforma general para la composic in
de expresiones ms legibles, incluyen la construccin de manejadores de eventos.

LINQ adems define un conjunto de nombres de mtodos (llamados operadores de consulta estndar), y un conjunto de reglas de
traduccin, que son usadas por el compilador para traducir las expresiones de consulta en expresiones normales del lenguaje,
usando estos nombres de mtodos, expresiones lambda y tipos annimos.
Funcin annima
Una funcin annima es una instruccin o expresin insertada que puede utilizarse en cualquier lugar donde se espere un tipo
delegado. Puede utilizarla para inicializar un delegado con nombre o pasarla en lugar de un tipo delegado con nombre como un
parmetro de mtodo. Se dividen en expresiones lambda y mtodos annimos.
Qu es MVC (Model-View-Controller) Modelo-Vista-Controlador?
MVC es un patrn de arquitectura el cual separa la representacin y la interaccin del usuario. Est divido en 3 secciones. Modelo,
Vista, Controlador.

La Vista es responsible por la apariencia look and feel.


El Modelo representa un objeto del mundo real y provee de data para la vista.

El Controller es responsable de tomar la peticin del usuario y cargar el modelo y la vista apropiados.

Puedes explicar el flujo completo de MVC?


A continuacin los pasos de como el control fluye en la arquitectura MVC (Modelo, Vista y Controlador).

Toda peticin (request) del usuario final es primero enviada al controlador.


El controlador dependiendo de la peticin decide cual modelo cargar. El controlador carga el modelo y enlaza el modelo con
la vista apropiada.

La vista final es luego enlazada con la data del modelo y enviada como una respuesta al usuario final en el navegador
(browser).

Cules son los beneficios de usar MVC?


Hay dos grandes beneficios de MVC:
Separacin de problemas (concerns) esto se logra ya que se mueve el cdigo detrs (code behind) a un archivo de clase separado.
Ya que se mueve el cdigo de enlace (binding) a un archivo de clase separado podemos reutilizar el cdigo en gran parte.
Testeo Automatizado de la UI (interfaz de usuario), es posible porque ahora el cdigo detrs (code behind) el cdigo de inter accin
de la UI ha sido movido a una simple clase .NET. Esto nos da la oportunidad de escribir pruebas unitarias y automatizar las pruebas
manuales.
Es MVC diferente de la arquitectura de 3 capas?
MVC es una evolucin de la arquitectura tradicional de 3 capas. Muchos componentes de la arquitectura de 3 capas son parte de
MVC.

Functionalidad

3 capas

MVC

Apariencia

Interfaz de usuario.

Vista

UI lgica

Interfaz de usuario.

Controlador

Lgica del negocio /validaciones

Capa Intermedia

Modelo

La peticin se enva primero a

User interface

Controlador

Accediendo datos

Capa de acceso a datos

Capa de acceso a datos

Qu es ruteo en MVC?
El ruteo ayuda a definir una estructura de URL y mapear la URL con el controlador.
Por ejemplo digamos que queremos que cuando un usuario tipee http://localhost/view/ViewCustomer/&#8221;, vaya al
controlador customer e invoque la accin DisplayCustomer. Esto es definido agregando una entrada en la coleccin routes
usando la funcin maproute. Ejemplo:

routes.MapRoute(

"View", // Route name

"View/ViewCustomer/{id}", // URL with parameters

new { controller = "Customer", action = "DisplayCustomer",

id = UrlParameter.Optional }); // Parameter defaults

Dnde se tiene que escribir el cdigo de mapeo de rutas?


En el archivo global.asax.

Se puede mapear mltiples URLs a la misma accin?


S. Slo necesitas hacer dos entradas con diferentes nombres clave y especificar el mismo controlador y accin.

Qu son vistas parciales en MVC?


Vistas parciales es una vista reusable (como un control de usuario) las cuales pueden ser puestas dentro de otras vistas. Por ejemplo
digamos que todas las pginas de tu sitio tiene una estructura estndar con un men a la izquierda, cabecera y pie de pgina como
se muestra en la siguiente imagen.
Cmo crear vistas parciales?
Cuando agregas una vista a tu proyecto necesitas marcar el check Create Partial View.
Una vez creada la vista parcial puedes llamarla desde la vista principal utilizando el mtodo Html.Re nderPartial as:

<body>

<div>

<% Html.RenderPartial("MyView"); %>

</div>

</body>

Cmo podemos hacer validaciones en MVC?


Una de las maneras ms fciles de hacer validacin en MVC es usar data annotations. Data Annotations son atributos los cuales
son aplicados en las propiedades del modelo. Por ejemplo en el siguiente cdigo tenemos una simple clase cliente customer con
una propiedad customercode.
Esta propiedad customercode est etiquetada con un atributo de data annotation Required (requerido). En otras palabras si este
modelo no recibe un customercode no ser vlido.

public class Customer

[Required(ErrorMessage="Customer code is required")]

public string CustomerCode { get; set; }

Para poder mostrar un error de validacin necesitamos usar un mtodo ValidateMessageFor el cual pertenece a la clase de apoyo
Html.

<% using (Html.BeginForm("PostCustomer", "Home", FormMethod.Post))

{ %>

<%=Html.TextBoxFor(m => m.CustomerCode)%>

<%=Html.ValidationMessageFor(m => m.CustomerCode)%>

<input type="submit" value="Submit customer data" />

<%}%>

Posteriormente en el controlador podemos chequear si el modelo est correcto o no utilizado la propiedad ModelState.IsValid y
de acuerdo a eso tomar acciones.

public ActionResult PostCustomer(Customer obj)

if (ModelState.IsValid)

obj.Save();

return View("Thanks");

else

10

return View("Customer");

11
12

}
}

Cmo crear vistas parciales?


Cuando agregas una vista a tu proyecto necesitas marcar el check Create Partial View.

Una vez creada la vista parcial puedes llamarla desde la vista principal utilizando el mtodo Html.RenderPartial as:

<body>

<div>

<% Html.RenderPartial("MyView"); %>

</div>

</body>

Cmo podemos hacer validaciones en MVC?


Una de las maneras ms fciles de hacer validacin en MVC es usar data annotations. Data Annotations son atributos los cuales
son aplicados en las propiedades del modelo. Por ejemplo en el siguiente cdigo tenemos una simple clase cliente customer con
una propiedad customercode.
Esta propiedad customercode est etiquetada con un atributo de data annotation Required (requerido). En otras palabras si este
modelo no recibe un customercode no ser vlido.

public class Customer

[Required(ErrorMessage="Customer code is required")]

public string CustomerCode { get; set; }

Para poder mostrar un error de validacin necesitamos usar un mtodo ValidateMessageFor el cual pertenece a la clase de apoyo
Html.

<% using (Html.BeginForm("PostCustomer", "Home", FormMethod.Post))

{ %>

<%=Html.TextBoxFor(m => m.CustomerCode)%>

<%=Html.ValidationMessageFor(m => m.CustomerCode)%>

<input type="submit" value="Submit customer data" />

<%}%>

Posteriormente en el controlador podemos chequear si el modelo est correcto o no utilizado la propiedad ModelState.IsValid y
de acuerdo a eso tomar acciones.

public ActionResult PostCustomer(Customer obj)

if (ModelState.IsValid)

obj.Save();

return View("Thanks");

else

10

return View("Customer");

11
12

}
}

WCF
Windows Communication Foundation (WCF) es un marco de trabajo para la creacin de aplicaciones orientadas a servicios. Con
WCF, es posible enviar datos como mensajes asincrnicos de un extremo de servicio a otro. Un extremo de servicio puede formar
parte de un servicio disponible continuamente hospedado por IIS, o puede ser un servicio hospedado en una aplicacin. Un
extremo puede ser un cliente de un servicio que solicita datos de un extremo de servicio. Los mensajes pueden ser tan simples
como un caracter o una palabra enviados como XML, o tan complejos como un flujo de datos binarios. A continuacin se indican
unos cuantos escenarios de ejemplo:
Un servicio seguro para procesar transacciones comerciales.
Un servicio que proporciona datos actualizados a otras personas, como un informe sobre trfico u otro servicio de supervisin.

Un servicio de chat que permite a dos personas comunicarse o intercambiar datos en tiempo real.
Una aplicacin de panel que sondea los datos de uno o varios servicios y los muestra en una presentacin lgica.
Exponer un flujo de trabajo implementado utilizando Windows Workflow Foundation como un servicio WCF.
Una aplicacin de Silverlight para sondear un servicio en busca de las fuentes de datos ms recientes.
Si bien era posible crear tales aplicaciones antes de que existiera WCF, con WCF el desarrollo de extremos resulta ms sencillo que
nunca. En resumen, WCF se ha diseado para ofrecer un enfoque manejable para la creacin de servicios web y clientes de
servicios web.

You might also like