仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 610|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET网页设计Oralce 挪用Delphi写DLL往会见C# WebSe...

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:31:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。web|会见|成绩我想从Oracle的存储历程经由过程一个内部dll(Delphi编写)往会见C#写的WebService时,呈现了“还没有挪用CoInitialize”
不晓得是怎样回事,看列位指导一二。
1、我在Oracle里写了一个函数AddNumber以下:
CREATEORREPLACEFUNCTION"MY"."ADD"(ainBINARY_INTEGER,b
inBINARY_INTEGER)RETURNBINARY_INTEGERAS
EXTERNALLIBRARYMY_LIB
NAME"AddNumber"
LANGUAGEC;
2、写了一个历程AddTest以下:
CREATEORREPLACEPROCEDURE"MY"."ADDTEST"(ain
BINARY_INTEGER,binBINARY_INTEGER)
as
retValBINARY_INTEGER;
begin
retVal:=Add(a,b);
end;
3、创立了MY_LIB包:
CREATEORREPLACELIBRARYMY_LIBASC:oracleora92inMyWebservice.dll;
4、在Delphi里创立了一个MyWebservice.dll,并拷贝其到$ORACLE_HOME$BIN目次下,个中有一个办法:
interface
functionAddNumber(a:integer;b:integer):Integer;cdecl;
....
implementation
procedureDoGetWebServiceErr(ErrMsg:string);
var
logFile:TextFile;
i:integer;
begin
AssignFile(logFile,d:        est.txt);
try
Rewrite(logFile);
Write(logFile,ErrMsg);
finally
CloseFile(logFile);
end;
end;
functionAddNumber(a:integer;b:integer):Integer;
begin
try
Result:=GetMyWebServiceSoap().AddNumber(a,b);
except
onE:ExceptiondoDoGetWebServiceErr(E.E.Message);
else
Result:=-1;
end;
end;
.....
个中:GetMyWebServiceSoap()是我用WSDLImporter导进天生的MyWebService.pas中的一个办法。
我在该Dll的项目文件里导出了该办法:
exports
AddNumber;
5、用C#在Localhost创立了一个名为MyWebService的WebService,个中有一个名为AddNumber的WEB办法,其界说以下:
[WebMethod]
publicintAddNumber(inta,intb)
{
returna+b;
}
6、我用c#写了一个WindowsForm客户端,经由过程挪用下面用Delphi写的dll,测试该Web办法,测试乐成
[DllImport(DLLPath,EntryPoint="MyWebservice.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
privateexternstaticintAddNumber(inta,intb);
......
///测试按钮
privatevoidbuttonTestWebService_Click(objectsender,System.EventArgse)
{
Consle.Write(AddNumber(1,2));
}
7、在SQL*Plus里测试失利,翻开Test.txt文件内容为“还没有挪用CoInitialize”,测试代码以下
EXECUTEAddtest(1,1);
假如将Delphi中的AddNumber修正为
functionAddNumber(a:integer;b:integer):Integer;
begin
try
Result:=a+b;//不挪用WebService,间接盘算
except
onE:ExceptiondoDoGetWebServiceErr(E.E.Message);
else
Result:=-1;
end;
end;
实行则乐成。
Oracle的Listener.ora和tnsnames.ora的设置以下
#LISTENER.ORANetworkConfigurationFile:C:oracleora92
etworkadminlistener.ora
#GeneratedbyOracleconfigurationtools.
MY_EXTPROC_LISTENER=

(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=ipc)
(KEY=extproc)
)
)
SID_LIST_MY_EXTPROC_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=extproc)
(ORACLE_HOME=C:oracleora92)
(PROGRAM=C:oracleora92inextproc)
(ENVS="EXTPROC_DLLS=ANY")
)
)
#TNSNAMES.ORANetworkConfigurationFile:C:oracleora92
etworkadmin        nsnames.ora
#GeneratedbyOracleconfigurationtools.

EXTPROC_CONNECTION_DATA.WORLD=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=IPC)(KEY=extproc))
(CONNECT_DATA=
(SID=extproc)
)
)


C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-28 07:53:44 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
飘灵儿 该用户已被删除
板凳
发表于 2015-2-5 19:50:58 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
若天明 该用户已被删除
地板
发表于 2015-2-13 09:58:00 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
透明 该用户已被删除
5#
发表于 2015-3-3 20:18:34 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
小女巫 该用户已被删除
6#
发表于 2015-3-11 13:26:05 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
金色的骷髅 该用户已被删除
7#
发表于 2015-3-18 16:53:50 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
再现理想 该用户已被删除
8#
发表于 2015-3-26 07:31:46 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 04:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表