高手们来看看这样的程序该怎么实现。

destiny_03 2015-12-22 10:11:47
  情况是这样的,我有一个程序,需要从服务器接收数据,由于数据量比较大(每秒12+条数据,每条数据约20个double或者string字段),而且该程序需要启动多个,如果每启动一个程序都去服务器收数据对网络带宽要求太高,而且也很浪费资源。所以我打算写一个程序A去接收数据并存到数据库,另外再写一个程序B来做其他工作。

  但是现在有个问题,程序A在收到特定的数据后需要把该条数据传给所有启动的程序B并通知程序B执行某项操作(这种特定的数据不会很频繁,一分钟内最多不超过10条),这种功能该如何去实现。另外是直接把数据传给程序B好一点还是只是通知程序B,然后程序B自己到数据库里面去查询这条数据好?后一种我担心数据库大了之后查询速度会变得很慢(有没有这种可能)。

  除了我设想的这种写两个程序的方法还有没有更好实现方法?

  先谢谢各位高手了,求解答。。。
...全文
168 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
destiny_03 2015-12-22
  • 打赏
  • 举报
回复
多些楼上各位的回复,因为我是初学编程的,还没接触过服务,数据库也只会建立普通的表和最基础的增删改查。针对这两点有没有推荐的参考学习的资料啊?
fontain2 2015-12-22
  • 打赏
  • 举报
回复
用消息广播一下
  • 打赏
  • 举报
回复
自己设计即可。多种方式都可以考虑,只要你对“大的”需求把握到位,那么很具体的简单的不同实现方法,可以不断(例如先完成一个,然后3天以后)重构。
  • 打赏
  • 举报
回复
实际上,不论是你的A直接把数据给B,还是你的A给B通知,都是A给B点什么东西。至于值不值得多访问一次数据库,你可以自己重构的。
夏天的枫 2015-12-22
  • 打赏
  • 举报
回复
把A做成服务,然后B去调,A负责从服务端搞定数据然后存入数据和B端调用数据方法的实现。
qbilbo 2015-12-22
  • 打赏
  • 举报
回复
A做成服务,连接服务端接收数据并写入数据库。 B程序启动后连接A,当A收到特殊数据时推送至B。 A,B之间的通讯可用socket来实现。 至于数据库查询速度的问题,那要看数据库中的表是怎么设计的,有合理的表分区,索引,合理的查询语句,即使表中数据上亿,也可以做到查询无等待。
早起晚睡 2015-12-22
  • 打赏
  • 举报
回复
你数据有那么大吗 现在网络带宽这么大局域网就更不成问题了
  • 打赏
  • 举报
回复
如果只是简单地通知,可以利用自定义Windows消息 简单点说就是A和B约定一个自定义消息码(大于WM_USer) 当需要通知B时,A遍历所有B的进程,这可以通过 foreahc(var process in Process.GetProcessesByName(A)) { PostMessage(process.MainWindowHandle, 自定义消息码, 消息参数(缺省0), 自定义参数); } 然后B重写WndProc方法接收通知 if(msg.Code == 自定义消息码) { } 数据量不大时完全可以直接通过自定义参数把数据投递过去
youzelin 2015-12-22
  • 打赏
  • 举报
回复
数据量大,用通知。数据量大,传输不需要时间吗?
runerback 2015-12-22
  • 打赏
  • 举报
回复
初学编程就做这么高端的东西,真羡慕

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧