嗯,說(shuō)過了硬件就該是軟件了,這篇是這個(gè)系列的重中之重
首先我們來(lái)說(shuō)說(shuō)什么是軟件,統(tǒng)一一下概念,所謂軟件通俗地說(shuō)就是一套計(jì)算機(jī)程序
實(shí)現(xiàn)了某些功能的計(jì)算機(jī)程序,在很早很早以前,一臺(tái)計(jì)算機(jī)的軟件是不分層次結(jié)構(gòu)的。一臺(tái)計(jì)算機(jī)只有一個(gè)系統(tǒng),這個(gè)系統(tǒng)既是操作系統(tǒng)又是應(yīng)用軟件,與硬件緊密綁定
后來(lái)經(jīng)過許多年的發(fā)展發(fā)展發(fā)展,人們把一些與硬件緊密相連的又經(jīng)常用到必不可少的功能做到一套程序中去。這一套程序就被人們稱做操作系統(tǒng)
另外一些可有可無(wú)的,不同工作適應(yīng)不同環(huán)境的功能封裝到另外一套程序中去,而這一系列程序被人們稱作應(yīng)用軟件
如下圖:
------------------------------------------- |應(yīng)用軟件:falshgat/IE/realplayer/winamp..| ------------------------------------------- |操作系統(tǒng):UNIX/Windows/Linux/Solaris... | -------------------------------------------前一篇我們知道,硬件分為服務(wù)器工作站與pc
其實(shí)無(wú)論哪種硬件的軟件,都有操作系統(tǒng)與應(yīng)用軟件
ok,那下面我們來(lái)談應(yīng)用軟件
在現(xiàn)在企業(yè)級(jí)應(yīng)用中,我們的應(yīng)用軟件一般分為三層
三層分別是表示層,業(yè)務(wù)邏輯層,數(shù)據(jù)持久層
------------------------------ |表示層|業(yè)務(wù)邏輯層|數(shù)據(jù)持久層| ------------------------------我們來(lái)說(shuō)說(shuō)三層中的代表軟件
表示層
這一層一般在客戶端pc機(jī)上,常見的是IE瀏覽器,這就是表示層的軟件
表示層是直接與使用者交互的軟件
業(yè)務(wù)邏輯層
這一層一般在服務(wù)器端,顧名思義,所有業(yè)務(wù)邏輯處理都在這一層完成
典型的是appserver,比如IBM的websphere,BEA的weblogic還有tomcat/jboss等,這一層也是三層中的重點(diǎn),我們要說(shuō)的大部分內(nèi)容都是關(guān)于這一層的,這個(gè)等會(huì)再說(shuō)
這一層就叫做中間層
數(shù)據(jù)持久層
這一層典型的就是數(shù)據(jù)庫(kù),一般也在服務(wù)器端,但該服務(wù)器一般與裝業(yè)務(wù)邏輯層軟件的服務(wù)器分開。當(dāng)然你也可以用IO輸入輸出流往硬盤上寫東西,但沒人會(huì)建議你這么做,因?yàn)檫@樣做你的數(shù)據(jù)缺乏管理,不管怎樣這一層要做的就是保存數(shù)據(jù),業(yè)務(wù)邏輯層軟件一般不負(fù)責(zé)保留數(shù)據(jù)或者說(shuō)業(yè)務(wù)邏輯層只負(fù)責(zé)暫時(shí)儲(chǔ)存數(shù)據(jù),一關(guān)機(jī),業(yè)務(wù)邏輯層數(shù)據(jù)全部over了
那么數(shù)據(jù)的持久化(也就是儲(chǔ)存數(shù)據(jù))就必須要在這一層完成
下面放著這些概念不談,我們來(lái)說(shuō)說(shuō)將來(lái)的趨勢(shì)
趨勢(shì)一:
瘦客戶端,很早很早以前,當(dāng)時(shí)C/S模式也就是client/server客戶端軟件大行其道的年代,一個(gè)pc用戶,是采用一個(gè)傻終端連接到服務(wù)器上。然后進(jìn)行相應(yīng)的操作,典型的就是我們上bbs經(jīng)常用的c-term,這就是那個(gè)時(shí)代的產(chǎn)物,同樣還有我國(guó)現(xiàn)行的機(jī)票定座用的e-term
后來(lái)呢,瀏覽器變得非常流行,人們發(fā)現(xiàn),瀏覽器也能傳遞一些數(shù)據(jù),雖然這些數(shù)據(jù)并不像那些終端那樣準(zhǔn)確,但應(yīng)付大多數(shù)日常需求足夠了
于是人們就提出一個(gè)瘦客戶端概念,也就是說(shuō),將來(lái)表示層所有的其他軟件疾揮?我們需要的就是一個(gè)網(wǎng)頁(yè)瀏覽器,然后通過瀏覽器輸入ip地址連接到服務(wù)器,然后進(jìn)行相關(guān)的操作,由于網(wǎng)頁(yè)瀏覽器一般每個(gè)操作系統(tǒng)都有自帶一個(gè)。這樣做就達(dá)到了給我們客戶端瘦身的目的(不需要安裝額外軟件)這樣模式被稱作B/S模式,也就是browser/server模式,但需要指出的是,雖然瘦客戶端是趨勢(shì),但并不代表胖客戶端沒有市場(chǎng)尤其是一些復(fù)雜的業(yè)務(wù)操作,還是瀏覽器這種簡(jiǎn)單軟件無(wú)法勝任的
趨勢(shì)二:
傻數(shù)據(jù)庫(kù),ok,首先,我承認(rèn),這個(gè)名詞是我發(fā)明的,但我實(shí)在無(wú)法找到一個(gè)更好的表達(dá)什么是傻數(shù)據(jù)庫(kù),如果誰(shuí)對(duì)數(shù)據(jù)庫(kù)有所了解的話,就知道,以前的數(shù)據(jù)庫(kù)。有自己的一套管理體系,甚至有自己的客戶端,比如oracle,mysql,sqlserver都有,在某個(gè)管理工具上寫什么sql語(yǔ)句查詢數(shù)據(jù)庫(kù)是我們以前常做的事,那么將來(lái)我們提倡的是:將所有的業(yè)務(wù)邏輯封裝到業(yè)務(wù)邏輯層去。管理的事情由軟件來(lái)做,由業(yè)務(wù)邏輯層的軟件來(lái)做,所謂傻數(shù)據(jù)庫(kù)就是說(shuō),將來(lái)的數(shù)據(jù)庫(kù)什么事都不用做只用把數(shù)據(jù)給我保存好就行了,那些復(fù)雜的業(yè)務(wù)邏輯什么外鍵什么關(guān)聯(lián),都沒數(shù)據(jù)庫(kù)什么事了,都交給業(yè)務(wù)邏輯層軟件來(lái)做
這樣做的好處就是:我們就不需要這些該死難懂又復(fù)雜的數(shù)據(jù)庫(kù)系列管理工具了,而且這些工具每個(gè)數(shù)據(jù)庫(kù)都有自己的工具,完全不一樣,亂七八糟,沒有人喜歡面對(duì)他們
除了數(shù)據(jù)庫(kù)維護(hù)人員,也就是DBA,我們是軟件工程師,維護(hù)的事讓他們?nèi)プ觯覈?yán)禁數(shù)據(jù)庫(kù)維護(hù)人員改動(dòng)數(shù)據(jù)庫(kù)的數(shù)據(jù),他們只做備份,必要時(shí)候恢復(fù)一下就是了
了解了這兩個(gè)趨勢(shì)之后,是不是有種砍頭去尾保中間的感覺?
沒錯(cuò),未來(lái)的趨勢(shì)就是中間件時(shí)代,中間件工程師將是未來(lái)計(jì)算機(jī)應(yīng)用的主流
那再次統(tǒng)一一下概念,什么是中間件?
記得我上學(xué)的時(shí)候,看ibm的教材,看了半天中間件定義,就看懂記住一句話中間件是做別人不愿意去做的事情,現(xiàn)在想想,狗屁定義,呵呵!什么是中間件,中間件是業(yè)務(wù)邏輯層的應(yīng)用軟件是處理業(yè)務(wù)數(shù)據(jù)與客戶端之間業(yè)務(wù)邏輯的一種應(yīng)用軟件,一種提供網(wǎng)絡(luò)服務(wù)的服務(wù)器端應(yīng)用軟件
舉個(gè)非常簡(jiǎn)單的例子,網(wǎng)上銀行,某個(gè)人想用IE進(jìn)入工行的賬戶,然后轉(zhuǎn)帳
在這個(gè)例子中,客戶端表示層顯然是IE,數(shù)據(jù)持久層顯然是銀行的核心數(shù)據(jù)庫(kù)
那么中間件是什么?中間件就是提供這種服務(wù)的系統(tǒng)
這三層的劃分如下
------------------------------ |表示層 |業(yè)務(wù)邏輯層 | 數(shù)據(jù)持久層 | ------------------------------ | IE | 網(wǎng)上銀行 | 數(shù)據(jù)庫(kù) | ------------------------------