廢話(huà)少說(shuō),那么QPG平臺到底為程序員提供了什么呢?回答是QPG不是包羅萬(wàn)象的框架,他借助castle的IoC\AOP、log4net、NHibernate等提供的強大功能來(lái)幫助程序員簡(jiǎn)化開(kāi)發(fā)任務(wù)。QPG本身提供了端到端的服務(wù)負載均衡,任何程序在這個(gè)世界里都可以提供服務(wù),當然也可以消費服務(wù)!當然這肯定對某些人來(lái)說(shuō)還不夠,隨著(zhù)今后的需求增加,我們會(huì )再集成一些輕量級的有用組件。 下面以一個(gè)簡(jiǎn)單的例子來(lái)介紹QPG平臺的基本功能:正確高效使用組件、日志、加密壓縮。 首先請下載開(kāi)發(fā)演示文件,把它解壓到一個(gè)目錄,你可以看到如下的Basic項目。 們編寫(xiě)了一個(gè)產(chǎn)品組件,還有一個(gè)銷(xiāo)售管理組件。不過(guò)那個(gè)組件會(huì )在今后的AOP里再演示了?,F看看產(chǎn)品組件,是否很簡(jiǎn)單: 打開(kāi)bin\Debug\config\app_config.xml,這個(gè)文件用來(lái)配置您自己編寫(xiě)的組件。本例中的配置如下: 我們配置了三個(gè)Product對象: p1就只會(huì )存在一個(gè),并且不會(huì )被容器釋放; p2會(huì )存在至少兩個(gè)實(shí)例,當內存池不夠時(shí)容器會(huì )創(chuàng )建時(shí)新的并且加入到實(shí)例池,但是最多只有4個(gè)。是否比較難理解?我們拿孫悟空為例,雖然可以變出許多猴子,但是都是他的替身罷了。 p 3則總是新人,但愿談戀愛(ài)的弟弟妹妹不要這樣:-) 看看我們的測試片斷: 讓我們來(lái)看看執行的結果如何吧: 先運行tesSingleton call Product() call Product() Product(P1,333,33) 1--333 2—10 //哈哈:第二次使用的還是那個(gè)對象,我們在前次給他的價(jià)格已經(jīng)設置為10元了 3--20 4--30 1--40 2--10 3—20 。。。。。。 您可以看到系統先產(chǎn)生了2個(gè)Product,那是因為p2最少有兩個(gè),平臺已經(jīng)知道我們的期望,自動(dòng)幫我們做了! P1只被產(chǎn)生一次:Product(P1,333,33),這些初始值就是我們在配置文件里寫(xiě)的,不是嗎? 在我的機器上運行10004次訪(fǎng)問(wèn)花費了1610ms 再看看testPool() call Product() 1--0 2--0 call Product() 3--0 call Product() 4--0 1--40 2--10 3--20 4--30 5--40 6--50 7--60 8--70 9--80 。。。。。。 您可以看到雖然系統先產(chǎn)生了2個(gè)Product,但是在訪(fǎng)問(wèn)并且不釋放情況下第三、四次訪(fǎng)問(wèn)時(shí),系統調用了缺省構造函數來(lái)產(chǎn)生一個(gè)新的實(shí)例。以后使用訪(fǎng)問(wèn)并釋放的方法,這四個(gè)實(shí)例滿(mǎn)足了我們一萬(wàn)次的訪(fǎng)問(wèn)。在我的機器上,這個(gè)TestCase用了1687ms,也證明盡管有緩存,但是畢竟構造兩次也花了些時(shí)間。所以沒(méi)有Singleton快。 最后再看看每次都來(lái)個(gè)新的: call Product() call Product() call Product() 1--0 call Product() 2--0 call Product() 3--0 call Product() 4--0 call Product() 1--0 call Product() 2--0 call Product() 3--0 call Product() 4--0 call Product() 。。。。。。 您可以看到確是每次都會(huì )產(chǎn)生新的,這樣肯定最慢了,在我機器上用了4031ms。 測試程序里還演示了兩個(gè)常用的功能,寫(xiě)日志和加密壓縮。演示結果您可以在LOG\下發(fā)現一個(gè)log.txt,打開(kāi)看看應該如下: [DEBUG][2005-09-27 21:23:09,484]--hello world! SO SIMPLE! 是否太過(guò)簡(jiǎn)單?如果您了解log4net ,您可以配置成您想要的日志方式,比如寫(xiě)系統日志、謝數據庫、遠程對象、UDP廣播等。 在看看加密壓縮吧: Zip:UEsDBBQAAAAIAEi0OzMnz+xKCgAAAAgAAAAHAAAARFRPLnhtbAsMcNcrSS0uAQBQSwECFAAUAAgACABItDszJ8/sSgoAAAAIAAAABwAAAAAAAAAAAAAAAAAAAAAARFRPLnhtbFBLBQYAAAAAAQABADUAAAAvAAAAAAA= Encrypt:cvvPjAY7PxOBywAak7KOw6b5J157cRpVLm4pUWDJIc+i3ihSvn5OMahF1sFDrkckMxvLod78maAQppESMCKa0x9pJxvrZbN5i/rMMNSTfF6ffA57JhyhZSgNMrufC0daVX Decrypt:UEsDBBQAAAAIAEi0OzMnz+xKCgAAAAgAAAAHAAAARFRPLnhtbAsMcNcrSS0uAQBQSwECFAAUAAgACABItDszJ8/sSgoAAAAIAAAABwAAAAAAAAAAAAAAAAAAAAAARFRPLnhtbFBLBQYAAAAAAQABADUAAAAvAAAAAAA= UnZip:QPG.test 這就是我們要的,是很簡(jiǎn)單,基本夠用就好! 另外心細的讀者會(huì )發(fā)現SimpleContainer.MessageQueue,這是干什么的呢?那是我們分布式處理的消息隊列代理,且聽(tīng)下回分解......





























































































































































































(在沒(méi)有正確配置時(shí)使用會(huì )報錯喔!)
聯(lián)系客服