<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>webservice &#8211; Oscar Blancarte &#8211; Software Architecture</title>
	<atom:link href="https://www.oscarblancarteblog.com/tag/webservice/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.oscarblancarteblog.com</link>
	<description>Software Architect &#38; FullStack developer</description>
	<lastBuildDate>Sun, 16 Aug 2020 20:52:25 +0000</lastBuildDate>
	<language>es-MX</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.11</generator>

<image>
	<url>https://www.oscarblancarteblog.com/wp-content/uploads/2019/03/cropped-ob-32x32.png</url>
	<title>webservice &#8211; Oscar Blancarte &#8211; Software Architecture</title>
	<link>https://www.oscarblancarteblog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">89905023</site>	<item>
		<title>SOAP vs REST ¿cual es mejor?</title>
		<link>https://www.oscarblancarteblog.com/2017/03/06/soap-vs-rest-2/</link>
					<comments>https://www.oscarblancarteblog.com/2017/03/06/soap-vs-rest-2/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Mon, 06 Mar 2017 09:00:02 +0000</pubDate>
				<category><![CDATA[EAI]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[arquitectura]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[webservice]]></category>
		<guid isPermaLink="false">https://www.oscarblancarteblog.com/?p=1535</guid>

					<description><![CDATA[<p>SOAP vs REST es una comparación que muchos programadores o incluso arquitectos de software suelen preguntarse a la hora de desarrollar las API para sus sistemas, pero cual es realmente la diferencia que existe entre ellas, ¿Será que una es superior a la otra? ¿Será que REST llego para remplazar a SOAP? Pues bien, en [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2017/03/06/soap-vs-rest-2/">SOAP vs REST ¿cual es mejor?</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter"><img src="https://www.oscarblancarteblog.com/wp-content/uploads/2017/03/SOAP-vs-REST-1024x576.png" alt="SOAP vs REST" class="wp-image-1536"/></figure></div>



<p>SOAP vs REST es una comparación que muchos programadores o incluso arquitectos de software suelen preguntarse a la hora de desarrollar las API para sus sistemas, pero cual es realmente la diferencia que existe entre ellas, ¿Será que una es superior a la otra? ¿Será que REST llego para remplazar a SOAP? Pues bien, en este artículo trataremos de resolver esta gran duda.</p>



<span id="more-1535"></span>



<p>Primero que nada, me gustaría aclarar un error muy común que puede hacer que distorsione por completo tu entendimiento con respecto a los Web Services y es que <strong>SOA no es igual que SOAP y tener Web Services no significa que tenemos SOA</strong>. Hace un tiempo publique un artículo donde hablaba acerca de la <a href="https://www.oscarblancarteblog.com/2014/07/23/que-es-service-oriented-architecture-soa/">Arquitectura SOA</a> por si quieres darle una repasada al tema.<br>Pues bien, ya con este punto aclaro, debemos entender que SOA (Service-Oriented Architecture) es un <em><strong>tipo de Arquitectura de Software</strong></em> y no una tecnología o producto. SOA es una arquitectura que se base en la integración de aplicaciones mediante Servicios, los servicios representan la medida más granular de la arquitectura, sobre la que se construyen otros artefactos como: composiciones, proxys, fachadas, BPM e incluso API completas. Ahora bien, si SOA tiene como médula espinal los servicios, ¿no son SOAP y REST servicios? ¡Revelador no!!<br>Entonces si REST y SOAP son en realidad servicios, entonces que diferencia existe entre las dos, cual es el propósito de que existan dos tecnologías que aparentemente hacen lo mismo. Primero entendamos que SOAP y REST siguen la misma Arquitectura (SOA), por lo que las dos deberían de apegarse a los mismos principios.</p>



<div class="wp-block-image"><figure class="aligncenter"><img src="https://www.oscarblancarteblog.com/wp-content/uploads/2017/03/SOAP_VS_REST_SOA.png" alt="SOAP vs REST" class="wp-image-1537"/></figure></div>



<p>En este punto nos debe de quedar claro que tanto SOAP como REST son tecnologías que implementan la arquitectura SOA.</p>



<h2>&nbsp;</h2>



<h2>Que es SOAP:</h2>



<p>Los servicios SOAP o mejor conocimos simplemente como Web Services, son servicios que basan su comunicación bajo el protocolo SOAP (Simple Object Access Protocol) el cual este definido por Wikipedia como “protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML”. Por lo tanto, queda claro que la comunicación se realiza mediante XML, lo cual nos debe de quedar muy claro, pues es en este aspecto donde radican las principales diferencias contra REST. Los servicios SOAP funcionan por lo general por el protocolo HTTP que es lo más común cuando invocamos un Web Services, sin embargo, SOAP no está limitado a este protocolo, si no que puede ser enviado por FTP, POP3, TCP, Colas de mensajería (JMS, MQ, etc). Pero como comentaba, HTTP es el protocolo principal.</p>



<div class="wp-block-image"><figure class="aligncenter"><img src="https://www.oscarblancarteblog.com/wp-content/uploads/2017/03/soap-services.png" alt="SOAP vs REST" class="wp-image-1538"/></figure></div>



<p>Si bien, me gustaría poner una sección de ventajas y desventajas, la realidad es que estas pueden ser lo contrario dependiendo del punto de vista y la situación concreta del problema a resolver por lo que me gustaría dejar un breve análisis de cuando utilizar SOAP. A mi parecer SOAP sigue siendo el mejor protocolo para <strong>la comunicación de Server to Server o Partner to Partner</strong>&nbsp;pues es un protocolo mucho más robusto, tiene un tipiado mucho más fuerte, permite agregar <em><strong>metadatos</strong></em> mediante los atributos (cosa que JSON no tiene), permite definir <strong><em>espacios de nombre</em></strong>, evitando la ambigüedad. Por lo mismo, SOAP es un formato más pesado, tanto en tamaño como en procesamiento, pues los XML tiene que ser parseado a un árbol DOM, resolver espacios de nombre (namespaces) antes de poder empezar a procesar el documento. Los XML además tienen métodos de validación muy potentes y ampliamente utilizados, a diferencia de JSON, el cual, si tiene forma de validar, pero no son tan potente y su utilización es pobremente utilizada (no significa que en el futuro no se estandarice su uso).</p>



<p>Nótese que, SOAP solo soporta formato XML, por lo que cuando lo que necesitamos es flexibilidad y un performance superior, podemos optar por REST. Tengo otro artículo donde hablo de <a href="https://www.oscarblancarteblog.com/2014/07/18/json-vs-xml/">XML vs JSON</a> por si quieres profundizar en el tema.</p>



<h2>Que es REST</h2>



<p>Por otra parte, tenemos REST, el chico nuevo de la cuadra. REST ya tiene unos años, pero en realidad tiene poco que se le empezó a dar la importancia que hoy tiene. REST es una tecnología mucho más flexible que transporta datos por medio del protocolo HTTP, pero este permite utilizar los diversos métodos que proporciona HTTP para comunicarse, como lo son GET, POST, PUT, DELETE, PATCH y a la vez, utiliza los códigos de respuesta nativos de HTTP (404,200,204,409). REST es tan flexible que permite transmitir prácticamente <strong><em>cualquier tipo de datos</em></strong>, ya que el tipo de datos está definido por el Header Content-Type, lo que nos permite mandar, XML, JSON, Binarios (imágenes, documentos), Text, etc. que contrasta con SOAP que solo permite la transmisión de datos en formato XML. A pesar de la gran variedad de tipos de datos que podemos mandar con REST, la gran mayoría transmite en JSON por un motivo muy importante, <strong><em>JSON es interpretado de forma natural por JavaScript</em></strong>, lo que ha hecho que frameworks como Angular y React se aprovechen al máximo, pues pueden enviar peticiones directas al servidor por medio de AJAX y obtener los datos de una forma nativa. Los formularios de HTML pueden ser apuntados a los servicios REST sin ningún problema (por ejemplo).</p>



<div class="wp-block-image"><figure class="aligncenter"><img src="https://www.oscarblancarteblog.com/wp-content/uploads/2017/03/rest-services.png" alt="SOAP vs REST" class="wp-image-1539"/></figure></div>



<p>Otra de las grandes ventajas que presenta JSON sobre SOAP es el <strong><em>performance</em></strong>, ya que los JSON son considerablemente más livianos en peso y mucho más rápido en su procesamiento. Pero como ya vimos, el performance tiene un costo, y es la robustez del mensaje como tal.<br><br></p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://codmind.com/courses/api-rest-con-spring-boot" target="_blank" rel="noreferrer noopener"><img loading="lazy" width="800" height="450" src="https://www.oscarblancarteblog.com/wp-content/uploads/2019/08/banner-lg.jpg" alt="" class="wp-image-3146" srcset="https://www.oscarblancarteblog.com/wp-content/uploads/2019/08/banner-lg.jpg 800w, https://www.oscarblancarteblog.com/wp-content/uploads/2019/08/banner-lg-300x169.jpg 300w, https://www.oscarblancarteblog.com/wp-content/uploads/2019/08/banner-lg-768x432.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></a><figcaption>Te invito a mi curso de Mastering API REST con Spring Boot</figcaption></figure></div>



<p>Ahora bien, desde mi punto de vista REST debería ser utilizado para obtener datos en aplicaciones WEB que funcionan principalmente con el Modelo MVC del lado del cliente, es decir, que todos los procesamientos se realizan desde el navegador y que solo va al backend para obtener o actualiza la base de datos. Otra de las situaciones es cuando tenemos aplicaciones donde los recursos de procesamiento son bajos y con ancho de banda limitado, como sería el caso de las aplicaciones móviles o robótica.</p>



<p>Te invito a que vas mi articulo &#8220;<a href="https://www.oscarblancarteblog.com/2018/01/11/construir-api-rest-nodejs-primera-parte/">Construir un API REST con NodeJS</a>&#8220;, en el cual hablo desde cero como implementar un API REST de la forma más simple y clara, utilizando NodeJS y Express. O puedes puedes ver la guia completa de cómo implementar un <a href="https://www.oscarblancarteblog.com/api-rest-java-jax-rs/">API REST con Java</a> desde cero.</p>



<p>Te puede interesar mi video de Youtube&#8221;<a href="https://youtu.be/RbBPuMlgdUU" target="_blank" rel="noreferrer noopener"><strong>Qué es API REST? &#8211; 🚀Y por que es importante aprenderlo 🚀</strong></a>&#8220;</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe class='youtube-player' width='648' height='365' src='https://www.youtube.com/embed/RbBPuMlgdUU?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe>
</div></figure>



<h2>SOAP vs REST Conclusiones</h2>



<p>Como vimos en este análisis, no hay un claro ganador, pues tanto SOAP como REST siguen siendo muy útiles en condiciones diferentes, incluso existen aplicaciones que ya exponente todas sus API’s en SOAP y REST para asegurar que la integración con ellas sea lo más natural posible sin importar la aplicación con la que se estén integrado.</p>



<p>Cabe mencionar que REST ha estado tomando fuerza a una velocidad impresionante y más con la llegada de NodeJS y las bases de datos NoSQL como MongoDB. Sin embargo, el hecho de que REST tome fuerza, no significa que le esté quitando protagonismo a SOAP, pues recordemos que con la llegada del Internet de las cosas (IOT) cada vez se conectan más dispositivos a internet que necesitan ser integrados (una gran oportunidad para REST) y es donde REST está tomando la delantera.</p>



<p>La verdad es que el futuro no se ve claro, pero lo que, si es que a pesar de que REST siga tomando fuerza, SOAP sigue siendo una tecnología muy robusta y extremadamente utilizada por lo que una cosa si es segura, a SOAP todavía le queda un largo camino.</p>



<p>A pesar de todo este análisis, lo importante es tu qué opinas, ¿cuál crees que sea el futuro?, ¿crees que REST poco a poco matara a SOAP? O ¿simplemente SOAP seguirá funcionando a la par con REST?.</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2017/03/06/soap-vs-rest-2/">SOAP vs REST ¿cual es mejor?</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2017/03/06/soap-vs-rest-2/feed/</wfw:commentRss>
			<slash:comments>126</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1535</post-id>	</item>
		<item>
		<title>Web Services con Java (JAX-WS)</title>
		<link>https://www.oscarblancarteblog.com/2016/12/19/web-services-con-java-jax-ws/</link>
					<comments>https://www.oscarblancarteblog.com/2016/12/19/web-services-con-java-jax-ws/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Mon, 19 Dec 2016 09:00:09 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[webservice]]></category>
		<guid isPermaLink="false">http://www.oscarblancarteblog.com/?p=1307</guid>

					<description><![CDATA[<p>Los Web Services cada vez son más indispensable a la hora de construir aplicaciones, debido a que ya casi cualquier aplicación empresarial, requiere integrarse o comunicarse con otra. Por este motivo Java ofrece la librería JAX-WS la cual es definida por la especificación JSR 224. La especificación remplace a la JAX-RCP, la cual era únicamente [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2016/12/19/web-services-con-java-jax-ws/">Web Services con Java (JAX-WS)</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>				<img loading="lazy" class="alignleft wp-image-594 size-thumbnail" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/google-oracle-java1-150x150.jpg" alt="ReflectionToStringBuilder" width="150" height="150" />Los Web Services cada vez son más indispensable a la hora de construir aplicaciones, debido a que ya casi cualquier aplicación empresarial, requiere integrarse o comunicarse con otra. Por este motivo Java ofrece la librería JAX-WS la cual es definida por la especificación <a href="http://jcp.org/en/jsr/detail?id=224">JSR 224</a>. La especificación remplace a la JAX-RCP, la cual era únicamente para llamadas a procedimientos remotos, lo cual es diferente a los Web Services.</p>
<p>&nbsp;</p>
<p>Crear Web Services con Java es mucho más fácil de lo que pudiéramos creer, pues ya que tan solo es necesario anotar una clase, para que esta sea expuesta automáticamente como tal por medio del servidor de aplicaciones. Para demostrar esto, desarrollaremos un Servicio para consultar y crear Empleados.</p>
<p>&nbsp;</p>
<p>Lo primero que tenemos que hacer, es crear una clase que queremos exponer como WebService, luego la tenemos que anotar con <span class="lang:java decode:true crayon-inline ">@WebService</span> :</p>
<pre class="lang:java decode:true">@WebService(serviceName = "EmployeeService", targetNamespace = "http://xmlns.oscarblancarte.com/services/v1/EmployeeService")
public class EmployeeServiceImpl</pre>
<p><span id="more-1307"></span></p>
<p>Las propiedades utilizadas son las siguientes:</p>
<ul>
<li><strong>serviceName</strong>: Nombre del servicio, que será utilizado para crear la URL del endpoint.</li>
<li><strong>targetNamespace</strong>: Define el Namespace del servicio.</li>
</ul>
<p>&nbsp;</p>
<p>Basta decir que las propiedades <span class="lang:java decode:true crayon-inline ">serviceName</span>  y <span class="lang:java decode:true crayon-inline ">targetNamespace</span>  son opcionales, ya que, de no colocarlas, serán asignadas de forma automática, tomando el nombre de la clase y el paquete en que se encuentra respectivamente.</p>
<p>&nbsp;</p>
<p>En segundo lugar, es necesario crear los métodos que serán expuestos como las operaciones del WebService, estos métodos, deben de ser anotados con <span class="lang:java decode:true crayon-inline ">@WebMethod</span> , veamos cómo quedaría una clase WebService terminada:</p>
<pre class="lang:java decode:true " title="EmployeeServiceImpl.java">package com.osb.jax.ws.services.interfaces;

import com.osb.jax.ws.services.types.Employee;
import java.util.*;
import javax.jws.*;

/**
 * @author Oscar Blancarte
 */
@WebService(serviceName = "EmployeeService", targetNamespace = "http://xmlns.oscarblancarte.com/services/v1/EmployeeService")
public class EmployeeServiceImpl {
    
    private static final List&lt;Employee&gt; EMPLOYEES = new ArrayList&lt;&gt;();
    
    @WebMethod
    @WebResult(name = "employee")
    public List&lt;Employee&gt; getEmployeeList(){
        return EMPLOYEES;
    }
    
    @WebMethod
    public boolean createEmployee(@WebParam(name = "employee") Employee employee){
        EMPLOYEES.add(employee);
        return true;
    }
}</pre>
<p>&nbsp;</p>
<p>La anotación <span class="lang:java decode:true crayon-inline ">@WebParam</span>  es utilizado para personalizar el nombre del parámetro en el WSDL.</p>
<p>&nbsp;</p>
<p>La definición de la clase Employee es la siguiente:</p>
<pre class="lang:java decode:true" title="Employee.java">package com.osb.jax.ws.services.types;


/**
 * @author Oscar Blancarte
 */
public class Employee {
    
    private Long id;
    private String name;

    public Employee() {
    }
    
    public Employee(Long id, String name) {
        this.id = id;
        this.name = name;
    }
    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    
}</pre>
<p>&nbsp;</p>
<p>Finalmente, solo serán necesario deployar en el servidor de aplicaciones nuestro proyecto, en este caso, estamos utilizando Wildfly 9, pero podrías utilizar cualquier servidor que sea de tu preferencia. Una vez deployado, podrás ver el servicio en la URL: <a href="http://localhost:8080/JAX-WS-1.0-SNAPSHOT/EmployeeService?wsdl">http://localhost:8080/JAX-WS-1.0-SNAPSHOT/EmployeeService?wsdl</a>.</p>
<p>&nbsp;</p>
<p>Podemos probar el servicio con SOAP-UI para ver el servicio y las dos operaciones:</p>
<p><img loading="lazy" class="aligncenter wp-image-1308 size-full" src="http://www.oscarblancarteblog.com/wp-content/uploads/2016/12/soapui.png" alt="Web Services con Java" width="228" height="113" /></p>
<p>&nbsp;</p>
<p>Observemos que tenemos dos operaciones:</p>
<ul>
<li><strong>createEmployee:</strong> nos permite crear un nuevo Empleado</li>
<li><strong>getEmployeeList:</strong> obtener un listado de todos los Empleados registrados.</li>
</ul>
<p>&nbsp;</p>
<p>Primeo ejecutaremos el método <strong>createEmployee</strong>:</p>
<p><img loading="lazy" class="aligncenter wp-image-1309 size-full" src="http://www.oscarblancarteblog.com/wp-content/uploads/2016/12/createEmployee.png" alt="Web Services con Java" width="872" height="271" /></p>
<p>Con este paso, ya habremos creado un nuevo Empleado llamado Oscar Blancarte.</p>
<p>&nbsp;</p>
<p>El segundo paso, será consultar los empleados con el método <strong>getEmployeeList</strong>:</p>
<p><img loading="lazy" class="aligncenter size-full wp-image-1310" src="http://www.oscarblancarteblog.com/wp-content/uploads/2016/12/getEmployeeList.png" alt="Web Services con Java" width="721" height="205" /></p>
<p>&nbsp;</p>
<p>Como vemos, crear Servicios Web es tan simple como anotar una simple clase y desplegarla en nuestro servidor de aplicaciones.</p>
<p>&nbsp;</p>
<p>&nbsp;		</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2016/12/19/web-services-con-java-jax-ws/">Web Services con Java (JAX-WS)</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2016/12/19/web-services-con-java-jax-ws/feed/</wfw:commentRss>
			<slash:comments>50</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1307</post-id>	</item>
		<item>
		<title>Que es Service-oriented architecture (SOA)</title>
		<link>https://www.oscarblancarteblog.com/2014/07/23/que-es-service-oriented-architecture-soa/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/23/que-es-service-oriented-architecture-soa/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Wed, 23 Jul 2014 18:43:49 +0000</pubDate>
				<category><![CDATA[EAI]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[arquitectura]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[webservice]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/?p=214</guid>

					<description><![CDATA[<p>En los últimos años hemos escuchado haber de SOA por todas partes, SOA aqui SOA alla y SOA por todas partes, Pero que es realmente SOA ya que en ocasiones confundimos SOA con alguna tecnología o algún producto. Sin embargo no es mas un tipo de arquitectura de software la cual esta diseñada para los ambientes [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2014/07/23/que-es-service-oriented-architecture-soa/">Que es Service-oriented architecture (SOA)</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>				<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/soa.png"><img loading="lazy" class=" wp-image-215 alignleft" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/soa.png" alt="SOA" width="135" height="100" /></a>En los últimos años hemos escuchado haber de SOA por todas partes, SOA aqui SOA alla y SOA por todas partes, Pero que es realmente SOA ya que en ocasiones confundimos SOA con alguna tecnología o algún producto. Sin embargo no es mas un tipo de arquitectura de software la cual esta diseñada para los ambientes de integración, Pero antes de entrar a detalle me gustaría hacer un poco de historia.</p>
<p>Antes del debut de SOA teníamos la Arquitectura de ManFrame y Cliente-Servidor las cuales no quiero decir que sean obsoletas o pasadas de moda ya que cada un ofrece ventajas y desventajas que pueden ser decisivas según nuestro escenario de negocio.<span id="more-214"></span></p>
<h2><strong>Mainframe</strong></h2>
<p>Bien, ManFrame es una arquitectura que su enfoque central radica en un servidor super potente capas de hacer miles de transacciones por si sola y administrar miles de usuarios concurrentes desde una única ubicación. Esto desde luego es una gran ventaja pero tenia el gran inconveniente que todo es centralizado.</p>
<h2><strong>Cliente-Servidor</strong></h2>
<p>A diferencia de Mainframe el cliente servidor es una arquitectura mas fácil de encontrar ya que muchos de los aplicativos que usamos en muestra computadora la utilizan, Este tipo de arquitectura se caracteriza en que una parte del programa se encuentra instalada en nuestra computadora y esta otra parte llamada Servidor la cual es otro software que atiende las peticiones le cliente por medio de un protocolo como TCP/IP. Esta arquitectura ayuda en que parte del procesamiento se realiza por parte del cliente pero para almacenar o realizar consultas en tiempo real se comunicaba con el servidor.</p>
<h2><strong>Service-oriented architecture (SOA)</strong></h2>
<p>Como observamos en las arquitecturas anteriores estas se enfocan únicamente en si mismas sin importarles mucho la forma en la cual nos comunicamos con otras aplicaciones, ya que cada una tenia un protocolo único de comunicación  y era difícil interactuar con otros sistemas.</p>
<p>Sin embargo SOA es diferente ya que esta diseñado no solo para complacer al sistema al cual estamos diseñando si no también ve un poco mas y esto es por que se preocupa por la forma en que este sistema se deberá comunicar con los demas, ya sea consumiendo servicios de proveedores externos e internos o simplemente exponiendo servicios para que otras aplicaciones se puedan comunicarse con el.</p>
<p>La principal ventaja que ofrece SOA es que su activo principal no son las aplicaciones o sistemas si no los <strong>Contratos </strong>que expone y es que con una definición correcta de un contrato podríamos incluso cambiar el aplicativo por otro y nadie se diera cuenta. Un contrato define la forma en que se realizara la comunicación, establece el formato de entrada del servicio y de salida lo que ayuda a que cualquier cliente pueda interpretarlos sin ningún problema.</p>
<p>Otra de las ventajas que ofrece SOA es que utiliza protocolos de comunicación Estándar como WebServices lo cual le permite comunicarse con cualquier aplicación sin importar en que lenguaje este desarrollada.</p>
<p>Cada servicio que se desarrolla en SOA se realiza bajo la premisa de que sera reutilizado al máximo y que sera de utilidad para otros sistemas por lo cual cada servicio deberá ser planeado con cuidado para que sea lo mas simple posible y a si aumentar el grado de re-utilización que tendrá.</p>
<p>A continuación les dejo un esquema muy simple de como la arquitectura SOA nos puede ayudar en las integraciones de los diferentes sistemas que se encuentran en una empresa.</p>
<p><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/soa.png"><img loading="lazy" class="aligncenter wp-image-215" title="SOA" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/soa.png" alt="SOA" width="504" height="378" /></a></p>
<p>&nbsp;</p>
<p>Del lado derecho tenemos las aplicaciones a las cuales necesitamos comunicarnos para realizar un proceso de integración y cada una tiene expuesto un conjunto de servicios, En el medio tenemos la capa de orquestación donde creamos servicios de integración a partir de otros servicios existentes. y del lado izquierdo tenemos las aplicaciones las cuales requieren una integración con algún sistema interno o externo.</p>
<p>&nbsp;</p>
<p>En resumen SOA es una arquitectura diseñada para la integración de todos los distintos aplicativos que conforman la infraestructura del cliente, pero también busca la integración con aplicativos externos como de proveedores.</p>
<p>&nbsp;</p>
<p>Si quieres conocer mas de SOA y de Integraciones con BPEL aquí te dejo algunos links de otros de mis Post.</p>
<p><a href="https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-que-es-un-composite/">Que es una composición SOA</a></p>
<p><a href="https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/">Que es la virtualizacion de servicios</a></p>
<p><a href="https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-como-crear-un-bpel/">Como crear un BPEL</a>		</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2014/07/23/que-es-service-oriented-architecture-soa/">Que es Service-oriented architecture (SOA)</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/23/que-es-service-oriented-architecture-soa/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">214</post-id>	</item>
		<item>
		<title>Que es la Virtualización de Servicios</title>
		<link>https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Fri, 18 Jul 2014 15:58:01 +0000</pubDate>
				<category><![CDATA[ESB]]></category>
		<category><![CDATA[SOA Suite]]></category>
		<category><![CDATA[enterprice service bus]]></category>
		<category><![CDATA[esb]]></category>
		<category><![CDATA[osb]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[servicio]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[virtualización]]></category>
		<category><![CDATA[webservice]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/?p=97</guid>

					<description><![CDATA[<p>Para los que ya tenemos mas experiencia en la arquitectura SOA y comprendemos perfectamente que es un Enterprise Service Bus este tema las ha de parecer muy simple pero para todos aquellos que no han tenido la oportunidad de adentrarse a los obscuros territorios de lo que es SOA les tengo buenas noticias pues en [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/">Que es la Virtualización de Servicios</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Para los que ya tenemos mas experiencia en la arquitectura SOA y comprendemos perfectamente que es un Enterprise Service Bus este tema las ha de parecer muy simple pero para todos aquellos que no han tenido la oportunidad de adentrarse a los obscuros territorios de lo que es SOA les tengo buenas noticias pues en esta Entrada hablaremos que es la virtualización.</p>
<p style="text-align: justify;">Para empezar virtualizar viene de la palabra virtual como cuando hablamos de maquinas virtuales, pues esto es algo parecido pues un servicio virtual no es mas que una mascara que lo único que hace es <span id="more-97"></span>exponer un WebService que por dentro hace la llamada a otro u otros WebServices para dar una funcionalidad nuevo o extendida.</p>
<p style="text-align: justify;"><em>Imaginemos que estamos desarrollando una aplicación móvil para una empresa la cual dentro de sus sistemas ya tiene un conjunto de webservices desarrollados para las principales tareas que realiza, sin embargo hasta el momento no tiene ningún desarrollo para móviles y le preocupa la seguridad ya que al exponer sus webservices tema que alguna persona mal intencionada pueda entrar y hacer algún mal.</em></p>
<p style="text-align: justify;"><em>Por lo que desarrollo un WebService para que el usuario se Autentifique cuando entre a la aplicación, sin embargo eso no es todo, también requiere que cuando el usuario realice alguna acción se validen sus privilegios para denegar cualquier acción no permita para ese usuario.</em></p>
<p style="text-align: justify;"><em>Otro punto importante es que el cliente quiere que cuando una persona intente hacer una acción no autorizada o falle en el Login se registre tal acción para poder auditar y detectar situaciones sospechosas.</em></p>
<p style="text-align: justify;">El cliente nos brinda los siguientes WebServices con los que debemos diseñar nuestra aplicación:</p>
<pre style="text-align: justify;"><strong>SecurityService  </strong><em>//WebServices que expone el sistema de seguridad centralizado.</em></pre>
<ul style="text-align: justify;">
<li><strong>login(usuario, password) : boolean: </strong>Operación que autentifica al usuario y nos dice indica si el login fue exitoso o no.</li>
<li><strong>autorization(usuario,password, accion ):boolean: </strong>Operación que nos indica si un usuario tiene privilegios para realizar una acción determinada, El parámetro acción representa el ID de la operación a ejecutar.</li>
</ul>
<pre><strong>AuditService </strong>//WebService que expone el sistema de Auditoria Informática</pre>
<ul style="text-align: justify;">
<li><strong>intentoAccion(usuario, accion, DateTime, autorizationResult): void: </strong>Operación que registra cuando una acción es solicitada</li>
</ul>
<pre><strong>ClienteService </strong>//WebService para consultar los datos del cliente</pre>
<ul style="text-align: justify;">
<li><strong>consultaDatosPersonales(idCliente):</strong> <strong>Cliente: </strong>Operación que regresa los datos básicos del cliente como nombre,apellido, sexo, CURP, etc.</li>
<li><strong> consultaSaldo(idCliente): double: </strong>Operación que regresa el saldo del cliente</li>
</ul>
<h1 style="text-align: justify;"><strong>Desarrollando la solución</strong></h1>
<p style="text-align: justify;">Imaginemos que la aplicación lo único que hace es consultar los datos del cliente y su saldo sin embargo no todos los usuarios pueden saber el saldo de un cliente por lo que el servicio se separa y se consulta de forma independiente.</p>
<p style="text-align: justify;">Lo primero que se nos ocurre es hacer una pantalla de login y autenticarnos con el servicio de login pasandole el nombre de usuario y password. Si el login se realiza correctamente entramos a la aplicación, sin embargo el cliente quiere que cuando un login falle o se de correctamente notifiquemos el evento al departamento de Auditoria mediante la operación de <strong>intentoAccion</strong> y pesarla el ID de la operación Login y la fecha y hora del intento.</p>
<p style="text-align: justify;">Esto desde luego nos implicaría dos llamadas a Webservices, uno para Login y otro para Auditoria:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/loginnovirtual.png"><img loading="lazy" class="aligncenter  wp-image-101" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/loginnovirtual.png" alt="LoginNoVirtual" width="555" height="347" /></a></p>
<p style="text-align: justify;"> Fig.1: Muestra la comunicación con los dos webservices de forma separada.</p>
<p style="text-align: justify;">Para la pantalla de datos del cliente tendríamos que implementar nuevamente un sistema de llamadas donde primero verificaríamos si tenemos privilegios para leer los datos del cliente con el webservices de autorizacion, de darse los privilegios entonces se consulta el Webservices de <strong>consultaDatosPerosnales</strong>, seguido de consultar los privilegios para autorizar al usuario para leer el saldo del cliente y consultar el servicio de  <strong>consultaSaldo. </strong>Nuevamente si alguna autorización falla es requerido notificar al departamento de Auditoria mediante el Webservices <strong>intentoAccion. </strong>Este esquema quedaría algo a sí.</p>
<p style="text-align: justify;"> <a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientnovirtual.png"><img loading="lazy" class="aligncenter  wp-image-103" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientnovirtual.png" alt="ConsultaClientNoVirtual" width="555" height="397" /></a></p>
<p style="text-align: justify;"> Fig.2: Fugura que muestra el número de acción a realizar solo para completar la consulta de los datos del cliente y saldo.</p>
<p style="text-align: justify;"><strong>Un esquema con Virtualización:</strong></p>
<p style="text-align: justify;">Una vez que examinamos como tendríamos que desarrollar una aplicación sin virtualización podemos empezar a examinar el esquema con virtualización.</p>
<p style="text-align: justify;">La primera acción que deberíamos hacer es crear un proxy que cumpla casi exactamente con el contrato(WSDL) que sirve como punto de entrada a nuestra aplicación pero que ademas de esto le estaríamos pasando los datos de autenticación y autorización en el Header del mensaje SOAP de tal forma que el proxy tomara el header lo enviara al servicio de <strong>autorization </strong>en caso de autorización continuara con la llamada al servicio de <strong>consultaDatosPerosnales </strong>y regresara el resultado.Pero en caso de haber fallado la autorización llamaría al servicio de Auditoria y regresaría un Throw para indicar que el servicio ha fallado por seguridad.</p>
<p style="text-align: justify;">La aplicación se viera de esta manera para el escenario de consulta de datos del suscriptor:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientevirtual.png"><img loading="lazy" class="aligncenter  wp-image-104" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientevirtual.png" alt="ConsultaClienteVirtual" width="568" height="427" /></a></p>
<p style="text-align: justify;">Fig.3: Escenario con virtualización</p>
<p style="text-align: justify;">Si nos damos cuenta en este escenario ya solo tenemos una invocación a un único servicio el cual se encarga de realizar las operaciones previas a la consulta de los datos del cliente y también notificar al departamento de Auditoria en caso de haber fallado la autorización.</p>
<p style="text-align: justify;">Este enfoque tiene las siguientes ventajas:</p>
<ul>
<li>Se reduce el numero de llamadas al servidor</li>
<li>Aumentan los tiempos de respuesta</li>
<li>Las operaciones se realizan desde la misma infraestructura del cliente por lo que la seguridad es mucho mejor.</li>
<li>El implementar un Enterprice Service Bus nos da la cualidad de poder medir el performance (KPI o Key Performance Indicator).</li>
<li>Definir los acuerdos de nivel de servicio o SLA.</li>
</ul>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/">Que es la Virtualización de Servicios</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">97</post-id>	</item>
		<item>
		<title>Que es BPEL</title>
		<link>https://www.oscarblancarteblog.com/2014/07/15/que-es-bpel/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/15/que-es-bpel/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Tue, 15 Jul 2014 16:17:28 +0000</pubDate>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[bpel]]></category>
		<category><![CDATA[composición soa]]></category>
		<category><![CDATA[composite]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Schema]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[soa suite]]></category>
		<category><![CDATA[webservice]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSD]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/2014/07/15/que-es-bpel/</guid>

					<description><![CDATA[<p>BPEL también conocido como Business Process Execution Language es un lenguaje diseñado por la organización OASIS la cual se encarga de definir estándares a nivel mundial, Este lenguaje esta definido en XML y esta diseñado para orquestar procesos de forma automática. Se le llama Orquestar por que BPEL es el encargado de consumir varios servicios en un [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2014/07/15/que-es-bpel/">Que es BPEL</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">BPEL también conocido como Business Process Execution Language es un lenguaje diseñado por la organización OASIS la cual se encarga de definir estándares a nivel mundial, Este lenguaje esta definido en XML y esta diseñado para orquestar procesos de forma automática.</p>
<p style="text-align: justify;">Se le llama Orquestar por que BPEL es el encargado de consumir varios servicios en un orden especificado y realizar una función muy concreta.<span id="more-473"></span></p>
<p style="text-align: justify;">Escenario practico.</p>
<p style="text-align: justify;">Agencia de viaje: Imagínate que entras a un pagina de agencia de viaje en la cual puedes comprar un paquete que incluye boletos de avión y hotel. Lo único que tenemos que hacer nosotros es decir a donde queremos con la fecha y la agencia de viaje nos arrojara los paquetes con un precio y solo tenemos que pagar con nuestra tarjeta de crédito para que nuestra reservación quede lista.</p>
<p style="text-align: justify;">Una vez que confirmamos nuestra compra la agencia de viaje tendrá que hacer algunas operaciones que no dependen de ella como seria reservar el boleto de avión con la aerolínea, reservar los día del cuarto directamente con el Hotel, Hacer un cargo por el porcentaje que gana la agencia por realizar la venta y por ultimo guardar en el sistema de la agencia el registro de la venta.</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/agencia-de-viaje4.png"><img loading="lazy" class="aligncenter  wp-image-7" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/agencia-de-viaje4.png" alt="Agencia de viaje" width="557" height="193" /></a></p>
<p style="text-align: justify;"><em>Fig.1: Muestra el proceso a realizar para completar una reservación.</em></p>
<p style="text-align: justify;">Si nos damos cuenta los pasos 2,3,4 no depende de la agencia de viaje si no de servicios que exponen los proveedores como webservices.</p>
<p style="text-align: justify;">Como encaja BPEL en este escenario.</p>
<p style="text-align: justify;">Con BPEL podemos crear un solo servicio que reciba todos los parámetros necesarios para realizar la operación como los datos de la reservación y los datos de la tarjeta de crédito, con estos primero realizaremos la reservación del avión, luego reservaremos el hotel, cargaremos nuestra utilidad al cliente, Guardaremos el registro de la reservación y finalmente regresaremos al cliente la confirmación al cliente. A este proceso se le conoce como orquestar ya que toma el flujo de la ejecución y realiza las tareas de forma automática y en un orden especificado.</p>
<p style="text-align: justify;">Si bien esto te puede parecer algo que cualquier lenguaje pueda realizar la realidad es que BPEL esta diseñador para estos escenarios lo que permite una programación mucho mas rápida.</p>
<p>The post <a rel="nofollow" href="https://www.oscarblancarteblog.com/2014/07/15/que-es-bpel/">Que es BPEL</a> appeared first on <a rel="nofollow" href="https://www.oscarblancarteblog.com">Oscar Blancarte - Software Architecture</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/15/que-es-bpel/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">473</post-id>	</item>
	</channel>
</rss>
