我用 c# 和 SQLite 编写了一个应用程序,用于存储一家拥有大约 500 名员工的公司中所有员工的数据。我想将数据库和应用程序放在文件服务器/共享文件夹(MS 服务器)中。然后所有员工的桌面上都会有该应用程序的快捷方式。我想根据用户运行应用程序的权限启用/禁用某些输入字段(文本框)。这样做的最佳做法是什么?
我希望用户只能通过我的应用程序在数据库中读/写(应用程序位于同一个数据库文件夹中)。我不希望用户在没有我的应用程序的情况下访问数据库。如何做到这一点?
最佳答案
I don't want the user to reach the database without my application
如果您的应用程序将通过 Windows 文件共享直接访问 SQLite 数据库,这是不可能的。当然,你可以让它变得不方便,但这不太可能。
真正实现这一目标的唯一方法是引入一些中间件。
这通常是一个服务(可能是 WCF),它监听来自您的客户端应用程序的连接,对其进行身份验证,并管理对底层数据库的所有访问。数据库将存储在仅对服务器可见的位置,而不是通过 Windows 共享对您的用户可见。
此外,SQLite 并不是多用户系统的最佳选择。您可以在这里一石二鸟 - 切换到接受网络客户端连接的 DBMS(MS SQL Server Express 是免费的,MySQL、PostgreSQL 也是常见的免费选择),并构建您的应用程序以直接连接到数据库服务器(也可以像这样使用集成的 Windows 身份验证,因此您可以避免显式登录)。在一个简单的场景中,这可能就足够了,并且无需构建显式服务层。
在更复杂的情况下,在应用程序和数据库之间有一个中间件层仍然有意义 - 这样,您可以更改数据库设计而无需更改应用程序设计并部署到所有客户端计算机 - 而不是,只需更改一个地方的中间件层,您的应用程序就不会知道其中的区别。
关于c# - 通过 C# 应用程序访问服务器中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13397956/