Test del servizio WebCon il servizio Web creato e in esecuzione, si potrebbe andare avanti e iniziare a scrivere codice del client. Ma che sarebbe l'approccio corretto. Una delle cose che ha cambiato con i servizi Web e SOA è che il client e server comunicano utilizzando un contratto. In precedenza, le applicazioni client / server di comunicare utilizzando un protocollo che gli sviluppatori hanno deciso. Se gli sviluppatori bisogno di un nuovo metodo o un pezzo di informazioni, tale modifica potrebbe essere fatta. Non è stato un grosso problema di apportare modifiche al volo. Con i servizi Web e SOA, che non è più il caso. Con l'avvento dei Web Services e SOA, abbiamo la possibilità di definire un contratto che può essere riutilizzato e condiviso da altre parti. Se c'è un grande vantaggio per SOA, è la sua capacità di condividere i dati senza soluzione di continuità.
Let's mettere questo in un altro contesto. Immagina di avere un ristorante pizzeria, con-prendere gli ordini, gli ordini on-line, e aspettare il personale di prendere ordini da clienti in loco. Modo che i clienti possono ordinare una pizza in diversi modi, e ogni modo ha probabilmente un sistema completamente diverso di ordinazione. In realtà, è discutibile che nemmeno bisogno di aspettare il personale di prendere un ordine, in primo luogo. In questo giorno ed età, si potrebbe mettere un touch screen su ogni tavolo e lasciare che i clienti per la loro pizza direttamente. Poi, come l'ordine sia rispettato, qualcuno porta in tavola. O clienti come sull'attivazione di ordinare una pizza on-line, e quindi indicare che vogliono mangiare nel ristorante in un determinato momento? Il sistema potrebbe riservare un tavolo per i clienti, consentendo loro di prendere un posto a sedere al loro tavolo riservato al momento di entrare nel ristorante e hanno il loro pasto servito immediatamente. Ma non che rovinano l'esperienza di andare al ristorante? A mio parere, non sarebbe andare al ristorante può essere un'esperienza molto intensa. Pizzeria Questo esempio illustra il client / server architetture di giorni passati, con il personale di aspettare a prendere ordini dei clienti '. SOA, d'altra parte, rappresenta una pizza uniforme sistema di ordinazione indipendentemente dal dispositivo di ingresso utilizzato (in persona, online, per telefono cellulare, ecc.) Dopo tutto, è una pizza ordinata attraverso il personale di aspettare qualcosa di diverso da una pizza ordinata on-line? La risposta è no. Avendo il servizio Web utilizzato in molteplici contesti rappresenta una sfida in quanto il contratto deve essere ampiamente testato. Se non ampiamente testare il servizio Web, è possibile causare i problemi. Per esempio, immaginate si è creato un feed Web blog di servizio che era un bug minori. Fine sviluppatori che utilizzano il feed incontro il bug e vedere che si tratta di minori. Per salvare senza problemi, fanno un piccolo e veloce soluzione. Soluzioni sono pericolose perché assume cose accadranno in un certo modo. Si dà il feed a terzi che non incontrano il bug minori per un motivo o un altro. Col passare del tempo, un client riceve l'alimentazione, e incontrano il bug. Differenza di tutti gli altri, si invia una e-mail per il bug e chiediamo di essere risolto. Allora, cosa fare quando si riceve la notifica di bug? Ti risolvere il bug o no? La risposta dovrebbe essere quella di correggere il bug, ma la realtà è che se il bug è minore, la correzione di bug potrebbe causare code di lavoro per smettere di funzionare. Questo è il motivo servizio AWeb test è così importante: per mezzo di esperimenti, si minimizza la possibilità di futuri problemi. Testing del servizio Web deve essere intense ed esaustive, e non è impresa aminor. Nel caso della domanda di blog, un servizio online di prova può rendere la vita più facile. Il validatore mangimi fa in modo che il feed Atom è corretta, ma il validatore feed non convalida se il contenuto del mangime siano corrette. Questo è un altro livello di test e validazione che sarebbero necessarie. Il validatore feed consente di disaccoppiare il client dal server. Avendo il client e server disaccoppiato rende più semplice per introdurre cambiamenti nella struttura generale, perché è possibile apportare le modifiche a poco a poco. Tornando alla sua architettura originale dell'architettura blog, immaginate modificare la struttura di voci come blog vengono visualizzati. Poiché il codice client e server si intrecciano, lo sviluppatore potrebbe essere tentati di modificare il codice lato server. Tuttavia, il server genera tre diversi formati, e c'è da chiedersi se i ritocchi dovranno essere aggiunti gli altri due formati. Utilizzo di un singolo feed che viene convalidato, programmatori client non hanno altra scelta, ma di modificare il proprio codice. Programmatori Cliente non può toccare il codice del server e quindi non può introdurre errori involontari. Ho detto che la sperimentazione di un'interfaccia richiede una serie completa ed estesa di test del validatore dei mangimi prevede proprio questo. Ma non tutti i servizi Web rientrano nella categoria di una domanda di blog, e si deve realizzare l'infrastruttura di controllo proprie. Idealmente, si desidera un'architettura come un validatore per mangimi, perché rende la prova di un gioco da ragazzi. Ma un validatore feed è un programma più vasto, e probabilmente non hanno abbastanza tempo per scrivere un pezzo di codice complesso. L'esperienza mi ha insegnato che il modo più semplice per scrivere i test in modo rapido e pulito è di usare un linguaggio di programmazione che ha il supporto per il test-driven tecniche di sviluppo (ad esempio, NUnit o JUnit). È inoltre possibile utilizzare un linguaggio dinamico come Python o Ruby. Qualcos'altro esperienza mi ha insegnato è quello di non reinventare la ruota. Se un protocollo, la grammatica XML, o l'attuazione esiste già, quindi utilizzare tale. Non cercare di trovare nuovi modi di fare la stessa cosa si complica solo la vita. Potrebbe essere un po 'più complesso inizialmente ad aderire allo standard, ma a lungo andare avrai meno preoccupazioni. Ad esempio, attenendosi al feed Atom nell'architettura blog, è possibile utilizzare uno strumento a disposizione del pubblico per testare l'applicazione. Non necessita di scrivere codice di test, basta scrivere qualche script di prova a chiamare il Feed Validator sito web. L'attuazione del ClienteImplementazione di un client in un contesto Ajax comporta sempre due fasi: il caricamento del documento e l'esecuzione del documento. Nel caso della domanda di blog, non è necessario per il cliente di intervenire, in modo che il documento dovrebbe essere eseguito una volta che è stato caricato. In JavaScript, l'evento body.onload viene generato una volta che il documento è stato caricato completamente. E 'molto importante che si utilizza l'evento body.onload e non qualche script che viene eseguito mentre il documento è stato caricato. Mentre il documento viene caricato, esso è considerato incompleto, in modo da elementi HTML riferimento al documento potrebbe essere successo, ma non potrebbe. Quando si utilizza l'evento body.onload, si può essere certi che il documento sia stato caricato completamente e ogni elemento che deve fare riferimento è disponibile. Quando l'evento body.onload è licenziato e il contenuto viene caricato, il contenuto può essere trasformato e iniettato nel documento HTML. Per l'utente, questo processo in due fasi sembra un carico di una sola pagina piuttosto che un processo in due fasi (se il client e server hanno larghezza di banda sufficiente). Se i due caricamento passo non viene eseguito abbastanza velocemente, si noterà un leggero sfarfallio, indicando che alcuni contenuti è stato caricato e organizzato. Il risultato finale è lo stesso, e il client è presentato con un documento unico che si presenta come una singola applicazione. In poche parole, questo processo non è diverso rispetto alla costruzione di un tradizionale client / server o n-tier, ad eccezione di standard aperti e un ambiente dinamico linguaggio di programmazione vengono utilizzati. Con l'architettura client-side complessiva coperta, scaviamo un po 'più profondo in ciascuna delle fasi. Il caricamento del documentoCome accennato in precedenza, il primo passo è il caricamento del documento. Se si confronta il caricamento del documento con il caricamento di una applicazione tradizionale, ciò che sta accadendo è che il browser è come un sistema operativo preparare la memoria, i moduli, e la Fondazione per il programma da eseguire. Così, per esempio, se siamo il caricamento del documento, Il seguente codice istanziare l'oggetto XMLHttpRequest: getTransport: function () (return Try.these (function () (return new ActiveXObject ( 'Msxml2.XMLHTTP')), function () (return new ActiveXObject ( 'Microsoft.XMLHTTP')), function () (return new XMLHttpRequest ())) | | false;), La fonte del codice non è importante perché molte librerie Ajax fare la stessa cosa. Essenzialmente, quando il codice viene eseguito, si cerca di capire quale browser ha a che fare con il modo che possa tornare a runtime il modo corretto per creare un'istanza dell'oggetto XMLHttpRequest. Io sostengo questo è l'approccio sbagliato, e utilizza il caricamento tradizionale eseguibile e l'esecuzione di mentalità. Quando un caricamento del sistema operativo un programma tradizionale, le variabili, i moduli, e così via vengono inizializzati prima esecuzione del programma. Mentre un browser carica il codice sorgente, il browser è in grado di eseguire codice JavaScript. Con questo in mente, si può scrivere il seguente codice: if (window.ActiveXObject) (FactoryXMLHttpRequest = function () (return new ActiveXObject ( "Microsoft.XMLHTTP");)) else if (window.XMLHttpRequest) (FactoryXMLHttpRequest = function () (return new XMLHttpRequest ();)) In questo esempio, non c'è alcuna funzione, solo una decisione. La decisione è se il browser il caricamento del documento è Internet Explorer, quindi definire la funzione FactoryXMLHttpRequest istanziare ActiveXObject. Se il browser non è Internet Explorer, quindi definire la funzione FactoryXMLHttpRequest per creare un'istanza dell'oggetto XMLHttpRequest direttamente. Il secondo esempio di codice sorgente di inizializzazione non è tanto flessibile durante la fase di runtime perché la funzione FactoryXMLHttpRequest definita solo un'istanza dell'oggetto XMLHttpRequest, come è stato definito quando il documento è stato caricato. Anche se questo sembra un inconveniente, è necessario chiedersi quali sono le probabilità che il documento caricato verrà spostato byte per byte ad un altro tipo di browser. La risposta è che non vi è alcuna possibilità che questo accada, in quanto non è possibile. Il vantaggio del secondo esempio di codice sorgente è tale funzionalità può essere ottimizzata per il browser è in esecuzione su mentre il documento è stato caricato. In questo esempio, il tuning è basata sul browser. Ci sono altri modi per ottimizzare e le ragioni di tuning la vostra applicazione, come ad esempio per capire la lingua o le dimensioni del browser. Tuning ha il vantaggio che non è necessario portarsi dietro il bagaglio eseguibile che è associato con le decisioni adottate in fase di runtime. Questo è un fattore importante da ricordare, come si può ridurre l'impronta di runtime del codice da parte Preconfigurazione l'applicazione durante il caricamento del documento. Ma c'è un grosso svantaggio di utilizzare un carico di documento di configurazione generato hanno a che fare con la serializzazione. Articoli precedenti hanno dimostrato come utilizzare la serializzazione JavaScript per generare proxy o mixins. Se un documento-caricata la configurazione viene serializzato e memorizzati su un server HTTP, e poi caricato in un momento successivo utilizzando un browser diverso, un errore verrà generato. La regola generale è che quando c'è un vantaggio in termini di prestazioni o di risorse, utilizzare il documento-caricato di configurazione. Utilizzare l'impostazione generale di runtime, che comprende una decisione runtime processo, se c'è una piccola possibilità che il codice verrà serializzato. E per quelle situazioni in cui davvero non importa in un modo o l'altro uso, a prescindere senso per voi. L'esecuzione del documentoDopo che il documento è stato caricato, l'evento body.onload viene attivato e il codice associato viene eseguito. In termini di HTML, il codice appare come segue. Si noti che il codice è stato abbreviato per chiarezza. Fonte: / client / index.html LoadAtomFeed function () ( var asincrono = Asynchronous new (); asynchronous.settings = ( onComplete: function (xmlhttp) ( parseAtom (xmlhttp.responseXML); flexbox.update (); ) ) ( "asynchronous.get / servizi / blog / entries / current"); )InitializePage function () (/ / codice di inizializzazione Extra tagliato in materia di LoadAtomFeed ();) onload= "InitializePage ()"> Si consideri il codice in grassetto. Quando il documento viene caricato, l'evento body.onload è sparato. Che chiama la funzione InitializePage, che a sua volta chiama la funzione LoadAtomFeed. Per l'attuazione del LoadAtomFeed, la classe viene creata un'istanza asincrona, che a sua volta istanzia l'oggetto XMLHttpRequest. un articolo presentato da Sonja Lande Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni. Importante: Questo articolo "Test del servizio Web" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.
|
|||||
| Online: 515 users browsing the articles directory |
|
|