C# 我应该使用自托管WCF作为客户端还是直接连接到数据库?

C# 我应该使用自托管WCF作为客户端还是直接连接到数据库?,c#,.net,entity-framework,wcf,C#,.net,Entity Framework,Wcf,我有一个关于WCF和数据库连接的问题。。。我将控制台应用程序作为服务器,其中包含一些逻辑。然后我有了WPF应用程序,它可以在连接到服务器的多台计算机上运行,并从中获取一些数据。我还需要使用数据库。。所以我决定创建WCF服务,用实体框架连接到数据库。到目前为止,一切顺利。。现在所有客户端都可以访问WCF服务。。但我还想用托管此WCF服务的服务器连接到数据库。。我找到了一些教程,介绍了如何从作为客户端托管服务的应用程序创建连接。但是我不确定这是否是个好主意。。所以我想问。。最好使用来自主机应用程序的

我有一个关于WCF和数据库连接的问题。。。我将控制台应用程序作为服务器,其中包含一些逻辑。然后我有了WPF应用程序,它可以在连接到服务器的多台计算机上运行,并从中获取一些数据。我还需要使用数据库。。所以我决定创建WCF服务,用实体框架连接到数据库。到目前为止,一切顺利。。现在所有客户端都可以访问WCF服务。。但我还想用托管此WCF服务的服务器连接到数据库。。我找到了一些教程,介绍了如何从作为客户端托管服务的应用程序创建连接。但是我不确定这是否是个好主意。。所以我想问。。最好使用来自主机应用程序的WCF服务作为客户端。。或者我应该使用这个应用程序中的dbContext。服务和直接使用dbContext之间不会有冲突吗?当多个客户端将连接线索服务和服务器将连接线索上下文?

,这将为选择在中间放置WCF提供一些利弊。 专业人士

1-加强安全。仅向承载WCF服务的服务器授予db访问权限。安装应用程序的计算机不需要知道数据库ip地址。此外,您还可以使用WCF在消息级别设置安全性

2-为多个UI提供可重用的API

3-您可以在一个集中且一致的API中实现您的业务逻辑,因此对业务逻辑的更改不会影响客户端应用程序

缺点

1-性能成本。你总是不得不考虑这一事实,添加额外的网络请求会影响应用程序的性能。

2-需要维护更多的代码和硬件


记住,复杂性必须是合理的。在中间添加WCF会增加系统的复杂性。如果没有正当理由,那么您就不需要它。

这主要是基于意见的,但是如果您想出于安全目的将数据库访问限制到特定的IP地址,那么您可以在某个服务器上托管一个WCF服务或Web API,其IP地址在数据库服务器上被列为白名单,您还可以执行进一步的检查以防止SQL注入。如果您还在应用程序中使用DbContext,那么在尝试将更改迁移到数据库之前,是什么阻止某人对应用程序进行反编译并进行更改呢。只有我的2美分。对于使用多个客户端应用程序连接到具有相同凭据的同一数据库,有什么更好的解决方案?我想如果我只使用dbContext,可能会有一些冲突。当多个应用程序将写入同一个表时,是否会发生冲突?无冲突。数据库处理客户端连接,它不关心多个应用程序。您唯一需要担心的是数据库锁定,即使sinlge应用程序连接到数据库,这种情况也可能发生。数据库是为同时服务多个连接而构建的服务器。