WCF的替代品有什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (97)

我目前正在实现一个使用WCF的Silverlight应用程序来进行客户端和服务器之间的通信。我听说使用WCF我们必然会在客户端使用一些微软技术,并且不能轻易地用“任何东西”替代它 - 至少使用WPF的默认SOAP实现。

所以我的问题是:

  • 这是真的?
  • Restful WCF服务怎么样?我描绘了一个普通的REST实现,任何客户端都可以通过REST与此服务器端进行通信。是?没有?
  • 抛出WCF的(好)选择是什么?我为什么要这么做?
提问于
用户回答回答于

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

许多供应商和开源库支持SOAP - 这是W3C标准,而不是微软特定的想法。

RESTful服务的一个很好的选择是ASP.NET MVC,我发现这是一种非常简单的方法,可以直接将方法公开为URL。

用户回答回答于

我除了维护核心团队的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 };
    }
}

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

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

在jQuery中:

$.getJSON('hello/World!', function(r){ 
    alert(r.Result); 
});

扫码关注云+社区