# 緒論 ## Web Application 發展史 1. HTML(1990):靜態網頁 2. CGI (Conmmon Gateway Interface):第一個動態網頁技術 - 致命傷:使用process 耗費太多資源 (硬體資源稀缺) - 但當時上網人數也不多 3. JSP, ASP: server-side動態網頁 4. JS: client-side動態網頁 開發web application層級: |level| content | |---| -------- | |4| Pattern | |3| framework (Spring, Hibernate) | |2| platform (Java EE, .Net) 處理底層網路連線, 元件生命週期 | |1| Turing complete language及前端HTML JS知識 | [圖靈完備性是什麼?](https://stackoverflow.com/questions/7284/what-is-turing-complete) ## Http協定 - 無狀態的TCP/IP - 斷線式服務:請求=>建立連線=>回應=>斷線 ## 動態網頁技術分類 1. server-side 動態網頁技術 - jsp, asp, php... - MPA(multi page application) - 每次發送請求server回應一個page內容 - monolitic (單體式架構) 2. client-side 動態網頁技術 - 分類: - Hybrid: SPA但有多頁式特性 範例:ESPN, FB, X - SPA(single page application):把網頁當GUI開發 範例:Google Doc - 適合用在前後端分離架構: - 前端: 使用Angular, React, Vue前端框架處理html, css, js - 後端: Restful Web Service (現行多採 micro service (微服務)) - 透過 ajax溝通 隨著APP跟分散式結構興起,前後端分離逐漸成為主流。 ## web service API - Rest - SOAP ## 前後端分離架構 - 圖 ### 前後端分離發展及優勢 - 重要技術:非同步請求 - 好處: 1. 有別於以往web socket,微服務可以提供給需多異質平台使用(ex: App, GUI, 其他server) 2. 彈性應用服務:ex:一站式服務透過網址(API呼叫)整合許多功能 - 非同步整合方案: - 非同步service - 非同步DB (ex:R2DBC 非同步DB Driver) - 非同步client (ajax) ### 結構圖 ### 相關技術 1. 前端框架: - 3大框架: 1. Angular(Google) 2. React (Meta) 3. Vue - 整合js, html, css 2. 介面:OpenAPI 只要遵守一致介面,不論用什麼語言或技術開發為服務都可以 3. 後端:Micro-Profile:微服務實作標準 - Java: - Spring REST - Java EE JAX-RS - .Net: - Web API 5. O-R mapping框架:封裝DB操作。 - 最大價值:當系統table複雜時,用O-R mapping取代JDBC操作可以大幅降低錯誤發生機率。(ex: sql參數對錯) ## Spring (Spring Boot) 只能用來開發微服務(Restful API)嗎? Spring 本身是low level框架,可以開發任何應用。 1. Spring MVC: 開發server-side 動態網頁 (JSP, Themleaf) 2. Spring REST: 提供Restful Web Service - Hateos - 相似: - Jave EE JAX-RS - .Net WebAPI 3. Spring也可以開發GUI, 排程 ## 課程大綱 1. Spring 由來 2. Spring 核心技術 - IoC container - DI - AOP 3. 透過DB交互講解template概念 JDBC:都是固定步驟適合用template處理 - Spring and JDBC - Spring and Transaction - Spring and Hibernate & JPA 4. 支援MessageDrivenBean (為了取代EJB) - Spring and JMS - Spring and Timer 5. Spring and Web Application (Spring MVC) 6. Spring Boot 7. Spring Batch (有時間會教)