就是愛分享
「雲端運算」近幾年被炒得火紅,最大的推手應該歸功於Google。Google新發表之Linux-based作業系統Chrome,就是首套內含「雲端運算」概念的作業系統。而所謂的「雲端運算」,可以從「網路運算」談到「分散式運算」(Distributed Computing)和「網格運算」(Grid Computing);知名分析公司Gartner將「雲端運算」區分為「雲端服務」(Cloud Computing Services)與「雲端科技」(Cloud Computing Technologies)兩大類;商業周刊第1146期(2009.11.9)對雲端運算的產業還作了一個上中下的三層分類:上層的「軟體服務」(software as a service,SaaS)、中層的「平台服務」(platform as a service,PaaS)、底層的「設備服務」(infrastructure as a service,IaaS)。


發展歷史
2007年10月,Google與IBM開始在美國大學校園,包括卡內基美隆大學、麻省理工學院、史丹佛大學、加州大學柏克萊分校及馬里蘭大學等,推廣「雲端運算」的計畫,這項計劃希望能降低「分散式運算」技術在學術研究方面的成本,並為這些大學提供相關的軟硬體設備及技術支援(包括數百台個人電腦及BladeCenter與System x伺服器,這些運算平台將提供1600個處理器,支援包括Linux、Xen、Hadoop等開放原始碼平台)。而學生則可以透過網路開發各項以大規模運算為基礎的研究計畫。

2008年1月30日,Google宣佈在台灣啟動「雲端運算學術計畫」,將與台灣的台大、交大等學校合作,將這種先進的大規模、快速運算技術推廣到校園。

2008年7月29日, 雅虎、惠普和英特爾宣布一項涵蓋美國、德國和新加坡的聯合研究計劃,推出「雲端運算」研究測試床,推進「雲端運算」。該計劃要與合作夥伴建立6個資料中心作為研究試驗平台,每個資料中心配置1400個至4000個處理器。這些合作夥伴包括新加坡資訊通訊發展管理局、德國卡爾斯魯厄大學Steinbuch運算中心、 美國伊利諾大學香賓分校、英特爾研究院、惠普實驗室和雅虎。」。

2008年8月3日,美國專利商標局網站資訊顯示,戴爾正在申請「雲端運算」(Cloud Computing)商標,此舉旨在加強對這一未來可能重塑技術架構的術語的控制權。戴爾在申請檔案中稱,「雲端運算」是「在資料中心和巨型規模的運算環境中,為他人提供電腦硬體定製製造」。

雲端運算不是技術,它是概念
所謂「雲端」的「雲」即為我們最常使用的網際網路(Internet),「端」則指使用者端 (Client)或泛指使用者運用網路服務來完成事情的方式。最終目標是沒有軟體的安裝,所有的資源都來自於雲端,使用者端只需一個連上「雲端」的設備與簡單的介面(例如瀏覽器)即可。所以「雲端運算」本身並不代表任何一項資訊科技的技術,它是一種電腦運算的概念,而一種概念就會有許多不同的方式去實踐,這個時候才會有不同的技術衍伸出來。

雲端運算(Cloud Computing)從本質上來看,他是一種分散式運算(Distributed Computing)的新運用,其最基本的概念,是透過網際網路將龐大的運算處理程序(Process),自動分拆成無數個較小的子程序(Sub process),再交由多部伺服器(Multi- Server)所組成的龐大系統,透過搜尋與運算分析之後,再將處理結果回傳給使用者端。透過這項技術,網路服務提供者(Service Provider)可以在數秒之內,處理數以千萬計甚至億計的資訊,達到和「超級電腦」同樣強大效能的網路服務。

換言之,當大家努力去實現這樣的一個概念時,就促成了網際網路的蓬勃發展,因為網路本身就是在強調不同電腦之間的溝通以及合作,於是在各項基礎設施包括頻寬、通訊標準、電腦運算能力以及運算架構都逐漸發展成熟之後,提供給開發者或是一般使用者的網路服務(Web Service)便開始出現,這些網路服務提供給使用者簡單的介面來存取一些資源。當然一開始的時候,企業提供出來的,都是一些相當陽春的網路服務。

這些網路服務繼續發展下去,時至今日出現了像Google、Yahoo!、Amazon等等網路巨獸,這些大公司有能力去購買數以萬計的伺服器,並且把這些電腦串起來,成為一個龐大的運算資源,而龐大的運算資源自然就意味著更為多樣化和以前無法提供的新服務。所有的人現在可以在網路上不同的地方,利用各大企業開放出來的運算資源,進行資料的運算或是提供服務給使用者,於是就在這樣的情況之下,「雲端運算」被提了出來。因為現在無論是一般的使用者或是開發者,都透過網路來取得資料或是進行資料運算,自己本地端的運算資源雖然有限,還是可以透過網路進行複雜的運算,結果資料就像是從天上的雲端掉下來一樣,所以很多人會將網際網路表示成一朵雲的圖示,例如下圖:



「分散式運算」與「網格運算」
而「雲端運算」的概念其本質大抵承襲自「分散式運算」(Distributed Computing)以及「網格運算」(Grid Computing)。

所謂「分散式運算」,顧名思義,就是將大型工作區分成小塊後,分別交由眾多電腦各自進行運算再彙整結果,以完成單一電腦無力勝任的工作。也就是說讓一些不同的電腦同時去幫你做事情、進行運算,所以有兩台電腦也好、十萬台電腦也好,只要有超過一台電腦,而且讓他們可以互相溝通,一起同時幫你做事情,這就是分散式運算。

而「網格運算」則是「分散式運算」加以延伸的一支,所謂「網格」指的是以公開的基準處理分散各處的資料。其主要特點放在異質系統之間運算資源的整合,簡單來說,在於將各種不同平台、不同架構、不同等級的電腦彼此之間可以透過通訊標準來互相溝通,分享彼此的運算資源。在網際網路還沒有今天這麼發達之前,企業採用「網格運算」,很大的原因是為了讓組織內部IT資源達到更良好的使用率。

由此觀之,「雲端運算」與「網格運算」並沒有顯著的不同。的確,兩者都是分散式運算的延伸,唯獨「網格運算」著眼於整合眾多異構平台,而「雲端運算」則強調在本地端資源有限的情況下,利用網路取得遠方的運算資源。

「雲端服務」與「雲端科技」
問題來了,若說只要是透過網路線接上「雲端」並利用遠端資源就可以稱做「雲端運算」,那麼透過Gmail收發信件與利用BitTorrent之類的P2P技術取得資料,豈不都可算是「雲端運算」?但是這兩者在本質上有著明顯的不同,究竟何者才能真正稱得上是「雲端運算」呢?

在「電腦世界」(Computer World)一篇標題為「雲端運算的過度混淆」( Cloud computing hype spurs confusion) 的文章中,引述了知名分析公司Gartner的分類方式,將「雲端運算」區分為兩大類,分別為「雲端服務」(Cloud Computing Services)與「雲端科技」(Cloud Computing Technologies)。

Gartner指出,「雲端服務」專注在於透過一個瀏覽器,藉由網路連線從遠端來存取、來操作、來服務,例如Salesforce.com的CRM工具,或是提供使用者安裝和使用各種不同作業系統的Amazon EC2服務。這類型可以視為「軟體即服務」(SaaS, Software as a Service)概念的後繼,使用者完全不必去擔心成長的問題,遠端自然會幫你將該需要的伺服器或資料庫都準備好,使用者只要放心的把東西丟到網路上、丟往遠端的服務商即可。也充份善用了網際網路的便利性,讓使用者可以安全的將所有資料都存在遠端的一或多個伺服機裡,到哪裡都可以使用,服務商也可隨時作升級或更動,同時又巧妙的將龐大運算的問題丟給「雲端」解決,於是讓一隻手機或一個沒有運算能力的GPS也都可以上網進行很多奇奇怪怪的事。

而「雲端科技」則是著眼於利用虛擬化以及自動化等技術來創造和普及電腦中的各種運算資源。Gartner認為,這種類型可以視為傳統資料中心(Data Center)的延伸,內部系統採用多台電腦一同運算、儲存、相互備援,且不需要經由第三方提供外部資源便可套用在整個公司的內部系統上。譬如可以將基因圖譜定序、DNA解碼等拆成好多來演算,又譬如Skype與 BitTorrent以點對點(P2P)來共同組成單一系統。

所以說,根據Gartner的定義,Google所謂的「雲端運算」,包含「iGoogle」、「Google Calendar」等,雖然也有運用到「雲端科技」的部分,但是大抵上其模式則是屬於「雲端服務」的範疇。

當然,「雲端運算」的威力不僅僅是提供使用者更妥善的服務而已,對企業而言,「雲端運算」能夠有效的降低成本與風險。由於「雲端服務」不需要將程式安裝在用戶的電腦中,對服務商而言,降低了商業程式邏輯被破解的風險。此外,過去常見到台灣公司必須先將在本地收集的資料傳回美國,經過美國工程師處理後再傳回台灣作業的情況,如此一來則需耗費大量的網路傳輸費用以及時間。利用「雲端運算」,位在世界各地的開發人員便能夠透過同一套平台更即時且密切的合作。

拿下這朵雲,就是下個科技霸主!

上級戰場——軟體服務(software as a service,SaaS)
打破以往大廠壟斷的局面, 所有人都可以在上面自由揮灑創意, 提供各式各樣的軟體服務。
競爭者:世界各地的軟體開發者

中間戰場——平台服務(platform as a service,PaaS)
打造程式開發平台與作業系統平台,讓開發人員可以透過網路撰寫程式與服務,一般消費者也可以在上面執行程式。
競爭者:Google、微軟、蘋果、Yahoo!

底層戰場——設備服務(infrastructure as a service,IaaS)
將基礎設備(如IT系統、資料庫等)整合起來,像旅館一樣,分隔成不同的房間供企業租用。
競爭者:IBM、戴爾、昇陽、 惠普、亞馬遜

以下分別說明目前正進行雲端運算計畫的國際大廠現況如下:

Google
在美國網路搜尋市場占有率第一名的 Google,其實很早就將這概念應用在自家提供的服務上,諸如Gmail、YouTube、Google Docs、Google Talk、Google Calendar、Google Gadget等,Google 於2007年10月與 IBM 合資超過 1,500 萬美元,建立 Google 101 大型資料運算中心,並在 2008 年將雲端運算定為未來的發展策略,而這點,可從Google為進軍通訊產業而推出的G-phone看出點端倪。因此從 Google 大舉佈局雲端應用下,相信在加強「端」連到「雲」的入口和架構完整的商業模式後,是很有機會在未來市場繼續保持領先地位。

IBM
主推Blue Cloud「藍雲計劃」的主要切入點不在於如何提供消費端各種服務,他更專注的是如何提供雲端運算所需擁有的硬體設備與管理軟體,允許企業將運算任務分成 不同組件,分別調至最有效率的電腦系統執行,解決企業尖鋒、離鋒時間的系統負荷量問題。同時結合網路巨人 Google 以成為雲端運算中的要角,並著手在全球數個城市建立雲計算中心。

Microsoft
微軟在雲端的策略則是「Software + Service」。預計推出的新作業系統「Azure」,將結合Live Mesh開發新功能,並整合各種Live Services;Azure另一項用途,是能讓軟體開發者所撰寫的程式直接在微軟資料中心上線,不需靠公司裡的伺服器;Azure就像是微軟線上服務的 地基,扎穩微軟邁向雲端之路。

Yahoo
Yahoo將開源雲端運算框架Hadoop,應用在自家搜尋服務的兩千台伺服器上,來處理超過5 Petabytes的網頁內容,建立整個網際網路的網頁索引資料。此外,Yahoo的雲端產品定位為Consumer Cloud Computing,提供Yahoo! Live、Yahoo! oneConnect、NewsGlobe,等線上訊息服務。而即將正式開放的Yahoo Application Platform,則是提供開發者線上撰寫和執行程式的開放平台。

Amazon
Amazon 的 Web Services,透過虛擬化的技術,Amazon EC2搭配 Amazon S3 儲存服務,提供各種不同規格的虛擬主機和儲存空間,使軟體開發者能快速地在上面安裝或執行所需的服務,用完了就結束完全沒有負擔,由於費用低廉,吸引了很 多開發人員使用。而且你只要負擔所使用的時間與資源即可,在成本效益的投資上,這樣的服務相當吸引人。

參考來源:
雲端運算 Cloud Computing 的概念與應用

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
總部設在美國賓州Newtown Square創建於1969年的「專案管理學會」(PMI,Project Management Institute),對推動專案管理知識體系之建立及針對各不同產業特性發展其特有的專案管理方法上一直不遺餘力。為使「專案管理」所包含的各廣泛知識領域能有效整合,並使其能組織化、分工化、結構化、國際化、標準化及專精化,乃邀集各相關專家學者經數年的努力,於1984年首次編撰完成「專案管理知識體系導讀指南」(PMBOK,A Guide to the Project Management Body of Knowledge),並在歷十餘年不斷地研修及持續地改進後,PMBOK已被公認為專案管理的全球標準,且所有專案經理為促使專案卓越而需獲得具有基礎實務的高標準,目前最新版是第四版。

PMBOK內詳細說明專案管理所依循的五大程序群組 (Process Groups) 和九大知識體系領域 ( Knowledge Areas)各定義。

其中五大專案管理程序群組為:

起始程序 (Initiating Processes) – 授權開始一個專案或進入專案的下一個階段。

規劃程序 (Planning Processes) – 定義及琢磨目的並選擇最佳行動做法以達到專案的所要滿足的目的。

執行程序 (Executing Processes) – 協調人員及其它資源來實行專案計劃 (project plan)。

控制程序 (Controlling Processes) – 由定期監督及量測專案進度來鑑別與專案計劃的差異,必要時採取矯正行動,以確保達成專案目的。

結案程序 (Closing Processes) – 正式化一個專案或其階段的接受,使其有條理地結束。

這五大程序群組不僅適用於一整個專案,且適用於一個專案中的每一個階段。

九大專案管理知識體系領域為:

專案整合管理 (Project Integration Management) – 確保專案中不同的要素相互協調配合,含專案計劃書發展 (Project Plan Development)、專案計劃執行 (Project Plan Execution)、及整體變更控制 (Overall Change Control)。

專案範疇管理 (Project Scope Management) – 確保專案包含所有及僅含有所需的工作項目以成功達成專案目的,含起始 (Initiation)、範疇規劃 (Scope Planning)、範疇定義 (Scope Definition)、範疇確認 (Scope Verification)、及範疇變更控制 (Scope Change Control)。

專案時間管理 (Project Time Management) – 確保專案如期完成,含活動定義 (Activity Definition)、活動排序 (Activity Sequencing)、活動期程估計 (Activity Duration Estimating)、時程發展 (Schedule Development)、及時程控制 (Schedule Control)。

專案成本管理 (Project Cost Management) – 確保專案如核准的預算完成,含資源規劃 (Resource Planning)、成本預估 (Cost Estimating)、預算編列 (Cost Budgeting)、及成本控制 (Cost Control)。

專案品質管理 (Project Quality Management) – 確保專案能滿足需求,含品質規劃 (Quality Planning)、品質保證 (Quality Assurance)、及品質管制 (Quality Control)。

專案人力資源管理 (Project Human Resource Management) – 最有效地運用與專案有關的人員,含組織規劃 (Organizational Planning)、人員獲得 (Staff Acquisition)、及團隊發展 (Team Development)。

專案溝通管理 (Project Communications Management) – 確保專案能適時及適當地產生、蒐集、散佈、儲存、及最終處置專案資訊,含溝通規劃 (Communications Planning)、資訊發佈 (Information Distribution)、績效報告 (Performance Reporting)、及結案作業 (Administrative Closure)。

專案風險管理 (Project Risk Management) – 敘述專案風險的界定、分析、及回應的程序,含風險管理規劃 (Risk Management Planning)、風險界定 (Risk Identification)、定性風險分析 (Qualitative Risk Analysis)、定量風險分析 (Quantitative Risk Analysis)、風險回應規劃 (Risk Response Planning)、及風險監控 (Risk Monitoring and Control)。

專案採購管理 (Project Procurement Management) – 敘述執行自組織外取得商品及服務的程序,含採購規劃 (Procurement Planning)、邀商規劃 (Solicitation Planning)、邀商作業 (Solicitation)、商源評選 (Source Selection)、合約管理 (Contract Administration)、及合約終結 (Contract Closeout)。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
在專案管理領域中,有PMI(國際專案管理學會,總部設在美國)與IPMA(國際專案管理協會,總部設在荷蘭)之兩大不同體系。PMI運用在企業界,IPMA被學術界所重用;另外PMI是基於全球化的考量,如目前全球化語言是英文,反觀,歐洲較注重在地文化,強調各國在地化特色。



美國應用專案管理領域非常廣泛,包含最難大量生產的電影業,好萊塢電影是美國的藝術事業,電影使用專案管理手法,讓流程標準化,其衡量指標為「票房」,讓票房顯示出電影事業的競爭力、績效,像是「鐵達尼」、「哈利波特」,這些都是歐洲的小說,卻在美國拍攝成電影,票房獨步全世界。相對的,歐洲強調在地文化,例如:法國是美學電影的代表、德國的民族電影代表、義大利的寫實電影代表等,這些差異顯示出歐洲在地文化與全球化走在兩種截然不同的軌道上。



在認証制度體系方面,也是有分PMP(Project Management Professional,專案管理師)和IPMA。其中PMP是以美國PMI的統一標準核發證照,取得PMP資格者即為「專案管理專業人士」,全世界只有一種標準,不管您是在美國,日本,台灣或大陸水準統統一樣;而IPMA是以各會員國依不同程度檢定認可認可發與證照,然而其分級檢定界線模糊,像是托福、 TOEIC,而檢定後的核定標準以「專案的職稱」來分界,例如:D級等同於專案副理、A級等同於專案副總,假如今天一個學生考取IPMA的D級證照就等同於專案副理,但其專案實務能力是否等同於專案副理,其實是一個問號,專案人仕考取A級即可擔任公司專案副總嗎?這名稱的設計在企業會有些許的爭議性。

若是以通行性來說,由於PMP由美國PMI統一發照,通行於世界各地,而IPMA是以歐洲各國為大本營,由各會員國自行發照,而IPMA由台灣認定核可程度,,到其它歐洲國家認定卻不一定相同,又各國認証名稱的不一致,大陸叫IPMP、台灣稱IPMA、美國稱PMC。

PMP分佈141國家(遍及五大洲),有美洲的美國加拿大、亞洲的大陸日本新加坡、歐洲的德國英國、大洋洲的澳洲、非洲的南非…等;而IPMA都集中在 42國家(以歐洲為主),波蘭、捷克、塞爾、烏克蘭、匈牙利、葡萄牙、羅馬尼亞…等歐洲國家,少數非歐洲國家如:伊郎、南非、科威特…等。

應用方面,PMP為企業界及實務界所重用,而IPMA為學術合作之領域所重視。像是中鋼、台積電、日月光、104人力銀行、精誠資訊等對於員工PMP取得的要求,又或者今天想從副理晉升為經理、經理晉升為處長,PMP證照即是很棒的考核標準;IPMA以教授教學為主,因業界專案實務經驗有限,故偏向理論論點 出發,合作對象與民間學校龍華科技大學,大漢或育英護校等尚有其它學術單位合作,以上僅是兩者之差異,在不同的領域中各領春秋。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
這3大社群套件各有擅長,並且都源自相同的Linux核心--2.6.27、使用相同的GNOME 2.24,也經常名列DistroWatch.com普及率調查的前茅。Ubuntu經常是最受歡迎的Linux套件;OpenSUSE已站穩歐洲市場,並積極揮軍美國;由Red Hat資助的Fedora近幾年雖然的普及率雖有下滑,但由於Red Hat身為最大的Linux公司,Fedora也經常率先嘗試新技術,因此Fedora依然位居重要地位。



Ubuntu是以容易使用而聞名並成為最普及的Linux套件,然而擁有廣大的社群支援(例如論壇和Wiki文件,台灣的Ubuntu社群也很活躍),更是Ubuntu深受使用者喜愛的重要原因。儘管Ubuntu適合有經驗的Linux玩家,但更適合初學者,尤其是完全沒有Linux經驗而想要嘗試Linux的電腦使用者。

Ubuntu還包含了戴爾的DKMS(Dynamic Kernel Module Support),這項功能會在使用者更新Linux核心時,縱使Linux核心尚未內建支援顯示卡或其他硬體,也能自動下載並更新符合機器的驅動程式。這就不用擔心新增硬體或更新Linux核心之後而導致系統無法運作。



OpenSUSE兼具了用戶端桌面與伺服器能力,對於經常得在混合了Linux、Unix、Windows的企業網路環境工作,OpenSUSE對此提供了最佳的支援。此外目前最新版本內建的是Novell客製過的OpenOffice.org 3.0,這個版本能讓使用者讀、寫微軟目前所有的Office檔案,包括Office 2007的Open XML格式。

OpenSUSE不只提供了相當優越且穩定的伺服端能力,更能在安裝時讓管理者自動設定Web、檔案、資料庫等伺服器。而除了提供KVM(Kernel-based Virtual Machine)、Xen、VirtualBox等虛擬化功能,OpenSUSE也內建了Mono--Linux開放源碼版的Microsoft .NET。



Fedora經常扮演實驗先鋒的角色,率先將新技術加入Linux套件讓更多人嘗試,而加入的新技術也會隨著不斷的改進而逐漸穩定、成熟;例如PulseAudio在Fedora已經有相當傑出的表現。此外,Fedora也加入了許多值得注意的新功能,包括利用LinuxTV V4L-DVB和Linux UVC讓Fedora擁有更好的webcam支援。

連線共享是Fedora 10特有的新功能,這能讓電腦同時兼具Wi-Fi AP/路由器,將頻寬分享給其他電腦。而能簡化軟體安裝的PackageKit功 能,也獲得相當的改進,不僅能簡化軟體搜尋、下載、安裝流程,甚至也能自動辨識出媒體播放程式所缺少的編碼/解碼器,而且找出並自動安裝適當的編碼/解碼器(雖然目前有時候還會有點小狀況,但Red Hat承諾會再改善)。另一項特點是從USB隨身碟安裝、執行Fedora,這等於能將個人的桌面和工作資料帶著到處跑;而且Fedora 10還能加密家目錄,以免隨身碟遺失而致資料外洩。

由於實驗本質使然,Fedora經常內建較為先鋒、前進的功能,但這類的功能往往會讓Fedora不適合用在關鍵、重要的工作。但是對Linux專家,或如果想在第一時間搶先瞭解尖端技術,Fedora就是最佳選擇。

總結這3套Linux套件:Ubuntu是初學者最佳選擇,OpenSUSE提供很好的商用 功能--尤其適合橫跨Windows和Linux環境的人,Fedora則較為適合Linux專家。但不論所選為何,目前這些多元多樣的套件不只展現出 Linux桌面的成熟,也證明人人都有適合的Linux套件。

http://distrowatch.com

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
Spring最初是Rod Johnson在2002年由其著作Expert One-on-One: J2EE Design and Development中提出的,另外一本書Expert One-on-One J2EE Development without EJB更進一步闡述了在不使用EJB(Enterprise JavaBean)開發J2EE企業級應用的一些設計思想和具體的作法(題外話:EJB是sun的伺服器端元件Model,最大的用處是部署分散式應用程式,類似微軟的.com技術。Sun在2006年5月2日發布了JSR 220定義,也就是EJB3.0,企圖減輕EJB以往開發過於複雜以及不必要的負擔。參見-伺服器端元件Model-EJB3.0(Enterprise JavaBean 3.0)論述)。

Spring在2004年初發佈1.0版本,到2006年10月3日發佈了2.0版本,基本上維持著每半年就會有一次大的更新,可到http://www.springsource.org/下載最新版本的Spring。

Spring是一個應用於J2EE領域的輕量應用程式框架,其核心是一個IoC(Inversion of Control)以及AOP(Aspect-oriented programming)。在核心上面的一個主要部份是資料存取DAO框架,包括一個自己的JDBC資料存取封裝以及對眾多ORM框架的工具集支持。Spring內置了一個功能強大、靈活的Web MVC框架Spring MVC框架,以提供快速的Java Web應用程式開發,在程式開發中,程式開發者可以直接使用Spring框架內建的Spring MVC框架。除此之外,對於現在比較流行的各種層面上的框架(如Hibernate、JSF、Struts等),Spring也提供了與它們相互整合的方案。

Spring框架系統架構如圖,從圖中看出Spring提供了很多J2EE應用的基礎設施及解決方案,便於開發J2EE應用。



其中Core是框架的最基礎部分,提供IoC(Inversion of Control,控制反轉)和DI(Dependency Injection,依賴注入)特性。所謂的控制反轉是指控制權由程式改到Spring Container(容器),控制權的移轉,是所謂的反轉;或可說是依賴注入,將原先程式間的耦合降到最低,改由Spring容器注入程式間的關連。使用IoC通常會使得程式碼非常清晰,更為重要的是,IoC可以使得程式碼之間、類別與類別之間有很好的解耦性。DI有三種形式:Setter-based、Constructor-based、Getter-based,Spring推薦使用第一種方式,Setter-based類似典型的JavaBean,帶有一個無參數的構造函數和setter方法。

BeanFactor代表了Spring的心臟,可以配置和管理幾乎所有的Java類別,在存取和操作IoC的初期充當了IoC容器的作用。然而在大多數的情況之下,不會直接使用BeanFactor而是使用ApplicationContext,因為ApplicationContext具有更多的企業級特性如多國語言支援、資源存取、事件傳播和多實例載入等等。

Bean在Spring容器中大致要經歷以下四個階段:Bean定義、初始化、準備狀態以及銷毀。

Spring的AOP是OOP(物件導向程式設計)的延續,提供了符合AOP Alliance規範的層面導向程式設計(Aspect-Oriented Programming)的具體實現,讓使用者可以定義,像方法攔截器(method-interceptors)和切入點(PointCuts),從軟體設計上看,通過這樣的方式可以降低耦合性(coupling),提高內聚性(cohesion),從而在軟體結構上得到改善。

DAO模式是一種資料存取物件模式,它通過抽象方法來提供資料存取的介面,這樣便消除了冗長乏味的JDBC編碼,並且通過這樣的封裝方式更容易為程式設計提供介面,而且對所有的POJO適用。

ORM封裝提供了物件關係對應的API介面,使用ORM工具集的產品除了提到過的Hibernate,還包括了如JDO等產品。
<未完 待補充更新>

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享

↑光榮的傳說

今年專題製作觀摩競賽
入圍的每一個隊伍絕對都是強勁對手
尤其將「程式設計班」和「網際網路資料庫設計班」分在「程式設計類」一起比
另外還特別加入「遊戲軟體程式設計班」
所以能夠得到冠軍...
特別感到意外和驚喜!
也慶幸能夠為文化大學再續光榮的傳說!

在參加競賽之前
就已經聽說活動會場全館雖然有提供無線網路
但因網路品質不佳
所以主辦單位建議作品展示時儘量不要連結上網
以免影響簡報成果
可是我們專題首頁的一部份就是Google MAP
根本無法不能連上網路
所以我就特別製作了五個單元的錄影檔

幸運的是評審委員來到我們攤位展示作品時,網路都很順暢;
簡報時,利用錄影檔也很順利地完成評審委員的提問和展示。
另外在簡報時評審委員對於我們的文件製作之完整
以及認真學習的態度特別讚許!
尤其是文獻調查、系統測試、部署和上線文件更是其他隊伍少有的
或許這是我們脫穎而出的關鍵吧!

最後要謝謝每個夥伴們盡心盡力地完成我們當初設定的目標
也要感謝老師的指導
才能創造光榮的傳說!

----- 學長、學姊們的分享 -----
2007 場地王
2008 KA DA CHA新風潮 - 車由自組

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
Struts框架最早是作為Apache Jakarta專案的組成部分問世運作,專案的創立者希望通過對該專案的研究,改進和提高JAVA Server Pages、Servlet、標籤庫(tag library)以及物件導向的技術水準,它的目的是為了減少在運用MVC設計模型來開發Web應用的時間。

建立基於Struts框架的web應用程式最快捷的方式就是利用Struts框架發佈包中包含的struts-blank.war文件。該檔不僅定義了struts web應用程式的標準的目錄結構而且還包含了開發struts web應用程式所必需的包。

如果使用Eclipse IDE作為開發工具,並部署在應用伺服器Tomcat 5.0中執行,然後再import struts-blank.war進來。由於struts框架本身就是基於servlet,因此需要將tomcat目錄下common\lib中的servlet-api.jar拷到strutsSample\WebContent\WEB-INF\lib中。

在探討Struts MVC運作架構之前我們先來看看基本的MVC運作模式,如圖所示:



所有進入到系統中的Request都會導給一個Controller程式,由Controller來判斷目前這個Request必須交由哪一個程式處理(那一個Request必須交由哪一個程式處理可能是設定在另外一個地方),接著便會呼叫執行該處理程式,並將收到的Request當作參數傳給該程式。在處理過程中需要進行商業邏輯處理的部分就會呼叫執行Model中的程式,Model處理完之後再將結果回傳給Controller,Controller再將結果傳給指定的View來進行畫面呈現。在這個架構中Controller是所有Request的唯一進入點,Model的部分只負責處理系統中的商業邏輯,畫面呈現則全部都由View來負責。

Struts的運作模式是採用MVC的架構,整個運作方式大致如圖所示。當Request進入到Struts時會導給一個ActionServlet來處理,這個程式會根據設定檔struts-config.xml中的設定呼叫執行我們所撰寫的Action處理程式,並將Request當作參數傳給這個Action處理。Action在處理過程中會呼叫一些商業邏輯物件(Business Objectc)中的程式存取後端的資料庫;當Action處理完之後會將結果回傳給ActionServlet,最後ActionServlet再將這個結果可以在struts-config.xml中設定一些JavaBean(ActionForm)來接收Request中的資料,此時Struts便會幫我們將資料塞到JavaBean中,讓我們可以在Action中直接取用,讓我們可以在Action中直接取用,在使用上會比較方便。



我們在使用Struts開發系統時,必須撰寫流程控制程式(Action)、商業邏輯處理程式(Business Object)、畫面呈現程式(JSP)並在設定檔(struts-config.xml)中設定這幾個元件之間的運作關係。當然,如果在流程控制與商業邏輯處理程式之間有使用到一些物件來當作資料傳遞的參數(DTO,Data Transfer Object),那麼這些傳遞資料的物件也必須由我們自行撰寫。

閱讀全文...
標籤: 1 意見 | | edit post