gpt4 book ai didi

c# - 我应该考虑在 WCF 双工服务上使用 SignalR 吗?

转载 作者:太空狗 更新时间:2023-10-29 18:35:32 24 4
gpt4 key购买 nike

我正在从事这个项目,其中有一个网站通过远程服务器上的 wcf 双工服务“实时”获取馈送数据。更新频率约为一秒,我使用 SignalR 客户端更新 View 。 (每次有来自服务的传入“数据包”,我都会通知我的客户)。

目前,由于双工服务的工作方式,我在使用此解决方案时遇到了一些问题。每当没有“实时”连接到后端服务器并为其提供数据时,该服务就应该将最新的数据库条目推送到我的客户端。这行得通,但我的客户观点似乎没有正确地接受这一点。如果我尝试刷新 View ,实际上会随机更新不时更新的值。 (调试时,值都在notify-methods中)

我试过使用 jquery/ajax 在我的 Controller 中调用一个方法来设置这样的连接:

setTimeout(function() {

$.ajax({
type: 'GET',
url: '@Url.Action("ConnectToDataSources", "Fleet")',
cache: false,
success: function (result) {

}
});
}, 1000)

在我的 Controller 中:

public void ConnectToDataSources()
{
UnitContract[] listOfUnitsFromService = UnitClient.GetUnits(false, "", false);

Model = new FleetModel
{
UnitDetails = GenerateUnitDetails(listOfUnitsFromService.ToList()),
};

foreach (UnitDetailsModel unit in Model.UnitDetails)
{
var ods = new OperationDataSource();
var ads = new ActivityStatusDataSource();

ads.Start(unit.UnitId, ActivityReceived, AliveReceived);
ods.Start(DataReceived, unit.UnitId);
_dataSources.Add(ods);
_activityStatusDataSources.Add(ads);
}
}

经过大量试验和错误后,我考虑更改后端服务以也使用 SignalR。我是否正确理解 SignalR 实际上可以替代我在服务器和客户端上描述的上述功能?

另外,如果有人有相同类型的设置,我非常想听听您是如何解决这个问题的:)

最佳答案

是的。 SignalR 在可以使用的地方使用 WebSockets,在不能使用的地方使用回退。 WebSockets 比双工服务好得多,因为:

  1. 它使用单个 TCP 连接双向发送数据。
  2. 服务器不需要知道客户端的 IP(它在双工服务中知道,这在共享 IP 的情况下不起作用)。

所以.. 是的。 SignalR 非常适合。

关于c# - 我应该考虑在 WCF 双工服务上使用 SignalR 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21252536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com