當前位置:首頁 » 網頁前端 » 拆分web項目
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

拆分web項目

發布時間: 2022-12-27 15:52:07

❶ 一個web項目,需要頻繁的操作sql server 里的一個表A,然而A表裡有了大量的數據後會導致操作反應時間過慢

  1. 資料庫進行集群,提高資料庫的處理能力;

  2. 將A表進行拆分,分為多個表

❷ Web應用程序與網站之間的區別

Web應用程序是指運行時多數為了實現某個功能,就像網站的後台,web網站更側重於前台的美觀展示。

❸ 為什麼JavaWeb項目要分層

首先讓我們坐著時光機回到n年前的web開發。
那個時候最早都是靜態的html頁面,後來有了資料庫,有了所謂的動態頁面,
然後程序猿在編碼的時候,會把所有的代碼都寫在頁面上,包括資料庫連接,包括事務控制,接收參數,各種校驗,各種邏輯,各種html/js/css代碼等等
怎麼樣?夠亂吧?像一坨那什麼一樣,這個頁面可能有成千上萬行?

那麼好,問題來了,回頭需要修改的時候,你怎麼辦?
你找個東西找半天,好不容易找到了,還不敢改,怕被其他地方用了,改出連帶問題。
頁面一出錯,定位不準到底是哪裡的問題,從頭到尾的挨個排查。
等等等等。

這就是大家常說的什麼叫可維護性,這也是為什麼越來越多的公司的規范要求不能寫復雜sql。

還記得之前在東軟的時候,一哥們寫了一個80多行的大sql來完成一個核心的查詢。
試問這個大sql天天在資料庫里run,還有性能可言?
再試問誰敢改?
後來項目要改需求還是出現bug了,那個sql要改動,寫sql的哥們改了好久才改好,因為時間長他也忘了,
再後來他離職了。。。

有人問,那簡單sql實現不了我的功能呀,怎麼辦?
從資料庫設計層面開始下手,要允許適當的冗餘,把表弄好,就迎刃而解了,這也是資料庫層面的一種解耦吧。

後來。。。
進入第二階段,大家痛定思痛,決定要把頁面和邏輯拆開,頁面只是負責顯示,邏輯都在後台。
這就出現了短暫的,在jsp里使用標簽調用bean的用法。bean里耦合了除了頁面之外的所有東西。

再後來。。。
進入了第三階段,大家又痛定思痛,決定要拆成三部分,就是大名鼎鼎的MVC。

再再後來。。。
衍生出來了類似於struts/springmvc等等的mvc框架
---------------
JavaWeb項目的層有2個維度。

第一個維度是MVC的三層:
M:model,模型層,包括了你的業務邏輯和資料庫操作,封裝好給視圖層使用的。
V:view,視圖層,僅僅做的是展示數據,不包含業務邏輯,主要是jsp/html等等
C:controller,控制層,負責接收請求,調用模型層處理業務邏輯並返回給視圖層。

第二個維度是java代碼里的三層:
controller:控制層,負責接收參數/解析參數/封裝參數,調用serivce,將service方法的返回值進行封裝(如果需要),返回數據/返回頁面,路由。
service:負責業務邏輯,事務控制在這層里做,被controller調用,以及調用。
:持久層,負責資料庫交互,被service調用。

這2個維度別弄混了喲。我今天主要說的是第二個維度的層喲。
我認為,第二個維度是第一個維度的延伸,其實第二個維度再加上一個表現層就完美了,這就為什麼有人說是4層架構。
---------------
前戲結束,步入正題:

有些學生朋友可能會問為什麼要分層呢?我本來可以在一個地方寫完的東西,非要散落在各個層中,都在一起不是挺好的嗎?
開發效率高呀~
跳來跳去的我腦子都暈啦。。。

這就是為什麼有人會把所有的東西都扔在一個層里,比如controller層。。。

其實我們可以在jsp上把所有的邏輯以及資料庫操作,數據展示全部寫在一起,耦合在一起,這樣開發起來貌似更快,
但是維護性非常差,有朝一日想改一個小地方,牽一發而動全一身,隱患很高,無法快速定位問題。
因此我們需要分層。
分層了之後,你理論上改了持久層的東西,邏輯層是不用變動的。

每個Dao類是跟每個表走,Dao的每個方法里就一個個的簡單sql,不包含任何業務邏輯,可以被不同的service復用和調用。

經過抽象後基本上都是通用的,因而我們在定義DAO層的時候可以將相關的方法定義完畢,
這樣的好處是在對Service進行擴展的時候不需要再對DAO層進行修改,提高了程序的可擴展性。

提高了程序的可擴展性。具體什麼時候做這些操作,怎麼做這些操作都由Service來處理。
(就像郭德綱的相聲里的一句話:「行了,你甭管了」)

而Service則不是,一個Service里可以會調用多個不同的,完成特定的業務邏輯,事務控制,
封裝Service層的業務邏輯有利於通用的業務邏輯的獨立性和重復利用性

同時,一個Service的方法也有可能被多個Controller的方法來調用。

邏輯出問題就在Service找問題,資料庫,sql有問題就在Dao層找問題,
參數解析錯誤,跳轉錯誤,就在Controller上找問題。
這樣快速定位問題,互不幹擾。

---------------
分層架構(這里會延伸到更廣闊的架構):

回頭項目玩大了,怎麼辦?拆!!!

具體可以搜一下:maven分模塊開發,怎麼玩代碼依賴,怎麼玩微服務,怎麼玩SOA,怎麼玩RPC,怎麼玩bbo。

web項目發展有幾個階段啊

第一個階段(單一應用架構):
所有代碼都耦合在一個項目里,放在一台伺服器上,這種all in one的方式是有好處的。
創業初期,不用什麼架構,走敏捷開發,最快速的實現需求才是王道。
你甭管我有多爛,我至少能跑起來,我至少能在外網上讓你訪問,讓你使用。
當然了,初期的訪問量很少,節省部署和運維成本才是王道呀。
聽阿里的講座,說淘寶的前期的版本用的就是一台PC機作為伺服器,所有的功能耦合在一個項目里,
每次往生產環境上發版本,要上傳一個600mb的包,呵呵。

第二個階段(垂直應用架構):
哎喲,不錯哦。自己的兒子被越來越多的人訪問,訪問量激增,一台伺服器扛不住了,
沒事,我們可以玩負載均衡,玩集群。
但是!這種性能加速度其實會變得越來越小,因為你的項目是耦合在一起的。
這時,我們需要拆分項目,這里又有2個維度,按層拆,按模塊拆。
將拆好的不同項目分別部署在不同的伺服器上,並且再分不同的小集群。

第三個階段(分布式服務架構):
唉呀媽呀,訪問量陡增,到這步你創業應該算成功了,開始燒投資人的錢了吧。
經過上面拆成了越來越多的模塊,模塊與模塊交互越來越多,怎麼辦?
這個時候我們需要把核心的業務抽出來,作為獨立的服務,慢慢發展成穩定的服務中心,
用來提升業務復用和整合。
就像阿里的大牛說過,沒有淘寶的積累,天貓能那麼快的出來嗎?
這個時候,你的緩存,資料庫,消息隊列等服務都應該是分布式的。

第四個階段(流動計算架構)
哎呀媽呀,訪問量又上了一個台階,翻了好幾百倍吖,腫么辦?
這個時候服務越來越多,一些容量和資源的浪費問題凸顯出來,
這時我們需要一個調度中心來基於訪問壓力動態的管理集群容量,
提高利用率。

第五個階段(雲計算架構)
抱歉,作者正在學習中,未完待續。

❹ 微服務架構下,進行前後端分離,前端怎麼寫

分離後的前端,不再是一個簡單的HTML文件,已經是一個獨立的應用系統。除了要考慮頁面的數據渲染展示,還要用工程化的思想來考慮前端的架構,前後端的交互和數據安全等事情。

RESTful介面交互
前後端分離之後,更多的是採用RESTful風格的介面與後端進行數據交互。

REST是「呈現狀態轉移(REpresentational State Transfer)」的縮寫,一種API的架構風格,在客戶端和服務端之間通過呈現狀態的轉移來驅動應用狀態的演進。

在 REST 樣式的 Web 服務中,每個資源都有一個地址。資源本身都是方法調用的目標,方法列表對所有資源都是一樣的。這些方法都是標准方法,包括 HTTP GET、POST、PUT、DELETE,還可能包括 HEADER 和 OPTIONS。
RESTful的API設計,使得後端通過介面向前端傳遞數據,數據的格式通常是JSON這種通用的格式。對前端來說,只要後端返回過來的是RESTful的數據就行,不管後端是用Java寫,還是用python或PHP,拜託對後端的依賴,做到前端系統的獨立。

工程化構建

Nodejs不止可以用來做前端伺服器,在開發階段,它也能發揮很大的作用。

前端生態的發展,是圍繞著Nodejs進行的。用npm來管理項目依賴,可以很好的維護和運行在Nodejs環境上。

打包工具grunt、gulp、webpack和rollup等,都是運行在nodejs上,再結合語法編譯、打包部署等插件,將應用輸入成一個完整的應用。

如果你使用了Angular、React或Vue框架,或者你使用瀏覽器暫時還不兼容的ES6語法,還需要在應用打包前用babel將語法編譯成瀏覽器可識別的ES5的語法。

SPA
SPA是單頁Web應用(single page web application,SPA)的簡寫,就是只有一張Web頁面的應用,是載入單個HTML 頁面並在用戶與應用程序交互時動態更新該頁面的Web應用程序。

像Angular、React或Vue就是為了SPA而設計的,結合前端路由庫(react-router、vue-router)和狀態熱存儲(rex、vuex)等,可以開發出一個媲美Native APP的Web APP,用戶體驗得到了很大的提升。

當然,SPA也不是完美的,也不是適合所有的web應用,需要結合項目和場景來選擇。

SPA有如下缺點:

  • 初次載入耗時增加。可以通過代碼拆分、懶載入來提升性能,減少初次載入耗時。

  • SEO不友好,現在可以通過Prerender或Server render來解決一部分。

  • 頁面的前進和後端需要開發者自己寫,不過現在一些路由庫已經幫助我們基本解決了。

  • 對開發者要求高,由於做SPA需要了解一整套技術棧,所以,要考慮後期是否有合適的人選進行維護。

❺ 公司的Java web 項目拆分好多個,一個主項目,包含好幾個項目

你的意思是「一個項目下分多個模塊」吧,如果是不存在關聯性的項目肯定可以獨立部署的。
一個項目下的多個模塊由於存在關聯性,比如相互調用,流程順序等,需要整體發布。
模塊一般是根據功能劃分出來的子集,便於並行開發、單元測試及代碼管理,也就是說,劃分模塊為了好管理。

❻ net中Web應用程序和web網站的區別

net中Web應用程序和web網站的區別:
1、WebSite:生成隨機的程序集名,需要通過插件WebDeployment才可以生成單一程序集
WebApplication:可以指定網站項目生成單一程序集,因為是獨立的程序集,所以和其他項目一樣可以指定應用程序集的名字、版本、輸出位置等信息
2、新建網站與新建Asp.net Web應用程序的區別,VS2010 SP1內置了轉換程序,可以非常方便的從WebSite轉換到WebApplication,只需要復制文件,右鍵執行「轉換為Web應用程序」即可。
總結:
VS2010打sp1後,在要新做一個網站項目的時候,有兩個選擇:新建網站和新建 Asp.net Web應用程序。WebSite模式也就是「新建網站」,比較適合中小型企業網站。

❼ java web項目部署,是不是資料庫和伺服器要分開部署的啊

肯定是分開部署的(更加安全),並且一般採用的是虛擬化,將資源整合成一個資源池,根據每個應用的需要進行分配資源,當某個應用的虛擬機不能運行,立即有預留的虛擬機啟動接管應用。你可以去伺服器廠商(正睿)的網上找找虛擬化相關圖文教程參考一下,很快就清楚了!

❽ vue項目打包,路由在資料庫里,怎麼進行分割

一、使用工具:webpack、react

二、方法步驟:

1、修改你的路由

三、注意事項:[name].js這一點很重要,要是不這樣寫,就不能打包成對應的路由js。

❾ 請教什麼情況下應該把web伺服器和應用伺服器分開

簡單的說
客戶發送請求,請求到你的web伺服器
Web伺服器專門處理HTTP請求(比如IIS)
Tomcat是應用伺服器
Web伺服器把HTTP請求交給應用伺服器
項目部署在tomcat上
這個項目里有你的邏輯關系
然後處理完之後 返回一個響應 應用伺服器交給web伺服器
web伺服器交給客戶

文件伺服器 就是專門用來上傳文件 和 下載文件的 單獨獨立出來,比如視頻網站 他們的網站頁面與視頻文件所在伺服器絕不是同一個 因為視頻伺服器的負載會很高