web 应用程序之间如何通信,共享和传输数据

web 应用程序之间如何通信,共享和传输数据,第1张

首先阐明:WEB应用程序绝大多数为C/S的终端程序,即客户端/服务器结构的系统。

通信:通过web页面将数据反馈给服务器,然后经服务器将数据传递给另一个WEB页面;这也解释了如何共享;

传输数据当然是通过物理链路层了比如说:网线、电话线、光纤、无线……

共享内存相关的API怎么使用不难:

1 首先调用shmget分配一个新的共享内存,这里你可以指定其大小,如果你要分配一个整形,那你可以将size参数设置成4,如果你要共享一个结构体那就将size参数设置成你的结构体大小, *** 作系统不关心你要共享什么,它只关心你要分配多少个字节的区间。而且实际上 *** 作系统会将你要求的大小按照内存页面的大小进行对齐,也就是说它可能实际上给你分配若干个页面的物理存储空间,只要这个空间能够容纳你所指定的大小就ok了。它的第三个参数是关于一些访问权限设置的,要讲起来太长,建议自己搜索一下,或者用man查查帮助。总之,调用完shmget以后系统会给你创建一段共享内存,然后返回给你一个shmid,也就是这个共享内存的标识,你可以理解为给它取了个名字。

2 接着调用shmat将这段共享内存映射到你的进程的虚拟地址空间上。这个函数的第一个参数就是你之前调用shmget创建的共享内存的名字shmid;第二个参数是个指针,指向你的进程虚存空间中的某个地址,你可以通过传入一个确定的地址强行要求 *** 作系统将共享内存映射到你指定的虚存地址上(可能会失败,如果你指定的虚拟地址空间已经映射了别的物理存储空间),也可以通过传入0地址让系统给你选择一个合适的地址(它会通过返回值把地址返回给你)。第三个参数则允许你指定一些特殊的标志位,还是那句话,太复杂自己搜索一下看看,一般应用不需要用到。

至于例子嘛你可以看看下面这个链接:

>

1、APPkey可以通过作用在共享数据百缓存器上的过程(或任务)实现程序间的通信。

2、APPkey可以通过程序间的直接通信实现数据共享。

3、APPkey可以通过数据库实现应用程序度间的数据共享。

4、APPkey的文件传输可以通过发送格式化文件实现应用程序间数据共享。

扩展资料:

注意事项:

一、在定义消息类型时,从平台上保存消息类型实际上是把消息类型的配置信息配置到xml文件中,xml文件的保存地址为apphome目录下,但是要想能在web中成功运行并且找到定义的消息类型必须把对应的xml文件复制到tomcat的对应发布目录下才能成功加载

二、发送端口,接收端口的配置信息产生的xml文件也应该保存到tomcat对应的发布目录下

三、适配器的配置不能从平台中的组件配置中直接添加,适配器类不是配置完成后存储在xml文件中的。而是事先配置在扩展点文件中,在平台启动时调换eunmAdaptor方法把所有的适配器类从扩展点文件中load出来的。

四、对应的服务也是配置在xml文件中,在平台配置完成后产生的配置文件也要复制到tomcat对应的发布目录中才能成功运行,

五、在扩展点文件中配置bis消息类型映射信息时,消息类似的标签不能重名,否则内存中只能加载第一个重名标签对应的消息类型。

一般来说在常用的 *** 作系统中有以下几种方式实现进程间通信

管道法(即把一个程序的输入和另一个程序的输出对接起来,实现方式根据自己使用编程语言的不同各异)

信号法,(利用 *** 作系统自带的信号 *** 作,让一个程序给另一个发信号但是信号的种类有限,所以很少用

共享数据库,安装数据库软件,两个程序能访问同一个数据库,在数据库里放消息

共享网络端口,(可以理解成一个进程使用一个网络端口,另一个想跟他通信的时候就直接去访问这个端口

1、多进程并发

在传统UNIX中较常用,针对每一种单独的业务逻辑的实例生成不同的线程进行处理。典型的程序实例是针对TCP的多个不同的客户端连接,fork出多个子进程进行处理,每一个客户端对应一个单独的子进程,在子进程处理退出后,由父进程回收其资源。

优点:各进程间的地址空间相互隔离,不会因为某些不当 *** 作将整个应用搞挂。

业务逻辑代码简单清晰,代码平铺直叙,没有复杂的异步状态逻辑。

缺点:如果需要在进程间进行交互或者共享数据,需要使用IPC。

2、多线程并发

在现代 *** 作系统windows、linux中很常用,针对单独的业务逻辑的不同的实例在同一个进程中创建多个线程进行并发处理。典型的例子是,TCP的多个客户端在同一个进程中处理,针对每个客户端都单独对应的线程进行交互,共享同一个进程的所有资源。

优点:共享进程空间,访问共享数据非常容易。

没有多的进程空间开销,线程上下文切换快,调度效率比多进程高。

业务逻辑代码简单清晰,代码平铺直叙,没有复杂的异步状态逻辑。

缺点:维护线程的工作由进程内部代码处理,比如线程数量,增加一定的复杂性。

线程间共享数据的竞争关系复杂,需要处理同步和死锁问题。

3、IO多路复用

即在单线程控制多个异步业务逻辑,也就是事件驱动多个业务的状态处理,典型的有windows中的消息处理机制,还有linux中的信号量处理。可以在单一线程中,处理多种不同的业务逻辑,比如同时处理用户输出,鼠标点击,窗口重绘和网络输入。

优点:所有业务实例的逻辑在单一线程中处理,排除代码时序BUG,理论上不存在竞争和死锁问题。

没有多的进程空间开销,也没有上下文切换问题,CPU利用率高。

共享进程空间,访问共享数据非常容易。

缺点:

线程需要管理多个不同实例的状态机,并正确处理对应事件导致不同状态的迁移。

业务种类多的情况下,需要人为代码控制多种状态机。

并发点越多造成状态越多,管理粒度越细, 业务逻辑代码不是顺序的,不容易维护和理解。

异步状态过多,造成资源管理较为复杂,容易产生资源泄漏。

Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见性和有序性原子性。Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解决了原子性的问题,理想情况下我们希望做到“同步”和“互斥”。有以下常规实现方法:

以上就是关于web 应用程序之间如何通信,共享和传输数据全部的内容,包括:web 应用程序之间如何通信,共享和传输数据、LINUX下系统编程,多进程间数据共享,即共享变量、APPkey有什么作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10625310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存