亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 基礎知識 > 正文

關于三種主流WEB架構的思考

2020-10-28 20:12:07
字體:
來源:轉載
供稿:網友
 以下想法主要以PHP實現為示例,但很多體會我想Java,.NET,Ruby開發者應該也很容易理解。最后是我對于剛面世就引起無數人關注的Delphi fo PHP的評測。

WEB程序的架構基本上可以分成以下三類:

(一) 基于"WEB頁面/文件",例如CGI和PHP/ASP程序。程序的文件分別存儲在不同的目錄里,與URL相對應。當HTTP請求提交至服務器時,URL直接指向某個文件,然后由該文件來處理請求,并返回響應結果。

比如http://www.website.conm/news/readnews.php?id=1234

可以想像,我們在站點根目錄的news目錄下放置一個readnews.php文件。

這種開發方式最自然,最易理解,也是PHP最常用的方式。要注意產生的URL對搜索引擎不友好,不過你可以用服務器提供的URL重寫方案來處理,例如Apache的mod_rewrite。

(二) 基于"動作"(Action)。這是MVC架構的WEB程序所采用的最常見的方式。目前主流的WEB框架像Struts、Webwork(Java),Ruby on Rails(Ruby),Zend Framework(PHP)等都采用這種設計。URL映射到控制器(controller)和控制器中的動作(action),由action來處理請求并輸出響應結果。這種設計和上面的基于文件的方式一樣,都是請求/響應驅動的方案,離不開HTTP。

比如 http://www.website.com/news/read/id/1234

可以想像在實際代碼中,我們會有一個控制器newsController,其中有一個readAction。不同框架可能默認實現方式稍有不同,有的是一個Controller一個文件,其中有多個Action,有的是每個Action一個文件。當然這些你都可以自己控制,題外話。

這種方式的URL通常都很漂亮,對搜索引擎友好,因為很多框架都自帶有URL重寫功能??梢宰杂梢幎║RL中controller、action及參數出現的位置。

另外,還有更直接的基于URL的設計方案,那就是REST。通過人為規定URL的構成形式(比如Action限制成只有幾種)來促進網站之間的互相訪問,降低開發的復雜性,提高系統的可伸縮性。REST對于Web Services來說是一個創新。

雖然本文討論的是單個項目所采用的架構,而REST是為了解決網站之間的通訊問題,但REST的出現,會對單個項目的架構造成影響(很顯然你在開發時就要構造規范的URL)。將來混用REST和MVC應該也是一種趨勢。RoR提供很好的REST支持,Zend Framework也提供了Zend_Rest來支持REST,包括Server和Client。

(三) 基于"組件"(Component ,GUI設計也常稱控件)、事件驅動的架構,最常見的是微軟的.NET。基本思想是把程序分成很多組件,每個組件都可以觸發事件,調用特定的事件處理器來處理(比如在一個HTML按鈕上設置onClick事件鏈接到一個PHP函數)。這種設計遠離HTTP,HTTP請求完全抽象,映射到一個事件。

事實上這種設計原本最常應用于傳統桌面GUI程序的開發,例如Delphi,Java Swing等。所有表現層的組件比如窗口,或者HTML表單都可以由IDE來提供,我們只需要在IDE里點擊或拖動鼠標就能夠自動添加一個組件,并且添加一個相應的事件處理器。

這種開發方式有幾個優點:

復用性 -代碼高度可重用。 

易于使用 -通常只需要配置控件的屬性,編寫相關的事件處理函數。

我個人也挺喜歡這種方式,PEAR就提供了相當強大的HTML_QuickForm,用于在頁面添加表單元素及其事件處理函數,還可以與Smarty等模板引擎相結合。這對于項目開發來說是一個補充性的功能,在項目中的某些部份使用QuickForm,有時可以大大加快開發。

而完全基于組件和事件驅動的開發框架對于PHP來說也已經不新鮮,PRADO就是一個這樣的框架,曾經得過Zend編程大賽的頭獎。但目前來說很顯然Prado所提倡的這種開發方式仍然沒有被大部份PHP程序員所接受。為什么呢?

我覺得主要有以下兩個問題:

(1)效率問題

這里指的不是開發效率,而是代碼的執行效率。眾所周知,正常情況下,PHP的執行是相當高效的。但是目前這種基于控件的框架效率都成問題。Prado本身提供了一個緩存機制來緩解這個問題。如果不采用緩存,可以說很多站點根本不能使用Prado這樣的框架,比如門戶網站,大型論壇等。

但ASP .NET不太一樣,因為它是編譯型的框架,最后生成的代碼是編譯生成的,不需要再次進行中間過程的諸多處理,所以在第一次執行之后速度會很快,執行效率還是很高的?!∵@是語言層次的功能,Prado無法通過代碼層次的努力完全彌補。

(2)沒有強大的IDE支持

設置控件的屬性,添加其對應的事件處理器,看似簡單,但控件多了,這也是個繁重的工作。.NET的強大就在于它把程序員從重復的工作中解放了出來,設置屬性很方便,事件處理器也會自動添加。Prado目前沒有這樣的IDE支持。

總之,這種基于控件的框架比較適合于用戶交互較多的,需要對頁面中的很多組件設置不同處理操作,但對于性能要求不高的應用。另外,帶有組件支持的框架通常對AJAX的支持都較好,比如.NET和Ruby on Rails。

綜上,三種架構基本上可以代表目前的所有主流WEB開發方式,包括PHP,JavaEE,.NET,Ruby/RoR。

目前PHP開發的狀況和未來的趨勢:

平時做PHP比較多,特別總結一下PHP開發的趨勢。目前在PHP開發中,我們最常用的是基于"文件"的架構,其實也就是一種"面向過程"的開發方式。通常我們寫PHP程序的目的就是"快點上線,讓程序跑起來"。而且大多數PHP程序員還要和HTML、CSS做近身搏斗,所以如果程序太抽象,調整視覺效果就比較困難。所以對于小項目,這是一個最好的選擇。

但越來越多人認識到,面向對象和MVC框架更能促進代碼的復用和分享,而且程序易于擴展,隨著程序復雜性的增加這個趨勢越明顯。所以OO框架層出不窮。目前PHP框架當中最有前景的是CakePHP、Symphony和Zend Framework,各自擁有活躍的社區和龐大的用戶群,都在快速成長當中。PHP的框架都避免走Java框架龐大臃腫的老路,致力于快速開發,而且主動模仿和吸收RoR這些優秀框架的新特性。隨著PHP5的普及和這些框架的成熟,加上PHP原本開發社區的龐大人數,將來也許又會再產生出一些行業性的標準。

這種選擇適合于中大型項目,特別是需要較大的團隊合作和需要長期維護和二次開發情況。個人認為這是將來PHP開發的趨勢。

而對于基于組件和事件驅動的開發方式大多數PHP程序員都不感興趣。但是也有不少人在做這方面的努力,例如Codegear的Delphi for PHP,就吸引了很多人的關注。如果有強大的商業支持,也許將來在開發市場也會占一席之地。

我會在下一篇文章介紹D4P的新特性并作評測。

WEB開發的未來展望:

隨著更貼近HTTP的REST的流行,我覺得像.NET和Java中的抽象組件的方式會受到沖擊。因為這些組件并不如它們所承諾的那么方便。未來MVC+REST+RIA的模式應該會比較流行。

AJAX是一把雙刃劍,盡管事件驅動的架構看起來非常適合于處理異步的請求(可以想像頁面中存在幾個組件,每個組件都可以觸發異步請求,對應對服務器端的某個事件處理器,看起來是很理想的一個處理方式),但要為客戶端自動生成良好的JavaScript代碼是很不容易的,要滿足各種瀏覽器的兼容性要求,還要能夠自己進行擴展,以滿足項目中千奇百怪的需求。 很多時候我更傾向于使用一些JS框架如Prototype來自己開發各種效果,而不是在服務器端生成。在服務器端生成JS的兩個結果,一是對生成的代碼不信任,二是人變傻,因為你并不知道真正發生了什么。

(一點牢騷也貼上來)

關于WEB開發的個人疑惑:

l 為了讓開發更簡單,我們不得不學習使用復雜的開發工具和框架,這到底是一個進步,還是退步?

l IDE讓程序員變聰明還是變傻? 當我們在服務器代碼里面就可以設計客戶端界面,這是一個進步還是退步?

舉個例子說,微軟的ASP.NET AJAX,讓我們可以在服務器端設計各種異步的控件。那么程序員甚至可以不會Javascript,不懂AJAX就設計出各種客戶端效果。要是哪一天項目需要設計稍復雜的效果,靠IDE和框架無法自動完成,你要怎么辦? 到這個時候再來學JS,也許就遲了。更可怕的是,技術在更新和淘汰,可能十年之后,你會發現自己除了各種IDE之后,真正精通的技術很少,脫離了IDE你寫一個小程序都要查半天API手冊,因為你平時都是依賴"自動補齊"來寫代碼的! 這樣的情景,我想沒有人愿意發生。

也許對于短期開發的項目來說,是一個進步,但對于程序員個人的成長來說,這并不是好事。對工具的依賴,導致了我們對于底層和核心技術的不求甚解,限制了個人的成長。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产高潮在线观看| 日韩av理论片| 欧美又大又硬又粗bbbbb| 精品无人区太爽高潮在线播放| 在线观看欧美日韩国产| 国产精品av网站| 亚洲国产中文字幕久久网| 国产精品日韩在线| 亚洲精品国产综合久久| 亚洲综合在线播放| 美女黄色丝袜一区| 欧美亚洲免费电影| 欧美人与性动交a欧美精品| 日韩欧美国产一区二区| 国产精品美女久久久久av超清| 亚洲人精选亚洲人成在线| 亚洲欧洲偷拍精品| 91亚洲精品久久久久久久久久久久| 97视频在线观看网址| 亚洲一区二区三区四区视频| 97婷婷大伊香蕉精品视频| 欧美精品久久久久久久| 日韩成人在线网站| 国产精品揄拍500视频| 国产成人a亚洲精品| 久久精视频免费在线久久完整在线看| 久久久精品久久久久| 久久精品国产亚洲7777| 欧美日本在线视频中文字字幕| 亚洲夜晚福利在线观看| 久久久久久久一区二区| 成人a在线观看| 欧美一区二区大胆人体摄影专业网站| 久久久亚洲精品视频| 亚洲男人的天堂在线播放| 色综合伊人色综合网站| 精品成人国产在线观看男人呻吟| 精品视频久久久久久| 久久色精品视频| 成人欧美一区二区三区在线湿哒哒| 亚洲人高潮女人毛茸茸| 中文字幕视频一区二区在线有码| xxxxx成人.com| 91社区国产高清| 日本a级片电影一区二区| 久久九九亚洲综合| 精品国产乱码久久久久酒店| 海角国产乱辈乱精品视频| 成人网在线观看| 成人a视频在线观看| 亚洲精品资源美女情侣酒店| 国产精品极品尤物在线观看| 国产欧美在线看| 国产亚洲欧洲在线| 久久久久久久久久久久久久久久久久av| 久久精品99无色码中文字幕| 中文字幕日韩欧美在线视频| 日韩在线观看av| 国产aⅴ夜夜欢一区二区三区| 日韩欧美主播在线| 国精产品一区一区三区有限在线| 在线a欧美视频| 精品国产乱码久久久久久婷婷| 亚洲精品中文字幕有码专区| 92裸体在线视频网站| 色偷偷88888欧美精品久久久| 国产在线精品一区免费香蕉| 国外成人性视频| 国产亚洲a∨片在线观看| 欧美一级成年大片在线观看| 欧美一级bbbbb性bbbb喷潮片| 欧美日韩一区免费| 日韩av网址在线| 夜夜狂射影院欧美极品| 欧美综合第一页| 国产精品96久久久久久又黄又硬| 亚洲精品视频网上网址在线观看| 久久久精品影院| 日韩av网站电影| 国产亚洲免费的视频看| 国产精品专区一| 欧美国产日韩一区二区| 91精品国产乱码久久久久久蜜臀| 日韩在线观看免费网站| 51ⅴ精品国产91久久久久久| 在线视频亚洲欧美| xxx欧美精品| 亚洲精品日产aⅴ| 这里只有视频精品| 久久国产精品网站| 久久精品91久久久久久再现| 亚洲桃花岛网站| 精品亚洲va在线va天堂资源站| 91影视免费在线观看| 成人午夜在线影院| 国产日本欧美一区| 日韩美女中文字幕| 日韩最新免费不卡| 国产91亚洲精品| 久久精品人人做人人爽| 国产一区视频在线播放| 亚洲变态欧美另类捆绑| 日韩www在线| 日韩美女主播视频| 欧美不卡视频一区发布| 国产精品91免费在线| 国产亚洲精品久久久优势| 成人a在线观看| 亚洲一区二区久久久久久| 色综合影院在线| 欧美性猛交xxxx免费看| 91成人福利在线| 久久久久久久久久av| 国语自产精品视频在免费| 欧美电影免费看| 欧洲一区二区视频| 国产精品一区二区久久国产| 久久99热精品| 欧美精品电影免费在线观看| 日韩中文视频免费在线观看| 欧美日韩一区二区三区在线免费观看| 欧美日韩美女在线观看| 欧美中文在线免费| 国产成人精品999| 国内精品久久久久影院优| 亚洲一二三在线| 欧美黄色www| 欧美一级淫片播放口| 久久久综合免费视频| 91在线国产电影| 在线观看日韩专区| 亚洲成人精品av| 久久久久久久久久久免费精品| 最近2019年中文视频免费在线观看| 中文字幕久热精品视频在线| 精品精品国产国产自在线| 亚洲成人国产精品| 91色琪琪电影亚洲精品久久| 欧美另类精品xxxx孕妇| 成人免费网站在线看| 亚洲free性xxxx护士白浆| 亚洲电影免费观看| 久久天天躁狠狠躁老女人| 亚洲综合中文字幕68页| 91sao在线观看国产| 亚洲国内精品视频| 国产成人jvid在线播放| 精品色蜜蜜精品视频在线观看| 欧美日韩国产二区| 91久久久久久久久久久久久| 另类天堂视频在线观看| 亚洲精品国产精品久久清纯直播| 欧美性受xxxx黑人猛交| 8x拔播拔播x8国产精品| 亚洲欧美日韩国产中文| 亚洲精品综合久久中文字幕| 国产精品都在这里| 亚洲免费小视频| 国产91精品视频在线观看| 亚洲男人天堂古典| 在线日韩日本国产亚洲| 中文字幕在线看视频国产欧美| 国产精品国产自产拍高清av水多| 久久免费视频网|