веб-сервис wcf json - PullRequest
       10

веб-сервис wcf json

10 голосов
/ 05 мая 2009

Каков наилучший способ создания веб-службы JSON? У нас есть другая команда, которая использует Java, и они настаивают на том, чтобы все общение осуществлялось с использованием JSON. Я бы предпочел использовать WCF, а не сторонние фреймворки.

Я нашел этот блог: http://www.west -wind.com / weblog / posts / 164419.aspx , и это наводит на мысль, что реализация Microsoft имеет недостатки с дерьмом, специфичным для M $.

Ответы [ 4 ]

13 голосов
/ 07 мая 2009

Если вы используете WCF и 3.5 Framework, это не может быть проще. Когда вы помечаете ваши OperationContracts атрибутом WebGet, просто установите для параметра ResponseFormat значение WebMessageFormat.Json. Когда к сервису обращаются RESTful, он вернет данные с помощью DataContractJsonSerializer.

Действительно полезно пометить POCO, которые вы хотите сериализовать JSON, как [DataContract] и пометить каждый сериализуемый элемент как [DataMember]. В противном случае вы получите фанки JSON, как отметил Рик в своем блоге.

4 голосов
/ 18 августа 2010

Я поддерживаю зрелую альтернативу с открытым исходным кодом WCF в ServiceStack , современной, основанной на коде, основанной на модели, структуре замены веб-сервисов WCF поощряющий код и удаленные рекомендации для создания кратких, DRY, высокопроизводительных, масштабируемых веб-сервисов REST .

Включает в себя .NET самый быстрый JSON Serializer и имеет автоматическую поддержку заголовков JSON, JSONP, CORS , а также форм-urlencoded / multipart-formdata. Онлайн-демонстрации - хорошее начало, так как все они используют Ajax.

Кроме того, нет конфигурации XML или кода, и ваш веб-сервис C # с однократной записью предоставляет все конечные точки JSON, XML, SOAP, JSV, CSV, HTML , включенные вне the-box, автоматически с крючками для подключения ваших типов контента при необходимости.

Он также включает универсальных клиентов службы синхронизации / асинхронизации , обеспечивающих быстрый типизированный межсетевой шлюз связи между клиентом и сервером.

Это полный пример всего кода, необходимого для создания простого веб-сервиса, который автоматически без какой-либо конфигурации регистрируется и становится доступным для всех форматов веб-данных по предопределенным и настраиваемым маршрутам REST-ful.

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); 
});
2 голосов
/ 05 марта 2013

Каков наилучший способ создания веб-службы JSON? У нас есть другой команда, которая использует Java, и они настаивают на том, чтобы все общение сделано с использованием JSON. Я предпочел бы использовать WCF, а не какой-либо третьей стороной рамки.

Вот простое пошаговое руководство, которое проведет вас через процесс настройки вашей первой службы WCF, а затем связывает ее с базой данных SQL Server.

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

Он использует любимую Microsoft Northwind базу данных SQL Server и показывает, как написать простую веб-службу JSON WCF для чтения и записи своих данных.

enter image description here

Да, и затем показано, как использовать данные JSON с помощью JavaScript или приложения для iOS.

Удачи!

0 голосов
/ 24 августа 2009

Я использовал JayRock . Это фантастическая технология, просто работает. Вы не получите никаких исключений NullReferenceException, таких как этот дерьмовый WCF, если не настроите его правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...