问题标签 [client-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
733 浏览

client-server - 用于服务器到客户端通信的 MSMQ

我们正在研究 MSMQ 以实现持久的“推送”服务器到客户端的通信。每台服务器最多可以有 1000 个客户端。

在我们的一个测试中,我们向 300 个离线客户端发送了一条小消息,然后向一个在线客户端发送了一条消息。最后一条消息延迟了 40 多分钟,因为 MSMQ 正在处理无法传递的消息(通过 MMC 观察到)。我们还使用 MSMQ 作为它运行良好的返回路径。

有没有办法通过减少尝试连接到脱机主机的时间来使 MSMQ 适应这种使用模式?如果没有,是否还有其他更适合的排队产品,或者它是你自己的时间?原始吞吐量不是优先级,但传出队列的数量和可预测性/最大延迟是优先级,客户端(可能是相当旧的机器)上的内存占用也是如此。

0 投票
5 回答
8786 浏览

design-patterns - 事件驱动逻辑的设计模式

我正在开发一个桌面应用程序,它依赖于它从服务器接收的 XML 数据。有几个文件,需要在不同的时间下载。

许多数据结构都填充了解析的数据。文件和数据结构之间的对应关系不是一对一的,事实上可能相当复杂。

应用程序状态和状态之间的转换取决于这些下载信息的内容(以及它们目前的可用性)。

晦涩的 spagetti 代码处理所有下载事件和相互依赖关系。

我一直在研究某种模式以更统一的方式使用它,但我认为开发人员社区已经找到了最合适的实践和模式。有人知道吗?

0 投票
6 回答
1252 浏览

.net - 如何增加系统的用户数量?

我有一个客户端/服务器应用程序,它依赖于 MS SQL 数据库进行后端存储,服务器应用程序是一个 WCF TCP 服务,它通过从数据库信息集中进行选择来处理客户端请求。

该服务配置为 PerSession 并支持 500 个会话。在客户端,用户可以打开不同的视图,每个视图都有一个我的服务对象(代理对象),所以每个视图都是一个会话;每个视图都有一个线程计时器,每秒使用代理对象从服务器请求数据。

该应用程序对于具有 8 个视图的少量用户运行良好,但是当我增加数量时,SqlConnection.Open 中发生超时异常,因为连接池中没有可用的连接。

每个视图都有会话/对象,因为 WCF 服务不是线程安全的;它依赖于使用 SqlDataReaders 和 SqlAdapters 的单线程数据库访问层。

有没有办法增加数据库连接的数量?好像800是最高的!!从您的角度来看,我怎样才能增加用户数量?

我是否应该更改 DB 层并使其成为多线程并使 WCF 服务单一?我认为这是设计中的瓶颈(您能推荐一篇关于 ADO.net 中的多线程的文章)

PS:

我可以用内存数据库或任何更快的存储替换数据库吗?

根据答案:

我更改了后端服务以关闭每个方法调用的连接,但我面临同样的问题,因为用户数量增加了延迟增加(超过一秒),这是否意味着我必须更改数据库解决方案?什么是替代解决方案?

之后:

我尝试了两种解决方案

  1. 每个方法调用打开和关闭 sql 连接
  2. 增加连接字符串中连接池的大小

但是,如果我增加用户数量,两者都会给我带来延迟,同时我监控 sql porfiler 中的查询,似乎每个查询不会超过 20 毫秒。

0 投票
5 回答
2934 浏览

java - 编写桌面 GUI 客户端与服务器通信

我有一个 Java 应用程序,它是一个长时间运行的进程(我们称它为“服务器”)。我必须编写一个桌面 GUI(最有可能在 Swing 中),我们称之为“客户端”,它可以连接到这个应用程序并且:

  1. 显示来自应用程序的状态更新
  2. 向应用程序提供特定的“手动触发”命令

客户端和服务器之间的每次交互(对话线程)都会很短,但可能涉及一些上下消息。实现这样的事情有哪些不同的选择?速度对我来说不是一个大问题。我更感兴趣的是我可以在不被管道细节困扰的情况下发展对话协议。我现在想到的选项是套接字、RMI、JMS 和 JavaSpaces。

0 投票
1 回答
2792 浏览

c# - 多线程服务器中的 Monitor.Wait/Pulse 竞争条件

我在多线程 TCP 服务器中遇到了联锁 Monitor.Wait 和 Monitor.Pulse 的问题。为了演示我的问题,这是我的服务器代码:

这是我的客户代码:

客户端发送 7 条消息,但服务器只打印 4 条:

我怀疑监视器通过允许在发生(在方法中)之前发生Pulse(在服务器的方法中)而感到困惑,即使在它调用之前应该仍然拥有对象上的锁,然后该方法可以获得锁并发送它的. 如果您在服务器的方法中注释掉这两行:AcceptWaitThreadStartThreadStartsyncMonitor.Wait()AcceptPulseStop()

调用服务器的方法时会出现剩余的消息Stop()(即唤醒服务器的sync对象会导致它分派剩余的传入消息)。在我看来,这只能发生在ThreadStartandAccept方法之间的竞争条件下,但是对象周围的锁sync应该可以防止这种情况发生。

有任何想法吗?

非常感谢,西蒙。

附言。请注意,我知道输出出现乱序等,我特别询问锁和监视器之间的竞争条件。干杯,SH。

0 投票
5 回答
4310 浏览

html - AJAX 响应:数据(JSON、XML)还是 HTML 片段?

我只是想知道 AJAX 响应的“理想”输出格式是什么?使用某些客户端 JavaScript 模板引擎将纯数据(JSON、XML)渲染到页面中?还是“按原样”呈现到页面中的 HTML 片段?

你的偏好是什么,为什么?

0 投票
4 回答
11071 浏览

svn - 有没有办法知道SVN服务器的URL?

现在,由于未知主机名错误,我们在允许客户端访问 SVN 服务器时遇到问题。是否有错误会告诉服务器计算机正确的 SVN 服务器 URL?

我在Collabnet Subversion Server上,客户端使用 TortoiseSVN。

0 投票
3 回答
203 浏览

networking - 衡量应用程序对网络流量影响的指标

我正在编写一个应用程序,并且能够将其吞吐量(通过网络发送的每秒比特数)设置为我希望的任何速率。但是,我想将其设置得尽可能高,只要网络上的其他流量不会受到严重影响。

问题是,我没有一个好的衡量标准来衡量这种影响。我想到了以下几个,但都不是真正“完整”的:

  1. 增加数据包的平均延迟时间
  2. 丢包增加
  3. 抖动增加
  4. 增加完成 tcp 事务的平均时间(使用 http 下载文件)

有没有标准的度量?您对如何衡量应用程序对网络的影响还有其他想法吗?

顺便说一句 - 我对网络有完全的控制权,并且可以采取我想要的任何测量来计算该指标。

谢谢,

肉里

0 投票
2 回答
2890 浏览

client-server - 为什么某些 posix 共享内存段和 posix 信号量对 ipcs 不可见

我使用 posix 共享内存和 pshared=1 的 posix 未命名信号量构建了一个客户端服务器应用程序。信号量放置在共享内存中。程序运行良好,但是当我键入 ipcs -m 或 ipcs -s 时,我没有看到我创建的任何共享内存段或信号量。为什么会这样?


0 投票
1 回答
48 浏览

client-server - 客户端意外关闭

我正在开发一个 .net 富客户端服务器应用程序,客户端通过 Web 服务调用服务器,如果客户端在调用服务器时突然关闭(连接关闭)会发生什么情况?服务器能检测到这个吗?如果客户端正在提交将一组数据持久化到服务器数据库的请求,事务还会运行吗?提前致谢