?? intraweb開(kāi)發(fā)學(xué)習(xí)筆記(一).htm
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0034)http://www.51delphi.com/wz/15.html -->
<HTML><HEAD><TITLE>無(wú)標(biāo)題文檔</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>BODY {
FONT-SIZE: 10pt; FONT-FAMILY: "Tahoma", "宋體"
}
.Title {
FONT-WEIGHT: bold; FONT-SIZE: 12pt; LINE-HEIGHT: 14pt; FONT-FAMILY: "Tahoma", "宋體"; BACKGROUND-COLOR: #ccccff
}
TD {
TEXT-INDENT: 18pt
}
.SubTitle {
FONT-SIZE: 10pt; LINE-HEIGHT: 14pt; FONT-FAMILY: "Tahoma", "宋體"; BACKGROUND-COLOR: #cc99ff
}
.body {
FONT-SIZE: 10pt; FONT-FAMILY: "Tahoma", "宋體"
}
</STYLE>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY>
<TABLE cellSpacing=1 cellPadding=0 width="80%" align=center bgColor=#0033ff
border=0>
<TBODY>
<TR>
<TD class=Title bgColor=#ffffff>
<DIV align=center>IntraWeb開(kāi)發(fā)學(xué)習(xí)筆記<FONT size=-1>(一)</FONT></DIV>
<DIV align=right><FONT size=-1>作者:bnPYSse(原創(chuàng))</FONT></DIV></TD></TR>
<TR>
<TD class=body bgColor=#ffffff>
<P>特別感謝Xalion對(duì)于Web開(kāi)發(fā)的一系列文章,如果沒(méi)有他的鼓勵(lì),恐怕也不會(huì)有這篇文章了。如需轉(zhuǎn)載,請(qǐng)標(biāo)明出處。如需交流,請(qǐng)聯(lián)系我:<A
href="mailto:bnpysse@sina.com">郵箱</A></P>
<P>隨著Internet/Intranet的快速發(fā)展,在現(xiàn)在的開(kāi)發(fā)領(lǐng)域中,這是一個(gè)對(duì)所有程序員都十分誘人的領(lǐng)域,而Delphi的方便宜用更使大家愿意選擇這一工具開(kāi)發(fā)InterNet/IntraNet應(yīng)用。Delphi7當(dāng)中集成了IntraWeb開(kāi)發(fā)工具,在學(xué)習(xí)和使用這個(gè)工具的時(shí)候,有一些心得體會(huì),在這里寫(xiě)出來(lái),如有錯(cuò)誤和不對(duì)的地方,請(qǐng)指出來(lái),愿與所有對(duì)它感興趣的朋友共同探討和學(xué)習(xí)。</P></TD></TR>
<TR>
<TD class=SubTitle bgColor=#ffffff>1、關(guān)于IntraWeb的開(kāi)發(fā)模式</TD></TR>
<TR>
<TD class=body bgColor=#ffffff>
<P>IntraWeb有兩種開(kāi)發(fā)模式,它的作者稱(chēng)之為:AppMode和PageMode,即應(yīng)用模式和頁(yè)模式。AppMode,也稱(chēng)WebApplication(或者叫StandAlone),是其開(kāi)發(fā)者著重推薦的,也是IntraWeb將來(lái)的發(fā)展方向,PageMode,亦即傳統(tǒng)的Delphi下開(kāi)發(fā)InteNet的WebBroker的方式。應(yīng)當(dāng)說(shuō),兩種不同的開(kāi)發(fā)模式,各有優(yōu)缺點(diǎn),AppMode快速簡(jiǎn)便,而PageMode靈活性更強(qiáng)一些。</P>
<P>AppMode的開(kāi)發(fā)應(yīng)用方向是Web應(yīng)用,而不是傳統(tǒng)的網(wǎng)站建設(shè)。AppMode內(nèi)建Internet瀏覽器,服務(wù)器端不需要Web應(yīng)用服務(wù)器就能很好的工作。解決了Web應(yīng)用程序開(kāi)發(fā)中Client/Server的交互問(wèn)題,可以不使用Cookie(這一點(diǎn)我還沒(méi)有很好的理解,^_^)。AppMode下開(kāi)發(fā)的程序做為NT的一個(gè)服務(wù)在Server上啟動(dòng),Client在瀏覽器中象使用一個(gè)普通的應(yīng)用程序一樣來(lái)完成數(shù)據(jù)庫(kù)操作、表單提交、查詢(xún)等工作,應(yīng)當(dāng)說(shuō)IntraWeb在開(kāi)發(fā)Web應(yīng)用方面完成了一個(gè)獨(dú)創(chuàng)性的工作。</P>
<P>AppMode方式并不是非常適全做網(wǎng)站的開(kāi)發(fā)工作。</P></TD></TR>
<TR>
<TD class=SubTitle bgColor=#ffffff>2、IntraWeb應(yīng)用程序的發(fā)布</TD></TR>
<TR>
<TD class=body bgColor=#ffffff>
<P>這好象是大家比較關(guān)心的問(wèn)題,做好了東西總得放到網(wǎng)站上去呀,不然怎么用呢?它的應(yīng)用程序發(fā)布也分兩類(lèi),AppMode開(kāi)發(fā)的東西比較好辦,在Server端(必須是管理員身份登錄的),進(jìn)入Command窗口,運(yùn)行c:>ApplicantionName
-install,Application
做為NT下的一個(gè)服務(wù)被啟動(dòng),然后客戶(hù)端直接在瀏覽器中鍵入:http://www.yourDomain.com:xxxx/就可以啟動(dòng)(或者用http://www.yourDomain.com:xxxx/start),xxxx是你開(kāi)發(fā)程序時(shí)在ServerController中設(shè)定的端口號(hào)(為避免與服務(wù)器提供的WEB服務(wù)沖突,一般不能設(shè)為80端口)</P>
<P>對(duì)于在頁(yè)面模式下開(kāi)發(fā)的應(yīng)用來(lái)說(shuō),將生成的動(dòng)態(tài)鏈接庫(kù)及附加文件上傳到具有執(zhí)行權(quán)限的目錄中即可。</P></TD></TR>
<TR>
<TD class=SubTitle bgColor=#ffffff>3、IntraWeb的開(kāi)發(fā)步驟</TD></TR>
<TR>
<TD class=body
bgColor=#ffffff>對(duì)于AppMode來(lái)說(shuō),開(kāi)發(fā)一個(gè)Web應(yīng)用程序與開(kāi)發(fā)普通的App應(yīng)用沒(méi)有什么兩樣。新建一個(gè)應(yīng)用程序,紅色的代表標(biāo)準(zhǔn)的應(yīng)用,綠色的自動(dòng)生成一個(gè)數(shù)據(jù)管理模塊。然后要選擇一個(gè)目錄,因?yàn)镮ntraWeb的應(yīng)用要生成一些Cache及需要的模板、CSS樣式表等內(nèi)容,您可以建一個(gè)獨(dú)立的目錄用于存放這些內(nèi)容。
<DIV align=center><IMG height=365
src="IntraWeb開(kāi)發(fā)學(xué)習(xí)筆記(一).files/NewItem.jpg" width=443></DIV>
<P>這是比較常見(jiàn)的IntraWeb應(yīng)用開(kāi)發(fā)的模式,下面我想著重談一談PageMode的開(kāi)發(fā)應(yīng)用。</P>
<P>1、建立一個(gè)PageMode,需要用到Delphi新建模塊中的WebServerApplication,然后Delphi幫你生成一個(gè)標(biāo)準(zhǔn)的DLL模板(當(dāng)然,我指的是在ISAPI/NSAPI模式下的)</P>
<P align=center><IMG height=365
src="IntraWeb開(kāi)發(fā)學(xué)習(xí)筆記(一).files/webBroker.jpg" width=443 align=center></P>
<P>2、建立一個(gè)新的PageForm,此處一定要分清楚,<FONT
color=#ff0000>ApplicationForm</FONT>是用于在AppMode下開(kāi)發(fā)用的Form,而<FONT
color=#0000ff>PageForm</FONT>才是用于傳統(tǒng)的WebBroker模式下的Form</P>
<P align=center><IMG height=365 src="IntraWeb開(kāi)發(fā)學(xué)習(xí)筆記(一).files/newItem1.jpg"
width=443 align=center></P>
<P>3、這里要在PageForm手工加入一些模塊用于程序的處理,主要有以下這些:IWApplication(應(yīng)用程序處理)、IWTemplateProcessHTML(如果你用到模板的處理的話(huà))、IWLayoutManager(如果想交互式建立Web組件的話(huà))、IWHTMLControl(用于IntraWeb的Html組件處理)等。</P>
<P>4、在webModule模塊中的Implenmention的Uses子句中加入你要使用的PageForm模塊。在webModule的Form中加入TIWPageProducer(用于處理PageForm)及TIWModuleController(用于Web控制)。</P>
<P>5、在WebModule的Form中單擊右鍵,新建Action,并設(shè)定該Action的PathInfo和Producer(設(shè)定為風(fēng)才剛才加入的TIWPageProducer),譬如:設(shè)定PathInfo:='/main'。</P>
<P>6、對(duì)于IWPageProducer建立它的OnGetForm事件處理,并加入如下的語(yǔ)句:vForm:=TFormMain.Create(AWebApplication);</P>
<P>至此,一個(gè)簡(jiǎn)單的應(yīng)用就完成了,你可以在Delphi7中按下Ctrl+F9鍵,生成一個(gè)Dll文件,拷貝到具有執(zhí)行權(quán)限的Web目錄下,在瀏覽器中鍵入:http://localhost/myweb/project1.dll/main,就可以運(yùn)行了(myWeb是你在IIS中建立的Web目錄)</P>
<P align=left> </P></TD></TR>
<TR>
<TD class=SubTitle bgColor=#ffffff>4、IntraWeb的安裝中出現(xiàn)的問(wèn)題</TD></TR>
<TR>
<TD class=body bgColor=#ffffff>
<P>大家可能都從<A
href="http://www.51delphi.com/">Delphi窯洞</A>,下載了較新版本的IntraWeb,當(dāng)前最新的版本(Ver.5.00.56)可以從<A
href="http://www.atozedsoftware.com/downloads/intraweb/iw5.0.55_d7.exe">For
Delphi7</A>、<A
href="http://www.atozedsoftware.com/downloads/intraweb/iw5.0.56.exe">For
Delphi5&Delphi6)</A>(告訴你一個(gè)好消息的是,可是用v.5.00.55版的注冊(cè)機(jī)!)。</P>
<P>在安裝新版本后要,可能會(huì)出現(xiàn)Entry Point could not be
located錯(cuò)誤,這是因?yàn)槟氵\(yùn)行庫(kù)還是老版本的緣故,請(qǐng)按以下步驟處理:</P>
<P>1、首先關(guān)閉Delphi7</P>
<P>2、卸載IntraWeb</P>
<P>3、搜索硬盤(pán)當(dāng)中的*intraweb*.bpl和*intraweb*.dcp,一般是在Windows的系統(tǒng)目錄里有運(yùn)行庫(kù)文件,而在Delphi目錄里有設(shè)計(jì)時(shí)文件,確保將這些文件全部刪掉。</P>
<P>4、重新安裝IntraWeb。因?yàn)榘惭b過(guò)一次以后,會(huì)在注冊(cè)表里產(chǎn)生一個(gè)注冊(cè)碼,再一次用注冊(cè)機(jī)生成注冊(cè)碼,并用IWRegister.exe進(jìn)行注冊(cè)以后,會(huì)在LibD7目錄下的IWLicenseKey.pas文件里生成兩個(gè)注冊(cè)碼(中間以“+”聯(lián)接),刪掉其中的一個(gè),不然,運(yùn)行后會(huì)產(chǎn)生錯(cuò)誤。</P>
<P>另外,對(duì)于Delphi6的用戶(hù),必須確保UpdatePack2被安裝,不然編譯后會(huì)產(chǎn)生“"InGlobal" was compiled
with a different version of System.rtl ”錯(cuò)誤。</P></TD></TR>
<TR>
<TD class=SubTitle bgColor=#ffffff>5、IntraWeb應(yīng)用程序的卸載問(wèn)題</TD></TR>
<TR>
<TD class=body bgColor=#ffffff>
<P>也是分兩大類(lèi),一類(lèi)是AppMode下開(kāi)發(fā)的應(yīng)用程序,首先要在服務(wù)管理器里面停止該程序的運(yùn)行,然后在命令行狀態(tài)下鍵入:c:>ApplicationName
-uninstall,最后刪除該程序即可。對(duì)于在PageMode開(kāi)發(fā)的DLL來(lái)說(shuō),需要在服務(wù)管理器里面,找到組件服務(wù),關(guān)閉它就可以。</P>
<P align=center><IMG height=480 src="IntraWeb開(kāi)發(fā)學(xué)習(xí)筆記(一).files/CloseDll.jpg"
width=640></P></TD></TR>
<TR>
<TD class=SubTitle bgColor=#ffffff>6、在使用ADO或其他COM組件的時(shí)候,出現(xiàn)“CoInitialize
must be called”錯(cuò)誤。 </TD></TR>
<TR>
<TD class=body
bgColor=#ffffff>這是一個(gè)比較常見(jiàn)的錯(cuò)誤,請(qǐng)?jiān)贗WServerController中設(shè)置ComInitiaLization屬性為ciMultiThreaded,而缺省的設(shè)置為ciNone。</TD></TR>
<TR>
<TD class=SubTitle bgColor=#ffffff>7、如何將我的StandAlone
Application轉(zhuǎn)換成ISAPI應(yīng)用?(轉(zhuǎn)自其官方網(wǎng)站)</TD></TR>
<TR>
<TD class=body bgColor=#ffffff>
<P><BR>program Guess; <BR>uses<BR> IWInitStandAlone, Main in
'Main.pas' {formMain: TIWFormModuleBase},<BR> ServerController
in 'ServerController.pas' {IWServerController: TDataModule}; <BR>{$R
*.res}<BR>begin<BR> IWRun(TFormMain, TIWServerController);
<BR>end.</P>
<P>1、改變Program 子句為 library. </P>
<P>2、改變 IWInitStandAlone 為IWInitISAPI.</P></TD></TR>
<TR></TR>
<TR>
<TD class=body bgColor=#ffffff><FONT
color=#990000>先到這里吧,下一期我想將關(guān)于JavaScript及某些IntraWeb組件的應(yīng)用心得寫(xiě)出來(lái),如果你有什么好的建議,可以聯(lián)系我。謝謝大家!</FONT></TD></TR></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -