C#Desktop客户端连接到远程MySQL Db的最佳方法是什么?

时间:2011-12-30 10:27:01

标签: c# mysql database web-services apache

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

我打算直接在c#客户端编程,但我想学习更多方法来获得这些并获得经验。直接编程会降低安全性,并且很可能需要额外的连接器。

你们任何人都可以告诉我其他方法,或者你们会这样做的方法吗?

  • 如何在我的Linux mySQL Server上编写充当Web服务的C#程序?我应该在哪里查找/搜索以了解更多相关信息。它被称为特别的东西吗?或者也许它没有在C#中完成?

  • 我应该编写一个接受来自C#Desktop客户端的HTTP SEND / GET请求的php脚本吗?

  • 还有其他任何方式吗?

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

格式:

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

3 个答案:

答案 0 :(得分:2)

我的建议是设置一个Web服务来与您的Windows客户端进行通信。直接连接到mysql服务器是好的,如果它们都驻留在同一个局域网中,但如果没有,例如你的Windows客户端运行在一些笔记本电脑到处运行,甚至mysql服务器只允许本地传入连接,你应该设置一个Web服务。此外,http连接通常可以通过防火墙,而其他端口上的连接被阻止。

php是一种很好的方法。既然你正在学习c#,你也可以使用c#来进行服务器端编程,为什么不尝试单声道?

答案 1 :(得分:1)

强烈建议直接将MySQL服务器暴露给互联网,此外,这为您提供了一组相当粗略的访问权限,这可能对您的应用程序来说不够,因此运行某种服务器应用程序是正确的方法。去。

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

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

答案 2 :(得分:0)

如果温度传感器生成事件,那么我会将数据从Windows框“推送”到Linux框 - 这将保存后者经常检查并找不到更新。但是,如果你只是采取温度样本,我会从Linux机器“拉”数据。无论哪种方式,如果您想使用HTTP,您将需要任何一方的Web服务。

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

'这是专业'的问题是主观的 - 以上三个选项都很好。只需使代码清晰简洁:)