netcore - Alternativas a WCF
wcf web service reference (5)
He oído que al usar WCF estamos obligados a usar alguna tecnología de Microsoft en el lado del cliente
Bueno, entonces te han mentido!
Muchos proveedores y bibliotecas de código abierto admiten SOAP, es un estándar de W3C, no una idea específica de Microsoft.
Una excelente alternativa para un servicio REST es ASP.NET MVC, que he encontrado una manera muy fácil de exponer los métodos directamente como URL.
Actualmente estoy implementando una aplicación Silverlight usando WCF para la comunicación entre el cliente y el servidor. He escuchado que al usar WCF estamos obligados a usar alguna tecnología de Microsoft en el lado del cliente, y no podemos reemplazarlo fácilmente con "cualquier cosa", al menos con la implementación SOAP predeterminada de WPF.
Así que mis preguntas son:
- ¿Es esto cierto?
- ¿Qué pasa con los servicios de WCF Restful? Imagino una implementación simple de REST, y cualquier cliente podría comunicarse con este servidor a través de REST. ¿Sí? ¿No?
- ¿Cuáles son las (buenas) alternativas para deshacerse de WCF? ¿Y por qué querría hacer eso?
Para java - wcf interopibility check Sun''s Project Tango link
Soy parte del equipo central que mantiene ServiceStack , una alternativa madura de código abierto para WCF: el marco de servicios web de reemplazo de WCF moderno, basado en el código, impulsado por el modelo, fomenta el código y las mejores prácticas remotas para crear Perfomance, servicios web escalables REST .
Tiene compatibilidad automática con JSON, JSONP, CORS encabezados, así como form-urlencoded / multipart-formdata. Las demostraciones en línea son un buen comienzo ya que todas usan Ajax.
Además, no hay configuración XML o código-gen y su servicio web C # de "una sola escritura" proporciona todos los puntos finales JSON, XML, SOAP, JSV, CSV, HTML habilitados de forma inmediata , automáticamente con enlaces para conectar en sus propios tipos de contenido si es necesario.
También incluye clientes de servicio de sincronización / asíncrono genéricos que proporcionan una puerta de enlace de comunicación cliente / servidor rápida y mecanografiada de extremo a extremo.
Este es el ejemplo completo de todo el código necesario para crear un servicio web simple, que es automáticamente sin ninguna configuración, registrado y disponible en todos los formatos de datos web en rutas REST-ful predefinidas y personalizadas :
public class Hello : IReturn<HelloResponse>
{
public string Name { get; set; }
}
public class HelloResponse
{
public string Result { get; set; }
}
public class HelloService : Service
{
public object Get(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
El servicio anterior se puede llamar (sin ningún build-steps / code-gen) en C # con la siguiente línea:
HelloResponse response = client.Get(new Hello { Name = "World!" });
response.Result.Print(); // => Hello, World
Y en jQuery con:
$.getJSON(''hello/World!'', function(r){
alert(r.Result);
});
WCF está basado en SOAP (de forma predeterminada, también es compatible con REST) y puede interactuar fácilmente con cualquier cliente que pueda entender y hablar SOAP.
Incluyen lenguajes y sistemas como Java, PHP y muchos más.
WCF es la implementación de Microsoft, pero los estándares son todos estándares internacionales e interoperables. Nada de los estándares es específico de Mircosoft.
Bagazo
WCF le ofrece un nivel de abstracción sobre la forma en que se comunica / desea. Por lo tanto, puede elegir un enlace que sea específico de Microsoft, pero también puede usar el protocolo SOAP o, si usa ambos, el cliente que no sea de Microsoft podrá comunicarse a través de fe. SOAP, y otros clientes pueden usar formas más robustas.
En cuanto a REST, es posible que desee ver la charla de Hanselman sobre NDC here . Puede que no responda directamente a tu pregunta, pero puede señalarte algo.
En cuanto a las alternativas, no veo nada que se ejecute en .NET, además de los servicios web (pero, debido a que WCF le ofrece todo esto y mucho más, preferiría considerarlo como una forma más antigua que una alternativa real).