关于K/3 Cloud 中对Oracle组件使用的一些注意事项
金蝶云社区-云社区用户M7251234
云社区用户M7251234
0人赞赏了该文章 1656次浏览 未经作者许可,禁止转载编辑于2014年01月27日 11:11:51

对于一些需要进行Oracle库开发的同学经常碰到一个问题,Oracle组件加载失败的情况,快过年了,这里略作总结,全当给大家送礼了:D。

[起因]
1. 因为Oracle组件并不是按AnyCPU编译的,故需要区分X86与X64两种架构组件(详见附件X86Bin,X64Bin,sorry,因附件太大,传不上来,得先找管理员联系下,这里先告诉大家一个获取的办法:K3Cloud安装目录下有个X64Componet,那里面能找到X64的Oracle组件,至于X86的,可以找一台x86的机器安装下,在WebSite\Bin 目录下,大约有21个文件的样子,与X64的文件名长得一样的)

[经过]
1. K/3 Cloud 在安装过程中会根据目标OS自行释放相应的组件,所以基本上不存在问题;
2.问题主要出现在开发过程中,开发一般有下述两种场景,
No1: 直接以IIS站点进行调试,这种方式因为站点是安装过程中部署好的,这里一般发生的问题主要在于,开发人员将开发目录下的Oracle组件直接替换过去,常常出现的情况就是,为什么我的开发目录下能跑,放到IIS站点目录下就跑不起来呢?
NO2:通过.Net 站点模拟工具(WebDev.WebServer.exe)来运行的站点,也就是F5的默认运行,或通过KD开插件host站点为,这种情况,这里发生的情况,与No1刚好反过来的。

[结果]
1.Oracle 组件跑不起来,程序还报错,
2.在论谈上到处发贴问,有时还没人理

[结论]
1. 如果是运行在IIS站点中,请确保按目标操作系统进行部署,即X86组件部署到X86的机器环境,X64组件部署到X64的环境,不能混乱;
2.如果是WebDev.WebServer.exet环境,无论当前OS是什么版本的,都只能部署x86组件。

[Q&A]
[Q] 为什么K/3 Cloud 对Oracle 组件的引用优先使用Private,而不是GAC?
[A] 这主要是考虑到Oracle版本的复杂性,方便后续的版本控制,以空间换可用性,或者说,以兼价的硬盘的与不断提升的网速来换取程序部署的复杂性。

[Q] 为什么我是X64的操作系统,通过WebDev.WebServer.exe来运行时,仍要用X86的组件?
[A] 这个问题很蛋痛,目前看来直接原因是MS在VS2012/及以下版本均未提供支持X64版本的WebDev.WebServer.exe,根本原因::call: to MS。