2012-05-07 21 views
6

situación actual: un sitio web ASP.NET MVC con una cantidad de controladores y métodos de acción, y vistas para permitir la adición de recetas.Consumir métodos de acción de ASP.NET MVC

Ahora, tengo que crear una aplicación WPF que actúe como una interfaz de usuario para agregar recetas (igual que el sitio web).

Mi pregunta es: ¿puedo usar el sitio ASP.NET MVC para exponer las operaciones de servicio que consume la aplicación WPF (y cómo se puede hacer esto)? ¿O debería crear mejores servicios WCF dedicados para eso, y hacer que WPF Y el sitio ASP.NET MVC consuman estos servicios?

Gracias, Ludwig

Respuesta

3

que han utilizado con éxito los controladores y acciones de MVC para dar servicio a ambos puntos de vista HTML desde el navegador, así como aplicaciones externas. Funciona bien, pero tal como está usted necesitaría un poco de utillaje:

  1. Tengo un filtro de acción que devuelve como resultado el modelo de una acción en un formato que el cliente solicitó (mediante la inspección de la Acepta cabecera, buscando ya sea application/json o text/xml). Entonces, puedo serializar el modelo resultante como JSON o XML (prefiero JSON).
  2. Necesitará encontrar o crear una API simple en su aplicación cliente para crear peticiones web para sus acciones, y luego procesar los resultados. Creé una API simple que puede POST o GET, y luego deserializa cualquier JSON resultante en un objeto (usando JSON.NET). Hay API de cliente REST que puedes usar para esto.

Sin embargo, puede evitar algunas de estas herramientas adicionales si utiliza la ruta WCF-REST. Mejor aún, examinaría la función WebApi de ASP.NET MVC 4 (que es a lo que voy a migrar).

Para el registro, creo que WCF es poderoso, pero nuestra organización se ha cansado de lo complicado que puede ser girar todas las perillas y pulsar todos los interruptores para que funcione correctamente, y configurar fácilmente desde una instalación a el otro. MVC, por otro lado, simplemente funciona ... y como ya lo usamos para dar servicio a nuestras vistas de HTML, es una verdadera alegría tener que agregar solo un pequeño código adicional para que también maneje las llamadas de servicio. Solo una preferencia personal, por supuesto.

+0

Gracias, la api web parece interesante. Sin embargo, sigue siendo beta, y probablemente demasiado peligroso para mí ya en un entorno de producción. ¿Sería una buena idea crear un controlador específico que contenga toda la lógica que debe exponerse afuera? Esa lógica usaría la lógica del controlador subyacente. –

+0

Saldrá de beta rápido. Parece razonable comenzar a desarrollar una solución contra beta, ajustar cuándo se usa RTM y obtener beneficios :) – HackedByChinese

Cuestiones relacionadas