目前有个A系统,需要将获取的数据,推动给其他应用系统,比如有3个应用系统,其实会有更多App1,App2,App3,由于这3个应用系统不知道什么时候会有他们的数据,所以需要A系统获得最新数据以后,主动推送给这3个应用,目前不知道采用什么方案比较好。
方案1:应用系统不断轮询A系统提供额web Service去查询是否有他们的数据,这个方案由于应用会很多,会造成不必要的资源浪费,因为可能有些应用几天都不会有数据。
方案2:各应用系统自己开发web service接收数据,并在A系统提供各自web service的地址,A系统通过不同类型的数据调用不同地址的接口,这个方案需要其他应用根据统一的标准去时间这个接口,A系统只要更换连接地址。缺点就是其他应用的接口实现都要统一。
想问下有没有更好的方案,目前用的是C#实现。
其实这里面有几个问题需要注意:
1、A系统的数据是否需要及时通知其他APP,如果不需要则可以定时交互,当然这个时间要根据实际情况确定。
2、不管什么解决方案,A系统和其他App都需要写接口,那么你是否有权利定义这些接口?
3、“A系统通过不同类型的数据调用不同地址的接口”:说明A系统的主要任务是确定去哪个接口获取数据,
现在分2中情况的解决方案:
1、不要及时更新数据
只需要在A系统或者App设置定时任务去更新数据即可
2、及时更新数据
此时需要数据系统通知A系统,在由A系统通知App
我对实际情况还不是很了解,有的地方可能理解错误,如果有问题在联系,另外方案1不推荐,不仅对App是消耗,对A系统也是极大的消耗,因为App会很多的。
数据需要及时更新的,这是个短信平台,A系统不断监听移动等的接口获取最新短信,然后判断这个短信回复是发给哪个应用的,目前我这里的办法就是所有应用都实现我定的web service接口,然后注册的时候直接app1,web service地址1 app2,web service地址2,然后我通过判断是给app1的,那么代理类就连接到app1的web service地址1。这个方法是目前我能想到的,但是缺点就是 各个应用的接收web service的接口都要统一,否则没办法通过切换地址调用方法。
@Leon_yang: 你这实现是正确,但不知道实现起来是否有困难,主要是App是否能统一接口,这个不是你工作的范畴,这需要去和个App负责人沟通。
同电脑的话命名管道怎么样?
是不同电脑
用Redis的Publish/Subscribe:
Redis支持这样一种特性,你可以将数据推到某个信息管道中,然后其它人可以通过订阅这些管道来获取推送过来的信息。