WCF的替代品

sti*_*k81 18 service wcf

我目前正在使用WCF实现一个Silverlight应用程序,用于客户端和服务器之间的通信.我听说使用WCF我们必然会在客户端使用一些Microsoft技术,并且不能轻易地将其替换为"任何东西" - 至少使用WPF的默认SOAP实现.

所以我的问题是:

  • 这是真的?
  • Restful WCF服务怎么样?我描绘了一个简单的REST实现,任何客户端都可以通过REST与该服务器端进行通信.是?没有?
  • 扔掉WCF的(好的)替代方案是什么?为什么我要这样做?

myt*_*thz 15

我是维护ServiceStack的核心团队的一部分- 一个成熟的开源替代WCF:现代,代码优先,模型驱动,WCF替代Web服务框架,鼓励代码和远程最佳实践,创建简洁,干燥,高性能,可扩展的REST Web服务.

它具有自动支持JSON,JSONP,CORS头以及form-urlencoded/multipart-formdata.在线演示是一个很好的开始,因为它们都使用Ajax.

此外,没有XML配置或代码生成,您的"一次编写"C#Web服务提供开箱即用的所有JSON,XML,SOAP,JSV,CSV,HTML端点,自动带钩子插件在您自己的内容类型中,如果需要.

它还包括通用同步/异步服务客户端,提供端到端的快速,类型化的客户端/服务器通信网关.

这是创建简单Web服务所需的所有代码的完整示例,该代码在预定义和自定义REST-ful路由上的所有Web数据格式上自动无需任何配置,注册并可用:

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 };
    }
}
Run Code Online (Sandbox Code Playgroud)

可以在C#中调用以上服务(没有任何构建步骤/代码生成),如下所示:

HelloResponse response = client.Get(new Hello { Name = "World!" });
response.Result.Print(); // => Hello, World
Run Code Online (Sandbox Code Playgroud)

在jQuery中:

$.getJSON('hello/World!', function(r){ 
    alert(r.Result); 
});
Run Code Online (Sandbox Code Playgroud)

  • 你已经将其称为"开源".这看起来像商业产品(即使您免费提供'lite'版本.)Github中是否提供源代码? (7认同)

Dan*_*ker 12

我听说使用WCF我们必然会在客户端使用一些Microsoft技术

好吧,那你就被骗了!

许多供应商和开源库都支持SOAP - 它是W3C标准,而不是Microsoft特定的想法.

RESTful服务的一个很好的替代方案是ASP.NET MVC,我发现了一种直接将方法公开为URL的简单方法.