什么';C#桌面客户端连接到远程MySQL数据库的最佳方式是什么?

什么';C#桌面客户端连接到远程MySQL数据库的最佳方式是什么?,c#,mysql,database,web-services,apache,C#,Mysql,Database,Web Services,Apache,我正在学习c#,正在编写一个Windows客户端,它从计算机收集温度数据,并需要将数据发送到远程linux mySQL数据库 我本来打算直接在c#client中编程,但我想学习更多的方法来实现这一点并获得经验。直接编程会不太安全,很可能需要额外的连接器 你们中有谁能告诉我其他的方法,或者你们会怎么做 有没有办法编写一个在我的linux mySQL服务器上充当web服务的C#程序?我应该在哪里查找/搜索以了解更多信息。它叫什么特别的东西吗?或者可能不是用C#? 我应该编写一个php脚本来接受来自

我正在学习c#,正在编写一个Windows客户端,它从计算机收集温度数据,并需要将数据发送到远程linux mySQL数据库

我本来打算直接在c#client中编程,但我想学习更多的方法来实现这一点并获得经验。直接编程会不太安全,很可能需要额外的连接器

你们中有谁能告诉我其他的方法,或者你们会怎么做

  • 有没有办法编写一个在我的linux mySQL服务器上充当web服务的C#程序?我应该在哪里查找/搜索以了解更多信息。它叫什么特别的东西吗?或者可能不是用C#?

  • 我应该编写一个php脚本来接受来自C#桌面客户端的HTTP发送/获取请求吗?

  • 还有其他方法吗?

现实世界中最“专业”的方式是什么?试着自己学习!:D

格式:

  • Windows桌面:用C语言编程的客户端,用于检索临时数据并需要发送到服务器
  • Linux服务器:运行Apache和mySQL服务器,并已设置数据库。与外部连接关闭

如果温度传感器生成事件,那么我会将数据从Windows框“推送”到Linux框-这将节省后者经常检查并没有发现更新。但是,如果您只是采集温度样本,我会从Linux机器中“提取”数据。无论哪种方式,如果您想使用HTTP,您都需要在任何一方使用web服务

或者,您可以从C#远程连接到MySQL数据库,并直接写入数据(这样就不需要web服务)。这可能是最快的方法让它工作


“哪一个是专业的”问题是主观的——以上三个选项都可以。只需让代码清晰简洁:)

直接将MySQL服务器公开到internet上是一种严重的争议,此外,这会给您提供一组相当粗粒度的访问权限,这可能不足以满足您的应用程序,因此运行某种服务器应用程序是正确的选择

  • 使用mono,您可以在Linux服务器上运行大量基于.Net(以及C#)的代码。经验法则是:如果它没有Winforms GUI并且没有P/Invoke,它就可以正常工作。当然,这需要在服务器上安装mono,这在大多数商业主机上都没有
  • 在PHP中运行服务器使其更具可移植性,但会带来性能开销。此外,它不允许某些业务逻辑对象在DLL程序集中实现并在两侧使用
  • 至于协议:选择你的毒药。经验法则是,像SOAP这样的预定义协议往往需要更多的工作(并且在第一步中需要更多的学习),但从长远来看,它们往往更健壮

对于您的特殊用例,我个人会使用一个基于PHP的快速解决方案,其中协议只是一个简单的GET,带有几个参数,一个是温度,另一个是验证客户端的参数。

我的建议是设置一个web服务,以便与您的windows客户端通信。直接连接到mysql服务器是可以的,如果它们都驻留在同一个lan中,但如果不是,例如,您的windows客户端运行在到处旅行的某台笔记本电脑上,或者甚至mysql服务器只允许本地传入连接,您应该设置一个web服务。此外,当通过其他端口的连接被阻止时,http连接通常可以通过防火墙


php是一种很好的方法。由于您正在学习c#,您可能还想使用c#进行服务器端编程,那么,为什么不试试mono?

您可以使用胖客户端将传感器的MO从一个轮询更改为另一个事件:只需在本地进行轮询,并且仅当读数发生变化时才将其推送到服务器。谢谢:)我想指出的是,我希望每天两次发送大约300个潜在的传输,可能是在同一时间。只有在事件发生变化时,我才会把你的建议包括在内。那么PHP是否仍然足够?明天还要看mono。我只是想知道明天从哪里开始研究的方向。300个5位数的值每一个都是1500字节的有效负载,比如说,使用JSON和打包时小于4K——我认为PHP中根本不会出现性能问题。即使是“temp1=123.456&temp2=234.567&…”的查询字符串也足够好了。不过可能想使用POST。