高分求助ASP.NET怎样与WINFORM进行通信

睡江鱼 2014-07-22 03:54:31
最近遇到一个奇葩需求,要重启远程机,远程机有很多台,想法是这样的,用ASP.NET做一个页面,把所有需要重启的VM放在这个页面里,然后需要重启的时候直接点某个BUTTON,就能实现重启。网站服务器里放一个client,每台VM上放一个SERVER端负责监听
当点这个BUTTON的时候,会把所有需要重启的VM list传给Client.这个client的作用是负责 与vm上的server端通信 ,告诉他执行shutdown命令(client端与server端都是用WINFORM做的),然后实现 重启。
现在就是不知道ASP.NET页面怎样与WINFORM进行通信。求各路大神指点,或者有更好的方法。thanks in advance.
...全文
640 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
sankgod 2014-08-29
  • 打赏
  • 举报
回复
楼主解决了没有啊,目前也有一个这样的需求,asp.net点击按钮,传一个参数给winform,winform调用自己的方法弹出界面。 楼上上的方法不知道具体实现,我这个是实时的触发式通信。。。
  • 打赏
  • 举报
回复
.Net remoting 命名管道 NamedPipeStream 共享内存 MemoryMappedFile socket 冷门一点的就用自定义WM消息 asp中调用PostMessage发送这个消息 winform中重写wndProc消息处理,判断收到这个消息 不过由于IIS服务是在隔离的Session0中,asp里获取winform的窗口句柄要绕点弯子
饕餮123 2014-08-29
  • 打赏
  • 举报
回复
用socket进行通信吧
zhengyong710521 2014-08-29
  • 打赏
  • 举报
回复
就用socket。asp.net页面发送socket请求。winform端监听端口,收到消息就处理相应操作。
孙大诚_SunRobin 2014-08-01
  • 打赏
  • 举报
回复
页面上点击button,把参数传给服务器。现在的问题就是服务器与控制关机的Client的通信问题。不同进程间怎么通信?或许可以使用WebService或者WCF。
by_封爱 2014-07-31
  • 打赏
  • 举报
回复
2个办法 我来整理下.. 第一种 就是数据库 比如设置某个字段0是关机1是开机. 当然那些电脑不需要刷新..因为ado本身体提了数据库监听的方法.也就是 只要数据库发生了改变会通知的 具体请google SqlDependency 第二种就是socket 所有的客户端(你的电脑)都跟服务器建立tcp/ip的连接. 网页 也使用tcpclient给服务器发送数据 服务器接收到之后 根据命令的类型解析出来你要给某个电脑关机 然后把相关命令发送给相关电脑(当然你这电脑也是负责接收东西的) 电脑(客户端)接收到信息之后想干什么都行了.控制桌面发送截图任务管理器随便玩了 所以 你的需求 只要弄明白了 不是 很难.很好理解.
波-仔 2014-07-31
  • 打赏
  • 举报
回复
学习了
黑子大哥 2014-07-30
  • 打赏
  • 举报
回复
http://www.cnblogs.com/wishyouhappy/p/3734269.html 这里给LZ一篇websocket的文章,只能帮你到这里了
黑子大哥 2014-07-30
  • 打赏
  • 举报
回复
LZ 知道Web socket不 同样也可以点击按钮触发服务器,服务器在后台发送socket命令
likevs 2014-07-29
  • 打赏
  • 举报
回复
引用 15 楼 azhasj 的回复:
[quote=引用 14 楼 huanggreat 的回复:] socket \、 鉴于楼主2分高分,请尽快前来自首!
别这样好吧,最后20分了,我的全部家档[/quote] 楼主啊,要知道,没分没动力啊,没分没人回答,所以,你有事没事,就来论坛YYJJ,见贴就回复,不管对不对,只要不要错得离谱就成,这样你的分一天至少收入100多以上吧
睡江鱼 2014-07-24
  • 打赏
  • 举报
回复
引用 14 楼 huanggreat 的回复:
socket \、 鉴于楼主2分高分,请尽快前来自首!
别这样好吧,最后20分了,我的全部家档
  • 打赏
  • 举报
回复
socket \、 鉴于楼主2分高分,请尽快前来自首!
myhope88 2014-07-24
  • 打赏
  • 举报
回复
用socket进行通信吧
yzf86211861 2014-07-24
  • 打赏
  • 举报
回复
20分 好高啊
祥子爱游戏 2014-07-24
  • 打赏
  • 举报
回复
socket,webserver,用同一个数据库
  • 打赏
  • 举报
回复
我做过类似的东西也是web与winform的 用的就是笨的办法 如同三楼 虽然很笨 但是还是很不错的 虽然做不到时时监测 但是可以间隔几分钟 select一下数据库
likevs 2014-07-23
  • 打赏
  • 举报
回复
这种需求太简单了,我只出解决方案一: 在ASP.NET程序里,新建一个【简单处理程序】,比如GetProgress.ashx,你定义一个publick的静态类,注意,必须是静态类,类里面包含一个集合,最好是键/值对的集合。比如List<string> listOfKey ; 然后,你在ASP.NET与WinForm两者间约定好密钥,一一对应 在ASP.NET上操作时,请求GetProgress.ashx,把相应的【密钥】和【指令】保存到listOfKey 在WinForm上,弄个定时器,每隔10分钟或者更短时间,就请求一次GetProgress.ashx,请求的时候记得带上约定的【密钥】,然后,GetProgress.ashx会根据【密钥】,从静态类里的集合中获取到相应的【指令】(如果该密钥存在的话),并返回,记得返回密钥后,要移除集合里的相应【密钥】,以便 于下次再使用。 说明:C#开发的WinForm是能够直接请求GetProgress.ashx的,具体请百度一下,至于GetProgress.ashx返回值时,WinForm上能否正常接收,这倒是个问题,我还没测试过,因为我之前是中间多了一层WCF中转服务,所以,楼主自己慢慢测试,如果不行,就加一层中介WCF来服务于数据交换呗 这个解决方案的关键点是利用【静态类】在C#中是全局变量的本质,它随程序生而生,死而死,全局共用,不管多少用户从哪个角落访问,都共用这个数据,这也是区别seesion的地方。 不过楼主要注意,该静态类虽然是全局,但是,它会随ASP.NET程序的死亡而死亡,所以,IIS那,请配置ASP.NET程序的闲置时间久一些,默认是15分钟,要不然,打个比方,你这边ASP.NET页面发指令后,把该指令保存到集合中,但等了10分钟,另一边的WinForm都还没来访问获取(定时器设置时间间隔为15分钟或以上的情况),那有可能的后果是IIS觉得ASP.NET程序没人访问在,闲着也是闲,Windows操作系统自身的资源分配算法,会让IIS把该ASP.NET给挂起,暂停,以致造成集合里的指令丢失 所以,要么就是设置WinForm定时器的时间间隔短一些,要么就是配置IIS的该网站的闲置时间久一些这样
睡江鱼 2014-07-22
  • 打赏
  • 举报
回复
引用 3 楼 ttg520 的回复:
比较笨的方法把指令保存到数据库中,远程机器监控数据库中变化就行了
可以时时监听么?
霜寒月冷 2014-07-22
  • 打赏
  • 举报
回复
引用 6 楼 azhasj 的回复:
[quote=引用 2 楼 chz415767975 的回复:] 你web 和 winform 有用到数据库么? 如果用了,通过改变 数据库表中的某一字段状态state 如 1 客户端执行重启,0 就不执行。执行命令都通过 winform 来运行,web 里面只是改变数据状态
有用到数据库的,那WINFORM要不停的检测数据库的字段值呀?[/quote] 间隔5分钟检索一次对数据库基本没丝毫影响的
睡江鱼 2014-07-22
  • 打赏
  • 举报
回复
引用 2 楼 chz415767975 的回复:
你web 和 winform 有用到数据库么? 如果用了,通过改变 数据库表中的某一字段状态state 如 1 客户端执行重启,0 就不执行。执行命令都通过 winform 来运行,web 里面只是改变数据状态
有用到数据库的,那WINFORM要不停的检测数据库的字段值呀?
加载更多回复(5)

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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