2008-09-22 12 views
11

En cada framework MVC que he probado (Rails, Merb, Waves, Spring y Struts), la idea de una Solicitud (y Respuesta) está ligada a la noción HTTP de una Solicitud. Es decir, incluso si hay una AbstractRequest que es una superclase de Request, AbstractRequest tiene cosas como encabezados, método de solicitud (GET, POST, etc.) y todas las otras cosas vinculadas a HTTP.¿Hay marcos web MVC que admitan varios tipos de solicitud?

me gustaría apoyar un ciclo de solicitud-respuesta a través de SMS, Twitter, correo electrónico o cualquier otro medio para el que puede hacer un adaptador. ¿Hay un marco que lo haga particularmente bien?

La única otra opción que he pensado es la creación, por ejemplo, un poller Twitter que se ejecuta en un hilo separado y traduce los mensajes en las peticiones HTTP locales, a continuación, envía las respuestas de vuelta.

Si hay eran un buen marco para la solicitud de medios múltiples, lo que sería el enrutamiento parece? En Rails, el enrutamiento HTTP se parece a:

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

¿Cómo se vería una ruta de Twitter o SMS? Expresiones regulares para hacer coincidir palabras clave y parámetros?

Respuesta

0

Parece que trabaja principalmente con Java y/o Ruby, así que discúlpeme que esta respuesta se basa en Perl :-).

soy muy aficionado a la MVC marco Catalizador (http://www.catalystframework.org/). Delega el mapeo real de solicitudes (en el sentido genérico general) para codificar a través de motores. Por supuesto, todas las clases de motores actualmente están basadas en HTTP, pero he jugado con la idea de intentar escribir una clase de motor que no esté basada en HTTP (o quizás esté ligada a algo como Twitter, pero estaba separada de las interacciones HTTP) que Twitter usa). Por lo menos, estoy convencido de que se puede hacer, incluso si aún no he intentado hacerlo.

+0

Me parece que una instancia de Catalyst solo puede vincularse a un motor. Es decir, puede tener un Catalyst CGI o un Catalyst FCGI o un Catalyst Apache, pero no puede tener varias formas de alimentar la misma instancia. No necesariamente es un problema: podría retroceder con el mismo DB. –

1

No he visto ninguno. El problema es que la solicitud también está vinculada al host y la respuesta está vinculada a la solicitud.

Así que si tienes una solicitud por correo electrónico, y un controlador le dice a rendir vista "aboutus", se necesitaría el marco MVC saber:

  • obtener la solicitud en el primer lugar - el marco MVC sería casi tiene por qué ser un host (IIS no se reciba notificación de nuevos mensajes de correo electrónico, así que ¿cómo su código de sondeo de correo electrónico despedido?)
  • permiten coincidencia de ruta flexible - por coincidencia de ruta/url no funcionaría para todos, por lo que sería necesario-petición específica de controlador de encaminamiento
  • utiliza el aboutus email vista en lugar de la vista de SMS o HTTP llamado "aboutus"
  • enviar la respuesta a cabo a través de correo electrónico, al destinatario correcto

Un marco MVC web no se va a cortar - se necesita un MVC " host "que puede manejar la activación a través de la web, sms, correo electrónico, lo que sea.

+0

No me importaría escribir pequeños hilos de sondeo que agregaran solicitudes a la cola de procesamiento de MVC, pero la mayoría de los marcos que he visto realmente no exponen esa cola (si es que incluso tiene múltiples subprocesos). Cualquier solución requeriría complementos, porque se agregan nuevos tipos todo el tiempo. –

0

podría implementar un adaptador REST-based sobre su sitio web, que sustituye a las plantillas y redirige acuerdo con los parámetros de entrada.

Todas las solicitudes entrantes en api .yourhost.com serán manejadas por el adaptador REST.

Este adaptador permitiría llamar a su sitio web mediante programación y tener el resultado en un formato analizable.

En la práctica esto significa: Sustituye las plantillas con un motor de plantillas propia, en la que suceden estas cosas:

  • en lugar de la plantilla asignada, una plantilla XML/JSON genérico se llama, que simplemente da salida a un xml que contiene todas las plantillas vars

luego puedes hacer tu Twitter Poller, SMS Gateway o incluso llamarlo desde Javascript.

1

La especificación de Java Servlet se diseñó para que los servlets sean neutrales al protocolo y se extiendan de forma específica para el protocolo; HttpServlet es una extensión de servlet específica del protocolo. Siempre imaginé que Sun, u otros terceros proveedores de framework de punto, crearían otras extensiones específicas de protocolos como FtpServlet o MailServlet, o en este caso SmsServlet y TwitterServlet.

En cambio, lo que ha sucedido es que las personas omiten por completo el marco Servlet o han creado sus protocolos sobre HTTP.

Por supuesto, si desea implementar una extensión específica del protocolo para sus protocolos requeridos, debería desarrollar todo el objeto solicitud de pila, objeto de respuesta, un mecanismo de identificación de sesiones (por ejemplo, utilizando el MSISDN en un SMS en lugar de cookies), un marco de plantillas y representación (equivalente a JSP) - y luego construir un framework MVC encima.

Cuestiones relacionadas