domingo, 14 de octubre de 2012

WCF Data Services

Anteriormente era conocido como ADO .NET Data Services,el cual es un componente del .NET Framework. Actualmente está en la versión 5.0 y nos permite crear servicios web y exponerlos en la Internet o Intranet con semántica REST utilizando el protocolo OData, siendo la versión 3 la más actual. En otras palabras utilizamos el protocolo HTTP como transporte y los verbos GET, PUT, POST y DELETE como acciones del servicio, dependiendo de lo requerido.

Proveedores de Orígenes de Datos

WCF Data Services permite los siguientes proveedores de modeladode datos:

1. Proveedor de Entity Framework
Este proveedor es utilizado cuando las fuentes de datos que se van a exponer se basan en Base de Datos Relacionales, como es el caso de SQL Server.


2. Proveedor de reflexión
En este caso se utilizan cuando los modelos de datos se basan en clases de datos estáticas generadas en tienmpo de ejecución, como son las que se generan con LINQ para SQL, exponiéndose como instancias de la interfaz IQueryable. Además la actualización de las mismas se habilitan a través de la interface IUpdatable.

3. Proveedores de servicios de datos personalizados
Cuando las fuentes de datos son generadas dinámicamente y no puede utilizarse los 2 proveedores de datos mencionados anteriormente.


4. Proveedor de transmisiones por secuencias
"Este proveedor permite exponer tipos de datos de objetos binarios grandes usando Servicios de datos de Microsoft WCF. Si implementa la interfaz IDataServiceStreamProvider, se crea un proveedor de transmisiones por secuencias. Este proveedor se puede implementar junto con cualquier proveedor de orígenes de datos."

OData

Es un protocolo Web que se utiliza para la consulta y actualización de data, facilitando su accesibilidad a los datos de las aplicaciones con las que se tiene dificultades actualmente. Todo esto lo hace con la ayuda de las tecnologías web HTTP, Atom Publishing Protocolo (AtomPub) y JSON para facilitar el acceso a la información de una variedad de aplicaciones y servicios.

Asimismo, es utilizado para exponer y consumir de una variedad de fuentes como son las siguientes: sistemas de archivos, sistemas de gestión de contenido, sitios Web tradicionales y las relacionales.

Finalmente, utiliza URI para la identificación de los recursos que le permite la integración de distintas fuentes de datos, interoperabilidad entre ellas con una amplia gama de clientes, servidores, servicios y herramientas. Todo esto debido a que se ha liberado con la premisa de especificaciones abiertas.

Arquitectura Modelo-Vista-Controlador (MVC)

Está arquitectura desarrollada en los años 70s para SmallTak, por lo que con ello confirmamos que no fue hecha exclusivamente para proyectos web, si no, para escritorio. Su verdadera concepción fue separar la interface de usuario, la lógica de negocio y la fuentes de datos, para facilitar su mantenimiento y extensibilidad. En esta primera etapa las tres partes estaban al lado del cliente, ya que  se trabajaba localmente.

Luego, se fue implementando hacia las nuevas tecnologías hasta llegar a los proyectos web, mucho más que a los de escritorio. Par este caso la arquitectura esta implementada al lado del servidor, ya que a lado del cliente esta solamente el navegador web donde se presenta el resultado a través de la Vista, que ha sido procesada en el servidor, según los requerimientos, y entregada al usuario.

Para el caso de proyectos web RIA, que son mucho más ricas, como su nombre en ingles lo dice, la forma de desplegar esta arquitectura es tener la lógica de negocios (Controlador) y accedo a datos (Modelo) en el servidor,  y la presentación (Vista) la cual tiene más código en la tradicional, es decir, que no solo el browser recepciona y envía datos, si no, que también realiza lógicas que generalmente son de control de los datos ingresados.

Debemos recalcar que actualmente está arquitectura como vemos es Cliente - Servidor. Asimismo, la ventaja por ejemplo en lo que es ASP. NET Web Forms y ASP. NET MVC, es que en la segunda se puede hacer un mejor control de las pruebas, ya que puede hacerse pruebas de código mas especificas que en los proyectos Web Forms, porque en teste último las pruebas se realizan a una funcionalidad en total, en cambio en MVC esa misma funcionalidad la podemos probar una parte específica del código o si queremos en su totalidad. Esto a hecho que otras tecnologías como PHP, Python, Ruby, Java, etc hayan desarrollado frameworks especializados en esta arquitectura.

Finalmente, podemos concluir que está no es una arquitectura que resuelve todos nuestros problemas, si no, otra herramienta que según las circunstancias y necesidades que tenemos, en algún momento de nuestra vida profesional, puede ser la mejor opción a utilizar para dar una solución en nuestra empresa o clientes.

domingo, 7 de octubre de 2012

Arquitectura Orientada a Servicios

Arquitectura de Software que nos plantea la utilización de servicios web (Web Services) para la interconexión de dos a más sistemas a través de la publicación y consumo de los mismo en la red. Para algunos expertos los servicios deben llamarse Internet Services, ya que con el gran avance de la Internet a nivel mundial, podemos consumir servicios desde, casi, cualquier parte del planeta.

El servicio que se publica en la red para ser consumido, comparte método que en muchos casos de acuerdo a el análisis del profesional a cargo, tener la lógica del negocio o no. Lo que se recomiendo es que aquí este representada la lógica.  Es muchas arquitecturas de Desarrollo como es DDD (Arquitectura Orientada al Dominio) de Microsoft, existe una capa llamada Capa de Servicios Distribuidos, donde se encuentran los Web Services del aplicativo. Asimismo, puede utilizarse en cualquier otra arquitectura la definición de Web Services.

La implementación de una Arquitectura SOA es más que la publicación de Servicios en la red, ya que existen principios que debe cumplirse para que sea reconocida. Además, dentro de las ventajas que existen, es que hay diferentes tecnologías para que puedan implementarse estos servicios, tanto con licencias GPL y propietarias. Asimismo, la existencia de estándares que son utilizados por distintas tecnologías en el mercado  ayudándonos a facilitar la implementación de los mismo.

Finalmente, podemos concluir que con la reducción de las distancias mundiales a través del  crecimiento de las comunicaciones y llegando a cada vez más lugares del planeta, por lo que las necesidades de servicios que cumplan con distintos requerimientos ayudarán a su crecimiento, como por ejemplo de esto es Cloud Computing.

Sistemas Distribuidos en el Perú

En el Perú no está diversificado el concepto de Sistemas Distribuidos, ya que muchas empresas que compran sistemas lo piensan solo como una solución de una unidad de negocio y no como parte de la empresa. Un ejemplo de esto es que si revisamos el listado de empresas que están registrados en Apesoft, veremos que en el catálogo no existen empresas especializadas en Sistemas Distribuidos. Lo mas cercano son las empresas que implementan ERP. Que son más sistemas modulares y no distribuidos.

Por otro lado, podemos observar otro caso que son empresas que tienen sucursales en distintos departamentos del país, que su sistema está centralizado en Lima, si es que tienen automatizado su proceso a nivel nacional.  Como te das cuenta del problema si es que te dicen que no puede atenderte porque el sistema se cayo y no tienen comunicación con la central que está en Lima.

Para llegar a tener un sistema distribuido, primero debemos empezar según mi modesto entendimiento al descentralización y dependencia de la capital. Ya que como sabemos para tener un sistema distribuido se requiere de una logística, gran inversión, pero al no tener los recursos localmente para implementarse y depender de una ciudad en exclusiva, se hace mucho más difícil implementarse.