2012-02-29 57 views
25

Voy a estar trabajando en un proyecto que consiste en una serie de elementos: el sitio webWCF Servicio Web o API

  • ASP.NET MVC
  • C# aplicación de consola
  • iPhone App

Para obtener todas estas aplicaciones por separado para hablar con la base de datos, mi pensamiento inmediato fue utilizar un servicio WCF.

Sin embargo, ahora necesito agregar una API al sitio para permitir que terceros seleccionen, inserten y actualicen registros de sus propias aplicaciones.

En mi opinión, simplemente crearía un punto final de servicio RESTful separado en mi Servicio WCF que se bloquearía usando autenticación y solo daría acceso a ciertos métodos.

Sin embargo, he estado leyendo hoy sobre la función de API web en MVC 4, que debe ser lo último para las API RESTful.

¿Debo ir por la línea de usar la API web? o porque mis otras aplicaciones necesitan un servicio web, ¿debo quedarme con un Servicio WCF?

+0

posible duplicado de [WCF vs API Web ASP.NET] (http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api) – nawfal

Respuesta

16

Si desea realizar un desarrollo RESTful, definitivamente querrá utilizar ASP.Net Web Api (que originalmente se llamaba WCF Web Api y se creó con el objetivo de "Convertir a REST en un ciudadano de primera clase en .NET".

Otra cosa a tener en cuenta es que el kit de inicio de WCF REST es no longer supported.

Tenga en cuenta que utilizar Web Api no significa que tenga que utilizar ASP.Net MVC o IIS, ya que puede ser self hosted.

Para el manejo de operaciones que no son CRUD en la naturaleza, recomendaría Google "REST non-CRUD". Encontré esta publicación de blog RESTful URLs for non-CRUD operations (y particularmente los comentarios interesantes). Si decide que NECESITA tener llamadas RPC, puede que tenga que hacerlo con WCF. Dicho esto, dado que WCF REST está siendo eliminado, no estoy seguro de cuál será la mejor solución. Tener ambos es probablemente la mejor respuesta, pero al mismo tiempo no es necesariamente una buena respuesta.

Otra alternativa sería un WCF OData Service, pero no estoy seguro de si recibe algún soporte de un iPhone.

Un último punto a hacer (que se pueden eliminar en el futuro, ya que es sensible al tiempo)

Microsoft ha proporcionado una licencia ¡En vivo con la beta que significa que es compatible con Microsoft y usted no debe No tiene ningún problema para actualizar al archivo RTM.

+0

Gracias por su comentario. Seguramente porque voy a usar el servicio/api también para mi sitio web de MVC, ¿no me gustaría que todo el servicio/API sea RESTful? ¿Es eso posible con la API web?Sé con un Servicio de WCF que puede tener puntos finales separados para RESTful –

+0

Se agregó información adicional para publicar. –

+0

No entiendo completamente su información adicional. Sería una solución utilizar un servicio WCF al que pueda hacer referencia desde mi sitio web MVC. Entonces, ¿podría usar una API web (con autenticación) que también se comunique con el servicio WCF para obtener los datos? –

6

Service Stack también parece una opción.

Demos, descripción, ejemplos es available here.

+2

1 por mencionar Service Stack, que nunca había escuchado. Sin embargo, al examinar su marco, mi primera impresión es que su objetivo declarado de "sin código genérico" para el cliente no es del todo exacto. Code-gen (aparentemente manual) sigue siendo necesario si no tiene acceso a los DTO de servicio, que es un escenario altamente probable para una API pública. Aún así, el marco parece prometedor, así que definitivamente lo voy a estudiar. Gracias por el enlace! – Randolpho

+0

No, no hay código genérico, ya que puede reutilizar los mismos DTO con los que ha definido sus servicios web. Así que obtienes un servicio genérico sucinto y tipado que usa serializaciones rápidas y versionables de extremo a extremo. Incluso las excepciones C# son idiomáticas y mecanografiadas https://github.com/ServiceStack/ServiceStack/wiki/Validation – mythz

+0

@mythz y ¿qué pasa si no tiene acceso al .DLL que definió los DTO? Este es un escenario común con servicios web de acceso público. – Randolpho

4

No hay una respuesta correcta aquí. Sin duda puede hacerlo bastante bien con un servicio WCF RESTful. O podría usar ASP.NET MVC. Ambos son perfectamente válidos, y ambos tienen fortalezas y debilidades.

En última instancia, le sugiero que vaya con lo que sea más cómodo para usted.

Me gustaría señalar que MVC 4 está en beta, así que ten cuidado con los errores y no se activarán hasta que se salga de la versión beta.

1

Me limitaría a ver cuál es el mejor soporte en todas las plataformas que va a utilizar, sospecho que la aplicación de iPhone puede terminar conduciendo sus elecciones.

Si fuera .net puro, todavía tendería a usar un servicio SOAP, no se considera genial en estos días, pero generalmente hará lo que necesita en la mayoría de las plataformas sin tener que rodar soluciones personalizadas.

EDITAR

ASP.NET Web API significa que .NET proporciona ahora un gran marco para el desarrollo de una API de descanso, reviso mi respuesta a decir que ahora me inclinaría hacia este - el progreso es grande!

1

Dado que va a crear un sitio web ASP.NET MVC, sería bastante cómodo usar ASP.NET Web API también porque el modelo de programación es muy similar y esas soluciones están más o menos integradas entre sí.

0

Tengo la misma pregunta.

En el sitio de MSDN, http://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx

Encontrado un tutorial de vídeo en el que dijo que para la máquina cosumption como el iPhone o los clientes de aplicaciones web de JSON o XML, API web es la opción recomendada. Está alrededor de la última parte del video.

Mientras que para comunicaciones de máquina a máquina más complejas WCF es preferible.

http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start/Building-Web-Apps-with-ASPNET-Jump-Start-04-Building-a-Service-Layer-with-ASPNET-Web-API

Aquí está una captura de pantalla de su presentación.

enter image description here

Cuestiones relacionadas