Domanda

In ogni framework MVC che ho provato (Rails, Merb, Waves, Spring e Struts), l'idea di una richiesta (e risposta) è legata alla nozione HTTP di una richiesta. Cioè, anche se esiste un AbstractRequest che è una superclasse di Request, AbstractRequest ha elementi come intestazioni, metodo di richiesta (GET, POST, ecc.) E tutte le altre cose legate a HTTP.

Vorrei supportare un ciclo di richiesta-risposta su SMS, Twitter, e-mail o qualsiasi altro supporto per il quale posso realizzare un adattatore. Esiste un framework che lo fa particolarmente bene?

L'unica altra opzione a cui ho pensato è la creazione, ad esempio, di un poller di Twitter che viene eseguito in un thread separato e traduce i messaggi in richieste HTTP locali, quindi restituisce le risposte.

Se esistesse un buon framework per supporti per richieste multiple, come sarebbe il routing? In Rails, il routing HTTP è simile a:

map.connect 'some/path/with/:parameter_1/:paramter_2', :controller => 'foo', :action => 'bar'

Che aspetto avrebbe una rotta Twitter o SMS? Espressioni regolari per abbinare parole chiave e parametri?

È stato utile?

Soluzione

Sembra che tu stia lavorando principalmente con Java e / o Ruby, quindi perdonami che questa risposta si basa su Perl :-).

Adoro il Catalyst MVC Framework ( http://www.catalystframework.org/). Delega l'effettiva mappatura delle richieste (in generale, in senso generico) al codice tramite motori. Certo, tutte le classi del motore sono attualmente basate su HTTP, ma ho pensato all'idea di provare a scrivere una classe del motore che non era basata su HTTP (o era forse legata a qualcosa come Twitter, ma era separata dalle interazioni HTTP che utilizza Twitter). Per lo meno, sono convinto che si possa fare, anche se non sono ancora riuscito a provarlo.

Altri suggerimenti

Non ne ho visto uno. Il problema è che anche la richiesta è legata all'host e la risposta è legata alla richiesta.

Quindi, se ricevi una richiesta via e-mail e un controller dice di visualizzare "aboutus", avrai bisogno del framework MVC per sapere come:

  • ottieni la richiesta in primo luogo - il framework MVC dovrebbe quasi essere un host (IIS non viene informato su nuove e-mail, quindi come viene attivato il tuo codice di polling e-mail?)
  • consenti la corrispondenza flessibile del percorso - la corrispondenza per percorso / url non funzionerebbe per tutti, quindi sarebbe necessario il routing del controller specifico della richiesta
  • utilizza la vista aboutus email anziché la vista SMS o HTTP denominata " aboutus "
  • invia la risposta via e-mail, al destinatario corretto

Un framework Web MVC non lo taglierà: avrai bisogno di un MVC "host". in grado di gestire l'attivazione tramite web, sms, email, qualunque cosa.

Le specifiche del servlet Java sono state progettate in modo che i servlet siano neutri rispetto al protocollo e da estendere in un modo specifico del protocollo - HttpServlet è un'estensione servlet specifica del protocollo. Ho sempre immaginato che Sun, o altri terzi provider di framework poarty, avrebbero escogitato altre estensioni specifiche del protocollo come FtpServlet o MailServlet, o in questo caso SmsServlet e TwitterServlet.

Invece, ciò che è accaduto è che le persone o hanno completamente ignorato il framework Servlet o hanno costruito i loro protocolli su HTTP.

Naturalmente, se si desidera implementare un'estensione specifica del protocollo per i protocolli richiesti, è necessario sviluppare l'intero stack - oggetto richiesta, oggetto risposta, un meccanismo di identificazione delle sessioni (ad esempio utilizzando MSISDN in un SMS anziché i cookie), un framework di template e rendering (equivalente di JSP) - e quindi creare un framework MVC su di esso.

Potresti implementare un basato su REST sul tuo sito web, che sostituisce i modelli e reindirizza in base ai parametri di input.

Tutte le richieste che arrivano su api .yourhost.com saranno gestite dall'adattatore basato su REST.

Questo adattatore consentirebbe di chiamare il tuo sito Web a livello di codice e di ottenere il risultato in un formato analizzabile.

Praticamente questo significa: sostituisce i Modelli con un proprio Template Engine, sul quale accadono queste cose:

  • invece del modello assegnato, viene chiamato un modello generico xml / json, che genera solo un xml che contiene tutti i template

allora puoi creare il tuo Twitter Poller, SMS Gateway o persino chiamarlo da Javascript.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top