最常用的最传统的通信方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最常用的最传统的通信方式相关的知识,希望对你有一定的参考价值。

参考技术A 即发即忘FireAndForget

立即发送一个请求,无需为这个请求发送响应报文。适用于监控埋点,日志上报等,这种场景下无需回执,丢失几个请求无伤大雅。

请求响应RequestResponse

请求方发送一条请求消息,响应方收到请求后并返回一条响应消息。传统的HTTP是典型的RequestResponse。

流RequestStream

请求方发送一个请求报文,响应方发回N个响应报文。传统的MQ是典型的RequestStream。

通道RequestChannel

创建一个通道上下文,双方可以互相发送消息。IM是个典型的RequestChannel通讯场景。

Angular 2~6:与“组件”通信的最有效方式是啥?

【中文标题】Angular 2~6:与“组件”通信的最有效方式是啥?【英文标题】:Angular 2~6: What is the most efficient way to communicate with "Components"?Angular 2~6:与“组件”通信的最有效方式是什么? 【发布时间】:2018-12-10 13:43:55 【问题描述】:

目前我只知道这些方法:

@输入/@输出 |这是为了让孩子与父母交流,反之亦然 @ViewChild |这是为了和子组件通信 @Injectable 服务 |与任何组件共享数据 rxjs/behaviorsubject |与任何组件共享数据

我还看到了一个@Injectable 组件示例,但我不确定这是否也是共享组件数据的一种方式。

好的,所以我希望上面的文字足够清晰,以便大家能够理解我要去哪里。我需要最有效和最干净的方式来与任何组件共享组件变量和方法,而不必造成大混乱并看到性能下降。

我正在考虑使用以下方式共享数据,但我不确定这在拥有多个组件时是否有效:

家长

import  Component, OnInit, ViewChild, AfterViewInit  from '@angular/core';
import  ChildComponent  from './child/child.component';

@Component(
    selector: 'app-parent',
    templateUrl: './parent.component.html',
    styleUrls: ['./parent.component.scss']
)
class ParentComponent implements OnInit, AfterViewInit 
    public instance: ParentComponent;
    @ViewChild(ChildComponent) childComponent;

    constructor() 
        this.instance = this;
    

    doSomethingWithParentMethod(strData: string) 
        console.log('parent data: ' + strData);
    

    ngOnInit(): void 
    

    ngAfterViewInit() 
        this.childComponent.doSomethingMethod('pass data to child in string type');
    

在父 HTML 文件中:

<app-child [parent]="instance"></app-child>

孩子

@Component(
    selector: 'app-child',
    templateUrl: './child.component.html',
    styleUrls: ['./child.component.scss']
)
class ChildComponent 
    @Input() parent;

    public function doSomethingMethod(strData: string) 
        console.log('child data: ' + strData);
    


【问题讨论】:

【参考方案1】:
@Injectable Service | share data with any component

根据需求变化,但通用服务主要用于数据传输

【讨论】:

我想在单击父 html 按钮元素时使用来自其他组件的方法。我知道这可以通过 (click)="fireMethod()" 实现,但是在父方法内部,我希望能够触发子方法,反之亦然。

以上是关于最常用的最传统的通信方式的主要内容,如果未能解决你的问题,请参考以下文章

通信系统物理层的端到端优化方法

IPC通信方式

IPC通信方式

物联网方向常见通信方式有哪些?

iOS App之间常用的五种通信方式及适用场景总结

linux下netlink的使用简介