visual studio servicio services restful online example crear consume c# asp.net web-services rest service

c# - studio - Qué marco usar para los Servicios RESTful en.net



servicio rest c# json (5)

Sé que se han hecho preguntas similares, pero la mayoría de ellas están desactualizadas. Aquí vamos de nuevo :). Necesito implementar una capa de servicio REST completa para nuestra aplicación. El problema que tengo es qué marco sería el mejor para resolver este problema. Solo necesito un buen marco que me permita enfocarme en el problema y no en el RESTO o lo que sea necesario. La autenticación es una característica requerida. Estas son algunas de mis ideas; ¿Qué piensas?

  • WCF: En mi opinión, este es un marco sobrecargado que complica las cosas.
  • ServiceStack: parece ser una alternativa agradable, liviana y de código abierto. Pero, ¿y si decidieran detener el desarrollo?
  • Implementación personalizada usando asp.net mvc como this , pero ¿por qué reinventar la rueda?

Últimamente estuve jugando con Nancy y también estoy pensando en Manos de Mono . Aquí está el ejemplo de la página de inicio de Nancy.

public class HelloModule : NancyModule { public HelloModule() { Get["/"] = parameters => "Hello World"; } }


La solución Thjeders Of Giants ahora está disponible a través de CodePlex y NuGet ... renombrado como Resources Over MVC.


Originalmente comencé ServiceStack debido a la ineficiencia (desarrollo y tiempo de ejecución) y la fricción impuesta en la creación de servicios web con marcos de .NET alternativos.

3-4x Faster Json Serialization que MVC

ServiceStack tiene un fuerte rendimiento de enfoque ya que creemos que brinda la mejor UX para el usuario final, y es por eso que viene con un conjunto de proveedores de caché que incluye el Serializador JSON más rápido para .NET , 3-4 veces más rápido que los serializadores enviados. con .NET y MVC (su JavaScriptSerializer predeterminado es el más lento en .NET). Para un rendimiento máximo, no se utilizan reflejos de tiempo de ejecución ni expresiones regulares. Emplea la coincidencia inteligente de rutas no lineales y se recomienda utilizar los proveedores de caché incorporados mucho más rápidos para evitar el bajo rendimiento de la sesión de ASP.NET .

Enfocado en desarrollo mecanografiado, iterativo, primer código

ServiceStack le permite desarrollar servicios web robustos que promueven las mejores prácticas listas para usar usando la cantidad mínima de código y de forma automática sin ningún tipo de código: gen, config, pasos de compilación pre / post, etc.

Ejemplo de un servicio Hello World simple:

public class Hello { public string Name { get; set; } } public class HelloResponse { public string Result { get; set; } } public class HelloService : IService { public object Get(Hello request) { return new HelloResponse { Result = "Hello, " + request.Name }; } }

Con solo estas clases, todos sus servicios web se ponen automáticamente a disposición en una variedad de formatos diferentes (JSON, XML, JSV, CSV, SOAP), todos listos para usar con cero esfuerzo .

Ejemplo de Strong Typed Client API usando C #:

var client = new JsonServiceClient("http://localhost/Service"); var response = client.Send<HelloResponse>(new Hello { Name = "World!" });

Ejemplo de JavaScript usando jQuery:

$.getJSON("http://localhost/Service/hello/World!", function(r) { console.log(r.Result); });

Desarrollo amigable

Debido a que la visualización de servicios web es importante cuando se desarrollan iterativamente servicios web, el Tipo de contenido predeterminado al visualizar servicios web en un navegador es un formato de informe JSON HTML5 amistoso (también disponible de forma independiente en http://ajaxstack.com/jsonreport/ ) que le permite visualizar la respuesta de sus servicios web de un vistazo.

También obtienes una página de metadatos generada automáticamente (que puedes anotar con tu propia descripción personalizada) que sirve como una excelente forma de documentar la API de tu servicio web.

Pero qué pasaría si decidieran detener el desarrollo

Como creador de ServiceStack, no me veo abandonando el desarrollo en el futuro previsible. Construyo sistemas con él diariamente simplemente porque creo que es un marco más limpio, más rápido y más productivo para desarrollar.

Promueve las mejores prácticas

Existen muy pocos frameworks de servicios web .NET que promuevan una arquitectura basada en mensajes DTO-first que habilite el patrón Service Interface : una práctica recomendada de servicios web comúnmente vista en el ecosistema Java que facilita el desarrollo de SOA basado en SOA basado en lotes completos servicios web.

Hay 0 riesgo de que se abandone en favor de otro marco de servicios web .NET. Simplemente porque no creemos que ningún otro .NET framework promueva activamente las mejores prácticas de los servicios web (es decir, DTO / Fachada remota y patrones de Interfaz de servicio) y un enfoque principal en el rendimiento.

Pero incluso así como un proyecto de código abierto con casi 20 colaboradores, este temor se mitiga. ¿Cuántos marcos propietarios de código cerrado han abandonado a MS y han obligado a todos a pasar a un sucesor? El software de código abierto evoluciona, no se abandona ni se reescribe.

El código fuente completo de ServiceStack vive en http://github.com/ServiceStack no hay lock-in y GitHub hace que sea más fácil para cualquiera que bifurque y continúe el desarrollo como muchos ya lo han hecho.

Funciona en todos lados

Finalmente, ServiceStack puede ejecutarse en cualquier host ASP.NET en IIS 6/7 en Windows o Linux / OSX usando Mono. También es compatible con un host HttpListener independiente que le permite ejecutarlo sin un servidor web, es decir, incrustado en cualquier consola o aplicación de Windows, dentro de un servicio de Windows e incluso alojado dentro de una aplicación MonoTouch para iPhone .


Para mí, la solución más sencilla y limpia sería implementar los servicios como controladores en ASP.NET MVC3 con métodos que devuelvan un JsonResult.

Ventajas:

  • El framework MVC hace el trabajo pesado por ti

  • Puede implementar la validación del modelo utilizando atributos en lugar de código

  • Implementación de XCopy en cualquier versión de IIS


Si comenzara esto hoy, elegiría su tercera opción de hacer algo personalizado en ASP.NET MVC3 o usar uno de los marcos a continuación.