WCF JSON Web服务

10
什么是创建JSON Web服务的最佳方式?我们有另一个使用Java的团队,他们坚持要使用JSON进行所有通信。我更喜欢使用WCF而不是任何第三方框架。
我发现了这篇博客:http://www.west-wind.com/weblog/posts/164419.aspx,它指出Microsoft的实现存在M$特定的问题。

1
你可能想自己试一试,以确保Rick没有使用未发布的代码。 - John Saunders
4个回答

13
如果您使用WCF和3.5框架,那么就再容易不过了。当您在OperationContracts上标记WebGet特性时,只需将ResponseFormat参数设置为WebMessageFormat.Json即可。当以REST方式访问服务时,它将使用DataContractJsonSerializer返回数据。
最好将想要JSON序列化的POCO标记为[DataContract],并将每个可序列化成员标记为[DataMember]。否则,您最终会得到不正常的JSON,正如Rick在他的博客文章中所指出的那样。

3
所有这些的好例子:https://dev59.com/73I95IYBdhLWcg3w7SpZ - Cheeso

4
我在ServiceStack中维护一个成熟的开源替代WCF的框架,这是一个现代化、面向代码、模型驱动的WCF替代Web服务框架,鼓励编写简洁、DRY的远程最佳实践,用于创建高性能、可扩展的REST Web服务
它包括.NET最快的JSON序列化器,并自动支持JSON、JSONP、CORS头以及form-urlencoded/multipart-formdata。在线演示是一个很好的起点,因为它们都使用Ajax。
此外,没有XML配置或代码生成,您的“一次编写”C# Web服务提供了所有JSON、XML、SOAP、JSV、CSV、HTML端点的开箱即用支持,并自动提供插入自己内容类型的钩子。
它还包括通用同步/异步服务客户端,提供快速、类型化、端到端的客户端/服务器通信网关。
这是创建简单Web服务所需的所有代码的完整示例,它会自动注册并在所有预定义和自定义RESTful路由上的Web数据格式上提供。
public class Hello {
    public string Name { get; set; }
}

public class HelloResponse {
    public string Result { get; set; }
}

public class HelloService : IService<Hello> {
    public object Execute(Hello request)
    {
        return new HelloResponse { Result = "Hello, " + request.Name };
    }
}

上述服务可以在不进行任何构建步骤/代码生成的情况下,通过以下代码在C#中调用:
var client = new JsonServiceClient(baseUrl);
var response = client.Send<HelloResponse>(new Hello { Name = "World!" });
Console.WriteLine(response.Result); // => Hello, World

使用jQuery:

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

1
谢谢,我一定会尝试的! - Grzenio

2
最佳创建 JSON Web 服务的方式是什么?我们有另一个团队正在使用 Java,他们坚持要求所有通信都使用 JSON。我更喜欢使用 WCF 而不是任何第三方框架。
以下是一个易于跟随的步骤说明,它将带您完成设置第一个 WCF 服务的过程,然后将其链接到 SQL Server 数据库。

http://mikesknowledgebase.com/pages/Services/WebServices-Page1.htm

它使用了微软备受喜爱的Northwind SQL Server数据库,并展示了如何编写一个简单的JSON WCF Web服务来读取和写入它的数据。

enter image description here

哦,然后它展示了如何使用JavaScript或iOS应用程序消耗JSON数据。

祝你好运!

这篇文章也帮助了我 - 我对WCF Web服务非常陌生。 - Krondorian

-4

最终我使用了JayRock。这是一款非常棒的技术,它能够完美地工作。如果你没有正确配置WCF,你将不会遇到任何NullReferenceExceptions等问题。


我很难理解为什么你被踩了7次。看起来你已经找到了最佳的处理返回JSON的Web服务的方法。 - pqsk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接