Probar el servicio Web

Con el servicio Web creada y en funcionamiento, puede seguir adelante e iniciar la codificación del cliente. Pero ese sería el enfoque correcto. Una de las cosas que ha cambiado con los servicios Web y SOA es que el cliente y el servidor se comunican mediante un contrato. Anteriormente, las aplicaciones cliente / servidor se comunican utilizando un protocolo que los desarrolladores decidido. Si los desarrolladores necesitan un nuevo método o pieza de información, que la alteración que se hiciera. No fue un gran acuerdo para hacer cambios sobre la marcha. Con los servicios Web y SOA, que ya no es el caso. Con la llegada de los servicios Web y SOA, tenemos la capacidad para definir un contrato que puede ser reutilizado y compartido por otras partes. Si hay una ventaja importante para SOA, es su capacidad para compartir datos.

  

Vamos a poner esto en otro contexto. Imagínese usted es dueño de una pizzería, con toma de órdenes, pedidos en línea, y los meseros para tomar pedidos de los clientes in situ. Así los clientes pueden pedir una pizza en varias formas diferentes, y cada forma tiene probablemente un sistema de pedido completamente diferente. De hecho, es dudoso que incluso el personal tiene que esperar para tener un orden en el primer lugar. En este día y edad, se puede poner una pantalla táctil en cada mesa y dejar que los clientes ordenar su pizza directamente. Luego que se cumpla la orden, alguien trae a la mesa. O de cómo los clientes acerca de la habilitación para ordenar una pizza en línea, a continuación, indican que quieren comer en el restaurante a una hora determinada? El sistema podría reservar una mesa para los clientes, haciendo posible para ellos a tomar asiento en la mesa reservada cuando entran en el restaurante y su comida que se sirve de inmediato. Pero no sería esto arruinar la experiencia de ir al restaurante? En mi opinión, no va a un restaurante puede ser una experiencia bastante agitada. Este ejemplo ilustra la pizzería de cliente / servidor de las arquitecturas de los últimos días, con el personal de esperar a tomar pedidos de los clientes. SOA, por el contrario, representa un sistema de pedidos de pizza uniforme independientemente del dispositivo de entrada se utiliza (en persona, en línea, por teléfono celular, etc.) Después de todo, es una pizza de pedir a través del personal de servicio diferente de una pizza de pedido en línea? La respuesta es no.

Tener su servicio Web en múltiples contextos plantea un desafío en que el contrato debe ser probado ampliamente. Si no ampliamente probar el servicio Web, puede causar problemas. Por ejemplo, imagine que ha creado un vínculo Web blog de servicio que tenía un error de menor importancia. Fin a los desarrolladores que utilizan su feed encontrar el fallo y ver que es menor de edad. Para guardar sin problemas, hacen un poco de solución rápida. Soluciones son peligrosas porque suponen que las cosas van a suceder de determinada manera. Usted da su alimento a otros terceros que no encuentra el error de menor importancia por una razón u otra. Conforme pasa el tiempo, el cliente recibe la alimentación, y se encuentran con el error. A diferencia de los demás, que envíe un correo electrónico acerca del error y le pedirá que se fije. Entonces, ¿qué hacer cuando se recibe la notificación de errores? ¿Se corrige el error o no? La respuesta debería ser que arreglar el problema, pero la realidad es que si el error es menor, la corrección de errores de código de trabajo podrían hacer que dejar de trabajar. Esta es la razón por servicio AWeb prueba es tan importante: por las pruebas, minimizar el riesgo de problemas en el futuro. Pruebas de servicios Web ha de ser exhaustiva y amplia, no es empresa aminor. En el caso de la aplicación de blog, un servicio de pruebas en línea puede hacer su vida más fácil.

El validador de la alimentación se asegura de que el feed Atom es correcto, pero el validador de la alimentación no valida si el contenido de la alimentación son correctas. Ese es otro nivel de pruebas y validación que sería necesario. El validador de la alimentación hace posible disociar el cliente desde el servidor. Tener el cliente y el servidor disociada hace más simple para introducir cambios en la estructura general, porque usted puede hacer los cambios poco a poco. Volviendo a la arquitectura original de la arquitectura del blog, imagino cambiando la estructura de las entradas de blog de cómo se muestran. Debido a que se entrelazan el código de cliente y servidor, el desarrollador podría tener la tentación de modificar el código de servidor. Sin embargo, el servidor genera tres formatos diferentes, y usted tiene que preguntarse si los ajustes tendrán que añadirse a los otros dos formatos. Uso de una misma entrada que se valida, los programadores de cliente no tienen más remedio que modificar su propio código. Programadores de cliente no puede tocar el código del servidor y por lo tanto, no puede introducir errores involuntarios. Mencioné que la prueba de una interfaz requiere un conjunto exhaustivo y extenso de pruebas el validador de alimentación permite precisamente eso. Pero no todos los servicios Web encajan en la categoría de una aplicación de blog, y usted tiene que implementar su infraestructura propias pruebas. Idealmente, usted quiere una arquitectura como un validador de la alimentación, ya que hace prueba de un broche de presión. Sin embargo, un validador de alimentación es una aplicación grande, y usted probablemente no tiene tiempo suficiente para escribir una pieza compleja de código.

La experiencia me ha enseñado que la manera más fácil para escribir pruebas de forma rápida y limpia es utilizar un lenguaje de programación que cuenta con el apoyo para la prueba impulsada por las técnicas de desarrollo (por ejemplo, o NUnit JUnit). También puede utilizar un lenguaje dinámico como Python o Ruby. Algo más experiencia me ha enseñado es a no reinventar la rueda. Si un protocolo, la gramática XML, o la aplicación que ya existe, y luego usarla. No trate de llegar a nuevas formas de hacer lo mismo de siempre que sólo servirá para complicar su vida. Puede ser un poco más complejo inicialmente a adherirse a la norma, pero a la larga, tendrás menos problemas. Por ejemplo, en apego a los feed Atom en la arquitectura del blog, puedes utilizar una herramienta a disposición del público para probar la aplicación. No requiere de escribir ningún código de prueba, sólo tienes que escribir un scripts de prueba para llamar a unos cuantos en el feed del sitio Web.

Aplicación del clienteImplementación de un cliente en un contexto Ajax siempre implica dos pasos: cargar el documento y la ejecución del documento. En el caso de la aplicación de blog, no hay necesidad de que el cliente de intervenir, por lo que el documento debe ser ejecutado una vez que se ha cargado. En JavaScript, el evento body.onload se dispara una vez que el documento ha sido completamente cargado. Es muy importante que utiliza el evento body.onload y no un script que se ejecuta mientras el documento está siendo cargado. Si bien el documento se carga, se considera incompleta, por lo que hace referencia a elementos HTML en el documento podría ser un éxito, pero tal vez no. Cuando se utiliza el evento body.onload, usted puede estar seguro de que el documento ha sido cargado completamente y cada elemento que hay que hacer referencia está disponible.

Cuando el evento body.onload se dispara y el contenido se carga, el contenido puede ser procesado y se inyecta en el documento HTML. Para el usuario, este proceso de dos pasos que parece una carga de una sola página en lugar de un proceso de dos pasos (si tanto el cliente y el servidor tiene suficiente ancho de banda). Si los dos de carga paso no se ejecuta lo suficientemente rápido, notará un ligero parpadeo, lo que indica que parte del contenido que se ha cargado y dispuesto. El resultado final es el mismo, y el cliente se presenta con un único documento que se presenta como una única solicitud. En pocas palabras, este proceso no es diferente de la construcción de una tradicional cliente / servidor o aplicación de n niveles, con excepción de los estándares abiertos y Un contexto dinámico de lenguaje de programación que se utilizan. Con el cliente en general la arquitectura lado cubierto, vamos a ahondar un poco más en cada uno de los pasos.

Cargar el documentoComo se mencionó anteriormente, el primer paso es cargar el documento. Si comparamos al cargar el documento con la carga de una aplicación tradicional, lo que está ocurriendo es que el navegador es como un sistema operativo de preparación de la memoria, módulos y bases para el programa a ejecutar. Así, por ejemplo, si queremos cargar el documento, el siguiente código creará una instancia del objeto XMLHttpRequest:

getTransport: function () (return Try.these (function () (return new ActiveXObject ( "Msxml2.XMLHTTP ')), function () (return new ActiveXObject (" Microsoft.XMLHTTP')), function () (return new XMLHttpRequest ())) | | false;),

La fuente del código no es importante porque muchas bibliotecas Ajax hacer lo mismo. Esencialmente, cuando se ejecuta el código, se trata de averiguar qué navegador es lidiar con lo que puede regresar en el tiempo de ejecución de forma correcta a una instancia del objeto XMLHttpRequest. Yo sostengo que es el enfoque equivocado, y que utiliza la carga de ejecutables y ejecutar la mentalidad tradicional. Cuando un sistema operativo carga un programa tradicional, las variables, módulos, y así sucesivamente se inicializan antes de la ejecución del programa. Si bien las cargas de un navegador de código fuente, el navegador tiene la capacidad de ejecutar código JavaScript. Con esto en mente, podría escribir el siguiente código:

if (window.ActiveXObject) (FactoryXMLHttpRequest = function () (return new ActiveXObject ( "Microsoft.XMLHTTP");)) else if (window.XMLHttpRequest) (FactoryXMLHttpRequest = function () (return new XMLHttpRequest ();))

En el ejemplo, no hay ninguna función, sólo una decisión. La decisión es si el navegador cargar el documento es el Internet Explorer, a continuación, definir la función de crear una instancia FactoryXMLHttpRequest ActiveXObject. Si el navegador no es Internet Explorer, a continuación, definir la función FactoryXMLHttpRequest a una instancia del objeto XMLHttpRequest directamente. El segundo ejemplo de código fuente de inicialización no es tan flexible en el tiempo de ejecución porque la función FactoryXMLHttpRequest definida sólo puede crear una instancia del objeto XMLHttpRequest como se definió cuando se ha cargado el documento. Aunque esto parece ser un inconveniente, usted tiene que preguntarse cuáles son las posibilidades de que el documento cargado será trasladado byte por byte a otro tipo de navegador. La respuesta es que no hay probabilidades de que esto ocurra, ya que no es posible.

La ventaja del segundo ejemplo de código fuente es que la funcionalidad se puede sintonizar en el navegador que se está ejecutando en el documento mientras se está cargando. En el ejemplo, la afinación se basa en el navegador. Hay otras maneras de ajustar y las razones de su solicitud de ajuste, como descifrar el lenguaje o las dimensiones del navegador. Tuning tiene la ventaja de que no tener que llevar todo el equipaje ejecutable que se asocia con las decisiones tomadas en tiempo de ejecución. Este es un factor importante recordar, como usted puede reducir la huella de tiempo de ejecución de su código de preconfiguración de la aplicación durante la carga de documentos. Pero hay una gran desventaja de utilizar una carga de documentos generados por la configuración que tiene que ver con la serialización. Artículos anteriores demuestra cómo utilizar la serialización JavaScript para generar proxies o mixins. Si un documento cargado de configuración se serializa y se almacena en un servidor HTTP y, a continuación se carga en un punto posterior en el tiempo usando un navegador diferente, un error se generará.

La regla de oro es que cuando hay una ventaja en términos de rendimiento o de los recursos, utilizar el documento cargado de configuración. Use el método del tiempo de ejecución general, que incluye una decisión de tiempo de ejecución de proceso de adopción, si hay una ligera posibilidad de que el código será serializado. Y para aquellos casos en que no importa realmente de un modo u otro uso, lo que tiene sentido para usted.

La ejecución de los documentosDespués de que el documento ha sido cargado, el evento body.onload se dispara y el código asociado es ejecutado. En cuanto a HTML, el código es como sigue. Tenga en cuenta que el código ha sido abreviada para mayor claridad.

 Fuente: / cliente / index.html función LoadAtomFeed () ( var = asincrónica asincrónico nuevo (); asynchronous.settings = ( onComplete: function (xmlhttp) ( parseAtom (xmlhttp.responseXML); flexbox.update (); ) ) ( "asynchronous.get / servicios / blog / entradas / current"); )función InitializePage () (/ / código de inicialización adicionales relativas a cortar LoadAtomFeed ();) onload= "InitializePage ()"> 

Bienvenido a BloggerJacks

Considere el código en negrita. Cuando se carga el documento, el evento body.onload es despedido. Esto llama a la función InitializePage, que a su vez, llama a la función LoadAtomFeed. En la aplicación de LoadAtomFeed, la clase asíncrona es una instancia, que a su vez crea una instancia del objeto XMLHttpRequest.

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 "Probar el servicio Web" fue traducido por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 289 users browsing the articles directory