La aplicación de un servicio universal de la arquitectura Web con Ajax

Este artículo se centra en la construcción de la arquitectura de servicios AWeb. En el artículo anterior, aprendió a crear una arquitectura global que incluye los conceptos básicos de cómo construir AWeb servicio y sus URL correspondientes. Sin embargo, no explicó los detalles del servicio que hace y por qué AWeb servicio AWeb debe hacer lo que hace. En este artículo se describen las directrices de cómo desarrollar una transferencia del Estado de representación (REST), servicio basado en Web. En concreto, abarca los siguientes puntos:

• Servicio de AWeb Estructuración para resolver una tarea específica

• La combinación de servicios Web para filtrar y modificar los datos de

• La combinación de servicios Web para crear aplicaciones web híbridasProblemaEchemos un vistazo a un problema dentro de un inventario de aplicación de comercio como un ejemplo de un problema en la construcción de servicios Web. El problema es que un número de clientes que necesitan acceso a tiempo real, información histórica y el orden. Adición de AWeb frontal servicio le permite aprovechar el servidor de socket middleware sin hacer cambios en él. Si bien puede parecer una pérdida de recursos para agregar una interfaz a un servicio en un contexto global de servicios Web, tiene sentido aquí. En este artículo exploraremos por qué.

  

Parte Solución 1

La aplicación de la solución consiste en tomar una de las tecnologías ya existentes y toma de utilizar esa tecnología para construir servicios AWeb. A modo de ejemplo, este artículo utiliza una única tecnología Java. Usted puede elegir. NET y C + + de la tecnología actual no es importante, porque el servicio de Web expuestos pueden ser consumidos por cualquier tecnología que es el servicio de Web-Aware. El enfoque inicial a la construcción del servicio Web es definir las operaciones de cia General y luego aplicar las operaciones generales de uso de cierta tecnología.

En la vista de alto nivel de la estructura de negociación, un tipo de clase llamado TradeServlet que implementa un servlet de Java ofrece el servicio Web. Para los no versados en tecnologías Java, un servlet de Java es una manera de implementar un controlador HTTP. TradeServlet ejecuta las peticiones históricas, pide tiempo real de datos, y las solicitudes para utilizar una interfaz denominada iTrader. Desde una perspectiva de programación, mediante una interfaz es el enfoque correcto, ya que le permite usar el patrón Bridge. El patrón Bridge le permite disociar la intención de la negociación de la aplicación de la negociación. En la vista de alto nivel de la arquitectura de servicios Web, la ProviderTrader1 tipo implementa el llamado de la funcionalidad adecuada a través de la capa de conectores. La teoría del patrón Bridge le permite utilizar una llamada toma de hoy como una solución temporal, pero mañana ProviderTrader1 reemplazar con una nueva implementación (tales como la sustitución del middleware con el servicio Web) sin tener que cambiar la aplicación de TradeServlet iTrader o la interfaz.

La ProviderTrader1 clase

iTrader implementa la interfaz y proporciona un puente entre el comerciante subsistema neutral a la toma de un sistema comercial. Otro proveedor puede ser utilizado para acceder a una base de datos heredados. Independientemente del número de proveedores, el servicio web interactúa con el operador subsistema neutral. Y el operador interactúa subsistema neutral con la toma de un sistema comercial. En teoría, este enfoque es sonido, pero que sufre por ser demasiado complejo. El problema de este enfoque es una cuestión de enfoque. En el ejemplo del subsistema de comerciante, el foco es el subsistema, y la capa de servicios Web es un add-on para el subsistema de operador. En teoría, el servicio Web add-on no es ni siquiera necesario, porque el subsistema de operador gestiona todo. En el contexto de una aplicación de servicio Web Ajax, este es el enfoque equivocado porque el foco es el servicio Web, y no debe ser un complemento.

Parte Solución 2

La solución para el subsistema de comerciante a no definir ni aplicar un comerciante subsistema neutro y con una tecnología específica. El subsistema de operador se convierte en una serie de servicios Web que usted puede montar en un subsistema. Servicio AWeb subsistema de comerciante aún requiere de una interfaz, pero la interfaz se define en el nivel de servicio Web HTTP. En términos de arquitectura, las implementaciones iTrader convertido en servicios Web. La arquitectura se basa en la reutilización de las implementaciones ya existentes de ProviderTrader1 y ProviderTrader2 directamente de la clase TradeServlet. Cada aplicación proporciona un conjunto de métodos, propiedades y conjuntos de resultados que el comerciante subsistema neutral define. Utilizando el servicio de AWeb, los métodos, propiedades, y los conjuntos de resultados se convierten en algo que es un servicio Web compatible. Luego, en un nivel superior, otra tecnología reúne a los servicios Web en un subsistema, comerciante.

La aplicación de la Trader-Universal de servicios WebEl comercio de servicios Web es un ejemplo de lo que cabe esperar cuando la aplicación de una solución Web completa de servicios. Este artículo cubre las piezas restantes:

• Definición de la URL

• Identificación de los formatos que pueden ser enviados y recibidos

• ¿Cómo apoyar a las direcciones URL relativas

Definición de las direcciones URL para la aplicación TraderVamos a continuar con la evolución de los servicios de operador de la Web y describir las piezas importantes, a saber, las URL y los datos compatibles con los formatos. La aplicación comerciante expone las direcciones URL de base siguientes:

 

• / servicios / controlador

• / servicios / en tiempo real

• / servicios / pedidos

• / services/orders/trader123/order345

• / servicios / históricos

/ servicios / controlador es la dirección URL de base utilizada para la gestión del motor en el lado del servidor. El controlador de URL le permite restablecer el código detrás del servicio Web de forma manual. Por ejemplo, en el caso de la solicitud del comerciante, / servicios / controlador se conecta a la aplicación de servicios Web a la toma que proporciona la interfaz de comercio. Se puede utilizar la dirección URL / servicios / controlador / arranque para iniciar el código de servidor y puede utilizar la dirección URL / servicios / controlador / STOP para detener el código del servidor. Sin embargo, este enfoque no sería útil, porque parece que los identificadores de inicio y fin son los recursos, que no lo son. Compararlo con un interruptor de luz. Un interruptor de luz es un recurso único que tiene dos estados: on y off. Hace no tienen dos recursos, uno para cada estado. Puede utilizar parámetros de consulta para iniciar y detener el código de servidor. Para iniciar el código de servidor, se ejecuta el POST verbo en la URL / servicios / controlador con el interfaz de gráficos por ordenador (CGI) = parámetros de la acción inicial. Para detener el código del servidor, la dirección sigue siendo la misma, así como el verbo, pero el cambio de parámetros CGI para la acción = parada. El POST verbo es adecuado, porque está ejecutando algún proceso del lado del servidor, y lo que el proceso debería hacer depende de los datos enviados. Llamar al verbo GET en la URL / servicios / controlador devuelve el estado del código de servidor.

Si desea controlar múltiples piezas de código de servidor en la aplicación, a continuación, cree las URL de los niños como los siguientes: / services/controller/code1 y / services/controller/code2. Las directrices para iniciar, detener y recuperar el estado de las piezas de código de servidor individuales siguen siendo los mismos. A menudo, el servidor de piezas de código del lado exigen las directivas de configuración, tales como la ubicación del directorio de la base, ¿cuántos hilos para empezar, y así sucesivamente. Estas directivas de configuración se almacenan en un archivo de configuración. Usted debe ser capaz de especificar estas directivas cuando se inicia el servidor de código o se detiene. Por ejemplo, si desea especificar una cantidad de hilos, entonces usted puede utilizar la acción de parámetros CGI THREADCOUNT & start = = 12 para iniciar el código de servidor.

Si usted tiene la capacidad de definir las directrices de configuración, entonces se puede consultar y recuperar cuando se solicita el estado del servidor. Si desea consultar el valor individual de una variable de servidor, puede filtrar utilizando parámetros de consulta, tales como / servicios / controlador? Status = THREADCOUNT + tiempo de actividad. Utiliza la URL base / servicios / en tiempo real para gestionar las acciones en tiempo real - los datos de cotización. Por ejemplo, si usted está interesado en la cotización de GM, tendrá que utilizar la dirección URL / servicios / tiempo real / GM para recuperar la información en tiempo real. Parece que esta dirección URL base es la más simple, pero la simplicidad es engañosa. Por ejemplo, si los usuarios ejecutar GET en la URL / servicios / en tiempo real, se devuelve qué? Esta es una pregunta difícil, porque está llegando al límite de una pieza de software. Desde una perspectiva teórica, llamando a obtener resultados en el retorno de los datos en tiempo real para todos los teletipos. Esto suena bien en teoría, pero es completamente inviable. Hay literalmente miles de acciones en las bolsas múltiples. Cómo todos los tickers en una petición en tiempo real mediante una petición GET es prácticamente inviable.

Este es un ejemplo de una URL donde la teoría y la práctica están en conflicto. La solución no es compatible con la dirección de la raíz como una referencia a los datos en tiempo real. La raíz de URL se utiliza para devolver una lista de todos los enlaces disponibles en tiempo real. La raíz de URL no se utiliza para indicar lo que la información en tiempo real es porque al hacerlo se requieren los siguientes miles de teletipos. La URL raíz se ofrecen vínculos a donde se puede recuperar datos en tiempo real. Esto podría significar volver enlaces a miles de símbolos de cotización. También puede utilizar la URL raíz de la ficha de enlace a la cotización empresarial y una descripción abreviada. Esto ayudaría en la construcción de un motor de búsqueda, como la mayoría de la gente no conoce el símbolo, pero sabe el nombre de la corporación. Delegar la dirección URL de la raíz a individuo crea un problema en que el servicio Web no puede manejar el tiempo real de los piensos para todos los símbolos de cotización en todos los intercambios.

Para decirlo simplemente, no puede seguir todas las acciones en un único equipo. Seguimiento de todas las poblaciones requiere de enormes cantidades de caballos de fuerza que este artículo no voy a tratar. La única solución es utilizar un tema-si-le preguntó solución. En un tema-si-le preguntó solución, no se realiza un seguimiento poblaciones inicialmente para los datos en tiempo real. En tiempo real de datos se realizará un seguimiento sólo si un HTTP GET se ejecuta en una acción en particular. Un HTTP POST o PUT DELETE o no tiene ningún sentido sobre la alimentación en tiempo real, ya que un tiempo real de alimentación incluye datos que va desde el servidor al cliente. El servidor no está interesado en cualquier información del cliente son las que de cotización para generar datos en tiempo real para. Si un verbo que no sea GET es ejecutado, el servidor generará un error HTTP 500.

/ servicios / órdenes especifica la URL raíz de procesamiento de pedidos. En el contexto de las existencias, procesamiento de pedidos hace uso de todos los verbos HTTP. Se utiliza HTTP POST para presentar una orden, HTTP PUT para modificar una orden, HTTP GET para recuperar el estado de un pedido, y HTTP DELETE para borrar una orden.

Cada orden será representado como un identificador único, por ejemplo, / services/orders/1232445. El identificador único no tiene que ser numérico, pero puede ser alfanumérico o incluso amore complicado Identificador único global (GUID). La URL raíz puede ser el anfitrión de muchos órdenes, lo que podría significar literalmente millones de pedidos. Por orden de la dirección, es importante que usted tiene la capacidad de filtrar de acuerdo a las órdenes de un estatuto específico. Usted puede verse tentado a organizar los pedidos de acuerdo a una fecha, pero yo le aconsejaría en contra. Siempre que va a crear una raíz URL, los datos de la colección debe ser accesible en su forma natural. En una aplicación de blog, es natural de organizar por fecha. Sin embargo, el orden natural de una aplicación de valores no es por fecha sino por la identificación de la orden. Por lo tanto, las órdenes de raíz URL literalmente tienen millones de pedidos asociados a ella. Si la solicitud pasa a pedir todos los órdenes, el servidor tendrá que dar todos los órdenes. En el caso de una base de datos SQL, si una tabla tiene millones y millones de registros, y alguien ejecuta la consulta SELECT * FROM tabla, la base de datos no se preguntan: "¿Estás seguro de esto?" La base de datos seguirá adelante y seleccione todos los registros, aunque podría no ser eficaz.

Puede crear filtros para optimizar el acceso a las órdenes. Por ejemplo, si desea encontrar todos los pedidos en 2006, puede ejecutar la URL / servicios / órdenes /? Años = 2006. Usted también puede convertir los parámetros de consulta en una vista de URL, como / services/orders/2006. Tanto si utiliza el parámetro de consulta o el enfoque de dirección vista depende de su preferencia. Hay un filtro que resultar problemática, y se refiere a los usuarios. En cualquier sistema de orden, usted tiene varios usuarios. A solicitud de cotización de valores no es diferente. ¿Qué hace un inventario para la aplicación comercial más complicado es que la orden no se cumple automáticamente. No siempre se cumpla, y hasta podría ser cancelada. Si un sistema de orden no tienen la capacidad para filtrar por comerciante, se podría ejecutar en una situación en la que un operador puede abrir una posición y otro operador cierra una posición.

En teoría, usted podría comprar y vender las acciones futuras, al mismo tiempo (llamado comerciales de lavado). Comprando y vendiendo al mismo tiempo, que no son ni ganar ni perder, al menos que no sea la comisión de corretaje. Esta técnica de comprar y vender al mismo tiempo a través de dos corredores de diferente es ilegal, ya que hace parecer que haya una acción sobre una posición, cuando en realidad no lo hay. Por lo tanto, los operadores están atados a sus órdenes, y las órdenes están vinculados a los operadores. Un refinamiento lógico de las órdenes de URL sería / servicios / órdenes / [comerciante]. Esta URL refinada muestra que a veces tienes que crear las direcciones URL que satisfacer las necesidades de otros, como, en este caso, las necesidades del departamento legal.

Con este refinamiento de la dirección, ¿la URL raíz / servicios / órdenes se vuelven obsoletas? Todo, incluyendo los parámetros de consulta y las URL de vista, sigue siendo válida. La diferencia es que la URL para acceder a la información de la orden contendrá el identificador único del comerciante. Asumiendo que usted va a utilizar el refinamiento de la dirección, vamos a pasar por lo que los verbos individuales se hacen en los niveles de dirección URL diferente. A nivel de URL raíz (/ servicios / órdenes), sólo el GET de HTTP se aplica. En este nivel, sólo se puede filtrar las órdenes que quiere ver. Usted no puede POST, porque la raíz URL no indica el operador de identificación, y puede no poner, porque la raíz es una dirección URL de la colección. Por último, no se puede eliminar, ya que causaría la eliminación de todas las órdenes y los comerciantes.

Un nivel más abajo, usted tendría la URL raíz de un comerciante individual (/ servicios / órdenes / operador-ABC). En la URL raíz de un comerciante individual, sólo el HTTP GET y POST aplicar. Usted podría utilizar GET para recuperar y potencialmente filtro de todas las operaciones que un comerciante ha hecho. Por ejemplo, puede filtrar por transacciones realizadas en un mes determinado, el año, o día. Usted podría utilizar las URL / o services/orders/trader-abc/2006 / servicios / órdenes / operador-ABC? Años = 2006. El verbo HTTP POST se aplica, ya que permite a los usuarios a presentar una orden sin una orden de identificación. La presentación de la orden de la dirección URL donde se puede recuperar el estado de un pedido. Si un HTTP POST a la URL / servicios / órdenes / operador-ABC es enviada, la URL / servicios / órdenes / trader-abc/123456 podría ser devuelto.

Aplicando el verbo DELETE en la raíz de URL es un poco difícil a causa de lo que significa el verbo. Si se aplicara el verbo DELETE, sería eliminar todos los pedidos a la dirección de raíz. En términos prácticos, esto es muy poco aconsejable. Una de las razones para apoyar el verbo DELETE es ser capaz de eliminar elementos de forma selectiva a través de un parámetro de consulta, que actúa como un filtro. Por ejemplo, para eliminar todos los pedidos en un año, puede utilizar la dirección URL / servicios / órdenes / operador-ABC? Años = 2006. Comunicación de la URL que se utiliza para eliminar selectivamente es la misma que la dirección URL utilizada para seleccionar de manera selectiva. La diferencia es el verbo (DELETE vs GET). Es un hecho común que las URL partido, pero presentan un comportamiento diferente en función del verbo. En el contexto del sistema comercial, las órdenes de eliminar tendría restricciones. Si una orden se ejecuta, no se puede eliminar la orden. El verbo PUT restante es en su mayor parte no se aplica a nivel de dirección de raíz. Se utiliza el verbo PUT para enviar una representación completa de los recursos en el servidor. En el caso de la raíz de URL, esto significa el envío de todos los pedidos al servidor. El problema con el envío de órdenes al servidor es que no se pueden enviar los pedidos completos. El orden es completa, pero el identificador de objeto (calculado en el momento de una orden publicada) no se encuentra. Por lo tanto, no se puede utilizar PUT para enviar un nuevo orden en el servidor.

Otra razón para usar PUT sería modificar una orden existente. En general, este es un uso legítimo, pero es incorrecto en el contexto del sistema comercial. ¿Qué ocurre si se intenta modificar una orden que se está ejecutando en la actualidad? No hay un recurso sencillo y, por tanto, en el contexto del sistema de orden, modificación de una orden puede causar más problemas que soluciones. La solución de comercio adecuada para eliminar el orden y crear uno nuevo. / Services/orders/trader123/order345 representa Una referencia URL para el recurso. En general, usted puede solicitar todos los verbos HTTP, pero habría que establecer límites para reflejar los procesos de negocio. En el caso de la solicitud del comerciante, no se podía utilizar el verbo PUT en un nuevo orden, porque la aplicación del orden no le permiten determinar una identificación de la orden antes de tiempo. También no se puede poner una orden existente, porque eso significaría la modificación de la orden, y en el contexto de un sistema de comercio, la orden puede ejecutar o cancelar. Usted puede aplicar y utilizar el verbo DELETE para definir una cancelación de la orden. Un puesto a la orden sólo tendría sentido si el destino representa un orden que es una cancelación. GET se utiliza para recuperar el estado de ejecución de una orden.

/ servicios / histórico representa una URL raíz utilizada para recuperar los datos históricos del middleware. Conseguir un feed histórico es único en el que sólo hay un verbo aplicable a saber, GET. La palabra histórico implica algo que ya sucedió, y no se puede reescribir la historia. Reescribir la historia podría ocurrir si intenta utilizar el verbo PUT o DELETE. POST A se aplicará si se utiliza el POST para crear una consulta sofisticados. Por ejemplo, puede usar una entrada a escanear y filtrar los datos históricos de acuerdo a un conjunto de criterios. Para que el servicio Web histórico lo más eficaz posible, necesita la capacidad de definir consultas sofisticadas. El resto no está equipado para hacer eso, porque el descanso se basa en el protocolo HTTP. Esto no quiere decir que no se puede usar REST para consultar los datos, sino que tiene que escribir la tubería. Por ejemplo, digamos que usted quiere encontrar todas las acciones que cotizan en un rango específico de cinco días de 10. Usted necesitaría el código de este tipo de consulta en la forma de una llamada REST que los delegados a una pregunta de relación, suponiendo que los datos se almacenan en una base de datos relacional. Otro método es utilizar una base de datos basado en XML, aunque se necesitaría para decidir la presente antes de tiempo. La ventaja de almacenar sus datos en una base de datos basado en XML es que usted puede fácilmente el mapa de HTTP consultas a la jerarquía de XML. Uso de XML (Lenguaje de consulta XQL) y XPath sobre la base de datos XML, usted puede fácilmente ejecutar consultas sofisticadas sin tener que escribir la tubería. Es necesario recordar que el poder de un servicio Web histórica radica en cómo poner en práctica las consultas.

¿Qué formato de datos a enviar?Hasta ahora, todos los servicios Web de ejemplo, se han explicado en términos de las URL, pero no en términos del contenido que se acepta y se generan. En el caso de la aplicación de blogs introducido en el artículo 4, el servicio Web de datos generados Atom utilizando el tipo MIME application / atom + xml. Cuando la construcción de servicios Web REST, el tipo MIME es importante, porque determina cómo los datos son recibidos y enviados. En el caso de la aplicación de blogs, si se conoce la dirección Atom, va a generar una secuencia XML. En teoría, la estrategia de desarrollo REST es de crear un servicio que es AWeb technologyneutral y generará el contenido correcto para la consulta de la derecha.

un artículo presentado por Sonja Lande


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: Este artículo "Implementación de una arquitectura universal de servicios Web con Ajax" fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 285 users browsing the articles directory