May 22, 2015

No Comments

QUE ES SDL?

También conocido como Lenguaje Declarativo Simple por sus siglas en inglés (Simple Declarative Language.) Facilita la descripción de mapas, listas y árboles de datos de una manera sencilla de leer. Permite acceder a todas la estructura de los datos de la clase con una serializacion simple. El SDL es una alternativa al XML este tipo de serializacion la podemos encontrar en lenguajes como Java o C#.

Características

  • Es una estructura que facilita el manejo en archivos de configuración
  • Tiene un manejo de estructura básico
  • Es una estructura que es utilizado en los sistemas de desarrollo como .NET y Eclipse

SDL ha sido adoptado en los últimos 5 años por organizaciones que incluyen Oracle y Bank que han participado también como colaboradores analizando y agregando bibliotecas a otros idiomas, también incluyendo Ruby y C++, SDL se encuentra en su actualizacion1.1 para Java que incluye mejoras en los espacios de nombres y una API mejorada. La versión de .NET 2.2 que ya está incluida en Visual Studio 2012

Un ejemplo de este tipo de estructura:


				people location="Tokyo" {

person “Akiko” friendly=true {

hobbies {

hobby “hiking” times_per_week=2

hobby “swimming” times_per_week=1

}

}

Vamos a ver la diferencia ente una estructura XML a SDL

  • XML
01 <Perro Nombre=”Firulais” Altura=”1.5″ Peso=”10″>

 

02     <Correas>

 

03         <Correa Color=”azul” />

 

04         <Correa Color=”Roja” />

 

05     </Correas>

 

06     <Habilidades>

 

07         <Correr velocidad =”10″ />

 

08         <Saltar Altura =”0.5″ />

 

09     </Habilidades>

 

10 </Perro>

  • SDL
1 Perro Nombre=” Firulais “ Altura =1.5 Peso =10 {

 

2     Correas “azul” “roja”

 

3     Habilidades {

 

4         Correr Velocidad=10

 

5         Saltar Altura=0.5

 

6     }

 

7 }

Búsqueda en la dentro de una estructura SDL con C#

Tag root = SDL.read(new File(“/mis documentos/perro.sdl”));

List<Tag> Perro = root.getChild(“Perro”).getChild(0).getChild(“Correas”).getChildren();

May 22, 2015

No Comments

¿Qué es el FileSystemWatcher?

En ocasiones al realizar un desarrollo que requiera que ser automatizado totalmente sin necesidad de adecuarlo para nuevas implementaciones que se requieran dependiendo de las necesidades del usuario, es indispensable contar con algún método que se encuentre “monitoreando” constantemente archivos para que cuando estos cambien, automáticamente el sistema los pueda incluir.

Y esto podemos lograrlo implementando las siguientes instrucciones:

  1. Creamos una instancia de FileSystemWatcher

 

FSWatcher = new FileSystemWatcher();

 

  1. Especificamos la ruta donde se encuentra el archivo XML

FSWatcher.Path = path;

 

  1. Incluimos las siguientes configuraciones:

 

FSWatcher.IncludeSubdirectories = true;

FSWatcher.EnableRaisingEvents = true;

 

  1. Definimos los eventos para saber que se tiene que realizar dependiendo de qué acción haya sido aplicada al archivo XML.

 

Creación:

 

FSWatcher.Created+=new FileSystemEventHandler(FSWatcher_Created);

 

Se produce cuando se crea un archivo o un directorio en la ruta de acceso indicada en la propiedad Path especificada.

 

Borrado:

 

FSWatcher.Deleted+=new FileSystemEventHandler(FSWatcher_Deleted);

 

Se produce cuando se elimina un archivo o un directorio de la ruta de acceso indicada en la ruta especificada.

 

Cambio en el archivo:

 

FSWatcher.Changed+=new FileSystemEventHandler(FSWatcher_Changed);

 

Se produce cuando cambia un archivo o un directorio incluido en la ruta de acceso indicada en la ruta especificada.

Renamed:

 

FSWatcher.Renamed+=new RenamedEventHandler(FSWatcher_Renamed);

 

Se produce cuando se cambia de nombre un archivo o un directorio de la ruta de acceso indicada en la ruta especificada.

  1. Implementamos:

private void FSWatcher_Created(object sender, System.IO.FileSystemEventArgs e)

{

//Especificamos las acciones que queremos que se realicen con la creación del archivo

}

 

Con este funcionamiento nosotros podemos crear un componente para inspeccionar archivos en un equipo local, una unidad de red o un equipo remoto y realizar determinadas acciones dependiendo del cambio que tuvo el archivo.

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.

May 22, 2015

No Comments

CROSS SITE REQUEST FORGERY

También conocido como XSRF este tipo de ataque se aprovecha de la confianza que tiene un sitio web con el usuario esto puede ser con el acceso desde cookies o cuando el usuario no finaliza la sesión que tiene abierta de algún sitio de confianza y sigue navegando por otros sitios web.

 

Como funciona

El usuario pepito tiene su administración bancario por medio de la banca electrónica ya que no le da tiempo de ir al banco y aprovecha la tecnología, pepito al momento de ingresar a la página del banco le pide que se identifique y pepito ingresa su usuario y contraseña y algunos otros datos que el banco pide para tener más seguridad y confiar que es en verdad pepito.

Suponiendo que el banco no tiene identificado el problema de XSRF y no lo previene, pepito termina de hacer sus transacciones y decide navegar un rato por Google buscando algunas pantallas de segunda mano, Por mala suerte pepito llega a una página maliciosa que se va aprovechar de su autentificación verdadera en el banco.

La página maliciosa tiene programado en su HTML una liga que está apuntando al banco de donde pepito ya está registrado, este HTML tiene anexado una trasferencia a una cuanta en la que se depositara una suma de dinero a nombre de pepito, ya que esta liga está aprovechando de que pepito aún sigue autentificado con la página y cualquier transición que el realice el banco la tomara como autentificada

 

Prevenir ataques CSRF en aplicaciones ASP .NET

 

El Framework de .NET nos incluye los Anti-Forgery tokens que es una estrategia para la prevención de los ataques por CSRF estos se generan por cada sesión de usuario y son enviados al servidor permitiendo tener una validación, estos son los atributos que incluye el Framework de .NET para la mitigación de estos ataques.

 

  • EnableViewStateMac
  • ViewStateUserKey

 

Estos atributos están disponibles desde la versión 4.5.2 del Framework aun que aun así existe diferentes plugins que pueden tener más opciones para poder mitigar este ataque desde nuestro desarrollo en .NET

 

May 22, 2015

No Comments

Visual Studio Code

La poderosa herramienta de desarrollo se pone en manos de los poseedores de una computadora con Linux o IOS siendo la primera herramienta de desarrollo multiplataforma agregando distintas características que la hacen ver muy atractiva.

 


 

Características

  • Incluye como en las versiones para Windows un resaltado de Sintaxis
  • El apoyo del siempre funcional IntelliSenses
  • La vista previa.
  • Incluye la nueva versión de ASP.NET
  • Incluye la nueva versión de C#
  • Soporte para Git y Diffs
  • Incluye el poder de la herramienta Roslyn y OmniSharp

 

Microsoft ha puesto a disposición el .Net Core y las bibliotecas para los sistemas Linux y Mac OS X con la intención de poder hacer .NET la primera herramienta de desarrollo multiplataforma incluyendo las características que lo distinguen como lo es el desarrollo Web con ASP.NET con el lenguaje de programación C#.

 

Lenguajes soportados

  • C++
  • Java
  • F#
  • Objetive-C
  • Perl
  • PHP
  • PowerShell
  • Python
  • C#
  • Entre otros….

 

Principales Características

Es una herramienta que destaca por ser muy rápida en su depuración como en la navegación dentro de la herramienta, La depuración es muy fácil tanto en JavaScript como en C#. La herramienta de IntellinSense para JavaScript como para JSON es de gran ayuda para la corrección en el desarrollo de algunos métodos en JavaScript como de la estructura de JSON, se incluye la opción de auto guardado de en VSCode muy similar a lo que ocurre con el autoguardado de la herramientas de Office Online. La navegación es muy fácil de realizar con un estilo retro que da una probadita de lo que es Windows 10. Se pueden abrir diferentes proyectos sin alterar el performance de la herramienta siendo muy útil sin tener bajones de rendimiento

 


 

JavaScript

  • Incluye intellinSense para para .Node y JavaScript
  • IntellinSense para módulos CommonJS y AMD
  • Validación y controles de sintaxis que le permite al usuario controlar como lo es: comparationOperatosNotStrict, emptyBlockWithoutComment

     

HTML

  • IntellinSense para los elementos y las etiquetas definidos por HTML 5
  • Expansión de fragmentos Emmet
  • Coloreado de sintaxis

JSON

  • Colorado de sintaxis
  • Corrección de la sintaxis
  • Corrección estructural basado en la estructura JSON
  • La inclusión de IntellinSense con Ctrl + Shift + 0

 

May 22, 2015

No Comments

Mejoras de ASP.NET 5

Desde la aparición en enero del 2002 de ASP.NET sustituyendo a ASP con la gran mejora de poder usar cualquier lenguaje de programación admitida por el Framework de .Net y apoyándose del Code Behind ha recibido bastantes mejoras a través de los años. Ahora es el tiempo de analizar las mejoras de ASP.NET 5 que se encuentra incluida dentro de Visual Studio .NET 2015.

 

Web Forms 4.6.

 

Dentro de la nueva actualización de ASP.NET 5 se incluye la de los Templates en este caso incluido los Web Forms que han formado parte importante de del desarrollo Web. En esta ocasión desglosaremos las tres características más importantes que incluirá esta versión.

 

HTTP/2

  • En esta versión se incluye la compatibilidad con HTTP/2 una de las ventajas es que el explorador solamente utilizara un TCP para comunicarse con el servidor sin tener que crear un nuevo TCP en cada consulta con el mismo.
  • Compatibilidad con la inserción de información al servidor, esto permitirá realizar una sola petición al servidor de múltiples peticiones en una sola respuesta evitando que el cliente tenga que realizar distintas solicitudes.

 

Compatibilidad con ROSLYN

  • Es una plataforma que es Open Source que permite la creación de un análisis de código con la misma API de Microsoft Visual Studio.

     


     

Nuevas Características en ASP.NET

 

  • Optimización en el Core de CLR rediseñando en componentes para tener mejor flexibilidad
  • CLR multiplataforma, Esto permitirá desarrollar y ejecutar aplicaciones en .NET en dispositivos como lo son Mac o Linux
  • Simplificación de las Dependencias. Las referencias se realizaran en un JSON y ya no realizando referencia al ensamblado al proyecto.

  • Desarrollo más ágil, se puede realizar los cambios de código así como guardar los cambios y de manera inmediata poder visualizar los cambios en el navegador sin necesidad de reconstruir el proyecto.

 

Conclusión.

La Herramienta de desarrollo Visual Studio nos brinda desde sus versiones anteriores una facilidad de desarrollo en distintos campos como lo es Mobile tanto en Windows 8 como lo es en Andorid y IOS (Xamarin) demostrando que es una herramienta que no se queda atrás en las nuevas tecnologías dando prioridad al performance de nuestras aplicaciones con apoyo de nuevas herramientas que se van agregando en las actualizaciones que nos proporciona el soporte de Microsoft, Vale la pena dar el gran salto a las actualizaciones de Visual Studio 2015 que nos brindan muchas ventajas.

Referencia:

http://www.asp.net/vnext/overview/aspnet-vnext

 

May 22, 2015

No Comments

¿Qué es ASP .NET vNext?

ASP.NET vNext intenta llevar las cosas al siguiente nivel. Hoy en día, se utiliza ASP.NET utilizando el mismo CLR que las aplicaciones de escritorio utilizan. Lo que se intenta con esta nueva tecnología es establecer una versión optimizada para servidores de poca memoria y de alto rendimiento.

ASP.NET vNext nos permite implementar nuestra propia versión de .NET Framework en una aplicación y tener su propia CLR. Las bibliotecas CLR y el acceso la nube se maneja mediante paquetes (NugetPackages).

La manera en la que se manejan los proyectos también cambia, ya que se integran los packages.config, NuGet, y los archivos de proyecto (csprojs) en una visión unificada de sus dependencias del proyecto expresados ​​en un archivo project.json.

Si nosotros queremos lanzar nuestros proyectos web, estos se pueden construir también como paquetes NuGet, para que pueda ser publicado tanto el proyecto como las dependencias del mismo.

Características:

  • Sincronización entre la nube y el servidor
  • Cross-Platform Runtime (Se ejecuta en MacOS y Linux)
  • Modelo de programación unificada que combina MVC, Web Api y Páginas Web
  • Posibilidad de ver los cambios sin necesidad de recompilar el proyecto
  • Código abierto en GitHub
  • Desacoplado de System.Web (Se divide en paquetes NuGet)
  • Integra inyección de dependencias
  • Posibilidad de usar un editor diferente a Visual Studio

Ventajas:

Fuente: http://taditdash.wordpress.com/2014/10/24/top-features-of-asp-net-vnext/

En ASP .NET vNext ha desaparecido el web config para dar lugar a un nuevo Framework de configuración con soporte para JSON, CommandLine y XML.

Nueva estrategia de construcción de .NET

Fuente: http://es.slideshare.net/santypr/introduccin-a-vnext