29.12.06

Nociones básicas sobre Servicios Web

Web Services, como indica su propio nombre, son servicios ofertados vía Web. Representan la solución con más futuro para la integración de aplicaciones en Internet y una buena y fácil alternativa para integrar aplicaciones sencillas (ej: intercambio de información) en una intranet.


Una gran baza a favor de los servicios web es que cuentan con el apoyo de todos los fabricantes, incluyendo a Microsoft.

Cómo funcionan
En un escenario típico de Web Services, una aplicación de negocio envía una petición vía HTTP a un servicio situado en una URL. El servicio recibe la petición, la procesa y devuelve una respuesta también sobre HTTP.


La idea es sencilla pero requiere:
Un protocolo de intercambio de mensajes petición/respuesta sobre HTTP.Una forma de que clientes y proveedores puedan interactuar a través de los mensajes, es decir, un lenguaje de especificación de interfaces.


Se ha optado por utilizar SOAP (Simple Objet Access Protocol) como protocolo de intercambio de mensajes. Es un protocolo sencillo basado en XML y estandarizado por el W3C.


El lenguaje de especificación de interfaces utilizado en servicios web es WSDL (Web Services Description Language). WSDL permite especificar en XML las operaciones y tipos de datos de un servicio web. Así, aunque el cliente y el servidor estén escritos en lenguajes distintos (por tanto, con sintaxis y tipos de datos diferentes) pueden interactuar al utilizar un lenguaje neutral para comunicarse.


Una petición de un servicio web constaría de los siguientes pasos:
En el cliente se elabora una petición de una operación con unos parámetrosLa petición se transforma a formato XML utilizando WSDLLa petición transformada se envía vía HTTP utilizando SOAPEl servidor de servicios web recibe la peticiónEl servidor determina que operación debe realizarse y transforma los parámetros de formato XML a su representación correspondiente en el lenguaje utilizado para implementar el servidorEl servidor invoca la operación con los parámetros enviados, elabora una respuesta y se la envía al cliente de la misma forma que se ha explicado.


También disponemos de una especie de listín telefónico en el que se publicitan los servicios web. El UDDI (Universal, Description, Discovery and Integration) es una iniciativa de varias empresas (IBM, Microsoft, ...) que ofrece un servicio gratuito para registrar y buscar servicios web. Cada servicio web se registra dando, entre otras cosas, su nombre, su punto de acceso y una descripción del servicio.



Cómo se implementan
Para implementar servicios web existen varias APIs (comerciales y gratuitas) para los lenguajes más usuales. Las APIs no son estándares pero esto no afecta a la interoperabilidad ya que la interoperabilidad es posible porque los protocoles (SOAP, WSDL, UDDI) están estandarizados.


Podemos distinguir dos tipos de APIs:
APIs de programación basadas en mensajes: tanto el receptor como el emisor disponen de un proveedor de mensajería. Permiten mensajes síncronos y asíncronos, enviar a más de un receptor y calidad de servicio. Son APIs muy potentes pero complejas.


APIs de programación basadas en RPCs: en el caso de un lenguaje orientado a objetos, este tipo de APIs permiten definir interfaces (en WSDL) cuyos métodos se pueden invocar remotamente (similar a CORBA). No es tan potente como las APIs basadas en mensajes pero es mucho más sencilla de usar.El ejemplo de petición de un servicio mostrado anteriormente utilizaba un API de programación basada en RPCs. Si utilizásemos un API del otro tipo variaría la secuencia de pasos (el cliente enviaría un mensaje SOAP con la petición a un proveedor de mensajería, el cual establecería una conexión con el proveedor de mensajería del servidor para realizar el envio de dicho mensaje).


Dónde encontrar APIs
Dentro de la tecnología Microsoft, los servicios web forman parte de .NET y en cuanto a Java, existen muchas APIs de distintos fabricantes (Iona, Inprise, Oracle, IBM, Sun,...) y también gratuitas (Apache).

Sun está estandarizando el API Java para servicios web. Consta de varias APIs que forman parte de J2EE:
JAXM: Java API for XML Messaging
JAX-RPC: Java API for XML-based RPC
JAXR: Java API for XML RegistriesMás información en
Información sobre Servicios Web: http://www.webservices.org
Servicio gratuito para registrar y buscar servicios web: http://www.uddi.org
Documentación sobre el API Java estándar de Servicios Web e implementación de referencia de Sun: http://java.sun.com/j2ee/webservices/index.html
Documentación y software para distintos lenguajes: http://www.ibm.com/developerworks/webservices
W3C: http://www.w3.org

27.12.06

Guía del funcionamiento para CS2007 starter site. Podeis descargar una copia desde aquí

26.12.06

Saludos

Tantas comidas no me han permitido saludaros antes, pero mejor tarde que nunca... Os deseo una Feliz Navidad y un prospero Año Nuevo a todos!!!


Posted by Picasa

20.12.06

España - Argentina en "la nueva condomina 2"


Ganar no ganamos, pero donde vamos la liamos :P si es que...
Posted by Picasa

España - Argentina en "La nueva condomina"

Bueno... no gano Argentina pero nos lo pasamos genial ;)!!! aqui estamos con Manolete "el del bombo" toda una eminencia el tio :P
Posted by Picasa

7.11.06

¿Que es un Product Bundle?

Un Product Bundle es un paquete del productos. Es un producto adquirible que se compone de una colección de uno o más productos que existan en el sistema de catálogo y se vende por separado. En otras palabras, no es mas que una conjunción de productos.

A continuación tenemos un ejemplo de conjunciones:
Pongamos un ejemplo real de la empresa ONO :)

Esta empresa vende productos o servicios de televisión, teléfono e internet. Esto lo puedes contratar tal cual o puedes comprar la ofetar del mes que suele ser Bundle1 = televisión + teléfono + internet, o Bundle2 = televisión + teléfono, o Bundle3 = teléfono + internet.

Soluciones para productos conjuntados
Existen dos maneras de definir conjunciones de productos. Una utilizando relaciones y la otra utilizando descuentos.

SOLUCION 1

Utilizando relaciones en tiempo de diseño
  1. Utilizar la administración de Catalog e Inventario para crear una definición de producto llamada "Product_Bundle" y asociar a este las propiedades necesarias.
  2. Paso siguiente crear un producto utilizando la definición de producto "Product_bundle" ej. "Paquete_Completo".
  3. Asignarle un precio a la conjunción ej. "Paquete_Completo" cuesta 20€ Se pueden utilizar variantes por ejemplo para asignar diferentes valores por código postal.
  4. Desde la página de productos establecer relaciones con los productos simples llamadas "Constitucion_Paquetes"

Utilizando relaciones en tiempo de ejecución

  1. Desde codigo identificar la definición del producto bundle y mostrarlo de manera apropiada.
  2. Cuando el producto es añadido en la cesta asegurarse que se añaden sublineas con cada uno de los items.Esto se pude realizar basandonos en reglas, e introducir dichas reglas dentro de la funcionalidad de la cesta de la compra. ¿Que pasa Cuándo el producto se envía a tu sistema backend y este entiende que es un producto conjuntado? Entonces no es necesario insertar las sublineas con todos los items. Sino será necesario enviar cada una de las lineas para que el sistema comprenda que es lo que se ha vendido.
  3. Toda esta regla de negocio podria introducirse en un componente e integrar este en un pipeline. Este componente personalizado interactuaria con la cesta de la compra, checkeando todas las lineas de la cesta y mirando si el item es un producto del tipo bundle (ej. buscando el producto en el catálogo, y en la definición del producto si es del tipo "bundle"). Si este lo es, será necesario hacer otra consulta para obtener todas las relaciones con sus items (ej. recibir los productos relacones a traves de la relación llamada "Constitucion_Paquetes"
  4. Para prevenir el borrado intensional o accidental de uno de los items pertenecientes al bundle, el dódigo del sitio en la funcionalidad del carrito deberá contemplar que se generen tantas lineas como productos relacionados y que tras cada acción realizada en la cesta de la compra se ejecute el pipeline el cual realizará las comprobaciones necesarias e identificará si falta alguno de los items relacionados con el producto bundle.


Marketing Discounts: En un bundle, los códigos de productos individuales pierden identidad y los descuentos no se pueden aplicar de forma individual. Tendremos que asegurarnos que los descuentos se asignan a los productos del tipo bundle.


SOLUCION 2

Utilizando descuentos en tiempo de diseño

  1. Crear un producto llamado "Paquete_Completo"
  2. Asignarle al producto bundle un precio ej. "Paquete_Completo" 20€
  3. Crear un descuento "Comprar_Paquete_Completo", este descuento es del tipo compra producto A y obten estos productos gratis, donde los productos gratis son todos los items que componen el producto del tipo bundle.

Utilizando descuentos en tiempo de ejecución

  1. La característica de filtrado del componente de descuentos (solo CS2007) determinará los descuentos simples que se aplican a los productos en la página y exhibirá los nombres de los artículos ofertados. Sin embargo, los detalles de cada artículo ofertados no estarán disponibles. Será necesario implementar código para traer los detalles de los productos ofertados.

Documentación Parner SDK

Descargate desde aquí la documentación Partner SDK de Commerce Server 2007.

Foro MSDN de Commerce Server 2007

El foro de CS2007 en MSDN ha sido movido a esta dirección

30.10.06

Enlace de interés

Espacio de trabajo de Commerce Server 2007 de Maximun2000 donde encontrareis algunas utilidades y ejemplos tanto para Commerce Server 2007 como para la versión del 2002 http://www.gotdotnet.com/workspaces/workspace.aspx?id=77487df3-96dc-41de-9ca0-b7f284a8c113

Espero que lo encontréis interesante.

26.10.06

Qué hay de nuevo en Commerce Server 2007?

Commerce Server 2007 beta fue lanzado en diciembre del 2005, y está disponible para descarga. También está disponible su documentación y el Starter Site.

Dado que es este es el principal lanzamiento de Commerce Server 2002 la pregunta obvia es “¿qué hay de nuevo en Commerce Server 2007?”

Estas son algunas de las nuevas características de Commerce Server 2007:

  1. La característica principal es el cambio de arquitectura en los componentes principales para usar un modelo de Web Services. Estos servicios web soportan toda la funcionalidad de catalog, orders, marketing y profiles systems. Algunos de estos componentes se han escrito completamente y proporcionan un modelo amistoso de objetos.
  2. Flexibilidad de roles basados en el modelo de seguridad de Windows Authorization Manager que define que usuarios pueden realizar operaciones sobre catalog, orders, marketing y profiles systems.
  3. Performant Winforms UI para la administración de catalog schema, administrar catálogos, marketing y orders.
  4. Un Starter Site listo para producción basado en C# que demuestra como utilizar los componentes de Commerce.
  5. Un nuevo inventario de componentes, integrado en el sistema de catálogo permitirá mantener su tienda, actualizar y mantener información de inventario para productos y variantes, asi como controlar como se muestran en nuestra aplicación de comercio electrónico.
  6. Los datos almacenados en servidores estacionados pendientes de su aprobación era uno de los temas pendientes en versiones anteriores. Ahora se dispone de un módulo que permitirá los equipos de QA comprobar que todo es correcto antes de pasar a producción.
  7. Sistema mejorado de Orders.
  8. Mejoras importantes en el sistema de catálogo, especialmente en los catálogos virtuales, funcionalidad, seguridad y graduación de la búsqueda. Más en esto más adelante.