Servizi Web come back-end [chiuso]

3

Sto pensando ad una direzione per fare domanda. L'applicazione è scritta in PHP che implementa un framework MVC.

Alcuni dei miei clienti richiederanno servizi web. Stavo pensando anche a costruire l'interfaccia web di base di PHP su questi servizi web (SOAP) e l'accesso all'applicazione PHP dall'accesso al database. Voglio fare questo in modo che io debba solo mantenere un set di codice per l'applicazione PHP principale per accedere ai dati e anche a tutte le altre applicazioni sviluppate in cima a questo servizio web. È una configurazione comune? Rallenterà molto l'applicazione?

Ho cercato di utilizzare il framework Django per configurare il servizio web SOAP, ma poi ho realizzato che avrebbe avuto problemi a gestire più database identici in base al client che lo utilizzava.

Ho guardato Symfony, ma temo che PHP come back-end possa essere considerato non sicuro o non professionale da alcuni futuri client più grandi e non utilizzabile dall'azienda.

Sto pensando ad Axis2 in questo momento. Java potrebbe essere più veloce come back-end e sarà vendibile ai potenziali clienti.

Quale altro quadro di servizi Web dovrei prendere in considerazione? Questo front-end Web / PHP / HTML di Servizi Web è una soluzione utilizzabile?

    
posta Apothan 05.05.2012 - 16:50
fonte

2 risposte

2

Sì, questa è una configurazione molto comune in applicazioni più grandi. Tuttavia, ogni chiamata al servizio web aggiungerà un ulteriore ritardo alla tua applicazione. Pertanto, è necessario progettare il servizio Web in modo ottimale per ridurre il numero di round trip e ridurre la quantità di dati che è necessario recuperare dal servizio.

Suggerirei di attenersi alla lingua che più ti è familiare.

Per quanto riguarda Django e più database: Django ha un supporto integrato per più database. Puoi usarli su una base per-query o su una base per modello (e anche usare un database diverso per le operazioni di lettura / scrittura dello stesso modello).

    
risposta data 05.05.2012 - 20:02
fonte
2

Questo approccio è abbastanza comune e ha più senso se stai costruendo realmente una piattaforma in cui altri si svilupperanno su di essa. Consumando i tuoi servizi web esclusivamente nella tua app (mangiando il tuo cibo per cani), convaliderà la forza della tua piattaforma. Cose per assicurarti di coprire:

Sulla piattaforma dei servizi web:

  • Cache ha tutto il possibile per operazioni di lettura, sia dalla memorizzazione di server di database in memoria o server memcache e anche utilizzando un CDN per servizi Web che sono più statici (ad esempio servizi Web che restituiscono dati di ricerca (La chiave è ridurre il la quantità di I / O del disco che il tuo sistema generale farà). Come programmatori, spesso dimentichiamo che possiamo risparmiare un sacco di risorse di elaborazione scaricando su server CDN esterni
    • Non dimenticare di memorizzare le risposte nella cache utilizzando gzip per ridurre i tempi di download
    • Prendi in considerazione la possibilità di restituire oggetti più ricchi per ridurre al minimo i roundtrip in modo che le applicazioni client non effettuino chiamate aggiuntive. Ad esempio, invece di restituire un elenco di oggetti fattura, è possibile nidificare anche gli oggetti oggetto di fattura all'interno di un tipo di servizio Web getinvoices. Con le risposte compresse, sarebbe molto più pesante e si risparmia sui viaggi di andata e ritorno. Ancora meglio sarebbe consentire alle applicazioni di chiamata di passare in una bandiera per determinare quanto "ricchi" siano gli oggetti di ritorno
    • Immettere le chiavi api su client diversi e convalidare in modo da poter gestire il traffico, limitare la velocità e prevenire l'abuso
    • So che hai menzionato SOAP, ma potresti aver bisogno di un piano per gli apis puri e riposanti di tipo json / xml se l'ecosistema dei consumatori sarà abbastanza aperto per facilitare l'adozione
risposta data 05.05.2012 - 21:59
fonte

Leggi altre domande sui tag