2008-09-19 2 views
9

Мне нужно связаться с сервером XML-RPC от клиента .NET 2.0. Можете ли вы порекомендовать любые библиотеки?Какая из лучших библиотек .Net XML-RPC?

EDIT: попробовав XML-RPC.Net, мне нравится, как он генерирует динамические прокси, он очень опрятен. К сожалению, как всегда, все не так просто. Я доступ службы XML-RPC, который использует неординарный метод наличия имен объектов в именах методов, например, так:

object1.object2.someMethod(string1) 

Это означает, что я не могу использовать атрибуты, чтобы установить имена моих методов , поскольку они не известны до времени выполнения. Если вы начинаете пытаться приблизиться к необработанным вызовам, XML-RPC.Net начинает становиться довольно грязным.

Итак, кто-нибудь знает простой и простой библиотеки XML-RPC, который будет только позвольте мне делать (псевдокод):

x = new xmlrpc(host, port) 
x.makeCall("methodName", "arg1"); 

Я имел взгляд на вещи Майкла кто-нибудь на Codeproject, но не являются модульными тестами, и код выглядит довольно тяжело.

Если кто-то не имеет лучшей идеи, похоже, что мне нужно начать проект с открытым исходным кодом самостоятельно!

ответ

4

Если имя метода - это все, что меняется (т. Е. Подпись метода статична) XML-RPC.NET может справиться с этим для вас. Это адресовано in the FAQ, отметив, что «Тем не менее, есть некоторые XML-RPC API, которые требуют имя метода, который будет генерироваться динамически во время выполнения ...» Из FAQ:

ISumAndDiff proxy = (ISumAndDiff)XmlRpcProxyGen.Create(typeof(ISumAndDiff)); 
proxy.XmlRpcMethod = "Id1234_SumAndDifference" 
proxy.SumAndDifference(3, 4); 

Это создает XmlRpcProxy, который implementes указанный интерфейс. Установка атрибута XmlRpcMethod приводит к тому, что methodCalls использует новое имя метода.

3

Я использовал библиотеку от www.xml-rpc.net некоторое время назад с некоторым успехом и могу порекомендовать ее - она ​​хорошо себя зарекомендовала и функционировала.

1

Я также попытался запустить www.xml-rpc.net с Mono в Windows XP, и он также работал в Mono .NET Runtime. Только для информации для всех.