Альтернативы WCF - PullRequest
       23

Альтернативы WCF

18 голосов
/ 11 августа 2009

В настоящее время я реализую приложение Silverlight, использующее WCF для связи между клиентом и сервером. Я слышал, что при использовании WCF мы обязательно используем некоторые технологии Microsoft на стороне клиента и не можем легко заменить это на что-нибудь - по крайней мере, на реализацию по умолчанию SOAP WPF.

Итак, мои вопросы:

  • Это правда?
  • А как насчет услуг Restful WCF? Я представляю простую реализацию REST, и любой клиент может связаться с этой стороной сервера через REST. Да? Нет?
  • Каковы (хорошие) альтернативы выбрасыванию WCF? И зачем мне это делать?

Ответы [ 5 ]

15 голосов
/ 02 января 2012

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

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

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

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

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

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); 
});
12 голосов
/ 11 августа 2009

Я слышал, что с помощью WCF мы связаны использовать некоторые технологии Microsoft в клиентская сторона

Ну, тогда тебе лгали!

Многие поставщики и библиотеки с открытым исходным кодом поддерживают SOAP - это стандарт W3C, а не идея Microsoft.

Одной из отличных альтернатив для службы RESTful является ASP.NET MVC, который, как я обнаружил, представляет собой очень простой способ представления методов непосредственно в виде URL-адресов.

4 голосов
/ 11 августа 2009

WCF основан на SOAP (по умолчанию - также поддерживает REST) ​​и может легко взаимодействовать с любым клиентом, который может понимать и говорить на SOAP.

К ним относятся языки и системы, такие как Java, PHP и многие другие.

WCF - это реализация Microsoft, но все стандарты - это международные и совместимые стандарты. Миркософт не имеет ничего общего со стандартами.

Марк

3 голосов
/ 11 августа 2009

WCF дает вам уровень абстракции по тому, как вы / хотите общаться.Таким образом, вы можете выбрать привязку, специфичную для Microsoft, но вы также можете использовать протокол SOAP или использовать оба, чтобы клиент, не принадлежащий Microsoft, мог общаться через fe.SOAP и другие клиенты могут использовать более надежные способы.
Что касается REST, вы можете посмотреть выступление Хансельмана о NDC здесь .Он может не отвечать на ваш вопрос напрямую, но может указывать вам на что-то.
Что касается альтернатив, я не вижу ничего, что могло бы работать на .NET, кроме веб-сервисов (но, потому что WCF дает вам все это и многое другоеЯ бы предпочел считать это более старым способом, чем реальной альтернативой).

1 голос
/ 11 августа 2009

Для java - проверка совместимости wcf Sun's Project Tango ссылка

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