我正在构建ac#/ wpf项目。它的架构是这样的:
现在我的问题是-我希望服务器能够将更改发送到客户端。例如,如果我对客户端ABC进行了更改,则希望服务器知道如何在客户端计算机上调用服务。问题是,我不知道服务器将如何调用客户端。
一个小例子,以防我不能很好地解释它:服务器在计算机1上,有两个客户端,在计算机2和3上。客户端2有一辆丰田汽车,客户端3有一辆宝马汽车。计算机1上的服务器想告诉客户端2它有一辆新车,复仇者联盟。
如何在客户端上保持跟踪和呼叫服务?我想到了将其IP地址(从cmd调用ipconfig)保存在数据库中-但是这不是基于它们所连接的WI-FI /网络吗?
谢谢你的帮助!
您可以尝试实现SignalR。这是一个很棒的库,它使用Web套接字将数据推送到客户端。
编辑:
SignalR允许您在WPF应用程序(客户端)可以连接到的控制台应用程序(服务器)上设置集线器,从而帮助您解决问题。客户端启动时,您将使用指定的集线器注册它们。当服务器上发生某些更改时,可以将其从服务器集线器推送到客户端。客户端将从服务器接收信息,并允许您根据需要进行处理。
一些代码的粗略模型:
namepsace Server{}
public class YourHub : Hub {
public void SomeHubMethod(string userName) {
//clientMethodToCall is a method in the WPF application that
//will be called. Client needs to be registered to hub first.
Clients.User(userName).clientMethodToCall("This is a test.");
//One issue you may face is mapping client connections.
//There are a couple different ways/methodologies to do this.
//Just figure what will work best for you.
}
}
}
namespace Client{
public class HubService{
public IHubProxy CreateHubProxy(){
var hubConnection = new HubConnection("http://serverAddress:serverPort/");
IHubProxy yourHubProxy = hubConnection.CreateHubProxy("YourHub");
return yourHubProxy;
}
}
}
然后在您的WPF窗口中:
var hubService = new HubService();
var yourHubProxy = hubService.CreateHubProxy();
yourHubProxy.Start().Wait();
yourHubProxy.On("clientMethodToCall", () => DoSometingWithServerData());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句