访问远程数据库-- 最佳做法

3
我想创建一个 C# .NET WPF 应用程序,与我的外部 Linux 服务器进行通信。我的服务器上运行着一个 MySQL 数据库。
最好的访问数据库的方式是什么(select、DML),而不是直接通过 ADO.NET 访问它?
我考虑过使用 Web 服务,但我不知道如何在 Linux 服务器上使用 C# 创建和访问 Web 服务。而且我需要一个安全的连接(https)。
我希望你能告诉我最佳实践。

1
ADO.NET出了什么问题? - Bas
1
你是否固定于ADO.NET,还有一些库,如NHibernate,可以配置为从包括MySQL在内的一系列数据库中读取。 - Liath
1
这个问题与WPF有什么关系? - Sheridan
抱歉,我已经删除了建议的标签。 - Stefan Schmid
2
直接访问数据库可能是最佳实践。编写 WS 是另一种选择。如果您想用 C# 编写它,可以使用 Mono,但当编写 WS 时,当然有数不清的选项,这并不意味着您必须使用 C# 编写 Linux WS 才能从 C# 访问它。 - Tobberoth
显示剩余5条评论
2个回答

4
一个Web服务是解耦你的应用程序客户端和服务器部分、提供访问数据库的增强安全性等的好方法。
你正在使用Linux服务器上的MySQL,所以如果你想在服务器的Web服务中也使用.NET,你需要使用Mono http://www.mono-project.com/。此外,看一下WCF,因为它提供了很多构建Web服务所需的功能。如果我没记错的话,甚至有一种方法可以从现有的ADO.NET数据层自动生成整个Web服务。
然而,如果你在服务器端使用不同的框架/语言感到舒适,那么如果你不想自己开发,就有很多选择。搜索“restful mysql”,你会得到一些线索,例如:

使用REST公开MySQL数据库/表

http://phprestsql.sourceforge.net/

http://restsql.org

当然,在这里安全性非常重要。 HTTPS会加密您的通信,但您还需要实施可靠的身份验证。


1

使用C#编写客户端应用程序 <-> 使用Java编写服务端应用程序 <-> 连接MySQL数据库

我理解得对吗?如果是这样的话,你可以做的最简单的事情就是编写一个简单的servlet,它可以在url上获取存储过程的名称和参数,调用MySQL,并将结果序列化返回给客户端应用程序(例如XML)。

为允许以此方式调用的存储过程设置一个常见的前缀,以便您可以轻松过滤潜在的恶意调用,或者使用MySQL安全性来过滤。


我不想再使用Java了,我会研究PHP Web服务,因为PHP默认运行在我的服务器上。 - Stefan Schmid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接