ODP.NET和ClickOnce是否可能?

ODP.NET和ClickOnce是否可能?,.net,ado.net,clickonce,odp.net,.net,Ado.net,Clickonce,Odp.net,我们有一个sqlserver(WinForms)应用程序,它与ClickOnce一起部署,直接与数据库对话。如果我们被迫将其移植到oracle,ODP.NET能否与ClickOnce一起使用 (用户在其PC上可能没有管理员权限) 背景 此数据导入应用程序由每个客户站点的少数用户使用,它使用集成登录连接到SQL Server。大多数用户通过Asp.net应用程序或与web服务对话的WinForms(clickOnce)应用程序访问系统变量 另请参见“支持xcopy部署,因此相同的方法(包括在Cli

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

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

背景

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

另请参见“

支持xcopy部署,因此相同的方法(包括在ClickOnce部署中)应该可以进行部署


然而!在许多情况下(使用ClickOnce)使用“智能客户端”方法可能更合适,即通过web服务通过应用服务器进行数据访问。这样,客户端就不需要任何DAL组件了。

编辑:为了现代化,我修改了这个答案。另外,为了澄清,ClickOnce只是一个应用程序部署工具,如何在应用程序中使用Oracle客户端和ODP.Net仍然取决于体系结构。以下是最常见场景的摘要:

智能客户端应用程序(例如客户端应用程序+Web服务) ClickOnce部署的客户端应用程序安装在用户的计算机上,但与某种服务进行通信以处理数据。在此场景中,您的客户端应用程序不需要分发Oracle客户端或ODP.Net

Oracle客户端和ODP.Net包应通过Oracle的正常指令安装在承载后端服务的机器上,并从该项目/应用程序中引用,就像使用/分发任何其他库一样

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

在这种情况下,应使用Oracle的标准说明将Oracle客户端和ODP.Net软件包安装在主机上(例如Citrix box),并且您的应用程序应参考其主机上安装的相应库

胖客户端“胖部署”应用程序(例如用户机器上的胖客户端) 在这个场景中,您的应用程序是一个典型的“胖客户机”,因为它有自己的数据层,并且需要能够与Oracle客户机和ODP.Net库通信

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

  • 下载软件包

    (A) 当前版本是ODAC 11.2第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),包括多语言支持,以及Lite版本(约28mb),仅支持英语

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

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

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


    总结和结果:


    现在,您可以对所有Windows客户端应用程序(fat、thing或smart)使用ClickOnce部署。

    XCOPY部署是最接近ODP.NET的ClickOnce部署

    我刚刚回复了你的另一篇文章,这里将有很多关于XCOPY部署的细节

    请看一看:

    克里斯蒂安·谢伊 神谕

    编辑:Oracle已宣布,2011年的某个时候,他们将发布ODP.NET provider(又称瘦客户端)的完全管理版本。当这种情况发生时,ODP.NET将不会依赖于任何其他文件,ClickOnce部署将更简单


    请随时在我们的功能请求网站上提供有关此功能和其他未来功能的反馈:

    有可能,请参见

    是否有人看到此功能起作用,包括处理连接刺痛等。我们不能让每个用户都必须编辑其PC上的所有oracle配置文件。我们的大多数应用都使用“智能客户端”方法,然而,当我们编写data Input应用程序时,web services/.net远程处理速度不够快。我们的时间也很紧;我知道你的意思。我有一些SQL Server应用程序出于同样的原因直接运行——必要时-好的。当我第一次开始使用Oracle和ODP.Net时,我也在学习WPF,公司已经厌倦了web服务。事后看来,我建议其他人现在先研究服务,并将即时客户端作为第二选择。只有Oracle会认为,对于数据库客户端来说,30到100兆字节的内存占用很小@伊恩:没错。但至少xcopy部署是这样的