Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 实时web应用程序的体系结构_Design Patterns_Web_Architecture_Websocket_Real Time - Fatal编程技术网

Design patterns 实时web应用程序的体系结构

Design patterns 实时web应用程序的体系结构,design-patterns,web,architecture,websocket,real-time,Design Patterns,Web,Architecture,Websocket,Real Time,这将是一个相当理论化的问题。我目前正在写我的学士学位论文,其中包括创建一个对象同步框架,很像,但是是本地的(即不是基于云的)。 我需要区分“常规”web应用程序(有更好的术语吗?)和实时应用程序,特别是在体系结构方面。到目前为止,我的想法是: 常规web应用程序基于客户端-服务器模型,即“客户端和服务器以请求-响应消息传递模式交换消息:客户端发送请求,服务器返回响应。” 实时web应用程序维护客户端和服务器之间的持久连接。两者都可以通过该连接(全双工)同时独立地发送和接收消息 我的顾问(应用软

这将是一个相当理论化的问题。我目前正在写我的学士学位论文,其中包括创建一个对象同步框架,很像,但是是本地的(即不是基于云的)。
我需要区分“常规”web应用程序(有更好的术语吗?)和实时应用程序,特别是在体系结构方面。到目前为止,我的想法是:

  • 常规web应用程序基于客户端-服务器模型,即“客户端和服务器以请求-响应消息传递模式交换消息:客户端发送请求,服务器返回响应。”
  • 实时web应用程序维护客户端和服务器之间的持久连接。两者都可以通过该连接(全双工)同时独立地发送和接收消息
  • 我的顾问(应用软件工程系主任)指出,上述观点已经证明应用程序符合体系结构的要求,尽管他不太确定。我还不确信,因为a)对等点不是同质的,b)服务器仍然是一个集中的系统,c)我们仍然使用术语“服务器”和“客户端”
  • 服务器不直接向特定客户端发送消息,而是使用消息传递模式,即客户端连接到消息通道,并在服务器在相应通道中发布消息时接收消息。因此,服务器实际上并不知道它的客户机,尽管他可能知道
  • 主要用例如下:客户机向服务器发送消息(例如,当创建新的todo项目时),服务器对其进行处理(例如,将新的todo项目写入数据库),最后将消息发送给所有其他订阅的客户机。我想到了这个问题,尽管这是一种行为模式,而不是架构模式
  • 但还有另一个用例:服务器自动向订阅的客户端发送一条消息(例如,它识别超过的todo项目的到期日期并将其删除)。因此,通信并不总是从客户端开始
抱歉,时间比预期的长。简而言之,我认为基于web的实时应用程序的架构有三种可能性:

  • 对等(使用异构对等)
  • 具有发布-订阅消息模式和中介的客户端服务器(如果后者对体系结构很重要)
  • 你用完全不同的东西让我惊讶;-)
    我不确定这是否重要,但我在后端和前端使用(基于提供-支持的消息服务)。

    我可以通过以下方式之一阅读您的问题:

    a) 以下哪一个术语最能描述应用程序

    b) 应用程序应该使用哪种体系结构作为其设计的基础

    在我看来,您的问题很好地描述了应用程序的体系结构,无论您想将其称为对等还是客户机-服务器还是其他什么,都是无关紧要的

    也就是说,由于您提到的原因,设计的实时性并不能使其成为对等的。

    “实时”操作或应用程序或系统具有及时性和可预测性约束

    原则上,这与系统体系结构无关——实际上,体系结构必须适合您需要的实时属性

    发布/订阅机制有一个基于延迟的实时度量,从可发布事件发生到事件在所有运营订阅者中显示——简化、实时=实时(想想自动金融交易)。但实时性同样与及时性和可预测性有关。在P/S情况下,感兴趣的可预测性是延迟——在大小和可变性方面(“抖动”是一种特殊情况)。在研究界和实践者界都有很多文献——在你的案例中,我建议阅读RTI网站上的一些优秀文档(尽管IMHO RTI没有尽可能彻底地处理可预测性,但它们是很好的产品)

    非p/S系统,包括但不限于客户机/服务器系统,具有不同的实时性。有多个时间受限(比如)任务在争夺共享资源(如处理器、同步器、网络等)。争用的访问请求必须以满足及时性和可预测性最佳标准的顺序进行调度或调度来解决。每个人都熟悉一个非常简单的特例,即请求有截止日期,而最优性标准是满足所有截止日期。请注意,“满足期限”及时性标准与可预测性标准“始终满足所有要求”一起表达


    在绝大多数真实世界的实时情况下(不限于计算机),标准要复杂得多——例如,实时系统通常要求平均(或最大)拖期最小化或不超过某个值。依赖项(如优先级约束)增加了额外的复杂性。这种实时风格对体系结构及其系统软件的某些属性具有重大影响。为简洁起见,以上所有内容都已大大简化。

    唯一的主要区别在于实时web应用程序的操作。。。实时的。这消除了任何不支持实时更新客户端的体系结构。这完全回答了你的问题。@RobertHarvey谢谢你的回答。因此,您的观点是,只要服务器能够实时更新客户机,体系结构实际上并不重要?对于发布/订阅系统,它可以是P2P、客户端服务器或其他什么。对我来说,这里的难题是,您需要某种状态模型,使用发布/订阅事件来更新状态。但建立一个国家模型可能需要时间