Учебное руководство: Простой клиент XML-RPC WCF

Обновление: Я предоставил полный пример кода в ответе ниже.

Я создал свой собственный небольшой пользовательский сервер XML-RPC, и так как я хотел бы сохранить вещи простыми, и на стороне сервера и на стороне клиента, что я хотел бы выполнить, должен создать самый простой клиент (в C# предпочтительно) использующий WCF.

Скажем, тот Контракт для сервиса, подвергнутого через XML-RPC, следующие:

[ServiceContract]
public interface IContract
{
    [OperationContract(Action="Ping")]
    string Ping(); // server returns back string "Pong"

    [OperationContract(Action="Echo")]
    string Echo(string message); // server echoes back whatever message is
}

Так, существует два метода в качестве примера, один без любых аргументов и другого с аргументом простой строки, обе строки возврата (только ради примера). Сервис подвергается через http.

Aaand, что является следующим?:)

13
задан mr.b 15 August 2013 в 14:45
поделиться

2 ответа

Вдохновленный ответом Дуби, я поискал дополнительную информацию (примеры) по этому вопросу и пришел к следующим выводам.

Шаги по созданию простого клиента WCF XML-RPC:

  1. Загрузите XML-RPC для WCF с этой страницы: http://vasters.com/clemensv/PermaLink,guid,679ca50b-c907-4831-81c4 -369ef7b85839.aspx (ссылка для скачивания вверху страницы)
  2. Создайте пустой проект, нацеленный на .NET 4.0 Full framework (иначе System.ServiceModel.Web будет недоступен позже)
  3. Добавить проект Microsoft.Samples.XmlRpc из архива в ваш проект
  4. Добавить ссылку на проект Microsoft.Samples.XmlRpc
  5. Добавить ссылки на System.ServiceModel и System.ServiceModel.Web

Пример кода

using System;
using System.ServiceModel;
using Microsoft.Samples.XmlRpc;

namespace ConsoleApplication1
{


    // describe your service's interface here
    [ServiceContract]
    public interface IServiceContract
    {
        [OperationContract(Action="Hello")]
        string Hello(string name);
    }


    class Program
    {
        static void Main(string[] args)
        {
            ChannelFactory<IServiceContract> cf = new ChannelFactory<IServiceContract>(
                new WebHttpBinding(), "http://www.example.com/xmlrpc");

            cf.Endpoint.Behaviors.Add(new XmlRpcEndpointBehavior());

            IServiceContract client = cf.CreateChannel();

            // you can now call methods from your remote service
            string answer = client.Hello("World");
        }
    }
}

Пример сообщения запроса / ответа

Запрос XML

<?xml version="1.0" encoding="utf-8"?>
<methodCall> 
    <methodName>Hello</methodName> 
    <params> 
        <param> 
            <value> 
                <string>World</string> 
            </value> 
        </param> 
    </params> 
</methodCall> 

Ответ XML

<?xml version="1.0" encoding="utf-8"?>
<methodResponse> 
    <params> 
        <param> 
            <value> 
                <string>Hello, World!</string> 
            </value> 
        </param> 
    </params> 
</methodResponse> 
13
ответ дан 1 December 2019 в 23:14
поделиться

Самый простой способ - использовать фабрику каналов WCF

    IStuffService client = new ChannelFactory<IStuffService>(
        new BasicHttpBinding(),
        *"Stick service URL here"*)
        .CreateChannel();

и выполнить запрос, просто позвонив

var response = client.YourOperation(params)

Подробнее здесь: http://msdn.microsoft.com/en-us/library/ms734681.aspx

изменить: отредактировано;)

6
ответ дан 1 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: