SlideShare una empresa de Scribd logo
1 de 121
Curso Básico
.NET - SQL
Febrero 2013
• Programación Orientada a
objetos (POO)
• Lenguaje unificado de
modelado (UML)
• Lenguaje SQL
• Lenguaje C#
sTI_CI_v1_201302
Temario
POO
Conceptos fundamentales
sTI_CI_v1_201302
• Clase
• Objeto
• Abstracción
• Encapsulamiento
• Polimorfismo
• Herencia
• http://arevalomaria.wordpress.com/2010/11/24/introduccion-a-la-programacion-orientada-a-objetos/
• http://msdn.microsoft.com/es-es/library/bb972232.aspx
POO
UML
Principales diagramas
sTI_CI_v1_201302
• Casos de uso
• Clases
• Estado
• Secuencia
• Componentes
• http://www.docirs.cl/uml.htm
• http://www.escet.urjc.es/~smontalvo/umlToJava_v2.pdf
UML
Ejercicio
sTI_CI_v1_201302
UML
Se requiere un sistema para el control de
acceso de empleados de la empresa “X”, la
empresa cuenta con acceso por medio de
código de empleado y sistemas biométricos, el
acceso se divide en diez puertas en dos
diferentes edificios.
El edificio “A” cuenta con 6 puertas de las
cuales tres son de uso común (baño, comedor
y acceso lugar de trabajo) y tres tienen acceso
restringido (site, almacén y enfermería).
El edificio “B” cuenta con 4 puertas de las
cuales tres son de acceso común (idem
anterior) y una de acceso restringido para el
almacén.
Ejercicio
sTI_CI_v1_201302
UML
Las puertas de acceso común se activan
cuando se ingresa un código de acceso, las
puertas de acceso restringido deberán ser
abiertas únicamente cuando se ingrese un
código valido así como la lectura de la huella
digital.
El sistema se alojara en el site del edificio “A”.
Realizar un diagrama de casos de uso para el
acceso a la empresa.
Realizar un diagrama de clases para la
aplicación.
Realizar un diagrama de secuencia para el
ingreso a la puerta “A” Baño y “B” almacén.
Realizar un diagrama de estado para una
puerta restringida.
SQL
MS SQL Server
sTI_CI_v1_201302
• http://www.islasoft.com/Producto/Diferencias_SQL_Server_Office.pdf
SQL
• IDE
• Instancia
• Conexiones
• Configuración de red
• Administración de usuarios
Lenguaje de definición de datos
(DDL)
sTI_CI_v1_201302
• Create
• Alter
• Drop
• Truncate
• http://support.microsoft.com/kb/180841/es
• http://www.youtube.com/watch?v=HO5eb2wBaBk
SQL
Create
create table [nombre_tabla]( [campo_1] [tipo dato])
Alter
alter table [nombre_tabla] add [nombre_columna] [tipo
dato]
alter table [nombre_tabla] drop [nombre_columna]
alter column [nombre_columna] [tipo_dato]
[propiedad_especial]
Drop
drop [objeto] [nombre_tabla]
• index
• database
• table
Truncate
truncate table [nombre_tabla]
sTI_CI_v1_201302
• http://grimpidev.wordpress.com/2009/03/21/diferencias-entre-truncate-table-y-delete-from/
SQL
Instrucciones fundamentales del DDL
Ejercicio(DDL)
sTI_CI_v1_201302
SQL
• Crear por medio de código una tabla del
modelo de accesos y otra por medio la
herramienta de diseño.
• Crear una consulta que agregue la columna
de fecha de creación y modificación además
de las columnas de usuarioCreacion y
usuarioUltimaModificación
• Crear una consulta para remover la columna
de usaurioCreacion
• Borrar la primer tabla creada.
Lenguaje de manipulación de datos
(DML)
sTI_CI_v1_201302
• Insert
• Update
• Delete
• Select
SQL
• http://msdn.microsoft.com/es-es/library/ms177591(v=sql.90).aspx /
Select
select [nombre_columna],..[n]
Insert
Insert [nombre_tabla] values ([valor_columna],..[n])
Update
update [nombre_tabla] set [nombre_columna] =
[valor_columna]
Delete
delete from [nombre_tabla]
sTI_CI_v1_201302
SQL
Instrucciones fundamentales del
DML
Lógicos
•AND
•OR
•NOT
Comparación
•BETWEEN
•LIKE
•IN
Agregado
•AVG
•COUNT
•SUM
•MAX
•MIN
sTI_CI_v1_201302
• http://andresmtzg.wordpress.com/2012/11/15/sql/
• http://laboratorio.is.escuelaing.edu.co/labinfo/doc/Manual_Basico_del_Lenguaje_SQL.pdf
SQL
Instrucciones principales del DML
Clausulas
•FROM
•WHERE
•GROUP BY
•HAVING
•ORDER BY
Relacionales
•<
•>
•<>
•<=
•>=
•=
Predicado
•ALL
•TOP
•DISTINCT
•DISTINCTROW
La sentencia join en SQL permite combinar registros de dos o
más tablas en una base de datos relacional. En el Lenguaje de
Consultas Estructurado (SQL).
Habitualmente cuando necesitamos recuperar la información de
las consultas combinadas o JOINS.
Las consultas combinadas pueden ser de tres tipos:
•Combinación interna
•Combinación externa
•Uniones
sTI_CI_v1_201302
• http://www.devjoker.com/contenidos/articulos/17/Consultas-combinadas-JOINS.aspx
SQL
JOINS
Ejercicio(DML)
sTI_CI_v1_201302
SQL
• Insertar treinta registros en la tabla creada
en el ejercicio anterior (Generar fechas de
creación y modificación aleatorias no se
podrá repetir ninguna)
• Generar una consulta que contenga los 5
registros con fechas de creación más antiguas
y modificar su fecha de modificación por la
del día de hoy
Ejercicio(DML)
sTI_CI_v1_201302
SQL
• Crear una consulta que genere el siguiente
resultado.
• Se requiere dividir la tabla de la cual se tiene
información en tres periodos (estos deberán
de tratar de ser equitativos en el número de
registros), estos dependerán de la fecha de
creación siendo los más antiguos los que
formen el primer periodo y los mas recientes
el último periodo.
• Extraer la fecha de creación máxima y
mínima del segundo periodo.
Ejercicio(DML)
sTI_CI_v1_201302
SQL
• Crear una consulta que enliste un conteo de
cada uno de los días de fecha de creación de
la tabla con la que se tiene contenido.
P.e. si la base de datos contiene los siguiente
registros.
Fecha creación
30/1/2013
30/12/2012
Deberá generar el siguiente registro.
Día | Conteo
30 | 2
Nota: si un día no se encuentra este deberá
mostrar un 0
Tabla virtual o consulta basada en varias tablas, vistas o consultas.
Esta tabla virtual se le asigna un nombre que se almacena
permanentemente en la base de datos, generando al igual que las
tablas una entrada en el diccionario de datos.
La vistas se compone de filas y columnas como una tabla real a
diferencia de que estas se generan a partir de una consulta y no
existen físicamente los registros
sTI_CI_v1_201302
SQLVistas
Sintaxis
CREATE VIEW [nombre_vista]
As
[consulta_SQL]
Un procedimiento es un programa dentro de la base de datos
que ejecuta una acción o conjunto de acciones especificas.
Un procedimiento tiene un nombre, un conjunto de parámetros
(opcional) y un bloque de código.
sTI_CI_v1_201302
• http://www.devjoker.com/contenidos/catss/238/Procedimientos-almacenados-en-Transact-SQL.aspx
SQL
Procedimiento almacenado
Es un procedimiento que se ejecuta cuando se cumple una
condición establecida al realizar una operación
Trigger DML
Son un tipo especial de procedimiento almacenado que se ejecuta
automáticamente cuando se modifican los datos de una
determinada tabla.
Los desencadenadores se crean a menudo para exigir integridad
referencial o coherencia entre los datos lógicamente relacionados
en tablas diferentes.
sTI_CI_v1_201302
• http://msdn.microsoft.com/es-es/library/ms191524(v=sql.90).aspx
SQL
Desencadenador (Trigger)
Trigger DDL
Los desencadenadores DDL, al igual que los desencadenadores
habituales, activan procedimientos almacenados como respuesta
a un evento. Sin embargo, a diferencia de los desencadenadores
DML, no se activan como respuesta a las instrucciones UPDATE,
INSERT o DELETE de una tabla o vista. En cambio, sí se activan en
respuesta a diversos eventos del lenguaje de definición de datos
(DDL). Estos eventos corresponden principalmente a instrucciones
Transact-SQL que comienzan por las palabras clave CREATE, ALTER
y DROP. Determinados procedimientos almacenados del sistema
que realizan operaciones de estilo DDL también pueden activar
desencadenadores DDL.
sTI_CI_v1_201302
SQL
Desencadenador (Trigger)
CREATE TRIGGER [nombre_desencadenador] ON DATABASE
FOR [Operación Insert/Update/Alter]
AS
[Código]
GO
sTI_CI_v1_201302
• http://msdn.microsoft.com/es-es/library/ms191524(v=sql.90).aspx
• http://msdn.microsoft.com/es-es/library/ms175941(v=sql.90).aspx
SQL
Desencadenador (Trigger)
sTI_CI_v1_201302
SQL
Funciones
Una función es una rutina de Transact-SQL o Common Language
Runtime (CLR) que acepta parámetros, realiza una acción, como un
cálculo complejo, y devuelve el resultado de esa acción como un
valor. El valor devuelto puede ser un valor escalar (único) o una
tabla. Utilice esta instrucción para crear una rutina reutilizable que
se pueda utilizar de estas formas:
•En instrucciones Transact-SQL como SELECT
•En las aplicaciones que llaman a la función
•En la definición de otra función definida por el usuario
•Para parametrizar una vista o mejorar la funcionalidad de una vista
indizada
•Para definir una columna en una tabla
•Para definir una restricción CHECK en una columna
•Para reemplazar un procedimiento almacenado
sTI_CI_v1_201302
SQL
Ejercicio
•Generar una vista donde se muestre a las personas y los accesos
de esta.
•Generar un stored procedure para eliminar a una persona; Este
deberá borrar todos los accesos de esta así como almacenar en
una bitácora las principales operaciones que realizo.
•Generar un trigger para dar de alta automáticamente los accesos
generales cuando se da de alta una nueva persona.
sTI_CI_v1_201302
• http://msdn.microsoft.com/es-mx/library/ms177481.aspx
SQL
Tareas programadas (Jobs)
El objeto de rendimiento Jobs del Agente SQL Server contiene
contadores de rendimiento que proporcionan información acerca
de los trabajos del Agente SQL Server.
sTI_CI_v1_201302
SQL
Ejercicio (Jobs)
•Crear un job que realice lo siguiente ejecutar un procedimiento
almacenado que genere una lista con las personas que faltaron el
día anterior (es decir no hay registro de fecha de ellas en ninguna
puerta) así como analizar la hora de entrada y marcar con retardo
a las personas que no ingresaron a tiempo (tolerancia 10 min) a la
hora de entrada (9 AM) y con asistencia para las que llegaron a
tiempo
•Estas se deberán almacenar en una tabla de asistencia que
deberá contener los siguientes estados por cada persona
asistencia, retardo e inasistencia.
•La tarea programada deberá correr todos los días laborales (L-V)
al termino del ciclo laboral (7 PM)
sTI_CI_v1_201302
SQL
Tablas
•Físicas
create Table []
•Temporales
•Globales
create table ##[nombre_tabla]([nombre_columna] [tipo_dato])
•Locales
create table #[nombre_tabla]([nombre_columna] [tipo_dato])
•Variables
declare @[nombre_tabla] TABLE( [nombre_columna] [tipo_dato]);
sTI_CI_v1_201302
SQL
IF...ELSE
Impone condiciones en la ejecución de una instrucción
Transact-SQL. La instrucción Transact-SQL que sigue a
una palabra clave IF y a su condición se ejecuta si la
condición se cumple: la expresión booleana devuelve
TRUE. La palabra clave opcional ELSE introduce otra
instrucción Transact-SQL que se ejecuta cuando la
condición IF no se cumple: la expresión booleana
devuelve FALSE.
sTI_CI_v1_201302
SQL
IF...ELSE
IF [condicion_boleana]
BEGIN
[Codigo]
END
ELSE
[Codigo]
END
sTI_CI_v1_201302
SQL
CASE
Evalúa una lista de condiciones y devuelve una de las
varias expresiones de resultado posibles
http://technet.microsoft.com/es-es/library/ms181765.aspx
sTI_CI_v1_201302
SQL
CASE
CASE expresion
WHEN [valor] THEN
expresion resultado
ELSE
expresion resultado
END
sTI_CI_v1_201302
SQL
Cursores y ciclos
Cursor
Un cursor es una variable que nos permite recorrer con
un conjunto de resultados obtenido a través de una
sentencia SELECT fila a fila.
Cuando trabajemos con cursores debemos seguir los
siguientes pasos.
Declarar el cursor, utilizando DECLARE
Abrir el cursor, utilizando OPEN
Leer los datos del cursor, utilizando FETCH ... INTO
Cerrar el cursor, utilizando CLOSE
Liberar el cursor, utilizando DEALLOCATE
http://www.devjoker.com/contenidos/articulos/240/Cursores-en-Transact-SQL.aspx
sTI_CI_v1_201302
SQL
Cursores y ciclos
DECLARE <nombre_cursor> CURSOR
FOR <sentencia_sql>
-- apertura del cursor
OPEN <nombre_cursor>
-- Lectura de la primera fila del cursor
FETCH <nombre_cursor> INTO <lista_variables>
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Lectura de la siguiente fila de un cursor
FETCH <nombre_cursor> INTO <lista_variables>…
END -- Fin del bucle WHILE
-- Cierra el cursor
CLOSE <nombre_cursor>
-- Libera los recursos del cursor
DEALLOCATE <nombre_cursor>
sTI_CI_v1_201302
SQL
Cursores y ciclos
Ciclo
Establece una condición para la ejecución repetida de
una instrucción o bloque de instrucciones SQL. Las
instrucciones se ejecutan repetidamente siempre que
la condición especificada sea verdadera. Se puede
controlar la ejecución de instrucciones en el bucle
WHILE con las palabras clave BREAK y CONTINUE.
http://msdn.microsoft.com/es-mx/library/ms178642.aspx
sTI_CI_v1_201302
SQL
Cursores y ciclos
WHILE [condicion]
BEGIN
[Codigo]
END
sTI_CI_v1_201302
SQL
Comando Execute
Ejecuta una cadena de comandos o una cadena de caracteres dentro de
un lote de Transact-SQL o uno de los siguientes módulos: procedimiento
almacenado del sistema, procedimiento almacenado definido por el
usuario, procedimiento almacenado CLR, función escalar definida por el
usuario o procedimiento almacenado extendido.
Ejemplo
Execute ‘Select * from [nombre tabla]’
sTI_CI_v1_201302
SQL
Ejercicio
Generar las siguientes consultas
•Generar una lista que indique por cada una de las puertas en la
aplicación si esta esta asociada o no al menos a un usuario.
Puerta | Asociada
Almacén –A Si
Almacén-B No
•Generar una consulta donde muestre la lista de usuarios y los
clasifique en los siguientes rubros
Invitado - Solo acceso a las áreas comunes (AC)
Personal – (AC) y al área de trabajo (AT)
Enfermero(a) – (AC)- Enfermería (E)
Infraestructura (AC) – Site
Empleado | Acceso
Pedro Personal
María Enfermera
http://msdn.microsoft.com/es-mx/library/ms178642.aspx
sTI_CI_v1_201302
SQL
Ejercicio
Generar una lista de empleados por acceso y mostrarla en el sistema
Como se muestra en el siguiente ejemplo y tomando en cuanta los
criterios definidos en el punto anterior.
Acceso | Nombre | NAccesos | Día
Enfermería María, Alejandra, Elena 12 11/02/2013
Personal Juan, Mario, Karla, John 24 11/02/2013
Infraestructura Jimena, Arturo 1 11/02/2013
sTI_CI_v1_201302
SQL
Ejercicio final
Generar un procedimiento almacenado para resolver el siguiente
problema.
Se desea que la base de datos controle de manera lógica el tiempo en
que abre y se cierra una puerta (1 min) y un usuario no podrá abrir dos
puertas considerando el siguiente criterio, puertas del mismo edificio
deberá tener un minuto de diferencia para abrirlas y puertas de
edificios diferentes cinco minutos de diferencia.
•Modificar la estructura necesaria requerida para mantener el estado de
las puertas dentro de un registro.
•Generar un procedimiento almacenado para abrir una puerta este
deberá regresar los siguientes valores.
• ‘Acceso denegado’
Este mensaje se mostrara a la persona que no tenga permiso para
acezar a la puerta
sTI_CI_v1_201302
SQL
Ejercicio final
•‘Acceso temporal denegado’
Este deberá mostrarse al usuario que trate de ingresar a una puerta y no
cumpla con las reglas de tiempo establecidas anteriormente
•‘Clave errónea’
Este mensaje deberá ser enviado cuando la clave de la puerta sea
invalida
•‘Acceso concedido’
Este deberá mostrarse cuando cumpla con todas las condiciones de
acceso requeridas en el sistema.
La salida esperada es la siguiente
--Acceso denegado
Exec [nombre_procedimiento] [paramA], [paramB], [paramC]…
-- Acceso temporal denegado
Exec [nombre_procedimiento] [paramD], [paramE], [paramF]…
Y así sucesivamente para los cuatro estados
C#
sTI_CI_v1_201302
C#
Temario
•Framework .NET
•Lenguaje C#
•POO en C#
•Estructuras de control
•Arquitectura serTI
•DAO , ADO, LINQ,SQL Entity Framework
•Active server page (ASP)
•Ajax
•Javascript
•Prototype
•Jquery
•XML
•JSON
•CSS
•Windows Communication Foundation
•Redes sociales con C#
•IIS
sTI_CI_v1_201302
C#
Framework
•El Framework. NET es una plataforma de desarrollo para la creación de
aplicaciones para Windows, Windows Store, Windows Phone, Windows
Server y Windows Azure.
•La plataforma de Marco. NET incluye el C # y Visual Basic lenguajes de
programación, el tiempo de ejecución de lenguaje común, y una
extensa biblioteca de clases.
http://msdn.microsoft.com/es-es/library/zw4w595w.aspx
sTI_CI_v1_201302
C#
Versiones de .NET
http://msdn.microsoft.com/es-es/library/bb822049.aspx
sTI_CI_v1_201302
C#
Versiones de .NET
.NET IDE Descripción
1.0 Visual Studio .NET Contenía la primera versión de CLR y la primera versión de las bibliotecas de clases
base.
1.1 Visual Studio .NET
2003
Incluía actualizaciones de ASP.NET y ADO.NET. Esta versión se actualizó dos veces
posteriormente, con Service Pack 1 y (SP1) SP2.Esta versión incorporaba también la
ejecución en paralelo, lo que permite que las aplicaciones de un solo equipo
ejecuten varias versiones de CLR.
2.0 Visual Studio 2005 Se incorporó una nueva versión de CLR con ampliaciones de las bibliotecas de
clases base, que incluían genéricos, colecciones de genéricos y ampliaciones
significativas de ASP.NET. Esta versión se actualizó con el SP1 y el SP2.
3.0 Visual Studio 2005 Esta versión es esencialmente .NET Framework 2.0 con la incorporación de
Windows Presentation Foundation (WPF), Windows Communications Foundation
(WCF), Windows Workflow Foundation (WF) y CardSpace. Se actualizó con SP1 y
SP2.
3.5 Visual Studio 2008 Se agregaron nuevas características, como los sitios web habilitados para AJAX y
LINQ. La actualización SP1 incorporaba datos dinámicos y un pequeño conjunto de
mejoras adicionales.
4 Visual Studio 2010 Incluye una nueva versión de CLR, bibliotecas de clases base expandidas y nuevas
características, como Managed Extensibility Framework (MEF), Dynamic Language
Runtime (DLR) y contratos de código.
4.5 Visual Studio 2012 Incluye una versión actualizada de CLR, compatibilidad para compilar aplicaciones
Tienda Windows de Windows y las actualizaciones para WPF, WCF, WF y ASP.NET.
sTI_CI_v1_201302
C#
Lenguaje C#
C# es un lenguaje orientado a objetos elegante y con seguridad de tipos
que permite a los desarrolladores crear una amplia gama de
aplicaciones sólidas y seguras que se ejecutan en .NET Framework.
Puede utilizar este lenguaje para crear aplicaciones cliente para
Windows tradicionales, servicios Web XML, componentes distribuidos,
aplicaciones cliente-servidor, aplicaciones de base de datos, y muchas
tareas más. C# proporciona un editor de código avanzado, diseñadores
de interfaz de usuario prácticos, un depurador integrado y muchas otras
herramientas para facilitar un rápido desarrollo de la aplicación basado
en la versión del lenguaje C# y en .NET Framework.
http://msdn.microsoft.com/es-es/library/z1zx9t92(v=vs.80).aspx
sTI_CI_v1_201302
C#
POO
• Clase
• class
• Modificadores de acceso
• Public [Elemento]
• Internal [Elemento]
• Private [Elemento]
• Protected [Elemento]
• Objeto
• [Clase] [nombre Objeto] = new [Clase]()
• var [nombre Objeto] = new [Clase]()
• var [nombre Objeto] = [Objeto]()
http://msdn.microsoft.com/es-mx/library/ms228593(v=vs.80).aspx
sTI_CI_v1_201302
C#
POO
• Abstracción
• abstract class [Nombre_Base]
• Encapsulamiento
• Public String [Popiedad]{get;set;}
• Public String [Popiedad]{ get{return _att;} set{_att=value;};}
• Herencia
• class [Nombre]: [Nombre_Base]
http://msdn.microsoft.com/es-es/library/ms173152(v=vs.90).aspx
sTI_CI_v1_201302
C#
POO
• Polimorfismo
internal class Mamifero
{
public int Patas { get; set; }
public string Nombre { get; set; }
public virtual void YoSoy()
{ Console.WriteLine("Yo Soy:"); }
}
internal class Leon : Mamifero
{
public Leon()
{ this.Patas = 4; this.Nombre = "Leon";
}
sTI_CI_v1_201302
C#
POO
public override void YoSoy()
{ base.YoSoy();
Console.WriteLine("Un" + this.Nombre + " con " + this.Patas + " patas");
}
}
internal class Chimpance : Mamifero
{
public Chimpance()
{ this.Patas = 2;
this.Nombre = "Chimpance";
}
public override void YoSoy()
{
base.YoSoy();
Console.WriteLine("Un" + this.Nombre + " con " + this.Patas + " patas");
}
}
sTI_CI_v1_201302
C#POO
class Program {
static void Main(string[] args) {
var oMamifero = new Mamifero();
Console.WriteLine("Mamifero");
oMamifero.YoSoy();
var oLeon = new Leon();
Console.WriteLine("Leon");
oLeon.YoSoy();
var oChimpance= new Chimpance();
Console.WriteLine("Chimpance");
oChimpance.YoSoy();
List<Mamifero> oMamiferos = new List<Mamifero>();
oMamiferos.Add(oLeon);
oMamiferos.Add(oChimpance);
Console.WriteLine("Polimorfismo");
foreach (var mamifero in oMamiferos) {
mamifero.YoSoy();
}
Console.ReadKey();
}
}
sTI_CI_v1_201302
C#
POO
• Polimorfismo
internal class Mamifero
{
public int Patas { get; set; }
public string Nombre { get; set; }
public virtual void YoSoy()
{ Console.WriteLine("Yo Soy:"); }
}
internal class Leon : Mamifero
{
public Leon()
{ this.Patas = 4; this.Nombre = "Leon";
}
http://msdn.microsoft.com/es-es/library/ms173152(v=vs.90).aspx
sTI_CI_v1_201302
C#
Estructuras de control
• If
If([condicion_boleana]){
[codigo_If];
}
else{
[codigo_else];
}
• switch
switch{
case [valor]:
break;
default:
break;
}
sTI_CI_v1_201302
C#
Estructuras de control
• while
while ([condicion])
{
break;
continue;
}
• for
for ([tipo_dato] [varialble] [inicializador]; [condicion de paro]; [paso]) {
[codigo];
}
• foreach
foreach([tipo_dato] [objeto] in [Lista_Objetos] ){
[codigo];
}
http://es.wikipedia.org/wiki/Estructuras_de_control
sTI_CI_v1_201302
C#
Arquitectura serTI
sTI_CI_v1_201302
C#
DAO (Data Access Object)
Data Access Objects (DAO, Objetos de Acceso a Datos)
es una interfaz orientada a objetos creada
por Microsoft la cual permitía a las primeras versiones
de Microsoft Access y Visual Basic utilizar el motor de
base de datos Jet . Posteriormente (en la versión 3.5)
fue capaz de realizar un bypass al motor Jet y
directamente acceder a las fuentes de datos ODBC,
incluyendo Microsoft SQL Server y otros sistemas de
bases de datos de empresa. DAO 3.6 fue la versión
final desarrollada por Microsoft. Microsoft dice que
DAO no estará disponible en los futuros sistemas
operativos de 64-bit.
sTI_CI_v1_201302
C#
DAO (Data Access Object)
sTI_CI_v1_201302
C#
ADO
(Microsoft ActiveX Data Objects - ADO). Conjunto de
objetos COM para el acceso a recursos de datos. Prevé una
capa entre los lenguajes de programación y las bases de
datos OLE, lo que permite a los programadores escribir
programas que accedan a datos, sin saber cómo está
implementada la base de datos (sólo se debe tener
cuidado en la conexión a la misma). Tampoco es necesario
conocer sobre SQL cuando se usa ADO, aunque también
pueden utilizarse comandos SQL, pero esto crearía en el
programa una dependencia del tipo de base de datos
usado.
sTI_CI_v1_201302
C#
ADO
sTI_CI_v1_201302
C#
LINQ
LINQ to SQL es una implementación de O/RM(object relational
mapping, mapeador de objetos relacionales) que viene con la
versión "Orcas" del .NET Framework, y nos permite modelar
bases de datos relacionales con clases de .NET. Podemos
consultar bases de datos con LINQ, así como
actualizar/añadir/borrar datos de ellas.
sTI_CI_v1_201302
C#
LINQ
sTI_CI_v1_201302
C#
SQL Entity Framework
Entity Framework es un conjunto de tecnologías de ADO.NET
que apoyan el desarrollo de aplicaciones de software orientadas
a datos. Los arquitectos y desarrolladores de aplicaciones
orientadas a datos han luchado con la necesidad de lograr dos
objetivos muy diferentes. Ellos deben modelar las entidades,
relaciones y lógica de los problemas de las empresas que están
resolviendo, y también deben trabajar con los motores de datos
utilizadas para almacenar y recuperar los datos. Los datos
pueden abarcar varios sistemas de almacenamiento, cada uno
con sus propios protocolos, e incluso aplicaciones que funcionan
con un único sistema de almacenamiento debe equilibrar los
requisitos del sistema de almacenamiento con los requisitos de
la escritura de código de la aplicación eficaz y fácil de mantener.
sTI_CI_v1_201302
C#
SQL Entity Framework
sTI_CI_v1_201302
C#
Lenguaje 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 través 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 composición de expresiones más
legibles, incluyen la construcción de manejadores de eventos.
LINQ además define un conjunto de nombres de métodos (llamados operadores
de consulta estándar), y un conjunto de reglas de traducción, que son usadas por
el compilador para traducir las expresiones de consulta en expresiones normales
del lenguaje, usando estos nombres de métodos, expresiones lambda y tipos
anónimos. Muchos de los conceptos que LINQ ha introducido, fueron probados
inicialmente en el proyecto de investigación Microsoft Cω. LINQ fue lanzado como
un componente principal de .NET Framework 3.5 el 19 de noviembre de 2007.
sTI_CI_v1_201302
C#
Lenguaje LINQ
•LINQ to XML
•LINQ to Entities
•LINQ to Objects
•LINQ to DataSet
http://msdn.microsoft.com/es-es/library/bb387061.aspx
http://msdn.microsoft.com/es-es/library/bb386964.aspx
http://msdn.microsoft.com/es-es/library/bb397919.aspx
http://msdn.microsoft.com/es-es/library/bb386977.aspx
sTI_CI_v1_201302
C#
Ejercicio
Generar alas siguientes consultas:
•Una consulta para alta, baja, actualización y búsqueda por
clave de una tabla.
•Generar una consulta que obtenga la lista de los edificio en
formato Xml
sTI_CI_v1_201302
C#
Principales Operadores LINQ
•Where
•Select
•Group by
•Count
•SelectMany
•Distinct
•Union
•Intersect
•Except
•Take
•TakeWhile
•OrderBy
•ThenBy
•Range
•Concat
•Combine
•Max
•Average
•Aggregate
•Sum
•Union
•Min
•Cross Join
•Group Join
sTI_CI_v1_201302
C#
Ejercicio
•Seleccionar 5 operadores de la cada una de las columnas
anteriores y utilizarlos en consultas; Las consultas serán
puntuadas al final del ejercicio dependiendo de le número de
operadores que se utilizan con un valor exponencial.
•1 op= 1! pto
•2 op = 2! ptos
•……
sTI_CI_v1_201302
C#
Métodos HTTP
Método Significado
GET Devuelve el recurso identificado en la URL pedida.
HEAD Funciona como el GET, pero sin que el servidor devuelva el cuerpo del
mensaje. Es decir, sólo se devuelve la información de cabecera.
POST Indica al servidor que se prepare para recibir información del cliente.
Suele usarse para enviar información desde formularios.
PUT Envía el recurso identificado en la URL desde el cliente hacia el servidor.
OPTIONS Pide información sobre las características de comunicación
proporcionadas por el servidor. Le permite al cliente negociar los
parámetros de comunicación.
TRACE Inicia un ciclo de mensajes de petición. Se usa para depuración y
permite al cliente ver lo que el servidor recibe en el otro lado.
DELETE Solicita al servidor que borre el recurso identificado con el URL.
CONNECT Este método se reserva para uso con proxys. Permitirá que un proxy
pueda dinámicamente convertirse en un túnel. Por ejemplo para
comunicaciones con SSL.
sTI_CI_v1_201302
C#
Active server page (ASP)
Microsoft introdujo esta tecnología llamada Active Server
Pages en diciembre de 1996, por lo que no es nada nueva.
Es parte del Internet Information Server (IIS) desde
la versión 3.0 y es una tecnología de páginas activas que permite
el uso de diferentes scripts y componentes en conjunto con el
tradicional HTML para mostrar páginas generadas
dinámicamente, traduciendo la definición de Microsoft: “Las
Active Server Pages son un ambiente de aplicación abierto y
gratuito en el que se puede combinar código HTML, scripts y
componentes ActiveX del servidor para crear soluciones
dinámicas y poderosas para el web”.
sTI_CI_v1_201302
C#
Ciclo de vida ASP
http://msdn.microsoft.com/es-mx/library/ms178473(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx
•PreInit
•Init
•InitComplete
•PreLoad
•Load
•LoadComplete
•PreRender
•PreRenderComplete
•SaveStateComplete
•Render
•Unload
sTI_CI_v1_201302
C#
ASP MVC (Model-View-Controller)
ASP.NET MVC es, básicamente, una implementación del patrón Modelo -
Vista - Controlador (MVC) para tecnología ASP.NET. El patrón MVC no es ni
nuevo (data de finales de los años 70) ni está pensado para aplicaciones
web, pero en realidad en aplicaciones web encaja perfectamente.
Brevemente podemos decir que el patrón MVC separa la lógica (y acceso a
datos) de una aplicación de su presentación, usando 3 componentes:
Modelo: Representa las reglas de negocio de la aplicación (y el acceso a
datos subyacente).
Vistas: Representan la presentación de la aplicación.
Controlador: Actúan de intermediario entre el usuario y el Modelo y las
Vistas. Recogen las peticiones del usuario, interaccionan con el modelo y
deciden que vista es la que debe mostrar los datos.
En el contexto de ASP.NET MVC: Toda la lógica de negocio y el acceso a
datos es el Modelo (en muchos casos el Modelo puede estar en uno o
varios assemblies referenciados).
Las vistas contienen, básicamente, el código que se envía al navegador, es
decir el código HTML (y código de servidor asociado, siempre y cuando este
código haga cosas de presentación, no de lógica de negocio).
Los controladores reciben las peticiones del navegador y en base a esas,
deciden que vista debe enviarse de vuelta al navegador y con qué datos.
sTI_CI_v1_201302
C#
ASP MVC (Model-View-Controller)
sTI_CI_v1_201302
C#
ASP Controles principales
ASP
•Label
•Textbox
•HyperLink
•Image
•RadioButton
•CheckBox
•GridView
•ListBox
•DropDownList
HTML
•Input (Button)
•Input (Text)
•Input (CheckBox)
•Image
•Select
Validadores
•Compare
•Custom
•Range
•RegularExpresion
•RequieredField
•ValidationSummary
sTI_CI_v1_201302
C#
ASP Master Page
Páginas maestras ASP.NET le permiten crear un diseño
coherente para las páginas de la aplicación. Una sola página
maestra define el aspecto y la sensación y el
comportamiento estándar que desea para todas las páginas
(o un grupo de páginas) de la aplicación. A continuación,
puede crear páginas individuales de contenido que
contienen el contenido que desea mostrar. Cuando los
usuarios solicitan las páginas de contenido, se fusionan con
la página principal para producir una salida que combina el
diseño de la página principal con los contenidos de la página
de contenido.
sTI_CI_v1_201302
C#
Control de usuario (WebUserControl)
Controles de usuario Web son archivos con la extensión ascx
que se pueden incluir en los formularios Web Forms, Web
Forms con el padre convirtiéndose en el contenedor del
control.. Controles de usuario Web le permiten reutilizar
fácilmente piezas de funcionalidad en una serie de formularios
Web Forms.
http://msdn.microsoft.com/en-us/library/3457w616(v=vs.71).aspx
sTI_CI_v1_201302
C#
Controles de navegación
•Control Menu El Menu (control) permite agregar funcionalidad de navegación
a las páginas web. El control Menu admite un menú principal y submenús, y
permite definir menús dinámicos (a veces denominados menús emergentes).
Para obtener información acerca de la programación del control Menu, vea
Menu (Clase) en MSDN Library.
•Control SiteMapPath El SiteMapPath (control) muestra una ruta de
navegación (también denominada árbol de navegación) que indica al usuario la
ubicación de la página actual y muestra los vínculos como una ruta de retorno a
la página principal. El control proporciona muchas opciones para personalizar la
apariencia de los vínculos. Para obtener información acerca de la programación
del control SiteMapPath, vea el artículo SiteMapPath (Clase) en MSDN Library.
• Control TreeView El TreeView (control) sirve para mostrar datos jerárquicos,
como una tabla de contenido o un directorio de archivos, en una estructura de
árbol. Para obtener información acerca de la programación del
control TreeView, vea el artículo TreeView (Clase) en MSDN Library.
sTI_CI_v1_201302
C#
Ajax
AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono
y XML), es una técnica de desarrollo web para crear aplicaciones interactivas
o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es
decir, en el navegador de los usuarios mientras se mantiene la
comunicación asíncrona con el servidor en segundo plano. De esta forma es
posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que
significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones.
Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se
solicitan al servidor y se cargan en segundo plano sin interferir con la
visualización ni el comportamiento de la página. JavaScript es el lenguaje
interpretado (scripting language) en el que normalmente se efectúan las
funciones de llamada de Ajax mientras que el acceso a los datos se realiza
mediante XMLHttpRequest, objeto disponible en los navegadores actuales. En
cualquier caso, no es necesario que el contenido asíncrono esté formateado
en XML.
Ajax es una técnica válida para múltiples plataformas y utilizable en muchos
sistemas operativos y navegadores dado que está basado en estándares abiertos
como JavaScript y Document Object Model (DOM).
http://msdn.microsoft.com/en-us/library/3457w616(v=vs.71).aspx
sTI_CI_v1_201302
C#
Ejercicio
•Crear una página maestra alguna de las siguientes
distribuciones
sTI_CI_v1_201302
C#
Ejercicio
Crear o modifica la estructura necesaria para realizar lo
siguiente.
•Generar una página de bienvenida en el sistema. Esta deberá
tener un espacio para ingresar un correo electrónico y un
password. El sistema deberá validar estos datos y si son
correctos deberá enviarlo a una pantalla de Inicio.
•Crear un mapa de navegación para el sitio así como un menú
lateral.
•El sistema deberá guardar en un XML el estado de cada
usuario y al iniciar la aplicación esta deberá enviarlo a la ultima
página donde navego. Si no existe deberá ingresar al la de inicio
sTI_CI_v1_201302
C#
Ejercicio
Crear una página web para el registro de usuarios donde se
valide lo siguiente.
•Validar que la caja de texto password sea igual al de la
confirmación
•Generar que la fecha de nacimiento sea de un adulto (18
años mínimo)
•Validar el correo electrónico tenga una estructura valida.
•Validar que se ingrese el nombre
•Mostrar un resumen de los datos erróneos en caso de existir
sTI_CI_v1_201302
C#
GridView
C
sTI_CI_v1_201302
C#
Interface de usuario
•La interfaz de usuario es el medio con que el usuario puede
comunicarse con una máquina, un equipo o
una computadora, y comprende todos los puntos de contacto
entre el usuario y el equipo. Normalmente suelen ser fáciles
de entender y fáciles de accionar.
sTI_CI_v1_201302
C#
Prototype (patrón de diseño)
El patrón de diseño Prototype (Prototipo), tiene como
finalidad crear nuevos objetos duplicándolos, clonando una
instancia creada previamente..
Este patrón especifica la clase de objetos a crear mediante la
clonación de un prototipo que es una instancia ya creada. La
clase de los objetos que servirán de prototipo deberá incluir
en su interfaz la manera de solicitar una copia, que será
desarrollada luego por las clases concretas de prototipos
sTI_CI_v1_201302
C#
Javascript
Lenguaje de programación interpretado, dialecto del
estándar ECMAScript. Se define como orientado a objetos,
basado en prototipos, imperativo, débilmente tipado y
dinámico.
Se utiliza principalmente en su forma del lado del cliente
(client-side), implementado como parte de un navegador
web permitiendo mejoras en la interfaz de usuario y páginas
web dinámicas, en bases de datos locales al
navegador... aunque existe una forma de JavaScript del lado
del servidor (Server-side JavaScript o SSJS).
Su uso en aplicaciones externas a la web, por ejemplo en
documentos PDF, aplicaciones de escritorio
(mayoritariamente widgets) es también significativo.
JavaScript se diseñó con una sintaxis similar al C, aunque
adopta nombres y convenciones del lenguaje de
programación Java. Sin embargo Java y JavaScript no están
relacionados y tienen semánticas y propósitos diferentes.
https://developer.mozilla.org/es/docs/Introducci%C3%B3n_a_JavaScript_orientado_a_objetos
sTI_CI_v1_201302
C#
Javascript
•Eventos
onClick,onChange,mouseMove
•Selectores
getElementByID, getElementByTagName
•Document Object Model
document.XX
•Incluir script
•HTML
<script src=“[Nombre]" type="text/javascript"></script>
•C#
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
“[Nombre_Script]",[ Script], true);
http://www.maestrosdelweb.com/editorial/diez-funciones-imprescindibles-en-javascript/
http://www.maestrosdelweb.com/editorial/dom/
sTI_CI_v1_201302
C#
Cascading Style Sheets (CSS)
CSS son las siglas de Cascading Style Sheets - Hojas de Estilo
en Cascada - que es un lenguaje que describe la presentación
de los documentos estructurados en hojas de estilo para
diferentes métodos de interpretación, es decir, describe como
se va a mostrar un documento en pantalla, por impresora, por
voz (cuando la información es pronunciada a través de un
dispositivo de lectura) o en dispositivos táctiles basados en
Braille.
Dentro del diseño de páginas de Internet se presenta esta
como la vanguardia en cuanto a definición de estilos dentro
de las plantillas de diseño. A través de instrucciones en código
HTML se definen los estándares del conjunto de páginas que
conforman el proyecto. La meta es uniformizar nuestro
diseño.
http://www.xsvc.com.ve/tutoriales/ManualCssHojasDeEstilos.pdf
sTI_CI_v1_201302
C#
Principales elementos CSS
http://www.w3c.es/Divulgacion/GuiasReferencia/CSS21/
•Selectores
•Notación
•Tipos de medios
•Sintaxis
•Unidades
•Modelo de cajas
•Márgenes
•Relleno
•Bordes
•Modelo de formato visual
•Detalles del modelo de formato visual
•Efectos visuales
•Contenido generado, numeración automática y listas
•Colores y fondo
•Medios paginados
•Fuentes
•Texto
•Tablas
•Interfaz de usuario
sTI_CI_v1_201302
C#
Estructura de estilos CSS
•Elemento
html {
border-color:red;
}
<html>
Estilo
.html {
border-color:red;
}
<body class=“html”>
•Identificador
#html {
border-color:red;
}
<div id=“html”>
sTI_CI_v1_201302
C#
Ejemplo CSS
<html>
<head>
<style>
body{ background-color:gray;} /*Nivel 1*/
body table { background-color:yellow;} /*Nivel 2*/
body table tr {background-color:green;} /*Nivel 3*/
#MiTexto{background-color:#f32;}
.Elemento{color:white;}
</style>
</head>
<body>
<span> Texto Body</span>
<table>
<tr class="Elemento">
<td >
Texto td
<span id="MiTexto"> Texto Span</span>
</td>
</tr>
</table>
</body>
</html>
sTI_CI_v1_201302
C#
jQuery
•jQuery es una biblioteca de JavaScript, creada inicialmente
por John Resig, que permite simplificar la manera de
interactuar con los documentos HTML, manipular el
árbol DOM, manejar eventos, desarrollar animaciones y
agregar interacción con la técnica AJAX a páginas web. Fue
presentada el 14 de enero de 2006 en el BarCamp NYC.
•Lema
write less, do more
sTI_CI_v1_201302
C#
jQuery Selectores y Eventos
•Selectores
jQuery() o $()
•Eventos
document.ready(
function (){}
);
Funciones anonimas
function (){}
•Efectos
•Handlers
http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery
sTI_CI_v1_201302
C#
jQuery Ejercicio
•Generar una página que contenga 4 controles que deben de
llevar las siguientes características
•(A)Dos deberán ser etiquetas (html) con nombres y clases
diferentes
•(B)Uno deberá ser un dropDownList (ASP) con el nombre de
una clase igual al de una etiqueta
•(C)Una caja de texto Con clases y nombres diferentes a los
anteriores.
•Crear botones para lo siguiente
•Seleccionar todos los controles que pertenezcan a la clase
estilos 2 y deberá ocultarse.
sTI_CI_v1_201302
C#
jQuery Ejercicio
•Seleccionar la caja de texto y las etiquetas cambiando las
siguientes propiedades
•Tipo de letra Calibri
•Tamaño 10 pts
•Color Rojo
Cargar una imagen que se oriente en la parte superior de la
pantalla a la derecha esta deberá cambiar cuando el mouse
pase sobre ella y regresar a su estado cuando este salga
sTI_CI_v1_201302
C#
jQuery Ajax
A)
jQuery.ajax({
url: "test.html",
context: document.body
}).done(function() {
//código aquí
});
B)
jQuery.ajax({
url : "test.html",
cache : false,
type : this.type,
dataType : "jsonp",
crossDomain : true,
data : {
json : this.data
},
success : function(data) {
//código aquí
},
error : function(data) {
//código aquí
}
});
http://api.jquery.com/jQuery.ajax/
sTI_CI_v1_201302
C#
XML
XML proviene de eXtensible Markup Language (“Lenguaje de
Marcas Extensible”). Se trata de
un metalenguaje (un lenguaje que se utiliza para decir algo
sobre otro lenguaje) extensible de etiquetas que fue
desarrollado por el Word Wide Web Consortium (W3C), un
consorcio internacional que elabora recomendaciones para
la World Wide Web.
El XML es una adaptación del SGML (Standard Generalized
Markup Language), un lenguaje que permite la organización y
el etiquetado de documentos. Esto quiere decir que el XML no
es un lenguaje en sí mismo, sino un sistema que permite
definir lenguajes de acuerdo a las necesidades. El XHTML,
el MathML y el SVG son algunos de los lenguajes que el XML
está en condiciones de definir.
sTI_CI_v1_201302
C#
XML Estructura Básica
<?xml version="1.0"?>
<Elemento>
<Elemento_Hijo [nombreAtributo]=valor>
valorElemento
< /Elemento_Hijo >
</Elemento>
sTI_CI_v1_201302
C#
JSON
JSON, acrónimo de JavaScript Object Notation, es un formato
ligero para el intercambio de datos. JSON es un subconjunto
de la notación literal de objetos de JavaScript que no requiere
el uso de XML.
La simplicidad de JSON ha dado lugar a la generalización de su
uso, especialmente como alternativa a XML en AJAX. Una de
las supuestas ventajas de JSON sobre XML como formato de
intercambio de datos en este contexto es que es mucho más
sencillo escribir un analizador sintáctico (parser) de JSON. En
JavaScript, un texto JSON se puede analizar fácilmente usando
la función eval(), lo cual ha sido fundamental para que JSON
haya sido aceptado por parte de la comunidad de
desarrolladores AJAX, debido a la ubicuidad de JavaScript en
casi cualquier navegador web.
sTI_CI_v1_201302
C#
JSON Estructura Básica
{
Elemento:valor
Elemento:[
elementoHijo1:valor
,elementoHijo2:valor]
}
sTI_CI_v1_201302
C#
Comparación XML y JSON
XML
<persona>
<nombre>juan</nombre>
<edad>22</edad>
<estudios>
<estudio>primario</estudio>
<estudio>secundario</estudio>
</estudios>
</persona>
JSON
{
'nombre':'juan',
'edad':22,
'estudios':['primario','secundario']
}
sTI_CI_v1_201302
C#
Prototype
Prototype es un framework que facilita el desarrollo de
aplicaciones web con JavaScript y AJAX. Su autor original
es Sam Stephenson, aunque las últimas versiones incorporan
código e ideas de muchos otros programadores. A pesar de
que incluye decenas de utilidades, la librería es compacta y
está programada de forma muy eficiente.
Prototype se ha convertido en poco tiempo en una referencia
básica de AJAX y es la base de muchos otros frameworks y
librerías relacionadas como script.aculo.us. Las primeras
versiones de Prototype no incluían ningún tipo de
documentación, lo que dificultaba su uso y provocaba que la
mayoría de usuarios desconocieran su verdadero potencial.
Afortunadamente, las versiones más recientes del framework
disponen de una completa documentación de todas las
funciones y métodos que componen su API. La
documentación incluye la definición completa de cada
método, sus atributos y varios ejemplos de uso:
http://www.prototypejs.org/api
http://librosweb.es/ajax/capitulo_10/el_framework_prototype.html
sTI_CI_v1_201302
C#
Definición de un prototipo
Definición
var Objeto= Class.create();
Objeto. prototype = {
initialize: function(propiedad)
{
propiedad= propiedad;
}, metodo: function(parametro)
{
return this. propiedad+ ': ' + parametro; }
};
Uso
var objeto= new Objeto(‘propiedad');
objeto. metodo(' parametro ');
// -> " propiedad : parametro "
sTI_CI_v1_201302
C#
Herencia de un prototipo
Definición
var objetoHijo= Class.create();
objetoHijo.prototype = Object.extend(new Objeto()
, {
//Redefinimos el método
metodo: function(parametro)
{
return parametro;
}
}
);
Uso
var hijo = new objetoHijo(‘propiedad');
hijo.metodo(‘parametro');
// -> “parametro”
sTI_CI_v1_201302
C#
jQuery UI
Es una biblioteca de componentes para
el framework jQuery que le añaden un conjunto de plug-
ins, widgets y efectos visuales para la creación de aplicaciones
web. Cada componente o módulo se desarrolla de acuerdo a
la filosofía de jQuery (find something, manipulate it:
encuentra algo, manipúlalo).
sTI_CI_v1_201302
C#
jQuery UI Principales controles
Interactions
Draggable
Droppable
Resizable
Selectable
Sortable
http://jqueryui.com/demos/
Widgets
Accordion
Autocomplete
Button
Datepicker
Dialog
Menu
Progressbar
Slider
Spinner
Tabs
Tooltip
Effects
Add Class
Color Animation
Effect
Hide
Remove Class
Show
Switch Class
Toggle
Toggle ClassUtilities
Position
Widget Factory
sTI_CI_v1_201302
C#
jQuery UI Ejercicio
•Seleccionar tres elementos de jQuery UI e implementarlos en una
página
•Crear un prototipo de la pantalla que se utilizo antes y generar los
métodos correspondientes para guardar, actualizar, consultar y
eliminar para desde jQuery.
sTI_CI_v1_201302
C#
Windows Communication Foundation
•Windows Communication Foundation (WCF) es un marco de
trabajo para la creación de aplicaciones orientadas a
servicios. Con WCF, es posible enviar datos como mensajes
asincrónicos 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 aplicación. 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
carácter o una palabra que se envía como XML, o tan
complejos como una secuencia de datos binarios
sTI_CI_v1_201302
C#
WCF Componentes principales
•Endpoint
•Address (¿Dónde?)
Dirección de la red
•Binding (¿Cómo?)
Protocolo:TCP,HTTP,MSMQ etc..
Codificación: Texto o Binario
Seguridad: SSL, Seguridad SOAP
Referencia al servicio a exponer
•Contract (¿Qué?)
•Interfaz: Contrato de servicio
sTI_CI_v1_201302
C#
WCF Diagrama
EndpointEndpoint
AA B CBC
Mensajes
Cliente Servidor
sTI_CI_v1_201302
C#
WCF Configuración
Services
<system.serviceModel>
<services>
<service behaviorConfiguration="BlockBehaivior" name="Aon.Adte.Servicio.Estadistico.Folios">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BlockBinding"
contract="Aon.Adte.Servicio.Estadistico.IFolios">
<identity>
<dns value="10.205.4.21" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
sTI_CI_v1_201302
C#
WCF Configuración
Behaviors
<behaviors>
<serviceBehaviors>
<behavior name="BlockBehaivior">
<dataContractSerializer maxItemsInObjectGraph ="65536"/>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Bindings
<bindings>
<basicHttpBinding>
<!--Base-->
<binding name="BlockBinding" closeTimeout="01:00:00" sendTimeout="01:00:00"
receiveTimeout="01:00:00" openTimeout="01:00:00" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Mtom" transferMode="Streamed">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
sTI_CI_v1_201302
C#
IIS
Internet Information Services o IISes un servidor web y un
conjunto de servicios para el sistema operativo Microsoft
Windows. Originalmente era parte del Option
Pack para Windows NT. Luego fue integrado en otros sistemas
operativos de Microsoft destinados a ofrecer servicios, como
Windows 2000 o Windows Server 2003. Windows
XP Profesional incluye una versión limitada de IIS. Los servicios
que ofrece son: FTP, SMTP,NNTP y HTTP/HTTPS.
Antiguamente se denominaba PWS (Personal Web Server), y
actualmente forma parte de la distribución estándar
de Windows, de modo que no se necesita una licencia extra
para instalarlo.
Este servicio convierte a una PC en un servidor web
para Internet o una intranet, es decir que en las computadoras
que tienen este servicio instalado se pueden publicar páginas
web tanto local como remotamente.
Los servicios de Internet Information Services proporcionan
las herramientas y funciones necesarias para administrar de
forma sencilla un servidor web seguro.
sTI_CI_v1_201302
C#
IIS Versiones
•IIS 1.0.- Proporciona la opción de la arquitectura cliente
servidor para Windows 95.
•IIS 2.0.- Soporta plugins, extensiones de Microsoft FrontPage.
•IIS 3.0.- Paginas Active Server, conexiones con bases de datos
de Microsoft a través de Actives Data Object y ODBC.
•IIS 4.0.- Microsoft Management Console (MMC).
•IIS 5.0.- Administración remota de IIS y otros servicios de
Windows.
•IIS 6.0.- Utilización de autenticación en Passport, Proxy y
Firewall.
•IIS 7.0.- Extensibilidad de .NET Y Extensiones ISAPI
•IIS 7.5.- Extensiones WebDav y FTP, Filtrado de solicitudes y
módulos del Administration Pack.
sTI_CI_v1_201302
C#
IIS Tipos de canalización administrada
Canalización integrada es una canalización de procesamiento
de solicitudes unificada que admite módulos de código nativo
y código administrado, provoca todos los eventos que expone
el objeto HttpApplication, que habilita los módulos HTTP de
ASP.NET existentes para trabajar en el modo integrado de IIS
7.0, canalización unificada recibe la primera solicitud de
cualquier recurso de una aplicación, se crea una instancia de
la clase ApplicationManager que es el dominio de aplicación
en el que se procesa la solicitud.
sTI_CI_v1_201302
C#
IIS Pool de aplicaciones
Son creados a nivel del IIS del web server, típicamente por el
administrador web para definir algunos aspectos de seguridad
y performance de un conjunto de aplicaciones, se utilizan
para administrar web sites y aplicaciones, desde el IIS 5.0
sTI_CI_v1_201302
C#
IIS Instalación de Framework
Panel control>programas>Programas y características>activar
o desactivar características Windows
Habilitar el IIS
Habilitar Microsoft .NET 3.5 WCF
Registrar framework
C:WindowsMicrosoft.NETFramework64v4.0.30319
aspnet_regiis –i
sTI_CI_v1_201302
C#
Gracias por su asistencia
Servicios Estratégicos en Tecnologías de
Información S. de R.L. de C.V.
Av. de las Granjas No. 155 Int. 4
Col. Jardín Azpeitia, 02530
México, Distrito Federal.
Oficina. 55906817
Twitter. @serTI_MX
linkedIn: http://linkedin.com/in/serti
info@serti.com.mx
www.serti.com.mx

Más contenido relacionado

La actualidad más candente (15)

Sistema Gestor de Base de Datos MYSQL
Sistema Gestor de Base de Datos MYSQLSistema Gestor de Base de Datos MYSQL
Sistema Gestor de Base de Datos MYSQL
 
Sesión 4
Sesión 4Sesión 4
Sesión 4
 
Tutorial java aplicaciones de escritorio con net beans 6 9 1
Tutorial java  aplicaciones de escritorio con net beans 6 9 1Tutorial java  aplicaciones de escritorio con net beans 6 9 1
Tutorial java aplicaciones de escritorio con net beans 6 9 1
 
Oracle3
Oracle3Oracle3
Oracle3
 
Diferencias entre MySQL y el Estandar SQL
Diferencias entre MySQL y el Estandar SQLDiferencias entre MySQL y el Estandar SQL
Diferencias entre MySQL y el Estandar SQL
 
Reportes con crystalreport
Reportes con crystalreportReportes con crystalreport
Reportes con crystalreport
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Android con Conexion a base de datos SQLITE
Android con Conexion a base de datos SQLITEAndroid con Conexion a base de datos SQLITE
Android con Conexion a base de datos SQLITE
 
V1 ac2887 baena
V1 ac2887 baenaV1 ac2887 baena
V1 ac2887 baena
 
Sesión 6
Sesión 6Sesión 6
Sesión 6
 
Conectar bd mineria de datos
Conectar bd mineria de datosConectar bd mineria de datos
Conectar bd mineria de datos
 
Linq to sql 2
Linq to sql 2Linq to sql 2
Linq to sql 2
 
Lenguaje estructurado sql
Lenguaje estructurado sqlLenguaje estructurado sql
Lenguaje estructurado sql
 

Destacado

ConexióN De Una Base De Datos De Sql Con C#
ConexióN De Una Base De Datos De Sql Con C#ConexióN De Una Base De Datos De Sql Con C#
ConexióN De Una Base De Datos De Sql Con C#LUZ ARIZPE
 
Entity Framework ó Linq SQL - Visual Studio 2012
Entity Framework  ó  Linq SQL - Visual Studio 2012Entity Framework  ó  Linq SQL - Visual Studio 2012
Entity Framework ó Linq SQL - Visual Studio 2012Naim Jhon Cruzado Paredes
 
MS Visual Studio 2010 y MS SQL 2008 R2
MS Visual Studio 2010 y MS SQL 2008 R2MS Visual Studio 2010 y MS SQL 2008 R2
MS Visual Studio 2010 y MS SQL 2008 R2Action Learning Group
 
revista base de datos y visual studio
revista base de datos y visual studiorevista base de datos y visual studio
revista base de datos y visual studioJhos Ayneth Suarez
 
Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013Rodolfo Finochietti
 
Acces vb2008
Acces vb2008Acces vb2008
Acces vb2008eruedaf
 
109545773 base-de-datos-con-c
109545773 base-de-datos-con-c109545773 base-de-datos-con-c
109545773 base-de-datos-con-cMiguel Ángel
 
VS 2005 Y SQL Server 2005 Juntos Son Aun Mejores
VS 2005 Y SQL Server 2005 Juntos Son Aun MejoresVS 2005 Y SQL Server 2005 Juntos Son Aun Mejores
VS 2005 Y SQL Server 2005 Juntos Son Aun Mejoresjuliocasal
 
Contraseña y usuario access y visual basic 2010
Contraseña y usuario access y visual basic 2010Contraseña y usuario access y visual basic 2010
Contraseña y usuario access y visual basic 2010Juan Ortega
 
Visual basic-2008
Visual basic-2008Visual basic-2008
Visual basic-2008ramcoll
 
visuyal basic - barra de herramientas
visuyal basic - barra de herramientasvisuyal basic - barra de herramientas
visuyal basic - barra de herramientaswallky8520
 
Ejemplo ELIMINAR registros desde Visual Basic 2012
Ejemplo ELIMINAR registros desde Visual Basic 2012Ejemplo ELIMINAR registros desde Visual Basic 2012
Ejemplo ELIMINAR registros desde Visual Basic 2012Vane Borjas
 
Ejemplo ACTUALIZAR registros desde Visual Basic 2012
Ejemplo ACTUALIZAR registros desde Visual Basic 2012Ejemplo ACTUALIZAR registros desde Visual Basic 2012
Ejemplo ACTUALIZAR registros desde Visual Basic 2012Vane Borjas
 
Caja de herramientas de visual basic
Caja de herramientas de visual basicCaja de herramientas de visual basic
Caja de herramientas de visual basicNoe Cayetano
 
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual BasicPasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual BasicMaybel_Lopez
 
Ejemplo BUSCAR registros desde Visual Basic 2012
Ejemplo BUSCAR registros desde Visual Basic 2012Ejemplo BUSCAR registros desde Visual Basic 2012
Ejemplo BUSCAR registros desde Visual Basic 2012Vane Borjas
 

Destacado (20)

ConexióN De Una Base De Datos De Sql Con C#
ConexióN De Una Base De Datos De Sql Con C#ConexióN De Una Base De Datos De Sql Con C#
ConexióN De Una Base De Datos De Sql Con C#
 
Entity Framework ó Linq SQL - Visual Studio 2012
Entity Framework  ó  Linq SQL - Visual Studio 2012Entity Framework  ó  Linq SQL - Visual Studio 2012
Entity Framework ó Linq SQL - Visual Studio 2012
 
MS Visual Studio 2010 y MS SQL 2008 R2
MS Visual Studio 2010 y MS SQL 2008 R2MS Visual Studio 2010 y MS SQL 2008 R2
MS Visual Studio 2010 y MS SQL 2008 R2
 
revista base de datos y visual studio
revista base de datos y visual studiorevista base de datos y visual studio
revista base de datos y visual studio
 
Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013
 
Html5
Html5Html5
Html5
 
Acces vb2008
Acces vb2008Acces vb2008
Acces vb2008
 
Visual basic
Visual basicVisual basic
Visual basic
 
Examen unidad ii
Examen unidad iiExamen unidad ii
Examen unidad ii
 
109545773 base-de-datos-con-c
109545773 base-de-datos-con-c109545773 base-de-datos-con-c
109545773 base-de-datos-con-c
 
VS 2005 Y SQL Server 2005 Juntos Son Aun Mejores
VS 2005 Y SQL Server 2005 Juntos Son Aun MejoresVS 2005 Y SQL Server 2005 Juntos Son Aun Mejores
VS 2005 Y SQL Server 2005 Juntos Son Aun Mejores
 
Contraseña y usuario access y visual basic 2010
Contraseña y usuario access y visual basic 2010Contraseña y usuario access y visual basic 2010
Contraseña y usuario access y visual basic 2010
 
Visual basic-2008
Visual basic-2008Visual basic-2008
Visual basic-2008
 
visuyal basic - barra de herramientas
visuyal basic - barra de herramientasvisuyal basic - barra de herramientas
visuyal basic - barra de herramientas
 
Ejemplo ELIMINAR registros desde Visual Basic 2012
Ejemplo ELIMINAR registros desde Visual Basic 2012Ejemplo ELIMINAR registros desde Visual Basic 2012
Ejemplo ELIMINAR registros desde Visual Basic 2012
 
Manual visual studio 2010
Manual visual studio 2010Manual visual studio 2010
Manual visual studio 2010
 
Ejemplo ACTUALIZAR registros desde Visual Basic 2012
Ejemplo ACTUALIZAR registros desde Visual Basic 2012Ejemplo ACTUALIZAR registros desde Visual Basic 2012
Ejemplo ACTUALIZAR registros desde Visual Basic 2012
 
Caja de herramientas de visual basic
Caja de herramientas de visual basicCaja de herramientas de visual basic
Caja de herramientas de visual basic
 
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual BasicPasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
 
Ejemplo BUSCAR registros desde Visual Basic 2012
Ejemplo BUSCAR registros desde Visual Basic 2012Ejemplo BUSCAR registros desde Visual Basic 2012
Ejemplo BUSCAR registros desde Visual Basic 2012
 

Similar a S ti ci_v1_201302

Curso SQL-C# Basico
Curso SQL-C# BasicoCurso SQL-C# Basico
Curso SQL-C# BasicoserTI_MX
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Julián Castiblanco
 
SQL Server rápido y furioso
SQL Server rápido y furiosoSQL Server rápido y furioso
SQL Server rápido y furiosoSpanishPASSVC
 
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITEANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITErosacm chinguel maldonado
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Byron Quisquinay
 
No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014SolidQ
 
1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptx
1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptx1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptx
1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptxCarlosSaid7
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)felpe33
 
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxMARGOTHLORENAMARTINE
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosJosé Antonio Sandoval Acosta
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014JOSE AHIAS LOPEZ PORTILLO
 

Similar a S ti ci_v1_201302 (20)

Curso SQL-C# Basico
Curso SQL-C# BasicoCurso SQL-C# Basico
Curso SQL-C# Basico
 
Introduccion a SQL
Introduccion a SQL Introduccion a SQL
Introduccion a SQL
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2
 
SQL Server rápido y furioso
SQL Server rápido y furiosoSQL Server rápido y furioso
SQL Server rápido y furioso
 
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITEANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
 
Ddl
DdlDdl
Ddl
 
Sq lite
Sq liteSq lite
Sq lite
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
 
No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014
 
1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptx
1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptx1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptx
1_ Introducción a Oracle, SqlDeveloper, Usuarios-Privilegios.pptx
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
 
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
 
Trabajo10
Trabajo10Trabajo10
Trabajo10
 
Amnel
AmnelAmnel
Amnel
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014
 
Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)
 
Taller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DMLTaller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DML
 
Pres17BDII.ppt
Pres17BDII.pptPres17BDII.ppt
Pres17BDII.ppt
 
Sql2
Sql2Sql2
Sql2
 

S ti ci_v1_201302

  • 1. Curso Básico .NET - SQL Febrero 2013
  • 2. • Programación Orientada a objetos (POO) • Lenguaje unificado de modelado (UML) • Lenguaje SQL • Lenguaje C# sTI_CI_v1_201302 Temario
  • 3. POO
  • 4. Conceptos fundamentales sTI_CI_v1_201302 • Clase • Objeto • Abstracción • Encapsulamiento • Polimorfismo • Herencia • http://arevalomaria.wordpress.com/2010/11/24/introduccion-a-la-programacion-orientada-a-objetos/ • http://msdn.microsoft.com/es-es/library/bb972232.aspx POO
  • 5. UML
  • 6. Principales diagramas sTI_CI_v1_201302 • Casos de uso • Clases • Estado • Secuencia • Componentes • http://www.docirs.cl/uml.htm • http://www.escet.urjc.es/~smontalvo/umlToJava_v2.pdf UML
  • 7. Ejercicio sTI_CI_v1_201302 UML Se requiere un sistema para el control de acceso de empleados de la empresa “X”, la empresa cuenta con acceso por medio de código de empleado y sistemas biométricos, el acceso se divide en diez puertas en dos diferentes edificios. El edificio “A” cuenta con 6 puertas de las cuales tres son de uso común (baño, comedor y acceso lugar de trabajo) y tres tienen acceso restringido (site, almacén y enfermería). El edificio “B” cuenta con 4 puertas de las cuales tres son de acceso común (idem anterior) y una de acceso restringido para el almacén.
  • 8. Ejercicio sTI_CI_v1_201302 UML Las puertas de acceso común se activan cuando se ingresa un código de acceso, las puertas de acceso restringido deberán ser abiertas únicamente cuando se ingrese un código valido así como la lectura de la huella digital. El sistema se alojara en el site del edificio “A”. Realizar un diagrama de casos de uso para el acceso a la empresa. Realizar un diagrama de clases para la aplicación. Realizar un diagrama de secuencia para el ingreso a la puerta “A” Baño y “B” almacén. Realizar un diagrama de estado para una puerta restringida.
  • 9. SQL
  • 10. MS SQL Server sTI_CI_v1_201302 • http://www.islasoft.com/Producto/Diferencias_SQL_Server_Office.pdf SQL • IDE • Instancia • Conexiones • Configuración de red • Administración de usuarios
  • 11. Lenguaje de definición de datos (DDL) sTI_CI_v1_201302 • Create • Alter • Drop • Truncate • http://support.microsoft.com/kb/180841/es • http://www.youtube.com/watch?v=HO5eb2wBaBk SQL
  • 12. Create create table [nombre_tabla]( [campo_1] [tipo dato]) Alter alter table [nombre_tabla] add [nombre_columna] [tipo dato] alter table [nombre_tabla] drop [nombre_columna] alter column [nombre_columna] [tipo_dato] [propiedad_especial] Drop drop [objeto] [nombre_tabla] • index • database • table Truncate truncate table [nombre_tabla] sTI_CI_v1_201302 • http://grimpidev.wordpress.com/2009/03/21/diferencias-entre-truncate-table-y-delete-from/ SQL Instrucciones fundamentales del DDL
  • 13. Ejercicio(DDL) sTI_CI_v1_201302 SQL • Crear por medio de código una tabla del modelo de accesos y otra por medio la herramienta de diseño. • Crear una consulta que agregue la columna de fecha de creación y modificación además de las columnas de usuarioCreacion y usuarioUltimaModificación • Crear una consulta para remover la columna de usaurioCreacion • Borrar la primer tabla creada.
  • 14. Lenguaje de manipulación de datos (DML) sTI_CI_v1_201302 • Insert • Update • Delete • Select SQL • http://msdn.microsoft.com/es-es/library/ms177591(v=sql.90).aspx /
  • 15. Select select [nombre_columna],..[n] Insert Insert [nombre_tabla] values ([valor_columna],..[n]) Update update [nombre_tabla] set [nombre_columna] = [valor_columna] Delete delete from [nombre_tabla] sTI_CI_v1_201302 SQL Instrucciones fundamentales del DML
  • 17. La sentencia join en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL). Habitualmente cuando necesitamos recuperar la información de las consultas combinadas o JOINS. Las consultas combinadas pueden ser de tres tipos: •Combinación interna •Combinación externa •Uniones sTI_CI_v1_201302 • http://www.devjoker.com/contenidos/articulos/17/Consultas-combinadas-JOINS.aspx SQL JOINS
  • 18. Ejercicio(DML) sTI_CI_v1_201302 SQL • Insertar treinta registros en la tabla creada en el ejercicio anterior (Generar fechas de creación y modificación aleatorias no se podrá repetir ninguna) • Generar una consulta que contenga los 5 registros con fechas de creación más antiguas y modificar su fecha de modificación por la del día de hoy
  • 19. Ejercicio(DML) sTI_CI_v1_201302 SQL • Crear una consulta que genere el siguiente resultado. • Se requiere dividir la tabla de la cual se tiene información en tres periodos (estos deberán de tratar de ser equitativos en el número de registros), estos dependerán de la fecha de creación siendo los más antiguos los que formen el primer periodo y los mas recientes el último periodo. • Extraer la fecha de creación máxima y mínima del segundo periodo.
  • 20. Ejercicio(DML) sTI_CI_v1_201302 SQL • Crear una consulta que enliste un conteo de cada uno de los días de fecha de creación de la tabla con la que se tiene contenido. P.e. si la base de datos contiene los siguiente registros. Fecha creación 30/1/2013 30/12/2012 Deberá generar el siguiente registro. Día | Conteo 30 | 2 Nota: si un día no se encuentra este deberá mostrar un 0
  • 21. Tabla virtual o consulta basada en varias tablas, vistas o consultas. Esta tabla virtual se le asigna un nombre que se almacena permanentemente en la base de datos, generando al igual que las tablas una entrada en el diccionario de datos. La vistas se compone de filas y columnas como una tabla real a diferencia de que estas se generan a partir de una consulta y no existen físicamente los registros sTI_CI_v1_201302 SQLVistas Sintaxis CREATE VIEW [nombre_vista] As [consulta_SQL]
  • 22. Un procedimiento es un programa dentro de la base de datos que ejecuta una acción o conjunto de acciones especificas. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código. sTI_CI_v1_201302 • http://www.devjoker.com/contenidos/catss/238/Procedimientos-almacenados-en-Transact-SQL.aspx SQL Procedimiento almacenado
  • 23. Es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación Trigger DML Son un tipo especial de procedimiento almacenado que se ejecuta automáticamente cuando se modifican los datos de una determinada tabla. Los desencadenadores se crean a menudo para exigir integridad referencial o coherencia entre los datos lógicamente relacionados en tablas diferentes. sTI_CI_v1_201302 • http://msdn.microsoft.com/es-es/library/ms191524(v=sql.90).aspx SQL Desencadenador (Trigger)
  • 24. Trigger DDL Los desencadenadores DDL, al igual que los desencadenadores habituales, activan procedimientos almacenados como respuesta a un evento. Sin embargo, a diferencia de los desencadenadores DML, no se activan como respuesta a las instrucciones UPDATE, INSERT o DELETE de una tabla o vista. En cambio, sí se activan en respuesta a diversos eventos del lenguaje de definición de datos (DDL). Estos eventos corresponden principalmente a instrucciones Transact-SQL que comienzan por las palabras clave CREATE, ALTER y DROP. Determinados procedimientos almacenados del sistema que realizan operaciones de estilo DDL también pueden activar desencadenadores DDL. sTI_CI_v1_201302 SQL Desencadenador (Trigger)
  • 25. CREATE TRIGGER [nombre_desencadenador] ON DATABASE FOR [Operación Insert/Update/Alter] AS [Código] GO sTI_CI_v1_201302 • http://msdn.microsoft.com/es-es/library/ms191524(v=sql.90).aspx • http://msdn.microsoft.com/es-es/library/ms175941(v=sql.90).aspx SQL Desencadenador (Trigger)
  • 26. sTI_CI_v1_201302 SQL Funciones Una función es una rutina de Transact-SQL o Common Language Runtime (CLR) que acepta parámetros, realiza una acción, como un cálculo complejo, y devuelve el resultado de esa acción como un valor. El valor devuelto puede ser un valor escalar (único) o una tabla. Utilice esta instrucción para crear una rutina reutilizable que se pueda utilizar de estas formas: •En instrucciones Transact-SQL como SELECT •En las aplicaciones que llaman a la función •En la definición de otra función definida por el usuario •Para parametrizar una vista o mejorar la funcionalidad de una vista indizada •Para definir una columna en una tabla •Para definir una restricción CHECK en una columna •Para reemplazar un procedimiento almacenado
  • 27. sTI_CI_v1_201302 SQL Ejercicio •Generar una vista donde se muestre a las personas y los accesos de esta. •Generar un stored procedure para eliminar a una persona; Este deberá borrar todos los accesos de esta así como almacenar en una bitácora las principales operaciones que realizo. •Generar un trigger para dar de alta automáticamente los accesos generales cuando se da de alta una nueva persona.
  • 28. sTI_CI_v1_201302 • http://msdn.microsoft.com/es-mx/library/ms177481.aspx SQL Tareas programadas (Jobs) El objeto de rendimiento Jobs del Agente SQL Server contiene contadores de rendimiento que proporcionan información acerca de los trabajos del Agente SQL Server.
  • 29. sTI_CI_v1_201302 SQL Ejercicio (Jobs) •Crear un job que realice lo siguiente ejecutar un procedimiento almacenado que genere una lista con las personas que faltaron el día anterior (es decir no hay registro de fecha de ellas en ninguna puerta) así como analizar la hora de entrada y marcar con retardo a las personas que no ingresaron a tiempo (tolerancia 10 min) a la hora de entrada (9 AM) y con asistencia para las que llegaron a tiempo •Estas se deberán almacenar en una tabla de asistencia que deberá contener los siguientes estados por cada persona asistencia, retardo e inasistencia. •La tarea programada deberá correr todos los días laborales (L-V) al termino del ciclo laboral (7 PM)
  • 30. sTI_CI_v1_201302 SQL Tablas •Físicas create Table [] •Temporales •Globales create table ##[nombre_tabla]([nombre_columna] [tipo_dato]) •Locales create table #[nombre_tabla]([nombre_columna] [tipo_dato]) •Variables declare @[nombre_tabla] TABLE( [nombre_columna] [tipo_dato]);
  • 31. sTI_CI_v1_201302 SQL IF...ELSE Impone condiciones en la ejecución de una instrucción Transact-SQL. La instrucción Transact-SQL que sigue a una palabra clave IF y a su condición se ejecuta si la condición se cumple: la expresión booleana devuelve TRUE. La palabra clave opcional ELSE introduce otra instrucción Transact-SQL que se ejecuta cuando la condición IF no se cumple: la expresión booleana devuelve FALSE.
  • 33. sTI_CI_v1_201302 SQL CASE Evalúa una lista de condiciones y devuelve una de las varias expresiones de resultado posibles http://technet.microsoft.com/es-es/library/ms181765.aspx
  • 34. sTI_CI_v1_201302 SQL CASE CASE expresion WHEN [valor] THEN expresion resultado ELSE expresion resultado END
  • 35. sTI_CI_v1_201302 SQL Cursores y ciclos Cursor Un cursor es una variable que nos permite recorrer con un conjunto de resultados obtenido a través de una sentencia SELECT fila a fila. Cuando trabajemos con cursores debemos seguir los siguientes pasos. Declarar el cursor, utilizando DECLARE Abrir el cursor, utilizando OPEN Leer los datos del cursor, utilizando FETCH ... INTO Cerrar el cursor, utilizando CLOSE Liberar el cursor, utilizando DEALLOCATE http://www.devjoker.com/contenidos/articulos/240/Cursores-en-Transact-SQL.aspx
  • 36. sTI_CI_v1_201302 SQL Cursores y ciclos DECLARE <nombre_cursor> CURSOR FOR <sentencia_sql> -- apertura del cursor OPEN <nombre_cursor> -- Lectura de la primera fila del cursor FETCH <nombre_cursor> INTO <lista_variables> WHILE (@@FETCH_STATUS = 0) BEGIN -- Lectura de la siguiente fila de un cursor FETCH <nombre_cursor> INTO <lista_variables>… END -- Fin del bucle WHILE -- Cierra el cursor CLOSE <nombre_cursor> -- Libera los recursos del cursor DEALLOCATE <nombre_cursor>
  • 37. sTI_CI_v1_201302 SQL Cursores y ciclos Ciclo Establece una condición para la ejecución repetida de una instrucción o bloque de instrucciones SQL. Las instrucciones se ejecutan repetidamente siempre que la condición especificada sea verdadera. Se puede controlar la ejecución de instrucciones en el bucle WHILE con las palabras clave BREAK y CONTINUE. http://msdn.microsoft.com/es-mx/library/ms178642.aspx
  • 38. sTI_CI_v1_201302 SQL Cursores y ciclos WHILE [condicion] BEGIN [Codigo] END
  • 39. sTI_CI_v1_201302 SQL Comando Execute Ejecuta una cadena de comandos o una cadena de caracteres dentro de un lote de Transact-SQL o uno de los siguientes módulos: procedimiento almacenado del sistema, procedimiento almacenado definido por el usuario, procedimiento almacenado CLR, función escalar definida por el usuario o procedimiento almacenado extendido. Ejemplo Execute ‘Select * from [nombre tabla]’
  • 40. sTI_CI_v1_201302 SQL Ejercicio Generar las siguientes consultas •Generar una lista que indique por cada una de las puertas en la aplicación si esta esta asociada o no al menos a un usuario. Puerta | Asociada Almacén –A Si Almacén-B No •Generar una consulta donde muestre la lista de usuarios y los clasifique en los siguientes rubros Invitado - Solo acceso a las áreas comunes (AC) Personal – (AC) y al área de trabajo (AT) Enfermero(a) – (AC)- Enfermería (E) Infraestructura (AC) – Site Empleado | Acceso Pedro Personal María Enfermera http://msdn.microsoft.com/es-mx/library/ms178642.aspx
  • 41. sTI_CI_v1_201302 SQL Ejercicio Generar una lista de empleados por acceso y mostrarla en el sistema Como se muestra en el siguiente ejemplo y tomando en cuanta los criterios definidos en el punto anterior. Acceso | Nombre | NAccesos | Día Enfermería María, Alejandra, Elena 12 11/02/2013 Personal Juan, Mario, Karla, John 24 11/02/2013 Infraestructura Jimena, Arturo 1 11/02/2013
  • 42. sTI_CI_v1_201302 SQL Ejercicio final Generar un procedimiento almacenado para resolver el siguiente problema. Se desea que la base de datos controle de manera lógica el tiempo en que abre y se cierra una puerta (1 min) y un usuario no podrá abrir dos puertas considerando el siguiente criterio, puertas del mismo edificio deberá tener un minuto de diferencia para abrirlas y puertas de edificios diferentes cinco minutos de diferencia. •Modificar la estructura necesaria requerida para mantener el estado de las puertas dentro de un registro. •Generar un procedimiento almacenado para abrir una puerta este deberá regresar los siguientes valores. • ‘Acceso denegado’ Este mensaje se mostrara a la persona que no tenga permiso para acezar a la puerta
  • 43. sTI_CI_v1_201302 SQL Ejercicio final •‘Acceso temporal denegado’ Este deberá mostrarse al usuario que trate de ingresar a una puerta y no cumpla con las reglas de tiempo establecidas anteriormente •‘Clave errónea’ Este mensaje deberá ser enviado cuando la clave de la puerta sea invalida •‘Acceso concedido’ Este deberá mostrarse cuando cumpla con todas las condiciones de acceso requeridas en el sistema. La salida esperada es la siguiente --Acceso denegado Exec [nombre_procedimiento] [paramA], [paramB], [paramC]… -- Acceso temporal denegado Exec [nombre_procedimiento] [paramD], [paramE], [paramF]… Y así sucesivamente para los cuatro estados
  • 44. C#
  • 45. sTI_CI_v1_201302 C# Temario •Framework .NET •Lenguaje C# •POO en C# •Estructuras de control •Arquitectura serTI •DAO , ADO, LINQ,SQL Entity Framework •Active server page (ASP) •Ajax •Javascript •Prototype •Jquery •XML •JSON •CSS •Windows Communication Foundation •Redes sociales con C# •IIS
  • 46. sTI_CI_v1_201302 C# Framework •El Framework. NET es una plataforma de desarrollo para la creación de aplicaciones para Windows, Windows Store, Windows Phone, Windows Server y Windows Azure. •La plataforma de Marco. NET incluye el C # y Visual Basic lenguajes de programación, el tiempo de ejecución de lenguaje común, y una extensa biblioteca de clases. http://msdn.microsoft.com/es-es/library/zw4w595w.aspx
  • 48. sTI_CI_v1_201302 C# Versiones de .NET .NET IDE Descripción 1.0 Visual Studio .NET Contenía la primera versión de CLR y la primera versión de las bibliotecas de clases base. 1.1 Visual Studio .NET 2003 Incluía actualizaciones de ASP.NET y ADO.NET. Esta versión se actualizó dos veces posteriormente, con Service Pack 1 y (SP1) SP2.Esta versión incorporaba también la ejecución en paralelo, lo que permite que las aplicaciones de un solo equipo ejecuten varias versiones de CLR. 2.0 Visual Studio 2005 Se incorporó una nueva versión de CLR con ampliaciones de las bibliotecas de clases base, que incluían genéricos, colecciones de genéricos y ampliaciones significativas de ASP.NET. Esta versión se actualizó con el SP1 y el SP2. 3.0 Visual Studio 2005 Esta versión es esencialmente .NET Framework 2.0 con la incorporación de Windows Presentation Foundation (WPF), Windows Communications Foundation (WCF), Windows Workflow Foundation (WF) y CardSpace. Se actualizó con SP1 y SP2. 3.5 Visual Studio 2008 Se agregaron nuevas características, como los sitios web habilitados para AJAX y LINQ. La actualización SP1 incorporaba datos dinámicos y un pequeño conjunto de mejoras adicionales. 4 Visual Studio 2010 Incluye una nueva versión de CLR, bibliotecas de clases base expandidas y nuevas características, como Managed Extensibility Framework (MEF), Dynamic Language Runtime (DLR) y contratos de código. 4.5 Visual Studio 2012 Incluye una versión actualizada de CLR, compatibilidad para compilar aplicaciones Tienda Windows de Windows y las actualizaciones para WPF, WCF, WF y ASP.NET.
  • 49. sTI_CI_v1_201302 C# Lenguaje C# C# es un lenguaje orientado a objetos elegante y con seguridad de tipos que permite a los desarrolladores crear una amplia gama de aplicaciones sólidas y seguras que se ejecutan en .NET Framework. Puede utilizar este lenguaje para crear aplicaciones cliente para Windows tradicionales, servicios Web XML, componentes distribuidos, aplicaciones cliente-servidor, aplicaciones de base de datos, y muchas tareas más. C# proporciona un editor de código avanzado, diseñadores de interfaz de usuario prácticos, un depurador integrado y muchas otras herramientas para facilitar un rápido desarrollo de la aplicación basado en la versión del lenguaje C# y en .NET Framework. http://msdn.microsoft.com/es-es/library/z1zx9t92(v=vs.80).aspx
  • 50. sTI_CI_v1_201302 C# POO • Clase • class • Modificadores de acceso • Public [Elemento] • Internal [Elemento] • Private [Elemento] • Protected [Elemento] • Objeto • [Clase] [nombre Objeto] = new [Clase]() • var [nombre Objeto] = new [Clase]() • var [nombre Objeto] = [Objeto]() http://msdn.microsoft.com/es-mx/library/ms228593(v=vs.80).aspx
  • 51. sTI_CI_v1_201302 C# POO • Abstracción • abstract class [Nombre_Base] • Encapsulamiento • Public String [Popiedad]{get;set;} • Public String [Popiedad]{ get{return _att;} set{_att=value;};} • Herencia • class [Nombre]: [Nombre_Base] http://msdn.microsoft.com/es-es/library/ms173152(v=vs.90).aspx
  • 52. sTI_CI_v1_201302 C# POO • Polimorfismo internal class Mamifero { public int Patas { get; set; } public string Nombre { get; set; } public virtual void YoSoy() { Console.WriteLine("Yo Soy:"); } } internal class Leon : Mamifero { public Leon() { this.Patas = 4; this.Nombre = "Leon"; }
  • 53. sTI_CI_v1_201302 C# POO public override void YoSoy() { base.YoSoy(); Console.WriteLine("Un" + this.Nombre + " con " + this.Patas + " patas"); } } internal class Chimpance : Mamifero { public Chimpance() { this.Patas = 2; this.Nombre = "Chimpance"; } public override void YoSoy() { base.YoSoy(); Console.WriteLine("Un" + this.Nombre + " con " + this.Patas + " patas"); } }
  • 54. sTI_CI_v1_201302 C#POO class Program { static void Main(string[] args) { var oMamifero = new Mamifero(); Console.WriteLine("Mamifero"); oMamifero.YoSoy(); var oLeon = new Leon(); Console.WriteLine("Leon"); oLeon.YoSoy(); var oChimpance= new Chimpance(); Console.WriteLine("Chimpance"); oChimpance.YoSoy(); List<Mamifero> oMamiferos = new List<Mamifero>(); oMamiferos.Add(oLeon); oMamiferos.Add(oChimpance); Console.WriteLine("Polimorfismo"); foreach (var mamifero in oMamiferos) { mamifero.YoSoy(); } Console.ReadKey(); } }
  • 55. sTI_CI_v1_201302 C# POO • Polimorfismo internal class Mamifero { public int Patas { get; set; } public string Nombre { get; set; } public virtual void YoSoy() { Console.WriteLine("Yo Soy:"); } } internal class Leon : Mamifero { public Leon() { this.Patas = 4; this.Nombre = "Leon"; } http://msdn.microsoft.com/es-es/library/ms173152(v=vs.90).aspx
  • 56. sTI_CI_v1_201302 C# Estructuras de control • If If([condicion_boleana]){ [codigo_If]; } else{ [codigo_else]; } • switch switch{ case [valor]: break; default: break; }
  • 57. sTI_CI_v1_201302 C# Estructuras de control • while while ([condicion]) { break; continue; } • for for ([tipo_dato] [varialble] [inicializador]; [condicion de paro]; [paso]) { [codigo]; } • foreach foreach([tipo_dato] [objeto] in [Lista_Objetos] ){ [codigo]; } http://es.wikipedia.org/wiki/Estructuras_de_control
  • 59. sTI_CI_v1_201302 C# DAO (Data Access Object) Data Access Objects (DAO, Objetos de Acceso a Datos) es una interfaz orientada a objetos creada por Microsoft la cual permitía a las primeras versiones de Microsoft Access y Visual Basic utilizar el motor de base de datos Jet . Posteriormente (en la versión 3.5) fue capaz de realizar un bypass al motor Jet y directamente acceder a las fuentes de datos ODBC, incluyendo Microsoft SQL Server y otros sistemas de bases de datos de empresa. DAO 3.6 fue la versión final desarrollada por Microsoft. Microsoft dice que DAO no estará disponible en los futuros sistemas operativos de 64-bit.
  • 61. sTI_CI_v1_201302 C# ADO (Microsoft ActiveX Data Objects - ADO). Conjunto de objetos COM para el acceso a recursos de datos. Prevé una capa entre los lenguajes de programación y las bases de datos OLE, lo que permite a los programadores escribir programas que accedan a datos, sin saber cómo está implementada la base de datos (sólo se debe tener cuidado en la conexión a la misma). Tampoco es necesario conocer sobre SQL cuando se usa ADO, aunque también pueden utilizarse comandos SQL, pero esto crearía en el programa una dependencia del tipo de base de datos usado.
  • 63. sTI_CI_v1_201302 C# LINQ LINQ to SQL es una implementación de O/RM(object relational mapping, mapeador de objetos relacionales) que viene con la versión "Orcas" del .NET Framework, y nos permite modelar bases de datos relacionales con clases de .NET. Podemos consultar bases de datos con LINQ, así como actualizar/añadir/borrar datos de ellas.
  • 65. sTI_CI_v1_201302 C# SQL Entity Framework Entity Framework es un conjunto de tecnologías de ADO.NET que apoyan el desarrollo de aplicaciones de software orientadas a datos. Los arquitectos y desarrolladores de aplicaciones orientadas a datos han luchado con la necesidad de lograr dos objetivos muy diferentes. Ellos deben modelar las entidades, relaciones y lógica de los problemas de las empresas que están resolviendo, y también deben trabajar con los motores de datos utilizadas para almacenar y recuperar los datos. Los datos pueden abarcar varios sistemas de almacenamiento, cada uno con sus propios protocolos, e incluso aplicaciones que funcionan con un único sistema de almacenamiento debe equilibrar los requisitos del sistema de almacenamiento con los requisitos de la escritura de código de la aplicación eficaz y fácil de mantener.
  • 67. sTI_CI_v1_201302 C# Lenguaje 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 través 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 composición de expresiones más legibles, incluyen la construcción de manejadores de eventos. LINQ además define un conjunto de nombres de métodos (llamados operadores de consulta estándar), y un conjunto de reglas de traducción, que son usadas por el compilador para traducir las expresiones de consulta en expresiones normales del lenguaje, usando estos nombres de métodos, expresiones lambda y tipos anónimos. Muchos de los conceptos que LINQ ha introducido, fueron probados inicialmente en el proyecto de investigación Microsoft Cω. LINQ fue lanzado como un componente principal de .NET Framework 3.5 el 19 de noviembre de 2007.
  • 68. sTI_CI_v1_201302 C# Lenguaje LINQ •LINQ to XML •LINQ to Entities •LINQ to Objects •LINQ to DataSet http://msdn.microsoft.com/es-es/library/bb387061.aspx http://msdn.microsoft.com/es-es/library/bb386964.aspx http://msdn.microsoft.com/es-es/library/bb397919.aspx http://msdn.microsoft.com/es-es/library/bb386977.aspx
  • 69. sTI_CI_v1_201302 C# Ejercicio Generar alas siguientes consultas: •Una consulta para alta, baja, actualización y búsqueda por clave de una tabla. •Generar una consulta que obtenga la lista de los edificio en formato Xml
  • 70. sTI_CI_v1_201302 C# Principales Operadores LINQ •Where •Select •Group by •Count •SelectMany •Distinct •Union •Intersect •Except •Take •TakeWhile •OrderBy •ThenBy •Range •Concat •Combine •Max •Average •Aggregate •Sum •Union •Min •Cross Join •Group Join
  • 71. sTI_CI_v1_201302 C# Ejercicio •Seleccionar 5 operadores de la cada una de las columnas anteriores y utilizarlos en consultas; Las consultas serán puntuadas al final del ejercicio dependiendo de le número de operadores que se utilizan con un valor exponencial. •1 op= 1! pto •2 op = 2! ptos •……
  • 72. sTI_CI_v1_201302 C# Métodos HTTP Método Significado GET Devuelve el recurso identificado en la URL pedida. HEAD Funciona como el GET, pero sin que el servidor devuelva el cuerpo del mensaje. Es decir, sólo se devuelve la información de cabecera. POST Indica al servidor que se prepare para recibir información del cliente. Suele usarse para enviar información desde formularios. PUT Envía el recurso identificado en la URL desde el cliente hacia el servidor. OPTIONS Pide información sobre las características de comunicación proporcionadas por el servidor. Le permite al cliente negociar los parámetros de comunicación. TRACE Inicia un ciclo de mensajes de petición. Se usa para depuración y permite al cliente ver lo que el servidor recibe en el otro lado. DELETE Solicita al servidor que borre el recurso identificado con el URL. CONNECT Este método se reserva para uso con proxys. Permitirá que un proxy pueda dinámicamente convertirse en un túnel. Por ejemplo para comunicaciones con SSL.
  • 73. sTI_CI_v1_201302 C# Active server page (ASP) Microsoft introdujo esta tecnología llamada Active Server Pages en diciembre de 1996, por lo que no es nada nueva. Es parte del Internet Information Server (IIS) desde la versión 3.0 y es una tecnología de páginas activas que permite el uso de diferentes scripts y componentes en conjunto con el tradicional HTML para mostrar páginas generadas dinámicamente, traduciendo la definición de Microsoft: “Las Active Server Pages son un ambiente de aplicación abierto y gratuito en el que se puede combinar código HTML, scripts y componentes ActiveX del servidor para crear soluciones dinámicas y poderosas para el web”.
  • 74. sTI_CI_v1_201302 C# Ciclo de vida ASP http://msdn.microsoft.com/es-mx/library/ms178473(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx •PreInit •Init •InitComplete •PreLoad •Load •LoadComplete •PreRender •PreRenderComplete •SaveStateComplete •Render •Unload
  • 75. sTI_CI_v1_201302 C# ASP MVC (Model-View-Controller) ASP.NET MVC es, básicamente, una implementación del patrón Modelo - Vista - Controlador (MVC) para tecnología ASP.NET. El patrón MVC no es ni nuevo (data de finales de los años 70) ni está pensado para aplicaciones web, pero en realidad en aplicaciones web encaja perfectamente. Brevemente podemos decir que el patrón MVC separa la lógica (y acceso a datos) de una aplicación de su presentación, usando 3 componentes: Modelo: Representa las reglas de negocio de la aplicación (y el acceso a datos subyacente). Vistas: Representan la presentación de la aplicación. Controlador: Actúan de intermediario entre el usuario y el Modelo y las Vistas. Recogen las peticiones del usuario, interaccionan con el modelo y deciden que vista es la que debe mostrar los datos. En el contexto de ASP.NET MVC: Toda la lógica de negocio y el acceso a datos es el Modelo (en muchos casos el Modelo puede estar en uno o varios assemblies referenciados). Las vistas contienen, básicamente, el código que se envía al navegador, es decir el código HTML (y código de servidor asociado, siempre y cuando este código haga cosas de presentación, no de lógica de negocio). Los controladores reciben las peticiones del navegador y en base a esas, deciden que vista debe enviarse de vuelta al navegador y con qué datos.
  • 77. sTI_CI_v1_201302 C# ASP Controles principales ASP •Label •Textbox •HyperLink •Image •RadioButton •CheckBox •GridView •ListBox •DropDownList HTML •Input (Button) •Input (Text) •Input (CheckBox) •Image •Select Validadores •Compare •Custom •Range •RegularExpresion •RequieredField •ValidationSummary
  • 78. sTI_CI_v1_201302 C# ASP Master Page Páginas maestras ASP.NET le permiten crear un diseño coherente para las páginas de la aplicación. Una sola página maestra define el aspecto y la sensación y el comportamiento estándar que desea para todas las páginas (o un grupo de páginas) de la aplicación. A continuación, puede crear páginas individuales de contenido que contienen el contenido que desea mostrar. Cuando los usuarios solicitan las páginas de contenido, se fusionan con la página principal para producir una salida que combina el diseño de la página principal con los contenidos de la página de contenido.
  • 79. sTI_CI_v1_201302 C# Control de usuario (WebUserControl) Controles de usuario Web son archivos con la extensión ascx que se pueden incluir en los formularios Web Forms, Web Forms con el padre convirtiéndose en el contenedor del control.. Controles de usuario Web le permiten reutilizar fácilmente piezas de funcionalidad en una serie de formularios Web Forms. http://msdn.microsoft.com/en-us/library/3457w616(v=vs.71).aspx
  • 80. sTI_CI_v1_201302 C# Controles de navegación •Control Menu El Menu (control) permite agregar funcionalidad de navegación a las páginas web. El control Menu admite un menú principal y submenús, y permite definir menús dinámicos (a veces denominados menús emergentes). Para obtener información acerca de la programación del control Menu, vea Menu (Clase) en MSDN Library. •Control SiteMapPath El SiteMapPath (control) muestra una ruta de navegación (también denominada árbol de navegación) que indica al usuario la ubicación de la página actual y muestra los vínculos como una ruta de retorno a la página principal. El control proporciona muchas opciones para personalizar la apariencia de los vínculos. Para obtener información acerca de la programación del control SiteMapPath, vea el artículo SiteMapPath (Clase) en MSDN Library. • Control TreeView El TreeView (control) sirve para mostrar datos jerárquicos, como una tabla de contenido o un directorio de archivos, en una estructura de árbol. Para obtener información acerca de la programación del control TreeView, vea el artículo TreeView (Clase) en MSDN Library.
  • 81. sTI_CI_v1_201302 C# Ajax AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML), es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones. Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se solicitan al servidor y se cargan en segundo plano sin interferir con la visualización ni el comportamiento de la página. JavaScript es el lenguaje interpretado (scripting language) en el que normalmente se efectúan las funciones de llamada de Ajax mientras que el acceso a los datos se realiza mediante XMLHttpRequest, objeto disponible en los navegadores actuales. En cualquier caso, no es necesario que el contenido asíncrono esté formateado en XML. Ajax es una técnica válida para múltiples plataformas y utilizable en muchos sistemas operativos y navegadores dado que está basado en estándares abiertos como JavaScript y Document Object Model (DOM). http://msdn.microsoft.com/en-us/library/3457w616(v=vs.71).aspx
  • 82. sTI_CI_v1_201302 C# Ejercicio •Crear una página maestra alguna de las siguientes distribuciones
  • 83. sTI_CI_v1_201302 C# Ejercicio Crear o modifica la estructura necesaria para realizar lo siguiente. •Generar una página de bienvenida en el sistema. Esta deberá tener un espacio para ingresar un correo electrónico y un password. El sistema deberá validar estos datos y si son correctos deberá enviarlo a una pantalla de Inicio. •Crear un mapa de navegación para el sitio así como un menú lateral. •El sistema deberá guardar en un XML el estado de cada usuario y al iniciar la aplicación esta deberá enviarlo a la ultima página donde navego. Si no existe deberá ingresar al la de inicio
  • 84. sTI_CI_v1_201302 C# Ejercicio Crear una página web para el registro de usuarios donde se valide lo siguiente. •Validar que la caja de texto password sea igual al de la confirmación •Generar que la fecha de nacimiento sea de un adulto (18 años mínimo) •Validar el correo electrónico tenga una estructura valida. •Validar que se ingrese el nombre •Mostrar un resumen de los datos erróneos en caso de existir
  • 86. sTI_CI_v1_201302 C# Interface de usuario •La interfaz de usuario es el medio con que el usuario puede comunicarse con una máquina, un equipo o una computadora, y comprende todos los puntos de contacto entre el usuario y el equipo. Normalmente suelen ser fáciles de entender y fáciles de accionar.
  • 87. sTI_CI_v1_201302 C# Prototype (patrón de diseño) El patrón de diseño Prototype (Prototipo), tiene como finalidad crear nuevos objetos duplicándolos, clonando una instancia creada previamente.. Este patrón especifica la clase de objetos a crear mediante la clonación de un prototipo que es una instancia ya creada. La clase de los objetos que servirán de prototipo deberá incluir en su interfaz la manera de solicitar una copia, que será desarrollada luego por las clases concretas de prototipos
  • 88. sTI_CI_v1_201302 C# Javascript Lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas, en bases de datos locales al navegador... aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo. JavaScript se diseñó con una sintaxis similar al C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo Java y JavaScript no están relacionados y tienen semánticas y propósitos diferentes. https://developer.mozilla.org/es/docs/Introducci%C3%B3n_a_JavaScript_orientado_a_objetos
  • 89. sTI_CI_v1_201302 C# Javascript •Eventos onClick,onChange,mouseMove •Selectores getElementByID, getElementByTagName •Document Object Model document.XX •Incluir script •HTML <script src=“[Nombre]" type="text/javascript"></script> •C# Page.ClientScript.RegisterClientScriptBlock(this.GetType(), “[Nombre_Script]",[ Script], true); http://www.maestrosdelweb.com/editorial/diez-funciones-imprescindibles-en-javascript/ http://www.maestrosdelweb.com/editorial/dom/
  • 90. sTI_CI_v1_201302 C# Cascading Style Sheets (CSS) CSS son las siglas de Cascading Style Sheets - Hojas de Estilo en Cascada - que es un lenguaje que describe la presentación de los documentos estructurados en hojas de estilo para diferentes métodos de interpretación, es decir, describe como se va a mostrar un documento en pantalla, por impresora, por voz (cuando la información es pronunciada a través de un dispositivo de lectura) o en dispositivos táctiles basados en Braille. Dentro del diseño de páginas de Internet se presenta esta como la vanguardia en cuanto a definición de estilos dentro de las plantillas de diseño. A través de instrucciones en código HTML se definen los estándares del conjunto de páginas que conforman el proyecto. La meta es uniformizar nuestro diseño. http://www.xsvc.com.ve/tutoriales/ManualCssHojasDeEstilos.pdf
  • 91. sTI_CI_v1_201302 C# Principales elementos CSS http://www.w3c.es/Divulgacion/GuiasReferencia/CSS21/ •Selectores •Notación •Tipos de medios •Sintaxis •Unidades •Modelo de cajas •Márgenes •Relleno •Bordes •Modelo de formato visual •Detalles del modelo de formato visual •Efectos visuales •Contenido generado, numeración automática y listas •Colores y fondo •Medios paginados •Fuentes •Texto •Tablas •Interfaz de usuario
  • 92. sTI_CI_v1_201302 C# Estructura de estilos CSS •Elemento html { border-color:red; } <html> Estilo .html { border-color:red; } <body class=“html”> •Identificador #html { border-color:red; } <div id=“html”>
  • 93. sTI_CI_v1_201302 C# Ejemplo CSS <html> <head> <style> body{ background-color:gray;} /*Nivel 1*/ body table { background-color:yellow;} /*Nivel 2*/ body table tr {background-color:green;} /*Nivel 3*/ #MiTexto{background-color:#f32;} .Elemento{color:white;} </style> </head> <body> <span> Texto Body</span> <table> <tr class="Elemento"> <td > Texto td <span id="MiTexto"> Texto Span</span> </td> </tr> </table> </body> </html>
  • 94. sTI_CI_v1_201302 C# jQuery •jQuery es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web. Fue presentada el 14 de enero de 2006 en el BarCamp NYC. •Lema write less, do more
  • 95. sTI_CI_v1_201302 C# jQuery Selectores y Eventos •Selectores jQuery() o $() •Eventos document.ready( function (){} ); Funciones anonimas function (){} •Efectos •Handlers http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery
  • 96. sTI_CI_v1_201302 C# jQuery Ejercicio •Generar una página que contenga 4 controles que deben de llevar las siguientes características •(A)Dos deberán ser etiquetas (html) con nombres y clases diferentes •(B)Uno deberá ser un dropDownList (ASP) con el nombre de una clase igual al de una etiqueta •(C)Una caja de texto Con clases y nombres diferentes a los anteriores. •Crear botones para lo siguiente •Seleccionar todos los controles que pertenezcan a la clase estilos 2 y deberá ocultarse.
  • 97. sTI_CI_v1_201302 C# jQuery Ejercicio •Seleccionar la caja de texto y las etiquetas cambiando las siguientes propiedades •Tipo de letra Calibri •Tamaño 10 pts •Color Rojo Cargar una imagen que se oriente en la parte superior de la pantalla a la derecha esta deberá cambiar cuando el mouse pase sobre ella y regresar a su estado cuando este salga
  • 98. sTI_CI_v1_201302 C# jQuery Ajax A) jQuery.ajax({ url: "test.html", context: document.body }).done(function() { //código aquí }); B) jQuery.ajax({ url : "test.html", cache : false, type : this.type, dataType : "jsonp", crossDomain : true, data : { json : this.data }, success : function(data) { //código aquí }, error : function(data) { //código aquí } }); http://api.jquery.com/jQuery.ajax/
  • 99. sTI_CI_v1_201302 C# XML XML proviene de eXtensible Markup Language (“Lenguaje de Marcas Extensible”). Se trata de un metalenguaje (un lenguaje que se utiliza para decir algo sobre otro lenguaje) extensible de etiquetas que fue desarrollado por el Word Wide Web Consortium (W3C), un consorcio internacional que elabora recomendaciones para la World Wide Web. El XML es una adaptación del SGML (Standard Generalized Markup Language), un lenguaje que permite la organización y el etiquetado de documentos. Esto quiere decir que el XML no es un lenguaje en sí mismo, sino un sistema que permite definir lenguajes de acuerdo a las necesidades. El XHTML, el MathML y el SVG son algunos de los lenguajes que el XML está en condiciones de definir.
  • 100. sTI_CI_v1_201302 C# XML Estructura Básica <?xml version="1.0"?> <Elemento> <Elemento_Hijo [nombreAtributo]=valor> valorElemento < /Elemento_Hijo > </Elemento>
  • 101. sTI_CI_v1_201302 C# JSON JSON, acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML. La simplicidad de JSON ha dado lugar a la generalización de su uso, especialmente como alternativa a XML en AJAX. Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos en este contexto es que es mucho más sencillo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON se puede analizar fácilmente usando la función eval(), lo cual ha sido fundamental para que JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX, debido a la ubicuidad de JavaScript en casi cualquier navegador web.
  • 103. sTI_CI_v1_201302 C# Comparación XML y JSON XML <persona> <nombre>juan</nombre> <edad>22</edad> <estudios> <estudio>primario</estudio> <estudio>secundario</estudio> </estudios> </persona> JSON { 'nombre':'juan', 'edad':22, 'estudios':['primario','secundario'] }
  • 104. sTI_CI_v1_201302 C# Prototype Prototype es un framework que facilita el desarrollo de aplicaciones web con JavaScript y AJAX. Su autor original es Sam Stephenson, aunque las últimas versiones incorporan código e ideas de muchos otros programadores. A pesar de que incluye decenas de utilidades, la librería es compacta y está programada de forma muy eficiente. Prototype se ha convertido en poco tiempo en una referencia básica de AJAX y es la base de muchos otros frameworks y librerías relacionadas como script.aculo.us. Las primeras versiones de Prototype no incluían ningún tipo de documentación, lo que dificultaba su uso y provocaba que la mayoría de usuarios desconocieran su verdadero potencial. Afortunadamente, las versiones más recientes del framework disponen de una completa documentación de todas las funciones y métodos que componen su API. La documentación incluye la definición completa de cada método, sus atributos y varios ejemplos de uso: http://www.prototypejs.org/api http://librosweb.es/ajax/capitulo_10/el_framework_prototype.html
  • 105. sTI_CI_v1_201302 C# Definición de un prototipo Definición var Objeto= Class.create(); Objeto. prototype = { initialize: function(propiedad) { propiedad= propiedad; }, metodo: function(parametro) { return this. propiedad+ ': ' + parametro; } }; Uso var objeto= new Objeto(‘propiedad'); objeto. metodo(' parametro '); // -> " propiedad : parametro "
  • 106. sTI_CI_v1_201302 C# Herencia de un prototipo Definición var objetoHijo= Class.create(); objetoHijo.prototype = Object.extend(new Objeto() , { //Redefinimos el método metodo: function(parametro) { return parametro; } } ); Uso var hijo = new objetoHijo(‘propiedad'); hijo.metodo(‘parametro'); // -> “parametro”
  • 107. sTI_CI_v1_201302 C# jQuery UI Es una biblioteca de componentes para el framework jQuery que le añaden un conjunto de plug- ins, widgets y efectos visuales para la creación de aplicaciones web. Cada componente o módulo se desarrolla de acuerdo a la filosofía de jQuery (find something, manipulate it: encuentra algo, manipúlalo).
  • 108. sTI_CI_v1_201302 C# jQuery UI Principales controles Interactions Draggable Droppable Resizable Selectable Sortable http://jqueryui.com/demos/ Widgets Accordion Autocomplete Button Datepicker Dialog Menu Progressbar Slider Spinner Tabs Tooltip Effects Add Class Color Animation Effect Hide Remove Class Show Switch Class Toggle Toggle ClassUtilities Position Widget Factory
  • 109. sTI_CI_v1_201302 C# jQuery UI Ejercicio •Seleccionar tres elementos de jQuery UI e implementarlos en una página •Crear un prototipo de la pantalla que se utilizo antes y generar los métodos correspondientes para guardar, actualizar, consultar y eliminar para desde jQuery.
  • 110. sTI_CI_v1_201302 C# Windows Communication Foundation •Windows Communication Foundation (WCF) es un marco de trabajo para la creación de aplicaciones orientadas a servicios. Con WCF, es posible enviar datos como mensajes asincrónicos 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 aplicación. 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 carácter o una palabra que se envía como XML, o tan complejos como una secuencia de datos binarios
  • 111. sTI_CI_v1_201302 C# WCF Componentes principales •Endpoint •Address (¿Dónde?) Dirección de la red •Binding (¿Cómo?) Protocolo:TCP,HTTP,MSMQ etc.. Codificación: Texto o Binario Seguridad: SSL, Seguridad SOAP Referencia al servicio a exponer •Contract (¿Qué?) •Interfaz: Contrato de servicio
  • 113. sTI_CI_v1_201302 C# WCF Configuración Services <system.serviceModel> <services> <service behaviorConfiguration="BlockBehaivior" name="Aon.Adte.Servicio.Estadistico.Folios"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BlockBinding" contract="Aon.Adte.Servicio.Estadistico.IFolios"> <identity> <dns value="10.205.4.21" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel>
  • 114. sTI_CI_v1_201302 C# WCF Configuración Behaviors <behaviors> <serviceBehaviors> <behavior name="BlockBehaivior"> <dataContractSerializer maxItemsInObjectGraph ="65536"/> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> </behaviors> Bindings <bindings> <basicHttpBinding> <!--Base--> <binding name="BlockBinding" closeTimeout="01:00:00" sendTimeout="01:00:00" receiveTimeout="01:00:00" openTimeout="01:00:00" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom" transferMode="Streamed"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> </binding> </basicHttpBinding> </bindings>
  • 115. sTI_CI_v1_201302 C# IIS Internet Information Services o IISes un servidor web y un conjunto de servicios para el sistema operativo Microsoft Windows. Originalmente era parte del Option Pack para Windows NT. Luego fue integrado en otros sistemas operativos de Microsoft destinados a ofrecer servicios, como Windows 2000 o Windows Server 2003. Windows XP Profesional incluye una versión limitada de IIS. Los servicios que ofrece son: FTP, SMTP,NNTP y HTTP/HTTPS. Antiguamente se denominaba PWS (Personal Web Server), y actualmente forma parte de la distribución estándar de Windows, de modo que no se necesita una licencia extra para instalarlo. Este servicio convierte a una PC en un servidor web para Internet o una intranet, es decir que en las computadoras que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente. Los servicios de Internet Information Services proporcionan las herramientas y funciones necesarias para administrar de forma sencilla un servidor web seguro.
  • 116. sTI_CI_v1_201302 C# IIS Versiones •IIS 1.0.- Proporciona la opción de la arquitectura cliente servidor para Windows 95. •IIS 2.0.- Soporta plugins, extensiones de Microsoft FrontPage. •IIS 3.0.- Paginas Active Server, conexiones con bases de datos de Microsoft a través de Actives Data Object y ODBC. •IIS 4.0.- Microsoft Management Console (MMC). •IIS 5.0.- Administración remota de IIS y otros servicios de Windows. •IIS 6.0.- Utilización de autenticación en Passport, Proxy y Firewall. •IIS 7.0.- Extensibilidad de .NET Y Extensiones ISAPI •IIS 7.5.- Extensiones WebDav y FTP, Filtrado de solicitudes y módulos del Administration Pack.
  • 117. sTI_CI_v1_201302 C# IIS Tipos de canalización administrada Canalización integrada es una canalización de procesamiento de solicitudes unificada que admite módulos de código nativo y código administrado, provoca todos los eventos que expone el objeto HttpApplication, que habilita los módulos HTTP de ASP.NET existentes para trabajar en el modo integrado de IIS 7.0, canalización unificada recibe la primera solicitud de cualquier recurso de una aplicación, se crea una instancia de la clase ApplicationManager que es el dominio de aplicación en el que se procesa la solicitud.
  • 118. sTI_CI_v1_201302 C# IIS Pool de aplicaciones Son creados a nivel del IIS del web server, típicamente por el administrador web para definir algunos aspectos de seguridad y performance de un conjunto de aplicaciones, se utilizan para administrar web sites y aplicaciones, desde el IIS 5.0
  • 119. sTI_CI_v1_201302 C# IIS Instalación de Framework Panel control>programas>Programas y características>activar o desactivar características Windows Habilitar el IIS Habilitar Microsoft .NET 3.5 WCF Registrar framework C:WindowsMicrosoft.NETFramework64v4.0.30319 aspnet_regiis –i
  • 121. Servicios Estratégicos en Tecnologías de Información S. de R.L. de C.V. Av. de las Granjas No. 155 Int. 4 Col. Jardín Azpeitia, 02530 México, Distrito Federal. Oficina. 55906817 Twitter. @serTI_MX linkedIn: http://linkedin.com/in/serti info@serti.com.mx www.serti.com.mx