gpt4 book ai didi

.net - ODP.NET 和 ClickOnce 可能吗?

转载 作者:行者123 更新时间:2023-12-04 13:55:55 30 4
gpt4 key购买 nike

我们有一个使用 ClickOnce 部署的 sqlserver (WinForms) 应用程序,它直接与数据库对话。如果我们被迫将其移植到 oracle,ODP.NET 是否可以与 ClickOnce 一起使用。

(用户可能在他们的 PC 上没有管理员权限)

背景

此数据导入应用程序由每个客户站点的少数用户使用,它使用集成登录连接到 SQL Server。大多数用户访问系统变量是 Asp.net 应用程序或与 Web 服务对话的 WinForms (clickOnce) 应用程序。

另见“How to write a .Net application that works with both SqlServer and Oracle

最佳答案

编辑:我已经修改了这个现代化的答案。另外,澄清一下,ClickOnce 只是一个应用程序部署工具,如何将 Oracle Client 和 ODP.Net 与您的应用程序一起使用仍然由架构决定。以下是最常见场景的摘要:

智能客户端应用程序(例如客户端应用程序 + 网络服务)

您的 ClickOnce 部署的客户端应用程序安装在用户的机器上,但与某种服务对话以处理数据。在这种情况下,您的客户端应用程序不需要分发 Oracle 客户端或 ODP.Net。

Oracle 客户端和 ODP.Net 包应通过 Oracle 的正常指令安装在托管后端服务的机器上,并从该项目/应用程序引用,因为任何其他库将被使用/分发。

胖客户端“瘦部署”应用程序(例如 Citrix 上的“胖客户端”)

您的 ClickOnce 部署的客户端应用程序是“胖”的,因为它包含自己的数据层,因此必须能够通过本地安装的客户端连接到 Oracle,并能够引用 ODP.Net 库。

在这种情况下,Oracle Client 和 ODP.Net 包应该使用 Oracle 的标准指令安装在主机(例如 Citrix box)上,并且您的应用程序应该引用安装在其主机上的相应库。

胖客户端“胖部署”应用程序(例如用户机器上的胖客户端)

在这种情况下,您的应用程序是典型的“胖客户端”,因为它有自己的数据层,并且需要能够与 Oracle 客户端和 ODP.Net 库进行通信。

我们在这里讨论的特定场景是如何在您的应用程序中分发 Oracle Client 和 ODP.Net(例如,当您的用户没有在他们的机器上安装这些产品时)。以下是说明:

  • 下载 Oracle Data Access Components包裹。

    (A) 当前版本是 ODAC 11.2 Release 4 (11.2.0.3),包括对 Microsoft Entity Framework 4 的支持。

    (B) 您需要安装 32 位版本的 ODP.Net,因为 Visual Studio 是一个 32 位应用程序。然后,您可以在部署时编译为目标处理器和位版本。
  • ODAC 包中有 Oracle Instant Client 和 ODP.Net 库。您需要将即时客户端库复制到您的应用程序并将它们设置为“始终复制”
  • 像任何其他库一样引用 Oracle.DataAccess.Client 并设置 Copy Local = True .
  • 您的连接字符串应该看起来很像 TNSNAMES.ORA 中的一个普通条目。文件:
     Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SID = oracle_world_here)));User Id=schema_here;Password=password_here;Persist Security Info=TRUE;

  • 备注

    A. 即时客户端有两个主要版本 - 包含多语言支持的完整版(约 115mb)和仅支持英语的精简版(约 28mb)。

    B. 重要确保部署的库都来自相同版本的客户端 - 这意味着如果您部署 32 位 ODP.Net,您必须部署 32 位即时客户端库。如果您使用 11.2 即时客户端,则不能使用 11.0 ODP.Net 等——愚蠢但很多人忽略了这一点;使用良好的源代码控制。

    C. 根据我的经验,以下库被放置在我的项目的根目录中(以避免任何权限或 %PATH% 问题)

    oci.dll、ociw32.dll、orannzsbb11.dll、oraocci11.dll、oraociicus11.dll、oraops11w.dll

    总结与结果:

    您现在可以将 ClickOnce 部署用于所有 Windows 客户端应用程序 - 胖、事物或智能。

    关于.net - ODP.NET 和 ClickOnce 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193112/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com