关于C#实时推送

seansmith0426 2016-06-22 05:15:50
Visual Studio 2010 IDE
c#服务端程序
Oracle 10g 32bit
个推推送
android客户端
实时监测数据库中的一个表,要求变化就推送到C#程序中,C#程序收到返回值后用个推推送到android客户端。
如何实现?
...全文
1299 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwh2004 2016-09-09
  • 打赏
  • 举报
回复
数据库里写个触发器 数据表有新添加记录就调用磁盘中某个绝对路径下的c#的exe程序(把记录的id或成绩作为命令行参数传给程序),c#程序用post或websocket把信息推送给相应的电脑或手机。
yezhendong185 2016-09-08
  • 打赏
  • 举报
回复
引用 9 楼 zhi_ai_yaya 的回复:
[quote=引用 5 楼 seansmith0426 的回复:] [quote=引用 1 楼 cuitang1031 的回复:] 程序轮询检测吧
我要做成变化就推得那种,轮询定时间间隔会有延迟,时间间隔定小了太耗费服务器资源了。[/quote] 请教个小学问题: 你三年级期末考试,交卷回家了。老师负责批改然后出成绩。 问:你怎样可以第一时间知道你的期末成绩? 要求:要立即、马上、不能间隔1分钟,老师出成绩你就要一分钟内马上知道。 参考答案: 1.你每隔半分钟就打电话问一次老师。 2.让老师出成绩后半分钟内打电话通知你。[/quote] 这比喻
我叫小菜菜 2016-09-08
  • 打赏
  • 举报
回复
引用 16 楼 yezhendong185 的回复:
[quote=引用 9 楼 zhi_ai_yaya 的回复:] [quote=引用 5 楼 seansmith0426 的回复:] [quote=引用 1 楼 cuitang1031 的回复:] 程序轮询检测吧
我要做成变化就推得那种,轮询定时间间隔会有延迟,时间间隔定小了太耗费服务器资源了。[/quote] 请教个小学问题: 你三年级期末考试,交卷回家了。老师负责批改然后出成绩。 问:你怎样可以第一时间知道你的期末成绩? 要求:要立即、马上、不能间隔1分钟,老师出成绩你就要一分钟内马上知道。 参考答案: 1.你每隔半分钟就打电话问一次老师。 2.让老师出成绩后半分钟内打电话通知你。[/quote] 这比喻[/quote] 有问题?
xuzuning 2016-09-07
  • 打赏
  • 举报
回复
我不开机,你往哪里推?
yuanshuai1233 2016-09-07
  • 打赏
  • 举报
回复
使用第三方推送吧 比如极光 百度推送 比自己实现的要好
我是城墟垣 2016-06-24
  • 打赏
  • 举报
回复
正常用户不会管数据库的东西吧
我是城墟垣 2016-06-24
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
你所谓的“个推”,可以这样看,相当于在服务器端有每一个手机的“进程映射”,如果有1万手机那么数据库端就有1万个坑爹的额外进程在轮询它。 其实在你只有几十个手机客户端时,这可以骗人。一些小的博客网站,平常并发客户端在线数量奇少,可以这样偏偏投资人。 然后这样的产品,死的很快。
你怎么知道楼主是要做产品呢?我看楼主的意思是做一个DBA的工具啊——只要特定的表有修改就通知相关人员吧
我叫小菜菜 2016-06-23
  • 打赏
  • 举报
回复
扩展提问: 全校小学生都想立即、马上,一分钟内知道成绩,又该怎么办? 如果这2个问题有答案了,那楼主的问题也有答案了~
我叫小菜菜 2016-06-23
  • 打赏
  • 举报
回复
引用 5 楼 seansmith0426 的回复:
[quote=引用 1 楼 cuitang1031 的回复:] 程序轮询检测吧
我要做成变化就推得那种,轮询定时间间隔会有延迟,时间间隔定小了太耗费服务器资源了。[/quote] 请教个小学问题: 你三年级期末考试,交卷回家了。老师负责批改然后出成绩。 问:你怎样可以第一时间知道你的期末成绩? 要求:要立即、马上、不能间隔1分钟,老师出成绩你就要一分钟内马上知道。 参考答案: 1.你每隔半分钟就打电话问一次老师。 2.让老师出成绩后半分钟内打电话通知你。
fungchou 2016-06-23
  • 打赏
  • 举报
回复
如果你的数据量不是很大,可以用这种方式。 在数据库建立消息表,数据有变化时,将推送内容写入消息表。 C#写个独立线程,死循环每秒查询一次消息表,如果消息表有记录,就读取消息内容,利用个推发送,发送完成后删除消息表的记录。
seansmith0426 2016-06-23
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
你所谓的“个推”,可以这样看,相当于在服务器端有每一个手机的“进程映射”,如果有1万手机那么数据库端就有1万个坑爹的额外进程在轮询它。 其实在你只有几十个手机客户端时,这可以骗人。一些小的博客网站,平常并发客户端在线数量奇少,可以这样偏偏投资人。 然后这样的产品,死的很快。
我不是这个意思。我这是独立出来App的一个程序,并不是嵌套进App的。所以只有一个进程在访问。我得意思是,数据发生变化,推给我得程序,然后我的程序调用个推方法,个推推送再推给APP。
seansmith0426 2016-06-23
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
简单地随便说一下吧。这方面我并希望有太多的人能够动手去搞开发,但是希望有较多的热你能够识别那些骗人的东西。 首先,有些完全不懂编程开发的人,对我说过许多遍“xxxx公司有个手机推送接口,问我们的即时通讯系统要不要买人家的平台账号”。且不管这些公司的平台生存期有多长、平台质量如何,单说最基本的事情,“推送”跟我们的即时通讯的push消息推送是两码事。手机接收到推送的消息是直接被那些流氓程序置顶到手机的待机界面、或者首界面顶部,它们还可能通过偷看你的手机的进程从而与之“通讯”。但是这种推送通常都有较大延迟,例如有些产品延时4个小时也算是正常,而且到达率可能只有80%不到。 而我们任何人要做一个即时通讯系统,或者随便一个什么与自己公司的业务服务器联网的软件,那都需要基本是99.999999%成功率,而且在几百毫秒内推送到全世界各地的手机app。我们随便做一个tcp双向通讯程序就能做到且很简单做到的事情,其实其特点跟那些商业公司所说的“推送”完全是两码事儿! 再说所谓的“监视数据库”。数据库有巨大的、海量的 log信息,如洪水一般。你不可能想当然地去知道“监视”什么数据记录,否则就你直接把数据库系统给搞死了。即使是 SQL Server 支持 .net 以 SqlCacheDependency 方式感知数据修改,也是在页面级别的,而且可能有1秒钟延迟。更何况稍微“人性胡为”一点就会让数据库服务器被垃圾操作阻塞得价值下降100倍?! 这方面从数据库出发来考虑问题,看似简单,实际上就相当于超市没有保安、没有感应报警器,完全是招小偷去的节奏。实际上任性地搞这方面的东西,就是拿用户练手。小用户觉得挺爽,等服务量刚刚成长为同行业领先水平的几十分之一,这样的系统就垮了,这样的软件创业公司或者app就倒闭了。(然后这帮开发人员又到别的公司去坑了) 真正的推送要从业务系统出发。例如当一个大V上线时,可能他的5万个粉丝中凡是 app 在线的用户(不管登录到系统的哪一个区级接入服务器上)都会在 app 运行中收到一条提醒信息。这个功能安排的出发点,在于从这个业务出发。这里的精确性安排,可以让系统性能的损耗降(相比那些不太注重精细安排的设计方法)到千分之一以下。 绝不是滥用数据库。滥用数据库的那种设计者,就好像是满大街贴性病小广告的那些人,因为不知道贴在哪里才最对地方,所以滥用浆糊。
说的好,我刚接触这个,理解确实浅。
seansmith0426 2016-06-23
  • 打赏
  • 举报
回复
引用 1 楼 cuitang1031 的回复:
程序轮询检测吧
我要做成变化就推得那种,轮询定时间间隔会有延迟,时间间隔定小了太耗费服务器资源了。
threenewbee 2016-06-22
  • 打赏
  • 举报
回复
android使用极光推送,net使用signalr
  • 打赏
  • 举报
回复
你所谓的“个推”,可以这样看,相当于在服务器端有每一个手机的“进程映射”,如果有1万手机那么数据库端就有1万个坑爹的额外进程在轮询它。 其实在你只有几十个手机客户端时,这可以骗人。一些小的博客网站,平常并发客户端在线数量奇少,可以这样偏偏投资人。 然后这样的产品,死的很快。
  • 打赏
  • 举报
回复
简单地随便说一下吧。这方面我并希望有太多的人能够动手去搞开发,但是希望有较多的热你能够识别那些骗人的东西。 首先,有些完全不懂编程开发的人,对我说过许多遍“xxxx公司有个手机推送接口,问我们的即时通讯系统要不要买人家的平台账号”。且不管这些公司的平台生存期有多长、平台质量如何,单说最基本的事情,“推送”跟我们的即时通讯的push消息推送是两码事。手机接收到推送的消息是直接被那些流氓程序置顶到手机的待机界面、或者首界面顶部,它们还可能通过偷看你的手机的进程从而与之“通讯”。但是这种推送通常都有较大延迟,例如有些产品延时4个小时也算是正常,而且到达率可能只有80%不到。 而我们任何人要做一个即时通讯系统,或者随便一个什么与自己公司的业务服务器联网的软件,那都需要基本是99.999999%成功率,而且在几百毫秒内推送到全世界各地的手机app。我们随便做一个tcp双向通讯程序就能做到且很简单做到的事情,其实其特点跟那些商业公司所说的“推送”完全是两码事儿! 再说所谓的“监视数据库”。数据库有巨大的、海量的 log信息,如洪水一般。你不可能想当然地去知道“监视”什么数据记录,否则就你直接把数据库系统给搞死了。即使是 SQL Server 支持 .net 以 SqlCacheDependency 方式感知数据修改,也是在页面级别的,而且可能有1秒钟延迟。更何况稍微“人性胡为”一点就会让数据库服务器被垃圾操作阻塞得价值下降100倍?! 这方面从数据库出发来考虑问题,看似简单,实际上就相当于超市没有保安、没有感应报警器,完全是招小偷去的节奏。实际上任性地搞这方面的东西,就是拿用户练手。小用户觉得挺爽,等服务量刚刚成长为同行业领先水平的几十分之一,这样的系统就垮了,这样的软件创业公司或者app就倒闭了。(然后这帮开发人员又到别的公司去坑了) 真正的推送要从业务系统出发。例如当一个大V上线时,可能他的5万个粉丝中凡是 app 在线的用户(不管登录到系统的哪一个区级接入服务器上)都会在 app 运行中收到一条提醒信息。这个功能安排的出发点,在于从这个业务出发。这里的精确性安排,可以让系统性能的损耗降(相比那些不太注重精细安排的设计方法)到千分之一以下。 绝不是滥用数据库。滥用数据库的那种设计者,就好像是满大街贴性病小广告的那些人,因为不知道贴在哪里才最对地方,所以滥用浆糊。
季雨林 2016-06-22
  • 打赏
  • 举报
回复
程序轮询检测吧

110,533

社区成员

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

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

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