March 1, 2016

No Comments

CTE’S NO RECURSIVO EN SQL PARA PRINCIPIANTES

En este pequeño tutorial crearemos un CTE (Common Table Expressions) en SQL paso a paso.

CTE al español significa expresión de la tabla común donde los resultados del conjunto son temporales donde se puede hacer la referencia el ABC como son SELECT, UPDATE, DELETE, INSERT o también puede crear una vista dentro del CTE.

Una de las ventajas del CTE es que es una sentencia que puede ser no recursiva o recursiva lo cual muchas veces nos ayuda mucho al tratar con ciertos registros.

Estructura.

El CTE se define con una clausula WITH Antes de la consulta principal ya sea un SELECT o INSERT por ejemplo. La cláusula WITH puede incluir uno o más CTE’S

WITH <Common_Table_Expression>

<common_Table_Expression>

Cte_name [ (Column_name [….])]

AS(cte_query)

 

Creación de CTE no recursivo.

Esto se refiere que no hace referencia a si misma dentro del CTE.

Para nuestro ejemplo usaremos la base de datos de NORTHWIND Orders.

 

Y de empleados esto es para saber cuánta es la carga que tiene el empleado de sus productos para eso se crea la siguiente sentencia.

 

 

Donde en esta sección

WITH


cteCargaTotales
(OrderId,empleado,peso)


AS


(


SELECT
OrderID
,
EmployeeID,
ROUND(SUM(Freight), 2)


FROM
Orders


GROUP
BY
OrderID,EmployeeID


)

 

Definimos la sentencia WITH y en seguida el nombre que tendrá nuestro CTE y las columnas que tendrá. En la parte de abajo se crea la sentencia de select con el total de la carga.

En esta sección

SELECT


sp.FirstName +
‘ ‘
+ sp.LastName
AS
FullName,


sp.City
AS
Location,


ts.peso

FROM
Employees
AS
sp


INNER
JOIN
cteCargaTotales
AS
ts


ON
sp.EmployeeID = ts.empleado

ORDER
BY
ts.peso
DESC

 

Se realiza un SELECT de todos los empleados donde tenemos su nombre la ciudad que reside y a continuación se realiza un INNER JOIN Con la parte de arriba que definimos como cteCargaTotales y se muestra la columna de peso.

 

Aquí el resultado final.

Como podemos ver esto es una forma sencilla de realizar un CTE no recursivo.

 

 

 

Happy coding ;=)

March 1, 2016

No Comments

¿Qué es OAuth2?

OAuth2 es un protocolo de autorización que permite a terceros, clientes o sistemas, acceder a contenidos propiedad de un usuario, alojados en un servidor de recursos sin que éstos tengan que manejar ni conocer las credenciales del usuario, es decir, usuario y contraseña.

 


 

A continuación se describen las acciones de cada uno:

 

  • Propietario de recursos. Es la entidad que nos da acceso a recursos protegidos.

     

  • Cliente. Es la aplicación que hace peticiones a recursos protegidos, con la autorización del usuario que es propietario de ellos.

     

  • Servidor de recursos. Es el servidor o sistema que nos da acceso a los recursos protegidos. Es capaz de aceptar y responder peticiones usando un Access Token, vía URL.

     

  • Servidor de autorización. Hay ocasiones en que el servidor de autenticación es el mismo que el de recursos, en el caso contrario, este servidor es capaz de generar los tokens de acceso para nuestra aplicación.

 

La ventaja de utilizar un mecanismo de seguridad como OAuth2 es que facilita la comunicación entre el usuario y una aplicación tercera y genera más confianza al no tener que ingresar sus credenciales en la misma y es más segura la interacción para el usuario.

 

Funcionamiento

 

El cliente debe estar dado de alta en un servidor de recursos al cual se quiere acceder, en este cuenta con un client_id y la comunicación es mediante URL’s de redirección para intercambios de token y accesos.

 

Existen 2 maneras de llevar a cabo el proceso de autorización y validación:

 

  • Authorization end-point: Este punto de acceso debe ser el encargado de validar clientes y propietarios de recursos, mediante una URL de redirección que dirige el flujo una vez que el propietario y el cliente han sido validados.

     

  • Token end-point: Este punto es el encargado de dar los tokens de acceso al servidor de recursos.


Cuando un cliente quiere acceder a recursos de un propietario, lo primero que necesita es solicitar permisos al propietario del recurso. Este paso se denomina Authorization Grant. Para que un servidor de recursos conceda un token de acceso, es imprescindible presentarle un Authorization Grant junto a las credenciales del cliente que intenta acceder a dichos datos.

Los token de acceso deben tener un periodo de expiración después del cual se consideran caducados y el proveedor debe rechazarlos, obligando al cliente a obtener un nuevo token de acceso, cada vez que este expire.

De esta manera se lleva a cabo el proceso de comunicación entre aplicaciones con el protocolo de autorización OAuth2.

Ejemplo:

 

 

 

December 3, 2015

No Comments

WedgeIQ inteligencia avanzada para amenazas en la nube

 

Wedge Networks lanza al mercado WedgeIQ, esta herramienta basada en bigdata, visualización intuitiva de amenazas, aprendizaje automático, etc. Ofrece servicio de seguridad para usuarios en la nube, este es un complemento de su servicio Cloud Network Defense

Es una plataforma con cualidades de escalabilidad una vez instalada en el sistema, ofrece el servicio a empresas dentro del fortune 500, esto quiere decir que son empresas reconocidas mundialmente.

Wedge ofrece cobertura de protección para fabricantes, empresarial y proveedores de servicios no hace falta configurar nada el servicio lo realiza. Se encarga de valorar la velocidad de red, envió de información.

La página oficial tiene la posibilidad de descargar una versión de prueba del producto, realizan una prueba de riesgos gratuitos.

Los problemas de seguridad de manera local ya representaban una prueba y un reto para cualquier experto en TI, ahora con la conexión a la nube se intensifica el trabajo de mantenerse seguro, por ejemplo en el ámbito de los espectáculos se ha dado el caso de filtración de fotos en situaciones privadas estos ataques no han sido directamente a sus dispositivos, ha sido a su almacenamiento en internet, cualquier almacenamiento entonces esta vulnerable a ataques. Pero con este tipo de herramientas aseguras tu entorno y tu espacio en el que realizas tus actividades

Referencias:

http://diarioti.com/wedge-networks-lanza-wedgeiq-inteligencia-avanzada-de-amenazas-en-la-nube/91370

http://www.wedgenetworks.com/


 

December 3, 2015

No Comments

FBA Paso a Paso en SharePoint 2013

 

En este artículo se describirá paso a paso como configurar una autenticación FBA (Forms Based Authentication) en Share Point 2013 con SQL Server 2008 R2

 

Requerimientos

 

Debe tener la versión de Share Point 2013 On-Premise y la versión de SQL Server 2008 R2 SP1 ya instalado en su equipo.

 

Configuración.

 

  1. El primer paso es crear una base de datos en SQL Server 2008 que va contener los usuarios que tendrán acceso por medio de FBA.
  2. Para eso debe de dar click sobre la carpeta Databases y seleccionar New Database..

  1. Colocamos el nombre de la base de datos que en mi caso será FBAusers y debe dar un click en el botón OK para que se genere la base.

  1. Podemos notar que la base ya se encuentra creada.

  1. El siguiente paso es crear una estructura de membership a esta base de datos. Y para eso debemos encontrar el siguiente archivo dentro de esta ruta. C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe

  1. Al ejecutar el archivo se mostrara un wizard donde indicara la opción de Configure SQL Server for application services. E indicara el nombre del servidor así como el nombre la base la cual creamos en pasos anteriores que en mi caso es la FBAusers.

 

 

  1. Una vez concluida la generación de la estructura de membership en la base podrá observar que la base FBA ya tiene las tablas necesarias para continuar.

  1. Una vez creada la base de datos con la estructura necesaria lo siguiente es crear una web application para eso debemos ir al administrador central de SharePoint y enseguida Management web application.

  1. Click en new y se abrirá enseguida un popup para la creación de un web application donde ingresara el nombre que desee así como el puerto donde se encontrara la aplicación en el IIS así como el nombre Pool

  1. Una vez creada la aplicación saldrá el siguiente mensaje donde debe de dar click en ok

  1. Ahora que se tiene creada la base de datos con la estructura y la aplicación web debe de realizar unos cambios dentro del IIS para eso debemos ingresar al IIS Manager y situarse en Application Pool y buscar el pool con el que se creó su aplicación en mi caso yo nombre el pool SharePoint41289-Test donde debemos de tomar nota de la columna Identity de nuestro pool en mi caso es EXENTIRT\spFarm

  1. Una vez teniendo esa información debemos asignarle los permisos necesarios en la base de datos que hemos creado anteriormente. Para eso abra SQL con la cuenta como administrador

  1. Donde el usuario que se indicaba en la columna Identity del pool ya debe de visualizarse dentro de la base de datos para verificar esto debemos dar click en Security -> Logins. debe de darle los permisos necesarios al usuario. Para eso de click derecho Propiedades.

 

 

  1. En la ventana de propiedades debe de seleccionar la base de datos que creamos anteriormente y dar permisos de db_owner con esto ya debe tener los permisos necesarios para acceder a la base.

  1. Lo siguiente es indicar el proveedor de acceso de share point en este caso nso interesa el FBA así que debe abrir el machine.config con el notepad para eso debe seguir la siguiente ruta :

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Machine.config

  1. Busque la seccion <ConnectionString> y agrege la siguiente linea:

<add connectionString=”Server=<Nombre del servidor>;Database=FBAusers;Integrated Security=true” name=”FBADB” />

  1. También debe de remplazar lo siguiente: en <membership><proveedores> añada lo siguiente:

<add name=”FBAMembershipProvider” type=”System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” connectionStringName=”FBADB”

enablePasswordRetrieval=”false” enablePasswordReset=”true”

requiresQuestionAndAnswer=”false” applicationName=”/”

requiresUniqueEmail=”true” passwordFormat=”Hashed”

maxInvalidPasswordAttempts=”5″ minRequiredPasswordLength=”7″

minRequiredNonalphanumericCharacters=”1″ passwordAttemptWindow=”10″ passwordStrengthRegularExpression=”” />

  1. También debe de agregar en la etiqueta <roleManager><Proveedores> la siguiente línea.

<add name=”FBARoleProvider” connectionStringName=”FBADB” applicationName=”/” type=”System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” />

  1. Es hora de guardar los cambios del machine.config.
  2. Lo siguiente es modificar el web.config del SecurityTokenService.para ello vamos al IIS -> Sitios -> y click derecho sobre SecurityTokenServicesApplication Explorar y abra el web.config con el notepad

  1. Debe de agregar lo siguiente antes de que la etiqueta configuration cierre:

<system.web>

<membership>

<providers>

 

<add name=”FBAMembershipProvider” type=”System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” connectionStringName=”FBADB” enablePasswordRetrieval=”false”

enablePasswordReset=”true” requiresQuestionAndAnswer=”false” applicationName=”/” requiresUniqueEmail=”true” passwordFormat=”Hashed” maxInvalidPasswordAttempts=”5″ minRequiredPasswordLength=”7″ minRequiredNonalphanumericCharacters=”1″ passwordAttemptWindow=”10″ passwordStrengthRegularExpression=”” />

 

</providers>

</membership>

<roleManager>|

<providers>

<add name=”FBARoleProvider” connectionStringName=”FBADB” applicationName=”/” type=”System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” />

 

</providers>

</roleManager>

</system.web>

 

  1. Una vez realizados los cambios guarde el documento.
  2. El siguiente paso es ir al central Administration -> Application Management -> seleccionamos la página que deseamos tener con el FBA y seleccionamos del ribbon el Authentication Providers

  1. Selecciones Default y enseguida habilite la opción Enable Forms Based Authentication (FBA) con los nombres de las etiquetas usadas en el Web.config “”FBAMemberShipPrvider en ASP.NET MemberShip Provider name y FBARoleProvider en ASP.NET Role manager Name.

  1. Con estas dos opciones habilitadas nos permitirá ingresar tanto con la autenticación de Windows como la de FBA. Guardamos los cambios y cerramos la página.
  2. Lo siguiente es ingresar los usuarios para ingresar por medio de FBA y para eso en esta ocasión instalaremos el siguiente paquete

http://sharepoint2013fba.codeplex.com/downloads/get/1422421

  1. Una vez descomprimidos los archivos los ejecutamos en power shell con el siguiente comando:

    Este comando es para dar de alta los permisos necesarios para ejecutar el script Set-ExecutionPolicy Unrestricted

     

    Y enseguida ingrese a la carpeta que descomprimió y ejecute el siguiente comando .\deploy [URL colección de sitio]

  1. Esto le generara las siguientes opciones en la página de ejemplo

  1. Selecione FBA Site Configuration -> editar roles -> review membership Requests , en esa seccion agregara dos roles el Admin, Users
  2. En FBA User Management puede agregar a los usuarios se le asigna un rol en este caso de administrador.

  1. Una vez agregado el usuario lo agregamos como administrador de colección

  1. Al ingresar a la página nos saldrá el siguiente mensaje donde elegiremos Forms Authentication e ingresamos el usuario y contraseña que se le asigno

  1. Y estaremos logeados por la forma FBA

October 29, 2015

No Comments

Consultas espaciales en SQL Server

Una consulta espacial se realiza mediante un modelo de datos geográfico en donde se almacena una abstracción del mundo real para realizar el despliegue de mapas, consultas, edición y análisis.

A partir de la versión SQL Server 2008 tenemos la posibilidad de almacenar y manipular información espacial, con esto es posible el desarrollo de sistemas de información geográfica, mejor conocido como GIS y estos son basados en el gestor de bases de datos de Microsoft.

Para manejar esta información SQL Server ofrece 2 tipos de datos: geometry y geography, los cuales permiten representar figuras geométricas como puntos, líneas, polígonos y poder agruparlos a sí mismos.

La diferencia entre estos tipos de datos es que geometry representa sus objetos en un plano cartesiano mediante las coordenadas (x, y), mientras que geography lo hace mediante coordenadas geográficas, es decir, latitud y longitud, de tal manera que con esta información podemos obtener un modelo de todo el planeta.

El tipo geometry suele utilizarse para áreas geográficas reducidas y tipo geography ofrece mayor precisión sobre áreas de gran tamaño. Para almacenar estos objetos en una tabla basta con crear una o más columnas de tipo geometry o geography.

Además, SQL Server ofrece una variedad de funciones para llevar a cabo operaciones y transformaciones entre dos o más objetos y devolver valores escalares como el área o la longitud que existe de una distancia a otra en el mapa.

Ejemplo:

Para crear una tabla que funcione para almacenar un polígono:

CREATE TABLE Coordenadas

{

ID INT IDENTITY (1, 1) NOT NULL,

NOMBRE VARCHAR (100) NOT NULL,

GEOM GEOMETRY NOT NULL

}

 

Posteriormente generamos un polígono y lo insertamos en la tabla:

 

DECLARE @poligono1 geometry

 

SET @poligono1 = ‘POLYGON ((10 10, 40 10, 40 40, 10 40, 10 10))’

 

INSERT INTO Coordenadas (NOMBRE, GEOM) VALUES (‘figura1′,’@poligono1′)

 

De esta manera podemos generar polígonos y realizar acciones sobre ellos.

October 29, 2015

No Comments

¿Que son los estimote beacons?

Es un aparato pequeño que emite una señal de radio que puede ser interpretada por nuestro teléfono celular, este aparato es alimentado por una batería y tiene un procesador ARM, memoria, bluetooth y sensores de temperatura y movimiento.

 

 

La manera en la que funcionan es detectando la ubicación de los teléfonos inteligentes cercanos para así poderse comunicar con ellos mediante una API.

 

 

Un ejemplo claro en donde puede ser de utilidad el beacon es en las plazas comerciales en donde colocándolo afuera de nuestra tienda podemos hacer llegar ofertas, descuentos o promociones a los clientes que pasen por las afueras de nuestro establecimiento.

 

Cada beacon envía un ID único de tal manera que pueda ser identificado por otros dispositivos, cada ID contiene 20 bytes y nuestros smartphones pueden detectar múltiples beacons a sus alrededores y clasificarlos ya sea por ID o por distancia.

 

De la siguiente manera:

 

 

Para que nuestro teléfono móvil pueda recibir señales de este dispositivo es necesario que cuente con:

  • Bluetooth Low Energy (BLE) activado
  • Wi-fi
  • iOS 7 o Android 4.3 o superior
  • Descargar la aplicación

 

Happy code ;=)

October 29, 2015

No Comments

REZENCE CARGA INALAMBRICA

 

Intel está apostando por una tecnología capaz de dejar a un lado lo que todavía muchos estamos acostumbrados a hacer que es conectar ya sea nuestros teléfonos móviles o nuestras tablets a los cargadores uno por uno.

Lo que está desarrollando es REZENCE un sistema que pretende ser el estándar en el mercado esta tecnología fue anunciada en Computex en Taipéi que es una de las ferias más grandes del mundo.

Rezence es una tecnología que realiza una transferencia inalámbrica de la energía por resonancia magnética esta tecnología recibe la aprobación del fabricante de chips más grande en el mundo

 

Características

  • Permite la carga atravesó de cualquier superficie como puede ser libros o tela
  • Permite cargar una gran cantidad de dispositivos al mismo tiempo con diferentes requisitos de energía
  • La tecnología puede funcionar aun teniendo encima materiales metálicos o monedas
  • También permite la comunicación con Bluetooth para implementar en un futuro la carga por este medio

     

Este tipo de tecnología por el momento está dominado por Qi la cual es utilizada en celulares Lumia y Galaxy. El Rezence de Intel esta en dos consorcios con la finalidad de impulsar su tecnología los cuales son

  • Alliance 4 Wireless Power (A4WP)
  • Power Matters Alliance (PMA)

En las cuales también participan Acer,Asus,HP,Toshiba y lenovo el segundo participan marcas como AT&T, Broadcom, Qualcomm

 

Lo que se pretende es que la implementación de la tecnología sea fabricada por Targus que es la empresa que se decía al desarrollo de cargadores y así empezar a fabricar las primeras bases de cargadores con la tecnología Rezence

 

 

Esta tecnología está pensada para ser implementada en hoteles, restaurantes o en aeropuertos así como en Starbucks

June 8, 2015

No Comments

Procesos paralelos c#

 

En ocasiones al desarrollar una aplicación nos enfrentamos a situaciones en las cuales debemos ejecutar procesos de forma simultánea y es un problema debido a que los procesos se vuelven lentos y el tiempo de respuesta para el usuario es elevado.

Por ejemplo, si estamos desarrollando una aplicación online de una farmacia que tiene 3 sucursales, la cual vamos a utilizar para saber si algún medicamento está disponible y en cuál de las sucursales lo podemos encontrar, nuestro sistema tendría que buscar en cada una de las farmacias la misma información y regresarla, lo cual haría el sistema bastante lento y no sería eficiente para la operación.

Este tipo de problemas lo podemos resolver utilizando el paralelismo, que significa que vamos a ejecutar los llamados al mismo tiempo pudiendo obtener la información necesaria de cada una de las sucursales.

Vamos a realizar un pequeño ejemplo de cómo es que funciona y como es que podemos implementarlo en nuestra aplicación.

 

Ejemplo:

 

  1. Obtenemos información de la Farmacia 1 y así por cada una de las 3

 

private void Farmacia1()

{

      Thread.Sleep(1000);

      MessageBox.Show(“Farmacia 1″);

}

 

  1. Asignamos al método Farmacia1 como una tarea

 

Task t = new Task(this.Farmacia1);

t.Start();

 

Y realizamos este proceso con cada una de las 3 sucursales que son parte de la Farmacia

 

  1. Por último sincronizamos la ejecución de las tareas

 

Task t = new Task(this.Farmacia1);

t.Start();

 

Task t2 = new Task(this.Farmacia2);

t2.Start();

 

Task t3 = new Task(this.Farmacia3);

t3.Start();

 

Task.WaitAll(new Task[] { t, t2, t3 });

 

Con esta estructura podemos implementar diferentes instrucciones para cada una de las farmacias de una manera rápida y eficiente.

June 8, 2015

No Comments

Tipos dinámicos c#

 

El tipo dynamic permite la comunicación o post de una variable y que se omita la comprobación de tipo en tiempo de compilación. En su lugar, se resuelven estas operaciones en tiempo de ejecución, de la siguiente manera:

 

El tipo dynamic se comporta como el tipo object en la mayoría de las circunstancias, ya que el compilador no resuelve o no comprueba el tipo de las operaciones que contienen expresiones de tipo dynamic.

 

El compilador empaqueta información sobre la operación y esa información se utiliza después para evaluar la operación en tiempo de ejecución. Como parte del proceso, las variables de tipo dynamic están compiladas en las variables de tipo object. Por lo que el tipo dynamic sólo existe en tiempo de compilación, no en tiempo de ejecución.

 

Ejemplo:

 

dynamic d = 1;

var suma = d + 3;

System.Console.WriteLine(suma);

 

 

La ventaja principal de este tipo de dato es que no tenemos que preocuparnos si el objeto obtiene su valor de una API de COM, de un lenguaje dinámico, de DOM (Document Object Model) HTML, de la reflexión o de cualquier otra parte del programa.

 

A continuación podemos ver con el siguiente ejemplo la diferencia entre el tipo de dato obj y el tipo de dato Dynamic

 

Public class Program

{

static void Main(string[] args)

{

dynamic dyn = 1;

object obj = 1;

 

System.Console.WriteLine(dyn.GetType());

System.Console.WriteLine(obj.GetType());

}

}

 

Las instrucciones WriteLine muestran los tipos en tiempo de ejecución de dyn y obj. En ese punto, ambos tienen el mismo tipo, entero. Se produce el siguiente resultado:

 

System.Int32

System.Int32

 

Posteriormente asignamos un nuevo valor a las variables aumentándoles un 2, de la siguiente manera:

 

dyn = dyn + 2;

obj = obj + 2;

 

A continuación el sistema nos muestra un error del compilador que notifica un intento de suma de un entero y un objeto en la expresión obj + 2.

 

Sin embargo, no se notifica ningún error para dyn + 2. En tiempo de compilación no se comprueba la expresión que contiene dyn porque el tipo de dyn es dynamic.

May 22, 2015

No Comments

¿Qué son los ORM?

En el desarrollo de una aplicación vemos involucradas dos partes fundamentales para el funcionamiento de la misma como son: La parte del código que se genera para poder hacerla funcionar y por otro lado el acceso a los datos que son los que harán funcional la aplicación, que debido a los cambios que puedan llegar a surgir el manejo de estos se puede llegar a complicar con la evolución.

En la actualidad contamos con un sistema de base de datos relacionales que nos permite mantener entidades con sus respectivas relaciones y atributos.

 

Ejemplo: En un sistema que lleva la información de una escuela.

 

Entidades: Alumno, profesor, salones, boleta, etc.

Relaciones: Una boleta corresponde a un estudiante, etc.

Atributos: Una boleta contiene nombre, materia, calificación, etc.

 

Este sistema posee una interfaz para acceder a los datos llamada Query que es un Lenguaje Estructurado de Consultas y con este realizamos las peticiones a la Base de Datos, ejemplo:

Select * from Boleta where IdAlumno = 1

Antes de la aparición de los ORM las consultas tenían que realizarse en código duro dentro de las aplicaciones, con lo cual se perdía la ventaja de los lenguajes orientados a objetos, ya que se realizaba una petición a la base de datos de manera manual, por lo que era necesario contar con una adaptación de los datos a la aplicación.

Con los ORM nosotros podemos reducir la cantidad de código necesario y lograr una integración de tal manera que las entidades sean ocupadas como objetos, siendo el propio sistema el que se encargue de convertir esta información a SQL y a realizar el procesamiento.

Ejemplo:

Public Class Boleta

{

Int IdBoleta { get; set; } ;

Int IdAlumno { get; set; } ;

List<String> Materias { get; set; };

}

 

El desarrollo de capas de acceso a datos con ORM es una técnica de programación que mapea una base de datos relacional a una serie de objetos que pueden ser manipulados mediante código.

Lo que se persigue con los ORM es facilitar y automatizar el proceso para acceder a la información que va a ser manipulada por nuestro sistema.

 

Un sistema ORM nos proporciona las siguientes ventajas:

 

  • Autonomía completa del desarrollador: Podemos desarrollar una aplicación de acceso a datos sin escribir ninguna línea en lenguaje SQL, únicamente interviniendo directamente con las entidades.

     

  • Reducción en tiempo de desarrollo: Para desarrollar los métodos de acceso a datos solo se requieren una serie de líneas de código, lo que reduce los tiempos, permitiendo centrarnos más en la capa de presentación y en la de lógica de negocio.

     

     

  • Errores en tiempo de ejecución: Cuando se ejecuta cualquier operación de acceso a datos se obtienen errores de codificación en tiempo de compilación lo cual permite saber exactamente donde se encuentra el error.

     

Desventajas:

 

El principal inconveniente de los ORM es la poca escalabilidad que tienen, ya que realiza la traducción a lenguaje SQL de todas las operaciones que programemos a través del lenguaje ORM a emplear, siendo el problema las malas traducciones y la mala calidad del código traducido, por lo que para cierto tipo de sistemas es mejor utilizar procedimientos almacenados con buena estructura y optimización de código que las traducciones que realizan los ORM.

En conclusión los modelos ORM proporcionan muchas ventajas ya que nos permiten tener acceso a los datos de forma rápida y sencilla.

Al no ser la única manera de acceder a los datos, se debe ser preciso en saber cuál va a ser el mecanismo por el cual nuestro sistema tenga acceso a la información ya que para algunos sistemas tendrá un mejor rendimiento el no utilizar un ORM por las desventajas antes mencionadas.