2009-07-07 8 views
5

मान लें मैं सरल XML-RPC सेवा है कि अजगर के साथ लागू किया जाता है:एक्सएमएल-आरपीसी का उपयोग कर पायथन और सी # के बीच संवाद कैसे करें?

from SimpleXMLRPCServer import SimpleXMLRPCServer 

    def getTest(): 
     return 'test message' 

    if __name__ == '__main__' : 
     server = SimpleThreadedXMLRPCServer(('localhost', 8888)) 
     server.register_fuction(getText) 
     server.serve_forever() 

किसी को मुझे बताओ कि कॉल करने के लिए getTest() सी # से समारोह कर सकते हैं?

उत्तर

2

सी # से getTest विधि को कॉल करने के लिए आपको एक एक्सएमएल-आरपीसी क्लाइंट लाइब्रेरी की आवश्यकता होगी। XML-RPC ऐसी लाइब्रेरी का एक उदाहरण है।

3

मेरे अपने सींग हार्न नहीं है, लेकिन: http://liboxide.svn.sourceforge.net/viewvc/liboxide/trunk/Oxide.Net/Rpc/

class XmlRpcTest : XmlRpcClient 
{ 
    private static Uri remoteHost = new Uri("http://localhost:8888/"); 

    [RpcCall] 
    public string GetTest() 
    { 
     return (string)DoRequest(remoteHost, 
      CreateRequest("getTest", null)); 
    } 
} 

static class Program 
{ 
    static void Main(string[] args) 
    { 
     XmlRpcTest test = new XmlRpcTest(); 
     Console.WriteLine(test.GetTest()); 
    } 
} 

कि क्या करना चाहिए चाल ... ध्यान दें, इसके बाद के संस्करण पुस्तकालय LGPL, जो या नहीं आप के लिए काफी अच्छा हो सकता है हो सकता है।

3

उत्तर के लिए धन्यवाद, मैं darin लिंक से xml-rpc लाइब्रेरी आज़माता हूं। मैं निम्नलिखित कोड

using CookComputing.XmlRpc; 
... 

    namespace Hello 
    { 
     /* proxy interface */ 
     [XmlRpcUrl("http://localhost:8888")] 
     public interface IStateName : IXmlRpcProxy 
     { 
      [XmlRpcMethod("getTest")] 
      string getTest(); 
     } 

     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
      } 
      private void button1_Click(object sender, EventArgs e) 
      { 
       /* implement section */ 
       IStateName proxy = (IStateName)XmlRpcProxyGen.Create(typeof(IStateName)); 
       string message = proxy.getTest(); 
       MessageBox.Show(message); 
      } 
     } 
    } 
के साथ GetTest फ़ंक्शन को कॉल कर सकता हूं
संबंधित मुद्दे