我有一个访问Sql Server数据库的应用程序。我在dll中有一个可以由客户端使用的存储库,可以直接连接到数据库。
另一个选择是客户端连接到WCF服务,此服务使用实体框架存储库连接到数据库。
正如所料,如果客户端使用EF直接连接到数据库,比通过WCF更快,所以我想知道第二个选项是否是个好主意。
直接使用EF的广告:
Disavanteges:
选项只是在网络文件夹中只有客户端的副本,所以客户端运行此副本,但这不是很好,因为如果我从具有慢速Internet连接的计算机连接(与然后它非常慢,因为它必须在内存中加载所有应用程序(至少是exe和其他dll),这非常慢。所以解决方案是运行应用程序的本地副本,但后来我遇到了同样的问题,如何确保客户端运行最新版本的存储库。
如果我使用WCF:
缺点:
所以我的问题是,这是连接数据库的常用方法或一般方法。我总是在局域网中连接,或者如果我在外面,使用OpenVPN创建的VPN,儿子在实践中,我总是连接到局域网内。
关于安全问题,到目前为止我还没有控制授权,因此应用程序的任何用户都可以执行此操作。在将来,我可以控制WCF,或者如果我直接使用EF,也许在数据库中具有权限,则控制对表的访问。
非常感谢。
答案 0 :(得分:1)
你要找的东西是Web Api。甚至还可以添加web api 2控制器,它们是一个模板api控制器,其中一些示例方法与Entity框架一起使用。
通过使用WCF(不是为这种东西设计),没有理由让事情变得过于复杂。 Web API可以与owin等一起使用,以处理useraccounts的身份。
答案 1 :(得分:1)
如果您坚持使用单个客户端,则无需合并WCF服务。一旦多个客户端发生并且客户端不仅读取而且还写入数据,那么您可能会遇到同时访问数据库的原因,这可能导致数据被过度写入。为了实现同步,一些服务会变得很方便。当然,WCF服务可能会提供性能,但如果您利用单向操作等选项,如果没有交换敏感数据等安全级别下降等,那么影响将无法察觉。