柔情似水 发表于 2015-1-16 22:31:11

ASP.NET网页设计Oralce 挪用Delphi写DLL往会见C# WebSe...

如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着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办法,其界说以下:

publicintAddNumber(inta,intb)
{
returna+b;
}
6、我用c#写了一个WindowsForm客户端,经由过程挪用下面用Delphi写的dll,测试该Web办法,测试乐成

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:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.

透明 发表于 2015-3-3 20:18:34

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。

小女巫 发表于 2015-3-11 13:26:05

ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。

金色的骷髅 发表于 2015-3-18 16:53:50

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。

再现理想 发表于 2015-3-26 07:31:46

如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
页: [1]
查看完整版本: ASP.NET网页设计Oralce 挪用Delphi写DLL往会见C# WebSe...