資源描述:
《產(chǎn)品之路隨想》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、產(chǎn)品之路的隨想(社區(qū)版)?98年從14.4k的modem撥號(hào)上網(wǎng),看到的是網(wǎng)易,郵箱,藍(lán)波BBS,以及痞子蔡的《第一次親密接觸》,這些讓我印象非常深刻。當(dāng)時(shí)沒(méi)能想到web對(duì)我的生活和工作產(chǎn)生了這么大的影響。99年開(kāi)始接觸搜索引擎,有位老鳥(niǎo)的話讓我記憶猶新:“要把google.com寫在手背上,天天能看見(jiàn)”。2000年開(kāi)始接觸php,mysql,linux,apache,一個(gè)企業(yè)網(wǎng)站能賣5000元,那個(gè)時(shí)候是個(gè)產(chǎn)生泡沫的時(shí)代,對(duì)我們來(lái)說(shuō)也是個(gè)幸福的時(shí)光。?在那個(gè)年代里,操作系統(tǒng)是windows98,linux還只是勇敢者的工具,廣大
2、程序員還熱衷于鉆研pb、dephi、vb;Web上的開(kāi)發(fā)感覺(jué)上還是玩具;仍舊津津樂(lè)道于ms的發(fā)家史,回味著ms和broland的激烈競(jìng)爭(zhēng),至于google,面孔總是一成不變,但它總能返回你檢索需要的東西,仿佛是從遙遠(yuǎn)的地方傳來(lái)的天籟之音,一切很神秘。????????????如果把基于web開(kāi)發(fā)看作一段歷史,我和web也逶迤拍拖了10年。如果把Java出生名門的語(yǔ)言叫做大家閨秀,那開(kāi)源社區(qū)推出來(lái)的語(yǔ)言就可以稱呼為小家碧玉了。大家閨秀和小家碧玉各有風(fēng)姿,在早期的開(kāi)發(fā)中是各有千秋,一般來(lái)說(shuō)企業(yè)應(yīng)用采取的是java/jsp/ejb等;互聯(lián)
3、網(wǎng)應(yīng)用是php/mysql/apache/linux;大家井水不犯河水,各自在自己的領(lǐng)域中用著不同的開(kāi)發(fā)語(yǔ)言。不過(guò)隨著小家碧玉這幾年越發(fā)出落得玲瓏綽約,大家也爭(zhēng)相使用,象spring,hibernate,tomcat都是其中的佼佼者;開(kāi)發(fā)模式也有了極大的改進(jìn),從早期model1演變成了隨后的model2,再到目前基于框架的快速開(kāi)發(fā),乃至現(xiàn)在推崇平臺(tái)開(kāi)發(fā);工具也從當(dāng)年的editplus/ultraedit到后來(lái)的jbuilder,直到現(xiàn)在的eclipse一統(tǒng)天下。??圖1model1模式?圖2model2模式???????????仿
4、佛是一夜春風(fēng)來(lái),千樹(shù)萬(wàn)樹(shù)梨花開(kāi),在java誕生15年后,我們處在一個(gè)前所未有的面臨選擇的境地:各種各樣的軟件工具,框架,平臺(tái)紛至沓來(lái);銀彈/非銀彈爭(zhēng)論不休,開(kāi)發(fā)方法論孰是孰非皆無(wú)定論,此時(shí)此刻只有windowsnet氣定神閑,整體解決方案,全套開(kāi)發(fā)工具,所見(jiàn)即所得界面,開(kāi)發(fā)就這么容易,可惜我選擇的是Java路線,結(jié)果在選型,搭配上花不少的時(shí)間,也走了不少的彎路。?一路走來(lái),項(xiàng)目之中的苦與樂(lè)在內(nèi)心中醞釀發(fā)酵,如何抽象組件,如何提煉成平臺(tái),如何包裝產(chǎn)品,也漸漸有了一點(diǎn)感悟和體會(huì)。作項(xiàng)目苦,作項(xiàng)目累,留給自己的只有滿身的疲憊;在上線的倒
5、計(jì)時(shí)中,程序員們?cè)谄v不堪的編寫代碼調(diào)試bug,項(xiàng)目經(jīng)理們殫精竭慮計(jì)算如何上線,不同的部門之間相互扯皮推諉。幾年下來(lái),項(xiàng)目還是手工作坊方式,自己沒(méi)有什么長(zhǎng)進(jìn)。疲憊啊疲憊,不在項(xiàng)目中錘煉,就要在項(xiàng)目中頹廢。如何跳出項(xiàng)目的怪圈呢?????????????國(guó)內(nèi)的軟件公司大體可以分為3類:1作項(xiàng)目;2做作平臺(tái)/產(chǎn)品,有的公司是兼而有之,以項(xiàng)目養(yǎng)產(chǎn)品;3、做運(yùn)營(yíng)。項(xiàng)目導(dǎo)向的公司要做好做強(qiáng)做長(zhǎng)久,以下幾個(gè)步驟是不可缺少的,只是不同的階段深入的程度有所差異:?·1、業(yè)務(wù)邏輯組件化·2、基礎(chǔ)代碼框架化·3、開(kāi)箱即用平臺(tái)化1、組件化:???????
6、?????公司在項(xiàng)目中已經(jīng)沉淀了這么多年,已經(jīng)積累了很多可用的業(yè)務(wù)組件,包括報(bào)表展現(xiàn)、ExtJs圖形開(kāi)發(fā),flex頁(yè)面設(shè)計(jì)工具,規(guī)則引擎,流程引擎等。應(yīng)用這些組件,在項(xiàng)目實(shí)施中減少了開(kāi)發(fā)時(shí)間,提高了工作效率。但這些組件分布在不同的部門,大家各用各,甚至還有些敝帚自珍的想法;有的基礎(chǔ)組件是你有我有大家有,重復(fù)開(kāi)發(fā)。對(duì)于這些組件如何甄別和挑選,不浪費(fèi)本來(lái)就很珍貴的人力資源,則在部門之間應(yīng)該有個(gè)通盤考慮。?就算各個(gè)組件都匯聚了,如何互聯(lián)互通,以及在同一個(gè)項(xiàng)目?jī)?nèi)發(fā)揮預(yù)期作用,這就考驗(yàn)組件的設(shè)計(jì)方式了。我們的組件基本上都是圍繞數(shù)據(jù)/表來(lái)的,
7、涉及一些增刪改查以及前端展現(xiàn),著重要考慮是事務(wù)以及組件之間的關(guān)聯(lián),因?yàn)槲覀兊慕M件是需要被上層更大的組件,或者模塊所調(diào)用,如果組件對(duì)外暴露的是api接口,就不能假設(shè)上層應(yīng)用對(duì)組件之間的調(diào)用邏輯順序。?如何設(shè)計(jì)一個(gè)比較通用的組件?有些地方可能需要注意:?·1、事務(wù)的調(diào)用,組件內(nèi)部不能發(fā)起事務(wù)的開(kāi)始,這個(gè)權(quán)利交給了用戶,用戶或在client顯示申明,或是在spring內(nèi)部聲明?!?、組件可能要使用充血模式而不是貧血模式,即在組件內(nèi)部中維護(hù)自身的數(shù)據(jù)和狀態(tài),并同上層的業(yè)務(wù)系統(tǒng)的數(shù)據(jù)同時(shí)提交或者同步回滾?!?、組件內(nèi)部的各個(gè)類需要自身來(lái)維系
8、,比如工廠模式,多例單例,而不能依靠AOP的能力,否則每集成一個(gè)組件,都尾大不掉的帶一個(gè)spring,彼此之間有影響,項(xiàng)目?jī)?nèi)部可以使用spring,但在組件級(jí)別,類與類的關(guān)系得在組件內(nèi)部考慮。·4、組件要支持多線程環(huán)境,要不給方法加入同步,要不給屬