应用程序之间共享在C#

应用程序之间共享在C#

问题描述:

我想知道一个数据库连接,如果任何人都知道,如果有可能有多个应用程序共享同一个数据库连接应用程序之间共享在C#

例如,如果我有打开一个数据库 的连接,然后应用程序我开始另一个应用程序需要连接到相同的数据库 - 所以而不是有2个连接打开,我使用的连接从第一个应用程序已打开 从而只有一个连接打开

我问这个问题的原因是因为我正在开发一个从单独的exe而不是一个大的exe来构建的系统 - 但他们都可以访问sam Ë数据库

任何帮助,将不胜感激

感谢

你可能会想创建一个包含逻辑连接到数据库(通过可配置的连接字符串)一个单独的程序并引用大会各需要使用它的项目。请注意,他们不会共享相同的物理数据库连接,而是共享两个应用程序之间的代码和逻辑,它仍然是两个单独的数据库连接,您无法绕过,但它也不是一件坏事,它只是它必须的:)只有这样,你才可以共享同一个连接:如果这两个应用程序实际上在同一个应用程序中,而我收集的不是你说的话,因为你提到它有两个可执行文件,所以两个单独的程序。

Connection pooling应该为你工作。如果多个EXE同时需要数据库连接,则需要多个连接,但是一旦这些连接释放回池中,另一个EXE就可以将其连接起来并重新使用它们。

我认为这通常包含在ODBC /数据库驱动程序中,不需要您付出额外的努力,但它对我来说从未成为问题,所以我不确定。

恕我直言,你可以共享相同的连接字符串,但共享相同的物理DB连接之间2应用程序不知道彼此不会是一个好主意。你将如何处理锁定,并发,事务边界等?

如果原因是为了减少数据库许可成本或连接限制,可能需要查看较短的连接寿命(即应用程序根据需要连接和断开连接,而不是保持连接打开应用程序的生命周期)

如果你真的想要追求共享连接,你可以考虑将你的应用分成拥有一个管理单例数据库连接的公共后端(例如Windows或WCF服务)。

您不应(也不能)在两个应用程序之间共享连接。您可以共享相同的连接字符串,并打开连接池,它可能会重新使用连接,但不应该依赖它。正如Capital G所说,你应该把所有的数据库访问逻辑放在一个单独的程序集/层,甚至WCF服务/ Web服务中。