2008-09-19 12 views
9

Necesito comunicarme con un servidor XML-RPC desde un cliente .NET 2.0. ¿Puedes recomendar alguna biblioteca?¿Cuál es la mejor biblioteca .Net XML-RPC?

EDIT: Habiendo probado XML-RPC.Net, me gusta la forma en que genera proxies dinámicos, es muy limpio. Lamentablemente, como siempre, las cosas no son tan simples. Yo soy el acceso a un servicio XML-RPC que utiliza la técnica poco ortodoxa de tener nombres de objeto en los nombres de los métodos, así:

object1.object2.someMethod(string1) 

Esto significa que no puedo utilizar los atributos para establecer los nombres de mis métodos , ya que no se conocen hasta el tiempo de ejecución. Si comienza a intentar acercarse a las llamadas en bruto, XML-RPC.Net comienza a ser bastante complicado.

tanto, cualquier persona sabe de una simple y sencilla librería XML-RPC que simplemente me deje hacer (pseudocódigo):

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

tuve un vistazo a una cosa por Michael alguien en CodeProject, pero hay no hay pruebas unitarias y el código se ve bastante terrible.

¡A menos que alguien tenga una mejor idea, parece que voy a tener que iniciar un proyecto de código abierto por mi cuenta!

Respuesta

4

Si el nombre del método es todo lo que está cambiando (es decir, la firma del método es estática) XML-RPC.NET puede manejar esto por usted. Esto se trata in the FAQ, señalando "Sin embargo, hay algunas API XML-RPC que requieren el nombre del método que se genere dinámicamente en tiempo de ejecución ..." Desde el FAQ:

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

Esto genera un XmlRpcProxy la que implementes el especificado interfaz. Establecer el atributo XmlRpcMethod hace que methodCalls use el nuevo nombre del método.

3

Hace algún tiempo utilicé la biblioteca desde www.xml-rpc.net con cierto éxito y puedo recomendarla, se sintió bien diseñada y funcional.

1

También intenté ejecutar www.xml-rpc.net con Mono en Windows XP y funcionó en Mono .NET Runtime también correctamente. Solo para información para todos.

Cuestiones relacionadas