ODP.NET和ClickOnce可能吗?

时间:2009-07-28 09:58:13

标签: .net ado.net clickonce odp.net

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

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

背景

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

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

4 个答案:

答案 0 :(得分:7)

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

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

您的ClickOnce部署的客户端应用程序安装在用户的计算机上,但可以使用某种服务来处理数据。在此方案中,您的客户端应用程序不需要分发Oracle客户端或ODP.Net。

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

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

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

在此方案中,Oracle客户端和ODP.Net软件包应使用Oracle的标准说明安装在托管计算机(例如Citrix框)上,并且您的应用程序应引用其托管计算机上安装的相应库。

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

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

我们在此讨论的特定方案是如何在您的应用程序中分发Oracle客户端和ODP.Net(例如,当您的用户未在其计算机上安装这些产品时)。以下是说明:

  1. 下载Oracle Data Access Components包。

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

    (B)您需要安装32位版本的ODP.Net,因为Visual Studio是一个32位应用程序。然后,您可以在部署时编译为目标处理器和位版本。

  2. 在ODAC包中有Oracle Instant Client和ODP.Net库。您需要将即时客户端库复制到您的应用程序并将其设置为“始终复制”

  3. 参考 Oracle.DataAccess.Client 就像您使用任何其他lib一样,并设置Copy Local = True

  4. 您的连接字符串应该与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;
    
  5. 备注

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

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

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

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


    摘要&结果

    现在,您可以对所有Windows客户端应用程序使用ClickOnce部署 - 胖,东西或智能。

答案 1 :(得分:3)

Instant Client支持xcopy部署,因此相同的方法(包括ClickOnce部署中的方法)应该可以部署。

然而!在许多情况下,使用“智能客户端”方法可能更适合(使用ClickOnce),即通过网络服务经由应用服务器进行数据访问。然后,您不需要客户端中的任何DAL组件。

答案 2 :(得分:1)

答案 3 :(得分:0)

使用ODP.NET进行部署后,XCOPY部署是您最接近点击的部署。

我刚刚回复了你的另一篇帖子,这里有很多关于XCOPY部署的细节。

请看一下:

How to write a .Net application that works with both SqlServer and Oracle (now that System.Data.OracleClient is deprecated)

Christian Shay 甲骨文

编辑:Oracle已经宣布,在2011年的某个时候,他们将发布一个完全托管的ODP.NET提供商版本(即瘦客户端)。当发生这种情况时,ODP.NET将不会依赖任何其他文件,ClickOnce部署将更加简单。

欢迎在我们的功能请求网站上提供有关此功能和其他功能的反馈:http://apex.oracle.com/pls/apex/f?p=18357:46