企業(yè)管理軟件平臺(tái)架構(gòu)內(nèi)幕揭秘(轉(zhuǎn)載)
企業(yè)管理軟件,由于進(jìn)入門(mén)坎低,各行各業(yè)各層次企業(yè)都需要,做面向企業(yè)應(yīng)用比做面向個(gè)人應(yīng)用要賺錢多,好銷售,所以中國(guó)內(nèi)地有相當(dāng)大部分的程序員在從事著企業(yè)管理軟件的開(kāi)發(fā)。
尤其是接項(xiàng)目的軟件公司,這類公司往往在中國(guó)當(dāng)前軟件行業(yè)占很多。3-4個(gè)或5-6個(gè)程序員,老板拉來(lái)什么項(xiàng)目就做什么項(xiàng)目,進(jìn)銷存、費(fèi)用報(bào)銷、銷售管理、客服維修工單、請(qǐng)假考勤管理等等為大部分單子內(nèi)容。
有朋友留言:就10來(lái)萬(wàn)的單子,就1-2個(gè)程序員,從調(diào)研到設(shè)計(jì)到開(kāi)發(fā)到測(cè)試到打包到實(shí)施安裝到培訓(xùn)到推動(dòng)上線到支持,全活兒。哪來(lái)的精力再去開(kāi)發(fā)平臺(tái)。再說(shuō)了,都是10來(lái)萬(wàn)的單子,開(kāi)發(fā)平臺(tái)就大才小用了,什么設(shè)計(jì)模式,什么OO,什么界面和代碼分離,什么代碼重構(gòu),都扯淡,往界面拖控件,用ADO連數(shù)據(jù)庫(kù),OK。費(fèi)那精神干嘛,把錢快速賺到才是真理。
其實(shí),你發(fā)現(xiàn)沒(méi),你做的管理軟件(叫它MIS也行,你愛(ài)戴高帽就叫它ERP)有一些東西都挺相似。我有個(gè)專門(mén)給小企業(yè)做網(wǎng)站的哥們,5天一個(gè)網(wǎng)站。他手里面從免費(fèi)郵箱服務(wù)器、BBS論壇、流量統(tǒng)計(jì)軟件、網(wǎng)站新聞內(nèi)容管理系統(tǒng)全從網(wǎng)上找好源代碼,各種圖標(biāo)圖片素材庫(kù),機(jī)器上裝好Dreamweaver、PhotoShop、Flash。小企業(yè)老板來(lái)了,他把過(guò)去做的案例往出一拿,你挑吧。然后七湊八湊幾天完工。
這是不是平臺(tái)呢?
我們?yōu)槭裁葱枰脚_(tái)?我們需要什么樣的平臺(tái)?平臺(tái)應(yīng)該包括哪些東西?一個(gè)完備的平臺(tái)是怎樣的?
帶著這些問(wèn)題,我們一一揭秘。
拿我哥們剛才的例子剖析。我個(gè)人認(rèn)為那就是一個(gè)平臺(tái)。我們?yōu)槭裁葱枰脚_(tái)?就是為了不每次都重新發(fā)明輪子,為了能快速的完成代碼工作(可以多賺點(diǎn)錢或者可以多打會(huì)游戲或者瞌睡或者可以多時(shí)間去泡MM)。
快速完成,是平臺(tái)的第一目標(biāo)。但是快速三下五除二干完了,去客戶那里一跑,BUG百出,倒霉,還得熬夜修改,長(zhǎng)期出差回不了家。修改代碼,痛苦,還不如推倒重新正式寫(xiě)代碼。
看來(lái),平臺(tái)的第二個(gè)目標(biāo)必須是穩(wěn)定。
既能快速開(kāi)發(fā),又能穩(wěn)定,這是個(gè)好平臺(tái)了吧。
不,客戶個(gè)性化需求來(lái)了,發(fā)現(xiàn)真難改。按照普通簡(jiǎn)單流程處理(增/刪/改/查列表/明細(xì)),確實(shí)平臺(tái)能給很大幫助,但是客戶一個(gè)性化,平臺(tái)就不靈了,個(gè)性化代碼怎么都插不進(jìn)去手。平臺(tái)自成一套圈子,外圍異常代碼根本插不進(jìn)去(這是現(xiàn)在很多號(hào)稱平臺(tái)的產(chǎn)品都共有的最大弊病)。
好不容易遇到個(gè)好個(gè)性化定制的平臺(tái),平臺(tái)性能不佳,老掛機(jī),客戶的電話吼的真想把電話線拔掉,甚至幻想全公司電話和互聯(lián)網(wǎng)和自己的手機(jī)都?jí)牧恕?br />
終于搞定以上的所有問(wèn)題,給客戶安裝上,培訓(xùn)好,推動(dòng)上線,終于可以閃人了。回到自己的床上,真舒服呀。
沒(méi)想到惡夢(mèng)才剛剛開(kāi)始。客戶的電話來(lái)了:我發(fā)現(xiàn)報(bào)表不對(duì)呀,數(shù)對(duì)不上去,你看哪里出問(wèn)題了?
O,My God。我剛回來(lái),你就...。 我又不能飛過(guò)去。好吧,好吧,你有QQ或PcAnyWhere嗎,我們來(lái)連一下,我給查一下數(shù)據(jù)庫(kù)。什么?服務(wù)器不容許上網(wǎng)?那我怎么辦?
看來(lái)需要一個(gè)排錯(cuò)、可跟蹤、可輸出詳細(xì)日志、可過(guò)濾日志的東西,就像SQLSERVER的查詢跟蹤器一樣。
嗯,好不容易把問(wèn)題搞定,修改完代碼,需要給客戶升級(jí)。
什么,你們家沒(méi)有網(wǎng)管,都是兼職的,根本不會(huì)SQLSERVER,腳本怎么執(zhí)行,怎么備份,不知道?
算我倒霉,電話我告訴你一步步操作。(長(zhǎng)途電話費(fèi)N多,老板沖你發(fā)火,你低頭不語(yǔ),心里念到這個(gè)豬頭)
什么?升級(jí)了也不好用?那你肯定沒(méi)按我說(shuō)的操作來(lái)。
什么?有的機(jī)器好用,有的機(jī)器不好用?你肯定沒(méi)有把所有客戶端都升級(jí)了。
哦,看來(lái)需要一個(gè)自動(dòng)升級(jí)的模塊。
挖咔咔,軟件賣的好好哦。咿呀咿呀咿。可是,可是...。居然有家伙盜版使用我們的軟件,看來(lái)我不加密不行了。
加密,加KEY,加并發(fā)用戶數(shù),加正版判別,加使用期過(guò)期。
嗯,終于天下太平了,抱得美人歸。
從以上來(lái)看,我們似乎并不是為了平臺(tái)而平臺(tái),為了市場(chǎng)宣傳和銷售便利而做平臺(tái)噱頭。我們確實(shí)在多如牛毛的小項(xiàng)目的水深火熱戰(zhàn)火紛飛中,我們渴望有這些東西將我們快速解脫。如果我們是開(kāi)發(fā)中大型系統(tǒng)的,我們的產(chǎn)品需要延續(xù)生命周期8-10年,需要部署給成千上萬(wàn)的客戶,客戶需要管理幾億的關(guān)鍵數(shù)據(jù),有幾千個(gè)客戶并發(fā),我們更需要平臺(tái)。
所以,不管做小項(xiàng)目的,或者做大項(xiàng)目的,我們都需要平臺(tái)。
那我們需要什么樣的平臺(tái)。其實(shí)上述的場(chǎng)景中已經(jīng)把平臺(tái)的關(guān)鍵特性都說(shuō)了一遍,現(xiàn)在我總結(jié)一下:
1可以幫助開(kāi)發(fā)人員快速開(kāi)發(fā)
2穩(wěn)定
3可以個(gè)性化定制
4可以跟蹤日志排錯(cuò)
5可以自動(dòng)升級(jí)
6軟件版權(quán)保護(hù)
為了做到這些,國(guó)內(nèi)軟件精英不知有多少人前赴后繼的的投入研究(甚至做OA的,做工作流的,也號(hào)稱做平臺(tái))。讓我們歷數(shù)歷數(shù),看看各自的特點(diǎn)和優(yōu)缺點(diǎn),以對(duì)照一下我們需要的特性,他們的平臺(tái)具備不?
大連雅奇,95年我就知道它了。當(dāng)時(shí)好像是Foxbase版本的。可以生成菜單、界面代碼。其他的我現(xiàn)在忘了。不過(guò)去年CSDN還報(bào)道了一次大連雅奇
1報(bào)表打印,支持二維、交叉、套打、單據(jù)格式、多欄頭、導(dǎo)出HTML、PDF、EXCEL、DBF肯定是必須的。計(jì)算公式有沒(méi)有?變量有沒(méi)有?代碼調(diào)用API有沒(méi)有?嵌入圖表有沒(méi)有?小分組合計(jì)行不行?最底最右的總合計(jì)有沒(méi)有?支持不支持主從?支持不支持鏈接鉆取?
2圖表 當(dāng)然支持折線、直方、餅圖。不知道EXCEL所能支持的圖表,它是否都能支持,而且像EXCEL一樣好看。漏斗圖有沒(méi)有,里程圖有沒(méi)有?做領(lǐng)導(dǎo)報(bào)表(可以起名為管理駕駛艙或商業(yè)智能門(mén)戶)時(shí)非常需要。
3控件 可分組、可過(guò)濾、可定制查詢、可定制列視圖、可多排序、可導(dǎo)出、可預(yù)覽、可小計(jì)的Grid控件有沒(méi)有?可以權(quán)限管制行列數(shù)據(jù),定制列視圖的參照錄入控件有沒(méi)有?日歷控件有沒(méi)有?財(cái)務(wù)憑證控件有沒(méi)有?
4企業(yè)內(nèi)部即時(shí)通訊模塊、郵件收發(fā)模塊、預(yù)警提醒模塊有沒(méi)有呢?
其實(shí),這是在企業(yè)應(yīng)用中極為常見(jiàn)的一些公共功能。有一部份朋友給我QQ留言,他說(shuō)平臺(tái)架構(gòu)就是:中間件+Hibernate(ORM框架)+structs (MVC框架)+spring(AOP框架)+JSF控件(UI框架)+Log4j(日志框架)+JUnit(測(cè)試框架)+Ant(Build框架)+ JasperReports(報(bào)表框架)+JFreeChart(圖表框架)+osWorkFlow(工作流框架)。
我說(shuō)對(duì),這是平臺(tái)架構(gòu),但不是企業(yè)管理軟件的平臺(tái)架構(gòu)。企業(yè)管理軟件的平臺(tái)架構(gòu)需要更上一層,能方便開(kāi)發(fā)人員快速穩(wěn)定的開(kāi)發(fā)和修改。
大連雅奇能一直存活到如今,從各方面看雖已跟不上未來(lái),但目前很多小軟件公司和小企業(yè)還在進(jìn)行著初步的信息化,所以還是有很多的市場(chǎng)空間的。(我看到華軍軟件里有人發(fā)布的所謂強(qiáng)大平臺(tái),一下載一看,原來(lái)是一個(gè)數(shù)據(jù)庫(kù)維護(hù)軟件,讓人尷尬,但是還有大量的個(gè)人或2人工作室在不斷奮斗制造著這類軟件,我已經(jīng)看到了很多雷同的軟件了,也有市場(chǎng)?可能)。
講完最老的大連雅奇,在企業(yè)管理軟件平臺(tái)界,最有名的就數(shù)思維加速(現(xiàn)在改名起步)。起步從1999年開(kāi)始起步,技術(shù)一直跟的很緊,做的也非常深入,我個(gè)人認(rèn)為,起步是做企業(yè)管理軟件平臺(tái)最優(yōu)秀的一個(gè)。
1 起步加入了工作流,非常適應(yīng)時(shí)代
2加入了集團(tuán)企業(yè)多組織結(jié)構(gòu),非常適應(yīng)時(shí)代
3起步有數(shù)據(jù)庫(kù)建模工具,有版本管理工具,有部署工具,報(bào)表、圖表自不用說(shuō)。居然還有甘特圖和日歷,還有即時(shí)通訊工具
4起步擁有自己研發(fā)的代碼開(kāi)發(fā)IDE。這是國(guó)內(nèi)沒(méi)有的。老宋為了解決常規(guī)平臺(tái)自我封閉無(wú)法定制的詬病下了很大的氣力,讓簡(jiǎn)單開(kāi)發(fā)和個(gè)性定制融合。
5能支持JAVA中間件,也能支持COM+,能WEB,也能C/S。這也是國(guó)內(nèi)沒(méi)有的。
IDE,既是起步的殺手功能,也是起步的軟肋(想起一句古龍的話:敵人的優(yōu)點(diǎn)也就是他的缺點(diǎn))。IDE這個(gè)東西,世界有三巨頭:Eclipse、visual studio、Borland。大家都是干軟件的,大部分都是選擇這三類IDE,對(duì)這三類IDE很是習(xí)慣。但是現(xiàn)在要舍棄三巨頭,用了起步的平臺(tái),就需要用起步的IDE,而且IDE還沒(méi)有三巨頭做的好(要想做好,談何容易。君不見(jiàn)Eclipse有IBM巨資推動(dòng),visual studio更是微軟的一個(gè)重要產(chǎn)品線,投入大量人力。如果起步也要做,那豈不是平臺(tái)、IDE、工作流都要并進(jìn)?要知道,這三塊中的每一塊,都是需要單獨(dú)一個(gè)公司,而且是相當(dāng)實(shí)力的公司才能做好)。
于是,上海普元學(xué)乖了。IDE,我們就用Eclipse。
當(dāng)然,還是老三套:控件+工作流+報(bào)表。
普元的平臺(tái)框架有組織結(jié)構(gòu)管理(不知道是否支持區(qū)域管理組織和集團(tuán)管理組織?)、部署工具、權(quán)限管理(這個(gè)非常重要,不知道能不能管理到業(yè)務(wù)實(shí)體的每一個(gè)操作和數(shù)據(jù)行列可訪問(wèn)性?)、業(yè)務(wù)字典管理(這個(gè)沒(méi)必要單提出來(lái)吧?運(yùn)行參數(shù)的配置才是最重要的)。不過(guò)普元具備了日志、異常、定制任務(wù)。更難能可貴的是,普元還提出了Cache機(jī)制(這個(gè)在企業(yè)管理軟件領(lǐng)域中其實(shí)挺難。它不像咱們的通常論壇網(wǎng)站,如天涯,也并發(fā)量大需要Cache,但是天涯也僅僅是看,而企業(yè)管理軟件主要是頻繁讀寫(xiě)和業(yè)務(wù)計(jì)算處理,這怎么Cache,我也需要學(xué)習(xí)學(xué)習(xí),過(guò)去一直主要依賴數(shù)據(jù)庫(kù)設(shè)計(jì)和代碼寫(xiě)法和功能設(shè)計(jì)來(lái)保證性能)。
普元做JAVA,金富瑞就做.NET。
三大件繼續(xù)拿上來(lái):控件+工作流+報(bào)表。
但很可貴的是,金富瑞提出了虛擬組織這一說(shuō)法。這個(gè)確實(shí)老遇到。還有就是權(quán)限管理,從菜單到數(shù)據(jù)到列到行到按鈕,控制的挺細(xì),不過(guò)細(xì)就是多,多就會(huì)漏洞多,看來(lái)金富瑞需要深刻去思考一下數(shù)據(jù)庫(kù)架構(gòu)的設(shè)計(jì)。
這些都是專注做平臺(tái)的。
但是,那些主要做管理軟件的公司,也有自己的平臺(tái)。甚至自己的平臺(tái)還賣。如浪潮樓上(不過(guò)山東人的樸實(shí)與粗糙,盡在軟件中)。
自己用的平臺(tái),東軟也有,但沒(méi)有對(duì)外宣傳,也不賣。偷偷自己用,做了N多醫(yī)保、稅務(wù)局之類的項(xiàng)目。(我曾經(jīng)剖析的時(shí)候,發(fā)掘設(shè)計(jì)的思想和金蝶K3的平臺(tái)特別相似)
用友、金蝶這兩大企業(yè)管理軟件公司當(dāng)然也有自己的平臺(tái)。用友有U8平臺(tái)和NC平臺(tái),金蝶有K3和EAS平臺(tái)。不過(guò),明顯的是,金蝶的平臺(tái)架構(gòu)思路比用友高一級(jí)。從業(yè)務(wù)實(shí)體自省到權(quán)限控制到日志到二次開(kāi)發(fā),金蝶頗有套路,思路清晰抽象高度。而用友的平臺(tái),似乎還看業(yè)務(wù)是業(yè)務(wù),看菜單是菜單。
講了這么多,幾乎主流的平臺(tái)廠商我都數(shù)了個(gè)遍,當(dāng)然從事各細(xì)分行業(yè)管理軟件的公司也都有自己的平臺(tái),只不過(guò)那類平臺(tái)和本行業(yè)業(yè)務(wù)又結(jié)合的特別緊密,開(kāi)發(fā)自己行業(yè)軟件特別快速穩(wěn)定易用,但不具有普遍意義。
我把我在上一篇文章中寫(xiě)的企業(yè)管理軟件平臺(tái)架構(gòu)內(nèi)容再貼到最后,以使大家好總覽:
1登陸用戶口令驗(yàn)證、license許可驗(yàn)證、盜版驗(yàn)證、過(guò)期失效驗(yàn)證、版本差異驗(yàn)證
2主控臺(tái) 用戶功能樹(shù) 管理主控臺(tái)
3表單設(shè)計(jì)器、業(yè)務(wù)實(shí)體設(shè)計(jì)器、工作流設(shè)計(jì)器、報(bào)表設(shè)計(jì)器、功能菜單設(shè)計(jì)器、多語(yǔ)言設(shè)計(jì)器、多皮膚設(shè)計(jì)器、查詢過(guò)濾定制器
4UI框架:Grid/Toob bar/Tree/TabSheet/Menubar/參照錄入組件/Edit/Button/Combo之類
5單實(shí)體輸入框架、主從List/Detail輸入框架
6運(yùn)行配置參數(shù)設(shè)置、單號(hào)計(jì)數(shù)器、業(yè)務(wù)預(yù)警設(shè)置
7異常框架、業(yè)務(wù)實(shí)體權(quán)限框架、業(yè)務(wù)實(shí)體存儲(chǔ)引擎、業(yè)務(wù)實(shí)體查詢引擎
8報(bào)表:套打、單據(jù)報(bào)表、普通二維查詢統(tǒng)計(jì)報(bào)表、交叉報(bào)表、圖表
9工作流引擎、消息引擎、自動(dòng)任務(wù)引擎
10企業(yè)組織結(jié)構(gòu)設(shè)計(jì)工具、權(quán)限分配工具、數(shù)據(jù)導(dǎo)入導(dǎo)出工具、數(shù)據(jù)備份恢復(fù)工具、升級(jí)更新工具、錯(cuò)誤診斷跟蹤工具、性能監(jiān)測(cè)工具、日志查看工具
11OFFICE集成、BO集成、通信集成、郵件集成、短信集成、IM集成、搜索集成、電子商務(wù)集成、企業(yè)門(mén)戶集成等等一切外圍集成
后補(bǔ)記:
剛才看到有朋友留言,說(shuō)到單據(jù)如何變化、單據(jù)字段如何變化、報(bào)表如何變化、數(shù)據(jù)庫(kù)如何變化、業(yè)務(wù)流程如何變化。
剛才一看圖,確實(shí)是忘了寫(xiě)單據(jù)設(shè)計(jì)器了。這個(gè)在各個(gè)平臺(tái)上都有。不過(guò)現(xiàn)在單據(jù)設(shè)計(jì)器的主流都是在eclipse中做調(diào)整,然后再部署。
有了單據(jù)設(shè)計(jì)器,單據(jù)變化、單據(jù)字段變化就都能適應(yīng)。
報(bào)表有報(bào)表設(shè)計(jì)器來(lái)適應(yīng)。
數(shù)據(jù)庫(kù)有業(yè)務(wù)實(shí)體設(shè)計(jì)器來(lái)適應(yīng)。
業(yè)務(wù)流程有工作流來(lái)適應(yīng)。如果是很特殊的業(yè)務(wù)流程變化,需要編寫(xiě)代碼。一個(gè)完全不編寫(xiě)代碼就靠配置實(shí)現(xiàn)企業(yè)業(yè)務(wù)的平臺(tái)是不存在的,除非業(yè)務(wù)很簡(jiǎn)單。
其實(shí)筆者原意也不是對(duì)國(guó)內(nèi)平臺(tái)上逐個(gè)品頭論足。目的只是希望給大家普及平臺(tái)架構(gòu),并且介紹國(guó)內(nèi)主流的一些平臺(tái)廠商。筆者也在近10年中搭建過(guò)兩代產(chǎn)品線的平臺(tái)架構(gòu),管理數(shù)據(jù)都在幾億條,涉及用戶數(shù)也在幾萬(wàn),所以希望給沒(méi)有架構(gòu)思路的朋友們一些經(jīng)驗(yàn)分享而已。
大家如果想了解企業(yè)管理軟件平臺(tái)的更細(xì)節(jié)的架構(gòu)和原理,可以去起步、金富瑞、浪潮樓上、普元、金蝶、用友的網(wǎng)站上去看他們?cè)敿?xì)的技術(shù)架構(gòu)白皮書(shū)。看看他們是如何真實(shí)的實(shí)現(xiàn)一個(gè)企業(yè)管理軟件業(yè)務(wù)平臺(tái)。
更深層次的如何實(shí)現(xiàn),架構(gòu)的每個(gè)細(xì)節(jié)難點(diǎn)和實(shí)現(xiàn)思路,我想,應(yīng)該不是我這篇博文能夠承擔(dān)的。
另外,看到留言說(shuō)業(yè)務(wù)平臺(tái)是為了適應(yīng)企業(yè)變化無(wú)常的需求
其實(shí)這是個(gè)誤區(qū)。業(yè)務(wù)平臺(tái)并不能適應(yīng)企業(yè)變化無(wú)常的需求,業(yè)務(wù)平臺(tái)只是把公共的部分提取了出來(lái),而變化無(wú)常的需求是由開(kāi)發(fā)語(yǔ)言來(lái)完成的。如果一個(gè)業(yè)務(wù)平臺(tái)無(wú)法容易的融入開(kāi)發(fā)IDE編寫(xiě)的代碼,這個(gè)業(yè)務(wù)平臺(tái)基本不能用,只能算是一個(gè)簡(jiǎn)單的玩具,做些簡(jiǎn)單的增刪改和確認(rèn)的工作而已。
有些平臺(tái),為了滿足個(gè)性化特殊處理,內(nèi)嵌了很復(fù)雜的業(yè)務(wù)邏輯語(yǔ)句,甚至也和起步一樣做了IDE,即使走到這一步,也不如程序員用IDE編寫(xiě)代碼方便。
我們做平臺(tái),不是為了不用IDE,不用寫(xiě)代碼,不是為了實(shí)施人員或業(yè)務(wù)人員拿去自己定義功能去吧,程序員沒(méi)有用了,程序員只要維護(hù)好平臺(tái)就OK了。這種認(rèn)識(shí)是錯(cuò)誤的。SAP作為全球最大的企業(yè)管理軟件廠商也無(wú)法做到。
posted on 2008-06-06 15:05 和風(fēng)賽跑 閱讀(644) 評(píng)論(2) 編輯 收藏