亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5891 | 回復(fù): 8
打印 上一主題 下一主題

今天心情不錯(cuò),寫點(diǎn)Mason的資料 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-09-10 01:30 |只看該作者 |倒序?yàn)g覽
什么是MASON?
MASON是一種組建化開發(fā)的框架式結(jié)構(gòu),其專門為大型商務(wù)類網(wǎng)站所設(shè)計(jì)。在其官方網(wǎng)站稱為“嵌入Perl語言到HTML的模板技術(shù)”,但似乎在這里除了基本的語法同Perl一樣外,已經(jīng)完全不是那種順序型解析的頁面語言了。

何為組件化開發(fā)?
我們?cè)陂_發(fā)任何一個(gè)頁面程序的時(shí)候,都要難免的使用到面向?qū)ο蠡拈_發(fā)技術(shù)。這個(gè)時(shí)候我們將每個(gè)頁面看作一個(gè)獨(dú)立體,每個(gè)頁面都有其負(fù)責(zé)的代碼進(jìn)行處理,在每個(gè)代碼中都會(huì)重復(fù)用到一些功能,這些功能都被封裝成對(duì)象,以便每個(gè)頁面調(diào)用,看似解決了重用了。但是確實(shí)這樣嗎?其實(shí)我們只是降低了冗余代碼而已“每個(gè)頁面的處理代碼都不可避免的要重復(fù)調(diào)用對(duì)象里的方法”,我們依然沒有真正的實(shí)現(xiàn)網(wǎng)頁的重用(是面向?qū)ο蠡匾是重用重要?。∵@個(gè)問題討論起來可就長了)。

當(dāng)Amazon.com公司的程序員每天厭煩的寫相同的頁面處理代碼的時(shí)候,他們已經(jīng)恨透了這種形式!為什么十個(gè)頁面代碼中只有50%的地方有區(qū)別???為什么我們要浪費(fèi)那么多時(shí)間去重復(fù)編寫不必要的代碼?于是他們想到了軟件的結(jié)構(gòu),軟件里是怎么做到的?每個(gè)FORM都通過基本對(duì)象Application產(chǎn)生,F(xiàn)ORM只負(fù)責(zé)處理數(shù)據(jù)。

傳統(tǒng)的網(wǎng)站處理技術(shù):

用戶登陸首頁       用戶填寫注冊(cè)信息
    |                       |
    |                       |
index.php         useradd.php

代碼中的結(jié)構(gòu):
index.php(new class,initialization,inprocessing,output)
useradd.php(new class,initialization,inprocessing,output)
普通計(jì)算機(jī)軟件處理技術(shù):

用戶啟動(dòng)程序        用戶請(qǐng)求打開某個(gè)菜單
    |                       |
    -------------------------
                 |
            Application
              |
    ------------------------
    |                      |
mainForm(args)         optionsForm(args)

代碼中的結(jié)構(gòu):
Application(new class,initialization,output)
frist.php(inprocessing)
second.php(inprocessing)
MASON技術(shù)的網(wǎng)站:

用戶登陸首頁       用戶填寫注冊(cè)信息
    |                       |
    -------------------------
                 |
            autohandler
              |
    ------------------------
    |                      |
index.mhtml(args)         useradd.mhtml(args)

代碼中的結(jié)構(gòu):
autohandler(new class,initialization,output)
index.mhtml(inprocessing)
useradd.mhtml(inprocessing)
在傳統(tǒng)的時(shí)候,我們總象老太婆一樣重復(fù)的編寫代碼。而在MASON技術(shù)的網(wǎng)站中,已經(jīng)將基本的操作和輸出操作交給autohandler(自動(dòng)處理器)去處理,每個(gè)頁面代碼只是負(fù)責(zé)具體的邏輯。

amazon.com的技術(shù)人員總是很聰明,他們利用巧妙組建技術(shù)來保證這個(gè)全球著名的電子商務(wù)網(wǎng)站得以運(yùn)行順利,降低他們的成本。

 
運(yùn)行環(huán)境
MASON技術(shù)是基于Perl語言而設(shè)計(jì)的。所以你必須擁有一個(gè)Perl環(huán)境。為了發(fā)揮MASON的威力,你最好使用APACHE來作為WEB服務(wù)器(在IIS下MASON也是可以運(yùn)行的)。但是由于APACHE2下的Mod_perl目前還是開發(fā)版,所以推薦不要使用APACHE2(在Mason的郵件列表中有人說“沒有哪個(gè)項(xiàng)目象ModPerl2一樣一開發(fā)就開發(fā)了三年”還有人說“開源技術(shù)的測試版就是商業(yè)軟件的1.0版”),無論如何我們還是使用APACHE1來的保險(xiǎn)(正巧的是APACHE2的重要改變?cè)谀J(rèn)的編譯情況下是被關(guān)閉的,也就是說同APACHE1兼容),當(dāng)然你如果非的要使用APACHE2也可以,推薦你使用最新的ModPerl RC版本,因?yàn)榭赡苣愕捻?xiàng)目做完以后正式版的modperl2已經(jīng)出來了。

基本環(huán)境:

Perl5.8.x
WEB:APACHE1(with ModPerl1) IIS(with PerlISAPI) APACHE2(with ModPerl2)
MODULE:APACHE::Request、APACHE:BI
SERVER:Linux
 

結(jié)構(gòu)部署
在我剛剛考慮怎么部署一個(gè)網(wǎng)站結(jié)構(gòu)來完成客戶的需要的時(shí)候,也非常困惑。我總是想著網(wǎng)頁是獨(dú)立的結(jié)果無法設(shè)計(jì)出來程序。后來終于想通了你永遠(yuǎn)不要想著網(wǎng)頁是獨(dú)立的。網(wǎng)站上的每個(gè)頁面都是由不同的組建組成的。而象是SESSION處理恐怕你再也不需要封裝成為任何對(duì)象了,因?yàn)樗肋h(yuǎn)只會(huì)被在一個(gè)代碼里調(diào)用(如果你希望)。

所以,我建議您將商業(yè)網(wǎng)站可以部署成為這個(gè)模型:

/home/webstation/                #網(wǎng)站主目錄
                shared_comp/        #網(wǎng)站共享組建
/home/webstation/frist.com/
                        comp/                #frist.com的組建,以.comp結(jié)尾
                        mason_data/        #被編譯的MASON數(shù)據(jù)
                        html/                #普通頁面數(shù)據(jù),以及.jsp的頁面代碼
                        html/autohandler        #所有正常訪問都被先執(zhí)行自動(dòng)處理器
                        html/dhandler                #所有錯(cuò)誤訪問都被執(zhí)行dhanlder這個(gè)就象GUI程序的catch
/home/webstation/second.com/
                        comp/                #frist.com的組建,以.comp結(jié)尾
                        mason_data/        #被編譯的MASON數(shù)據(jù)
                        html/                #普通頁面數(shù)據(jù),以及.jsp的頁面代碼
                        html/autohandler        #所有正常訪問都被先執(zhí)行自動(dòng)處理器
                        html/dhandler                #所有錯(cuò)誤訪問都被執(zhí)行dhanlder這個(gè)就象GUI程序的catch
我這個(gè)模型,把所有網(wǎng)站通用的操作封裝成為share_comp里的組建提供共同使用。在兩個(gè)網(wǎng)站中的comp目錄用來存放不需要被用戶訪問的組建,在mason_data里存放的是編譯后的MASON數(shù)據(jù)稍后我們?cè)僦v解這部分。在html目錄里存放網(wǎng)頁需要的內(nèi)容,而MASON的代碼被賦予.jsp作為結(jié)尾,這要感謝SUN公司的宣傳,他讓不懂計(jì)算機(jī)的用戶們都以為.JSP結(jié)尾的程序都很酷。所以無所謂結(jié)尾而已:)

 

效率與安全
恐怕每個(gè)項(xiàng)目管理人員都會(huì)考慮到效率問題。

MASON的處理
MASON封裝了一些非常必要的處理在MASON對(duì)象中完成。

redirect
如果您以前使用Location或是HTML的refresh來實(shí)現(xiàn)頁面跳轉(zhuǎn)的話來嘗試一下使用APACHE的內(nèi)部方法把。這個(gè)跳轉(zhuǎn)更可靠而且是使用HTTP協(xié)議來完成的,使用方式十分簡單$r->;redirect("next.jsp";這個(gè)時(shí)候客戶端是不會(huì)發(fā)現(xiàn)被跳轉(zhuǎn)的,實(shí)際內(nèi)部已經(jīng)發(fā)生了變化。

cache
你當(dāng)然需要使用CACHE,在MASON當(dāng)中可以把數(shù)組或變量成為cache并且可以設(shè)置有效期。

global變量
有時(shí)候你可能需要處理一些東西,而這些東西可以被注冊(cè)到內(nèi)存中讓所有MASON組建共享,這就是全局變量,只要APACHE不變化這個(gè)變量同樣也永遠(yuǎn)存在。不同的訪問進(jìn)程可以共享內(nèi)存空間。

內(nèi)存處理session
以往我們使用MySQL數(shù)據(jù)庫或是文本系統(tǒng)來處理SESSION,配合global變量我們可以在內(nèi)存中處理SESSION這樣可以大大的減輕對(duì)數(shù)據(jù)庫的負(fù)擔(dān)。

持續(xù)性的數(shù)據(jù)庫連接或數(shù)據(jù)庫連接池
使用ModPerl的APACHE:BI模塊可以輕松實(shí)現(xiàn)持續(xù)性的數(shù)據(jù)庫連接。另外再配合global變量可以做出讀多個(gè)連接來迎接大量的訪問產(chǎn)生。

深入MASON的運(yùn)行方式
MASON在執(zhí)行的時(shí)候首先由APACHE交給MASON的模塊進(jìn)行分析編譯。之后會(huì)把你的組建編譯成為ModPerl模塊并且存儲(chǔ)在MASON DATA目錄中,而服務(wù)器真正執(zhí)行的是注冊(cè)在內(nèi)存中的MASON MODULES來運(yùn)行的。這種運(yùn)行方式很象JSP/Servlet或是PHP/Smarty的配合方式。

非順序化編譯的MASON
與目前大部分的網(wǎng)頁處理技術(shù)不同。MASON對(duì)代碼的處理不是順序性的,不是執(zhí)行完第一句就執(zhí)行第二句。這樣做您可以靈活的指定在那種情況下執(zhí)行控制。

<%...%>;                #顯示變量內(nèi)容,<% $html_title %>;
%...                #簡單的一行代碼 % print "Hello world\n";
<%perl>;...</%perl>;        #一塊Perl代碼
<&...&>;                #調(diào)用其他組件,你也可以在程序里調(diào)用,還可以返回成string到變量里
<%init>;...</%init>;        #初始化部分,在這個(gè)組件被訪問的時(shí)候首先執(zhí)行而不管被寫在什么位置
<%args>;...</%args>;        #明確的聲明組建接受什么參數(shù)
<%filter>;...</%filter>;        #過濾輸出的HTML
<%once>;...</%once>;        #代碼被最早執(zhí)行的,一般use 模塊
....還有很多,但是我們恐怕只能講到這里,否則你會(huì)覺得膩煩
一個(gè)實(shí)例:

<HTML>;
<%args>;
$user =>; ''
</%args>;
<HEAD>;
<TITLE>;<% $title %>;</TITLE>;
</HEAD>;
<BODY>;
<%perl>;
if ($user ne '' ) {
        print "$user歡迎您";
} else {
        print "你忘記傳名字過來了";
}
</%perl>;
</BODY>;
</HTML>;
<%init>;
my $title = 'WELCOME YOU';
</%init>;
假設(shè)這個(gè)代碼名字叫test.jsp我們就要這么訪問:

http://localhost/test.jsp?user=masonbook
程序會(huì)先執(zhí)行init部分,然后再檢測輸入內(nèi)容,最后順序的執(zhí)行其余的HTML部分,還有perl部分。并且在代碼結(jié)束的時(shí)候執(zhí)行filter(當(dāng)然這個(gè)實(shí)例里沒有)。

明白的輸入與輸出
MASON組建接收來自用戶端的提交數(shù)據(jù)(一般不區(qū)分是來自GET還是別的方式)都是采用明確表達(dá),否則將產(chǎn)生異常錯(cuò)誤。

<%args>;
@class =>; undef
$session =>; 'guest'
<%/args>;
以上代碼表示,這個(gè)組建接受兩個(gè)傳遞來的參數(shù)一個(gè)是@class一個(gè)是$session所以客戶端的請(qǐng)求可能是這個(gè)樣子:

http://localhost/test.jps?session=@sdfkjasdf&class=a&class=b&class=c
如果客戶端沒有傳遞必要的數(shù)據(jù),就使用=>;右面的值作為默認(rèn)。這種明確傳輸方式可以確保組建的安全性,因?yàn)榻邮沼脩魯?shù)據(jù)不再是隨意的了。

MASON的輸出都通過filter進(jìn)行過濾,所以您可以在網(wǎng)站輸出內(nèi)容的時(shí)候完全過濾所有內(nèi)容,比如在URL結(jié)尾加上session_id數(shù)據(jù),操作很簡單,在HTML的根目錄上填寫autohandler的內(nèi)容:

<%filter>;
s/href="([^"]+"/add_session_id($1)/eg;        #在別的地方再寫一個(gè)add_session_id子程序就可以了
<%/filter>;
 

效率的奧秘
當(dāng)我們談到效率的問題,可能是一個(gè)永遠(yuǎn)不會(huì)有結(jié)果的問題。因?yàn)檫@個(gè)問題實(shí)在太復(fù)雜了。實(shí)際上程序運(yùn)行的效率本質(zhì)上是為了提高生產(chǎn)力。有的時(shí)候不能為了提高程序些須的效率來降低生產(chǎn)率,我想每個(gè)主管都知道真正的成本在那里。由于MASON采用modperl做為基礎(chǔ),所以基本上也是ModPerl運(yùn)行的速度。而現(xiàn)在的網(wǎng)絡(luò)技術(shù)ASP/JSP/PHP/ModPerl他們的性能幾乎相差不了多少,所以這個(gè)時(shí)候刻意的追求快那么幾秒而忽略其他地方所造成的問題是得不償失的。

憑大量項(xiàng)目開發(fā)人員的經(jīng)驗(yàn),真正的性能瓶頸在于數(shù)據(jù)庫的連接部分。我們之間設(shè)計(jì)過一個(gè)幾百萬條數(shù)據(jù)的搜索引擎采用的是PHP/Smarty技術(shù)來完成的,SQL語法分析以及程序執(zhí)行大約使用了0.3秒而在數(shù)據(jù)卻消耗了8秒,可見真正的問題應(yīng)該在這里去解決。

 

投資風(fēng)險(xiǎn)
人力風(fēng)險(xiǎn)
只要您有可靠的PHP/JSP/Perl程序員就可以順利掌握MASON技術(shù),請(qǐng)注意MASON技術(shù)在編碼上與Perl代碼幾乎一樣。但是要注意組建化開發(fā)的概念與常見開發(fā)模式有很大區(qū)別。

版權(quán)風(fēng)險(xiǎn)
你使用MASON技術(shù)要比使用其他技術(shù)安全的多,F(xiàn)在國內(nèi)已經(jīng)開始重視知識(shí)產(chǎn)權(quán)了,請(qǐng)不要再使用盜版的商業(yè)系統(tǒng)。MASON是開放源碼項(xiàng)目,Perl也是,ModPerl也是,APACHE也是,Linux也是。還等什么呢?

國際案例
你肯定想知道有多少商業(yè)案例。那要去www.masonhq.com上去查查吧。

我隱約記得有amazon.com,有SONY的imagestation.com,還有NSAS。大約世界上有一萬家左右商業(yè)系統(tǒng)采用這個(gè)技術(shù)。一萬家可能不多,可是你要知道其中每天有多少商業(yè)交易依靠穩(wěn)定的MASON來完成。你可知道如果這個(gè)技術(shù)不穩(wěn)定Amazon.com的CTO就不會(huì)讓這個(gè)技術(shù)在他們公司的億元交易中使用了。

 

結(jié)束語
很高興您能消耗這么久的時(shí)間來了解MASON技術(shù)。我是Perlchina的會(huì)員也是一家公司的網(wǎng)站項(xiàng)目主管。Perlchina是一個(gè)與國際組織公司有著廣泛合作的開源組織,我們致力與在國內(nèi)推廣Perl語言。我們希望使用這種開源技術(shù)來降低每個(gè)公司的成本。所以Perlchina得到O`reilly公司的允許翻譯其公司在網(wǎng)站上的資料,獲得美國Apress出版集團(tuán)的贊助,與臺(tái)北Perl推廣組功能設(shè)計(jì)Perl下一代語言。

所以我們想要告訴您,以前在中國使用開源技術(shù)您的不到支持。從perlchina到來開始,您使用開源技術(shù)將獲得perlchina的支持。一切的問題我們都為您想到了,都愿意幫助您解決,您還有什么理由不使用MASON呢?放棄JAVA放棄PHP放棄ASP吧。一切幫助都是我們自愿的,所以如果Perl語言能為您帶來效益,您不會(huì)吝嗇掏一些錢贊助我們發(fā)展吧?

無論如何,希望這些能幫助到您。以下是一些資源:

Perlchina網(wǎng)站:www.perlchina.org   china.pm.org
MASON技術(shù):www.masonhq.com
MASON免費(fèi)書:www.masonbook.com

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-09-09 17:05 |只看該作者
居然沒人回帖啊 樓主還有什么心得能給我么

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-09-09 18:35 |只看該作者

回復(fù) #1 feiyi 的帖子

自己寫的嗎?

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-09-09 18:50 |只看該作者
google下看看咋回事?
我還沒用過perl來做類似網(wǎng)站的東東呢

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-09-10 16:36 |只看該作者
05年的帖子了 估計(jì)樓主已經(jīng)不在這里混了
誰有mason的學(xué)習(xí)筆記什么啊

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2009-09-10 17:30 |只看該作者
這也被挖出來了,

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-09-11 22:16 |只看該作者
寫的蠻好的。我補(bǔ)充一下:
<%once>是在編譯時(shí)執(zhí)行的,它僅在組件被Load到內(nèi)存時(shí)執(zhí)行一次。
<%init>是運(yùn)行時(shí)執(zhí)行的,它只是相當(dāng)于把<%perl>代碼放在組件的最開頭。

其實(shí)mason最主要優(yōu)勢(shì)是用在Modperl下,因?yàn)镸odperl里有Mason這么一個(gè)天然的handler。
現(xiàn)在apache2 + mp2都相當(dāng)穩(wěn)定了,很多商業(yè)應(yīng)用就是基于這個(gè)的。
如果網(wǎng)站使用CGI,個(gè)人認(rèn)為TT更簡潔清楚,它讓HTML和perl徹底分離。
而Mason是perl與Html混雜在一起,通常designer寫完包含mason變量的頁面,perl程序員還要在頁面底部接著寫perl代碼。

偶認(rèn)為幾個(gè)比較:
(1)可維護(hù)性? TT強(qiáng)于Mason.
(2)性能?Mason+MP強(qiáng)于TT.
(3)易用性?TT勝過Mason.
(4)插件豐富性?不相上下。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-09-14 21:53 |只看該作者

回復(fù) #7 蘭花仙子 的帖子

謝啦 哎自己不懂的太多了

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-01-11 16:06 |只看該作者
原帖由 蘭花仙子 于 2009-9-11 22:16 發(fā)表
寫的蠻好的。我補(bǔ)充一下:
是在編譯時(shí)執(zhí)行的,它僅在組件被Load到內(nèi)存時(shí)執(zhí)行一次。
是運(yùn)行時(shí)執(zhí)行的,它只是相當(dāng)于把代碼放在組件的最開頭。

其實(shí)mason最主要優(yōu)勢(shì)是用在Modperl下,因?yàn)镸odperl里有Mason這么 ...

受教了!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP