C# 使用DB的桌面客户端-直接连接还是代理(WCF)?

C# 使用DB的桌面客户端-直接连接还是代理(WCF)?,c#,database,wcf,architecture,C#,Database,Wcf,Architecture,首先,我不再是一名程序员,而是喜欢与开发保持联系。我想为我的团队成员开发一个简单的系统来记录他们的工作和其他数据。基本上,我需要每个成员使用一个桌面应用程序,它将基本上登录到数据库,并允许做CRUD操作。我可以想出两种方法: 拥有一个带有harcoded(或可配置)db连接字符串的桌面应用程序,并且必须为每个用户创建一个帐户。因此,基本上登录系统意味着使用给定的usesrname登录数据库 拥有一个与WCF服务通信的桌面应用程序,该应用程序将处理所有数据库连接,因此DB root帐户可以与一个简

首先,我不再是一名程序员,而是喜欢与开发保持联系。我想为我的团队成员开发一个简单的系统来记录他们的工作和其他数据。基本上,我需要每个成员使用一个桌面应用程序,它将基本上登录到数据库,并允许做CRUD操作。我可以想出两种方法:

  • 拥有一个带有harcoded(或可配置)db连接字符串的桌面应用程序,并且必须为每个用户创建一个帐户。因此,基本上登录系统意味着使用给定的usesrname登录数据库
  • 拥有一个与WCF服务通信的桌面应用程序,该应用程序将处理所有数据库连接,因此DB root帐户可以与一个简单的用户表一起使用

  • 第一点显然容易得多,因为它基本上只是连接到数据库,但我不确定那里的安全问题。

    我建议使用Web API而不是WCF。我发现Web API更易于开发和使用。此外,您还可以通过HTTPS保护Web API-easy peasy

    无论如何,Timothy Groote的观点是正确的:您需要保护对Web服务层的访问。当然,有很多方法可以做到这一点——从在HTTP头中传输身份验证开始(当然,使用SSL加密),一直到设置OAuth提供者

    如果这是一个简单的系统,我会投票支持选项1。这种选择将限制您的灵活性和可扩展性,但在这种简单的情况下,这可能是正确的权衡


    如果要使用选项1,是否可以使用集成安全性连接到数据库?这意味着您不必在连接字符串中存储凭据。如果不能使用集成安全性,那么可以研究加密连接字符串。但是,您可能不需要这样做-如果这是一个有限版本的应用程序,并且用户通常是值得信任的,那么如果用户知道自己的数据库连接信息,这实际上是一个问题吗?

    WCF不会神奇地解决任何安全问题,如果有任何问题,那么让项目更复杂也无助于保证它的安全。使用WCF,您将通过自己的协议(而不是数据库连接器提供商开发的协议)通过网络传输身份验证请求和数据,从而负责端到端加密。谢谢。我认为WCF通信某种程度上是安全的,至少我不会在应用程序中存储数据库凭据。