sábado, 18 de febrero de 2017

Conectando los datos con la aplicación



Introducción
  • Vamos a ver como hacemos para guardar toda la información que consideramos importante para que sea persistente una vez que apaguemos nuestro sistema y podamos usarla cuando lo prendamos nuevamente.
  • Para ello, vamos a utilizar dos técnicas principales: ODBC y LINQ.
  • Ambas fueron desarrolladas por Microsoft, pero son muy distintas entre sí, siendo de naturaleza bastante distinta. ODBC es un estándar abierto y es la manera de base de conectarse a las bases de datos, mientras que LINQ es una herramienta de nueva generación que permite utilizar el servidor de base de datos de manera mas sencilla y con un lenguaje mas natural.
ODBC
  • La primera manera de conectarse a nuestro servidor de BD y manipular información que veremos se llama ODBC. El objetivo de ODBC es que podamos acceder a cualquier dato desde cualquier sistema, sin importar qué sistema de gestión de bases de datos almacene los datos(en nuestro caso, MS SQL Server Express).
  • El propósito de ODBC es traducir las consultas de la aplicación en comandos que el Gestor de BD entienda. Para que esto funcione tenemos que hacer que tanto la aplicación como el Gestor sean compatibles con ODBC. Esto significa que nuestro sistema tiene que tener instrucciones específicas ODBC y el Gestor debe ser capaz de responder a ellos.
  • Una de las maneras de hacer esto, es con un software manejador, o driver, en el cliente, que se ocupe de la comunicación con la base de datos. El driver interpreta las conexiones y llamadas SQL y las traduce.
  • El ODBC .NET Data Provideres un componente adicional al Kit de desarrollo de .NET (SDK). Nos permite el acceso a controladores ODBC nativos, y aunque se supone que al ser una tecnología estándar nos permite utilizar drivers para diversos tipos de base de datos, el sitio de descargas de Microsoft nos indica que sólo se ha probado con los controladores de Microsoft SQL ODBC, Microsoft Oracle ODBC y Microsoft Jet ODBC.
  • ODBC está compuesto por un driver y un administrador de controladores. El driver es específico para el producto de un proveedor de base de datos. Por ejemplo, Oracle proporciona un controlador (o driver) para trabajar con un sistema de Oracle. El administrador de controladores se utiliza para instalar los archivos necesarios y configurar fuentes de datos para ser utilizados en aplicaciones. En los sistemas basados en Windows, el Administrador de orígenes de datos ODBC se utiliza para crear y mantener conexiones ODBC.
Instalando ODBC
  • Para instalar ODBC lo primero que debemos hacer es descargarlo desde:
  • Y también es requerido el Microsoft Data Access Components desde: 
http://msdn2.microsoft.com/en-us/data/aa937695.aspx
  • Luego de instalar ambos componentes seguiremos los siguiente pasos:
1.Iniciemos Microsoft Visual Studio NET.
2.Creamos un proyecto nuevo de Visual C# Windows Application. Form1 se agrega al proyecto de manera predeterminada.
3.En el menú Proyecto, hagan clic en Agregar referencia.
4.En la solapa .NET, hagan clic Microsoft.Data.ODBC.dll. Después de que Microsoft.Data.ODBC.dllaparece en la lista de componentes seleccionados, hagan clic en Aceptar.
5.Cambien a la vista Código y agreguen el siguiente código inmediatamente después de las otras instrucciones using:

usingSystem.Data;
usingMicrosoft.Data.Odbc;

6.Agreguemos un control Buttona Form1 y etiquetemos este control SQL Server.
7.Ahora agregamos el siguiente código al botón SQL Server

{
OdbcConnectioncn;
OdbcCommandcmd;
stringMyString;
MyString="Select* fromCustomers";
cn= new OdbcConnection("Driver={SQL Server};Server=mySQLServer;UID=sa;
PWD=myPassword;Database=Northwind;");
cmd=new OdbcCommand(MyString,cn);
cn.Open();
MessageBox.Show("Connected");
cn.Close();
}

8.Modifiquemos las cadenas OdbcConnectionsegún corresponda para su entorno

Elementos de ODBC
  • Algunos de los elementos que vamos a poder usar cuando instalemos el controlador ODBC son:
    • OdbcConnection: Se usa para conectarnos a una fuente de datos ODBC. El nombre asignado a la fuente de datos ODBC, durante su configuración, se utiliza para acceder a ella.
    • OdbcCommand: Se usa para ejecutar un comando SQL en una conexión.
    • OdbcDataReader: nos permite recorrer los resultados de una consulta.
    • OdbcParameter: Se utiliza para enlazar un parámetro a un comando.
    • OdbcDataAdapter: Se utiliza para llenar un objeto DataSetdesde una fuente de datos ODBC.
    • OdbcCommandBuilder: Crea default Insert, Updatey Deletepara un adaptador de datos ODBC.
Ejemplo de ODBC
  • Ahora les vamos a mostrar otro ejemplo, creando un proyecto vacío en C#. El siguiente ejemplo usa algunos de los elementos que mencionamos. Utiliza una fuente de datos ODBC previamente establecida (llamada Test). El nombre de DSN (nombre de fuente de datos) se utiliza en la cadena de conexión, junto con la identificación de usuario y contraseña para acceder a la base de datos. Una sentencia SQL básica se utiliza para recuperar todas las filas de una tabla Clientes con los valores de las columnas que se muestran. Finalmente, se cierra la conexión y todos los demás elementos. El código C # siguiente:
usingSystem;
usingMicrosoft.Data.Odbc;
namespaceBuilderODBC{
classTestClass{
staticvoidMain(string[] args) {
stringconnectionString= "DSN=Test;UID=Chester;Pwd=Tester;";
stringsql= "SELECT CustomerID, ContactName, ContactTitleFROM Customers";
OdbcConnectionconn= new OdbcConnection(connectionString);
conn.Open();
OdbcCommandcomm= new OdbcCommand(sql, conn);
OdbcDataReaderdr= comm.ExecuteReader();
while(dr.Read()) {
Console.WriteLine(dr.GetValue(0).ToString());
Console.WriteLine(dr.GetValue(1).ToString());
Console.WriteLine(dr.GetValue(2).ToString());
}
conn.Close();
dr.Close();
comm.Dispose();
conn.Dispose();
} } }

LINQ
  • En 2008, Microsoft presentó dentro de Visual Studio LINQ, que extiende el lenguaje de programación añadiendo las expresiones de consulta, que son semejantes a las sentencias SQL, y se pueden utilizar para extraer de forma sencilla datos de arrays, clases enumerables, documentos XML, bases de datos relacionales, y fuentes de datos de terceros.
  • Todas las operaciones de consulta LINQ se componen de tres acciones distintas:
    • Obtener la fuente de datos.
    • Crear la consulta.
    • Ejecutar la consulta.
Ejemplo de LINQ
  • Podemos ver en este código un ejemplo de LINQ para consultar un arrayde datos, pero de igual manera se puede hacer esto directamente en un servidor de base de datos:
classIntroToLINQ
{
staticvoidMain()
{
// 1. Fuente de datos.
int[] numbers= new int[7] { 0, 1, 2, 3, 4, 5, 6 };
// 2.Creacion de la consulta
// numQueryisanIEnumerable
varnumQuery=
fromnumin numbers
where(num% 2) == 0
selectnum;
// 3.Ejecutar la consulta
foreach(intnumin numQuery)
{
Console.Write("{0,1} ", num);
}
}
}

LINQ toSQL
  • Nosotros lo que queremos es usar como fuente de datos una base, y para ello debemos utilizar lo que se llama LINQ toSQL.
  • En LINQ toSQL, el modelo de datos de una base de datos relacional se asigna a un modelo de objetos expresado en el lenguaje de programación que estamos usando. Cuando la aplicación se ejecuta, LINQ toSQL traduce en SQL las consultas que escribimos en el modelo de objetos y los envía a la base de datos para su ejecución. Cuando la base de datos devuelve los resultados, LINQ toSQL los traduce de nuevo a los objetos que nuestro sistema puede trabajar en nuestro propio lenguaje de programación.
  • Con LINQ toSQL, primero entonces debemos crear un mapeo objeto-relacional (o sea, algo que le diga a nuestro sistema la relación que hay entre los elementos de mi sistema y los datos de la base), ya sea manualmente o utilizando el Diseñador relacional de objetos (O/R Designer). Escribimos las consultas en los objetos, y en tiempo de ejecución LINQ toSQL se encarga de la comunicación con la base de datos. En el ejemplo siguiente, los clientes representan una tabla específica en la base de datos, y el tipo del resultado de la consulta, IQueryable<T>, deriva de IEnumerable.
Northwnddb= new Northwnd(@"c:\northwnd.mdf");
// Queryforcustomersin London.
IQueryable custQuery=
fromcustin db.Customers
wherecust.City== "London"
selectcust;

Otros conceptos: stress
  • Las pruebas de estrés son una forma de prueba deliberadamente intensa utilizada para determinar la estabilidad de un sistema. Se trata de probar nuestra aplicación más allá de la capacidad normal, a menudo a un punto donde debería romperse, con el fin de observar los resultados. Las razones pueden incluir:
    • para determinar los puntos de ruptura o límites de uso seguro
    • si se están cumpliendo las especificaciones que nos pidió el cliente (ej: que soporte 10 millones de usuarios)
    • para determinar modos de fallo (¿cómo es exactamente cuando el sistema falla)
    • para poner a prueba el funcionamiento estable de una parte o del sistema fuera de uso estándar
Stress
  • Las pruebas de estrés, en general, deberían poner el hardware bajo niveles exagerados de estrés con el fin de garantizar la estabilidad cuando se utiliza en un entorno normal. Estos pueden incluir los extremos de carga de trabajo, uso de memoria, carga térmica (calor), la velocidad de reloj, o tensiones. La memoria y la CPU son dos componentes que son comúnmente probados de esta manera.
  • Las pruebas de estrés de software tiene como objetivo probar la estabilidad tratando de forzar un sistema al fracaso; tiene como objetivo medir y evaluar el máximo rendimiento posible en una tarea o función determinada.
  • En particular, los objetivos de este tipo de pruebas pueden consistir en garantizar que el software no se cuelga en condiciones de insuficiencia de recursos computacionales (como la memoria o espacio en disco ), alta concurrencia inusual, o ataques de denegación de servicio.
Otros conceptos: seguridad
  • Tenemos que entender que la seguridad informática es el área de la informática que se enfoca en la protección de la infraestructura computacional y todo lo relacionado con ella y, especialmente, la información contenida. Para esto existen estándares, métodos, reglas, herramientas y leyes para minimizar los posibles riesgos a la infraestructura o a la información. La seguridad en un ambiente de red es la habilidad de identificar y eliminar vulnerabilidades, o sea, los puntos a través de los cuales pueden entrar en nuestro sistema o nuestra infraestructura.
Causas de fallas de seguridad
  • Usuarios: En algunos casos sus acciones causan problemas de seguridad, si bien en la mayoría de los casos es porque tienen permisos sobredimensionados, no se les han restringido acciones innecesarias, etc.
  • Programas maliciosos: programas destinados a perjudicar o a hacer un uso ilícito de los recursos del sistema. Es instalado (por inatención o maldad) en nuestra computadora, abriendo una puerta a intrusos o bien modificando los datos. Estos programas pueden ser un virus informático, un gusano, un troyano, una bomba lógica, un programa espía o spyware, en general conocidos como malware.
  • Errores de programación: La mayoría de los errores de programación que se pueden considerar como una amenaza informática es por su condición de poder ser usados como exploitspor los crackers, aunque se dan casos donde el mal desarrollo es una amenaza.
  • Intrusos: persona que consigue acceder a los datos o programas a los cuales no están autorizados (crackers, defacers, hackers, script kiddieo script boy, viruxers, etc.).
  • Personal técnico interno: Los motivos que se encuentran entre los habituales son: disputas internas, problemas laborales, despidos, fines lucrativos, espionaje, etc.
Buenas prácticas de seguridad
  • En caso de querer tomar medidas, las mismas pueden tener distinta naturaleza:
    • Desarrollo de sistemas usando estándares de codificación para evitar errores
    • Manejar contraseñas difíciles de averiguar (mas de 8 caracteres, con letras, números y símbolos)
    • Manejar bien los permisos que les damos a los usuarios
    • Realizar copias de seguridad continuas de nuestros datos y programas
    • Mantener nuestros servidores con todas las actualizaciones de seguridad al día
    • Instalar antivirus
  • Si mantenemos estas buenas prácticas, nos aseguraremos de tener un sistema seguro y estable que funcione correctamente durante mucho tiempo.


Espero haber ayudado en algo. Hasta la próxima oportunidad!











  

No hay comentarios:

Publicar un comentario en la entrada