如何在UI中显示XML-RPC.Net Server实例数据?

时间:2014-01-16 08:44:02

标签: wpf xml-rpc simplexmlrpcserver xml-rpc.net

我们最近尝试在我们的项目中使用XML-RPC.Net库。 服务器(.Net Remoting)和客户端都是根据我们在http://xml-rpc.net/上找到的说明进行的。

已建立连接,我们从服务器获取数据等。

正如标题所述,现在,我们想知道如何使我们的XML-RPC服务器实例(在第一次客户端调用之后创建)能够向WPF UI提供反馈。 我们想要完成的是在服务器属性上注册一个事件,以便调用可以到达UI线程。

我们对这方面的任何建议持开放态度。

以下是在服务器端注册频道的代码:

IDictionary props = new Hashtable();
props["name"] = "SubsetHttpChannel";
props["port"] = 5678;
channel = new System.Runtime.Remoting.Channels.Http.HttpChannel(
           props,
           null,
           new XmlRpcServerFormatterSinkProvider()
        );
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType( typeof(SubsetServer), "subsetserver.rem", WellKnownObjectMode.Singleton);

这是显示在UI上创建Server实例后我们如何设置属性的代码:

Server = new SubsetServer(); 
Server.Machine.OnChangeState += delegate(State actual, State next, Event pEvent)
        {
            uiWindowInstance.PostMessage(string.Format("Subset Server: {0} -> {1}", actual.Name, next.Name));
};

使用的技术:VS2012,WPF 4.5和XML-RPC.NET 2.5.0

先谢谢

1 个答案:

答案 0 :(得分:0)

感谢任何花时间阅读并尝试回答的人。

我找到了一个适合我的解决方案。我想与你分享,希望有人可以给出任何暗示,这是一个可能在将来产生问题的解决方案。

经过分析,我发现两个服务器实例都在同一个进程中运行。所以我在我的服务器中创建了一个Singleton作为属性。

我在Singleton中放了我需要的东西,所以对于我想在我的问题中使用的委托,代码现在是:

Server = new SubsetServer();
Server.**singleton**.Machine.OnChangeState += delegate(State actual, State next, Event pEvent)
        {
            uiWindowInstance.PostMessage(string.Format("Subset Server: {0} -> {1}", actual.Name, next.Name));
        };

希望这有助于其他任何人。 如果您发现任何缺陷,请发表评论。