VB.net,连接到我的主应用程序

时间:2015-12-15 17:20:20

标签: vb.net client

我不确定如何用它来搜索它。

我所拥有的是我工作的公司的自动控制中心,它运行在Windows Server 2012 VM上。我创建的这个应用程序(我将几个以前的程序员的应用程序合并到其中)连接到多个SQL表,并通过服务器其他内部vb应用程序以及处理订单的主要ERM应用程序提供的数据更新信息,我们公司销售的每件商品的库存,物料清单等。

我创建了自己的Windows通知弹出窗口(完全从头开始,因为自上次更新以来在Windows 10中出于某种原因,正常的通知弹出窗口不会创建弹出窗口...加上我的弹出窗口[在形式和功能上看起来与标准窗口8 - 10弹出窗口相同也有一个引脚,它可以无限期地在屏幕上保存通知)

原因是因为在我的通知弹出窗口中,我有指示器复选框,用于切换绿色,黄色,橙色,红色的浅色图形,指示需要运行的不同模块的状态以及连接和处理使我们保持业务的业务方面。

目前我必须远程登录Windows Server VM才能监控这个“监视器”(我将弹出窗口设置到位,这样我就可以最小化主窗体,只需看一眼即可确保它正在运行)

我必须监视它的原因是因为之前的程序员(我接手的那个人)没有在其他客户端上进行适当的数据验证,并且用户有时可以将垃圾数据传递给处理器,然后处理器掏出然后我需要解决它并获得再次运行的模块。

所以,现在我的实际问题......

我想制作另一个以某种方式连接到这个应用程序的应用程序(直接通过共享xml /文本文件或tcp / ip),这些应用程序看起来与我的通知表单相同,该表单将放在我的电脑上并允许我监控这个程序,所以我不必远程进入虚拟机。

我并没有特别要求任何人给我写这个代码,但我已经想到了我可能想要继续的方向,但是正在寻找关于如何继续进行的更多专家意见(为我节省了一些试验和错误,因此减少浪费时间和头痛)如果有人尝试过这样的事情并且可以指导我。

因此,这个主应用程序使用settings.settings文件来存储变量数据以及几个本地和异地SQL数据库表来存储业务相关数据。

我正在考虑生成一个文件,其中包含有关每个模块状态的相关信息,然后让客户端从中读取(这也允许我将该文件存储在我们的网络服务器上并在场外访问而不会打击我们防火墙上的洞允许它连接到主程序)

所以这更像是在问我是否有人对此有更好的想法。

2 个答案:

答案 0 :(得分:1)

我有几个想法:

  • 使用文件将信息传输到不同的客户端 BAD ,您会遇到文件锁定问题,如果您刚刚创建了它,则很容易导致更多问题。

所以下一部分取决于信息是否仍然有效,如果它的“旧”。我用两种方式做这件事

(如果您不关心您遗漏或遗失的信息,这听起来并不像您)>

  • 我使用UDP流广播状态消息,然后让任何客户端监听并执行操作。如果我的计算机关闭或网络连接有问题,有时会遗漏这些东西,但是当我这样做的时候我并不关心它

(“更好的方式”)

  • 我创建了一个web服务,让服务器将所有内容发布到webservice并给它一个ID,然后我有客户端检查web服务是否有“新”消息,每次客户端收到一条消息,webservice将其标记为read并且将来不会在邮件列表中返回该邮件。这需要更多的工作,并且需要您能够向服务器添加代码(因此它可以“发布”到Web服务)但是如果您将服务发布到互联网,它还具有“随处”工作的额外好处。 / LI>

答案 1 :(得分:0)

考虑到这一点,我想我想出了一个解决方案(除非有人有更好的方式[在相同的复杂程度或更低的范围内])

我将在窗体上添加每个控件更新(已经为通知表单上的每个对象更新了一个变量(这是因为主模块在后台线程上运行)

通知弹出窗口在为主程序运行的循环计时器上刷新,该主程序在与主窗体GUI相同的线程中运行。当这个计时器运行时,它会使通知表单检查从后台线程更新的每个变量的状态,直到它处于什么阶段以及正在运行/未运行的等等。

所以我将扩展它并使用客户端程序将读取和显示的信息更新文本文件。

或者我可能只是在已经存在的SQL数据库中创建另一个小表,客户端可以从中读取。可能更好的方式,虽然我们的笑话是基于这样一个事实:前一个人喜欢使用表来存储包含程序本身变量的所有内容。

我真的不想依赖于创建一个VPN来隧道进入这里的环境,也不想在我们的防火墙中创建一个例外,以便在后见之明通过tcp / ip或udp协议访问这个程序。