本申請涉及WebIDE(WebIDE是一類讓用戶可以在頁面上編輯代碼的網(wǎng)頁)開發(fā)技術(shù)領(lǐng)域,尤其涉及一種文件讀寫方法、裝置和系統(tǒng)。
背景技術(shù):
GIT(分布式版本控制系統(tǒng))和SVN(Subversion,開放源代碼的版本控制系統(tǒng))是開發(fā)過程中常用的文件版本控制工具,常用于團(tuán)隊(duì)開發(fā)任務(wù)中,但是這兩種工具對系統(tǒng)、環(huán)境以及命令熟練度的要求比較高,造成開發(fā)人員在使用時(shí)開發(fā)效率低。
目前,已經(jīng)有部分WebIDE開發(fā)環(huán)境(例如國內(nèi)的Coding.net)讓開發(fā)人員可以在瀏覽器中編寫并提交代碼文件,以解決操作成本高帶來的效率低的問題。例如,一些多人協(xié)同開發(fā)的系統(tǒng)采用的是客戶端緩存的方法,即多個(gè)開發(fā)人員分別在自己的客戶端緩存中記錄對同一個(gè)文件的操作,然后將自己的緩存操作提交到服務(wù)器,服務(wù)器獲取各個(gè)客戶端的緩存操作后將其合并為一個(gè)完整的操作,再對文件進(jìn)行更新。然而,該方案存在以下問題:
(1)開發(fā)人員對文件的讀寫權(quán)限并沒有妥善被控制,由于可以在多個(gè)瀏覽器中打開同一個(gè)文件進(jìn)行編寫,或者多個(gè)開發(fā)人員打開同一個(gè)文件進(jìn)行編寫,因此在同一時(shí)間對于同一個(gè)文件而言可能會存在被不同的開發(fā)人員打開并寫入不同的內(nèi)容的情況,導(dǎo)致在多個(gè)不同的開發(fā)人員編寫后提交文件時(shí)文件的內(nèi)容存在沖突,或者是文件的內(nèi)容出現(xiàn)相互覆蓋的情況,嚴(yán)重限制了多個(gè)開發(fā)人員在多人協(xié)作開發(fā)中的發(fā)揮;
(2)客戶端需要有緩存,且需要有足夠的權(quán)限操作緩存系統(tǒng),例如ios系統(tǒng)對用戶權(quán)限做嚴(yán)格控制,或者用戶手動關(guān)閉了權(quán)限,開發(fā)人員便會無法進(jìn)行操作;
(3)文件修改的內(nèi)容都保存在客戶端,如果開發(fā)人員修改了數(shù)據(jù)但還沒來得及提交到服務(wù)器,此時(shí)用戶切換客戶端就會造成數(shù)據(jù)丟失;
(4)所有的操作數(shù)據(jù)都存儲在客戶端緩存,開發(fā)人員如果有權(quán)限即可隨意修改緩存數(shù)據(jù),安全性差。
申請內(nèi)容
本申請旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
為此,本申請的第一個(gè)目的在于提出一種文件讀寫方法,該文件讀寫方法。
本申請的第二個(gè)目的在于提出一種文件讀寫裝置。
本申請的第三個(gè)目的在于提出一種文件讀寫系統(tǒng)。
為達(dá)上述目的,本申請第一方面實(shí)施例提出了一種文件讀寫方法,包括以下步驟:接收訪問請求,并根據(jù)所述訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息;在緩存服務(wù)器中查詢所述文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到所述文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器獲取所述文件標(biāo)識信息對應(yīng)的第一原始文件;根據(jù)所述第一用戶標(biāo)識信息和所述第一原始文件生成鎖定文件,并將所述鎖定文件提交至所述緩存服務(wù)器;以及接收針對所述第一原始文件的編輯操作,并將編輯后的第一原始文件提交至所述緩存服務(wù)器,以使所述緩存服務(wù)器根據(jù)所述編輯后的第一原始文件對所述鎖定文件進(jìn)行更新。
本申請實(shí)施例的文件讀寫方法,通過緩存服務(wù)器實(shí)現(xiàn)了適用于WebIDE系統(tǒng)的文件鎖定機(jī)制,利用緩存服務(wù)器作為文件服務(wù)器和WebIDE服務(wù)器之間緩沖,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,從而使得用戶在對文件操作的過程中擁有文件的獨(dú)享操作權(quán),避免了多個(gè)用戶對同一個(gè)文件操作時(shí)提交的內(nèi)容互相沖突,使得WebIDE系統(tǒng)能夠在多個(gè)協(xié)作開發(fā)過程中發(fā)揮更大的作用。此外,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,比每次都修改文件服務(wù)器的數(shù)據(jù)庫相比成本更低,且緩存機(jī)制能夠更加靈活地處理多種文件、產(chǎn)生同一個(gè)文件的不同副本等等,給用戶更好的體驗(yàn)。
為達(dá)上述目的,本申請第二方面實(shí)施例提出了一種文件讀寫裝置,包括:第一接收模塊,用于接收訪問請求;第一獲取模塊,用戶根據(jù)所述訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息;查詢模塊,用于在緩存服務(wù)器中查詢所述文件標(biāo)識信息對應(yīng)的鎖定文件;第二獲取模塊,用于當(dāng)所述查詢模塊未查詢到所述文件標(biāo)識信息對應(yīng)的鎖定文件時(shí),從文件服務(wù)器獲取所述文件標(biāo)識信息對應(yīng)的第一原始文件;生成模塊,用于根據(jù)所述第一用戶標(biāo)識信息和所述第一原始文件生成鎖定文件;提交模塊,用于將所述鎖定文件提交至所述緩存服務(wù)器;以及第二接收模塊,用于接收針對所述第一原始文件的編輯操作,其中,所述提交模塊將編輯后的第一原始文件提交至所述緩存服務(wù)器,以使所述緩存服務(wù)器根據(jù)所述編輯后的第一原始文件對所述鎖定文件進(jìn)行更新。
本申請實(shí)施例的文件讀寫裝置,通過緩存服務(wù)器實(shí)現(xiàn)了適用于WebIDE系統(tǒng)的文件鎖定機(jī)制,利用緩存服務(wù)器作為文件服務(wù)器和WebIDE服務(wù)器之間緩沖,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,從而使得用戶在對文件操作的過程中擁有文件的獨(dú)享操作權(quán),避免了多個(gè)用戶對同一個(gè)文件操作時(shí)提交的內(nèi)容互相沖突,使得WebIDE系統(tǒng)能夠在多個(gè)協(xié)作開發(fā)過程中發(fā)揮更大的作用。此外,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,比每次都修改文件服務(wù)器的數(shù)據(jù)庫相比成本更低,且緩存機(jī)制能夠更加靈活地處理多種文件、產(chǎn)生同一個(gè)文件的不同副本等等,給用戶更好的體驗(yàn)。
為達(dá)上述目的,本申請第三方面實(shí)施例提出了一種文件讀寫系統(tǒng),包括:WebIDE服務(wù)器、緩存服務(wù)器和文件服務(wù)器,其中,所述WebIDE服務(wù)器用于接收訪問請求,并根據(jù)所述訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息,以及在緩存服務(wù)器中查詢所述文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到所述文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器獲取所述文件標(biāo)識信息對應(yīng)的第一原始文件,并根據(jù)所述第一用戶標(biāo)識信息和所述第一原始文件生成鎖定文件,并將所述鎖定文件提交至所述緩存服務(wù)器,以及接收針對所述第一原始文件的編輯操作,并將編輯后的第一原始文件提交至所述緩存服務(wù)器;以及所述緩存服務(wù)器用于存儲所述鎖定文件,并根據(jù)所述編輯后的第一原始文件對所述鎖定文件進(jìn)行更新。
本申請實(shí)施例的文件讀寫系統(tǒng),通過緩存服務(wù)器實(shí)現(xiàn)了適用于WebIDE系統(tǒng)的文件鎖定機(jī)制,利用緩存服務(wù)器作為文件服務(wù)器和WebIDE服務(wù)器之間緩沖,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,從而使得用戶在對文件操作的過程中擁有文件的獨(dú)享操作權(quán),避免了多個(gè)用戶對同一個(gè)文件操作時(shí)提交的內(nèi)容互相沖突,使得WebIDE系統(tǒng)能夠在多個(gè)協(xié)作開發(fā)過程中發(fā)揮更大的作用。此外,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,比每次都修改文件服務(wù)器的數(shù)據(jù)庫相比成本更低,且緩存機(jī)制能夠更加靈活地處理多種文件、產(chǎn)生同一個(gè)文件的不同副本等等,給用戶更好的體驗(yàn)。
本申請附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本申請的實(shí)踐了解到。
附圖說明
本申請上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是本申請一個(gè)實(shí)施例的文件讀寫方法的流程圖;
圖2是本申請一個(gè)具體實(shí)施例的文件讀寫方法的流程圖;
圖3是本申請另一個(gè)具體實(shí)施例的文件讀寫方法的流程圖;
圖4是本申請另一個(gè)具體實(shí)施例的文件讀寫方法的流程圖;
圖5是本申請另一個(gè)具體實(shí)施例的文件讀寫方法的流程圖;
圖6是本申請一個(gè)實(shí)施例的文件讀寫裝置的結(jié)構(gòu)示意圖;
圖7是本申請一個(gè)具體實(shí)施例的文件讀寫裝置的結(jié)構(gòu)示意圖;以及
圖8是本申請一個(gè)實(shí)施例的文件讀寫裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本申請的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本申請,而不能理解為對本申請的限制。
此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括一個(gè)或者更多個(gè)該特征。在本申請的描述中,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上,除非另有明確具體的限定。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本申請的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
圖1是本申請一個(gè)實(shí)施例的文件讀寫方法的流程圖。
如圖1所示,文件讀寫方法包括:
S101,接收訪問請求,并根據(jù)訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息。
在本申請的實(shí)施例中,包括WebIDE服務(wù)器、緩存服務(wù)器以及文件服務(wù)器。其中,WebIDE服務(wù)器可以提供編輯文件的用戶界面、執(zhí)行緩存服務(wù)器中的操作、或者是和緩存服務(wù)器以及文件服務(wù)器進(jìn)行交互。文件服務(wù)器用于存儲文件的代碼文件,例如,GIT服務(wù)器用于存儲GIT文件的代碼文件,SVN服務(wù)器用于存儲SVN文件的代碼文件。而緩存服務(wù)器則是使用緩存機(jī)制來實(shí)現(xiàn)存儲鎖定的文件,例如,可以是noSql緩存服務(wù)器,也可以是Redis、Tair或者其它緩存服務(wù)器。
應(yīng)當(dāng)理解的是,WebIDE服務(wù)器、緩存服務(wù)器以及文件服務(wù)器可以是單個(gè)的服務(wù)器,也可以是由多個(gè)服務(wù)器組成的服務(wù)器集群。
具體地,WebIDE服務(wù)器接收用戶A發(fā)送的訪問某個(gè)文件的訪問請求,并獲取該文件的文件標(biāo)識信息以及用戶A的用戶標(biāo)識信息。其中,文件標(biāo)識信息用于在服務(wù)器端查詢該文件的唯一標(biāo)識,例如,文件標(biāo)識信息可以是文件路徑、文件的MD5(Message Digest Algorithm 5,消息摘要算法第五版)等。用戶標(biāo)識信息是用于驗(yàn)證用戶身份的唯一標(biāo)識,例如,用戶標(biāo)識信息可以是用戶ID(身份標(biāo)識號碼)等。
S102,在緩存服務(wù)器中查詢文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器獲取文件標(biāo)識信息對應(yīng)的第一原始文件。
具體地,WebIDE服務(wù)器根據(jù)文件標(biāo)識信息在緩存服務(wù)器中查詢是否存在與文件標(biāo)識信息對應(yīng)的文件,其中,該文件在緩存服務(wù)器中是處于鎖定狀態(tài)的,即鎖定文件。也就是 說,在用戶A請求訪問文件時(shí),并不直接從文件服務(wù)器獲取文件,而是先在緩存服務(wù)器中查詢是否存在已被鎖定的文件,如果緩存服務(wù)器中不存在已被鎖定的文件,則再從文件服務(wù)器獲取該文件。
如果WebIDE服務(wù)器在緩存服務(wù)器中未查詢到對應(yīng)的鎖定文件,則說明文件服務(wù)器上存儲的原始文件目前處于未鎖定的狀態(tài),用戶A有權(quán)限從文件服務(wù)器上獲取原始文件并對該原始文件加鎖,因此,WebIDE服務(wù)器在文件服務(wù)器中根據(jù)文件標(biāo)識信息查找到對應(yīng)的原始文件,并獲取該原始文件。
S103,根據(jù)第一用戶標(biāo)識信息和第一原始文件生成鎖定文件,并將鎖定文件提交至緩存服務(wù)器。
具體地,WebIDE服務(wù)器將原始文件的文件內(nèi)容展現(xiàn)給用戶A,同時(shí)根據(jù)用戶A的用戶標(biāo)識信息鎖定該原始文件,以生成包含原始文件和用戶標(biāo)識信息的鎖定文件。然后,WebIDE服務(wù)器以文件標(biāo)識信息作為鎖定文件的標(biāo)識,將鎖定文件提交至緩存服務(wù)器進(jìn)行存儲。
應(yīng)當(dāng)理解的是,在將鎖定文件存儲在緩存服務(wù)器之后,如果WebIDE服務(wù)器接收到用戶B發(fā)送的訪問該文件的請求后,WebIDE服務(wù)器同樣會以相同的方式先查詢緩存服務(wù)器中是否存在該文件對應(yīng)的鎖定文件,如果WebIDE服務(wù)器查詢到對應(yīng)的鎖定文件,由于緩存服務(wù)器中存在鎖定文件,因此用戶B在文件已被鎖定的狀態(tài)下不允許獲取文件或者是對文件進(jìn)行編輯。由此,可以避免用戶A和用戶B同時(shí)對文件進(jìn)行編輯導(dǎo)致編輯的內(nèi)容相互沖突的問題。
S104,接收針對第一原始文件的編輯操作,并將編輯后的第一原始文件提交至緩存服務(wù)器,以使緩存服務(wù)器根據(jù)編輯后的第一原始文件對鎖定文件進(jìn)行更新。
具體地,用戶A可以對原始文件的文件內(nèi)容進(jìn)行編輯,當(dāng)用戶A選擇保存編輯后的內(nèi)容時(shí),WebIDE服務(wù)器將編輯后的原始文件加上用戶標(biāo)識信息提交至緩存服務(wù)器。也就是說,WebIDE服務(wù)器將用戶A編輯后的內(nèi)容保存至緩存服務(wù)器的鎖定文件中。
應(yīng)當(dāng)理解的是,WebIDE服務(wù)器從文件服務(wù)器讀寫文件以及將文件內(nèi)容展現(xiàn)給用戶的方式均可采用現(xiàn)有技術(shù)實(shí)現(xiàn),例如,WebIDE服務(wù)器使用GitLab API或者Svn API實(shí)現(xiàn)文件的讀寫,使用ACE等開源JS框架實(shí)現(xiàn)文件內(nèi)容的展現(xiàn)。而緩存服務(wù)器中使用的緩存,可以用SSD(Solid State Drives,固態(tài)硬盤)做緩存持久化空間,以得到更大的存儲空間,或者使用Tair集群等緩存方案皆可。由于上述方案都是成熟的技術(shù),因此,此處不再復(fù)贅。
本申請實(shí)施例的文件讀寫方法,通過緩存服務(wù)器實(shí)現(xiàn)了適用于WebIDE系統(tǒng)的文件鎖定機(jī)制,利用緩存服務(wù)器作為文件服務(wù)器和WebIDE服務(wù)器之間緩沖,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,從而使得用戶在對文件操作的過程中擁有文件的獨(dú)享操作權(quán),避 免了多個(gè)用戶對同一個(gè)文件操作時(shí)提交的內(nèi)容互相沖突,使得WebIDE系統(tǒng)能夠在多個(gè)協(xié)作開發(fā)過程中發(fā)揮更大的作用。此外,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,比每次都修改文件服務(wù)器的數(shù)據(jù)庫相比成本更低,且緩存機(jī)制能夠更加靈活地處理多種文件、產(chǎn)生同一個(gè)文件的不同副本等等,給用戶更好的體驗(yàn)。
圖2是本申請一個(gè)具體實(shí)施例的文件讀寫方法的流程圖。
如圖2所示,文件讀寫方法包括:
S201,接收訪問請求,并根據(jù)訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息。
S202,在緩存服務(wù)器中查詢文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器獲取文件標(biāo)識信息對應(yīng)的第一原始文件。
S203,如果查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則判斷第一用戶標(biāo)識信息是否與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配,若第一用戶標(biāo)識信息與第二用戶標(biāo)識信息匹配,則從緩存服務(wù)器中獲取鎖定文件。
具體地,如果WebIDE服務(wù)器在緩存服務(wù)器中查詢到對應(yīng)的鎖定文件,則說明文件服務(wù)器上存儲的原始文件目前處于鎖定的狀態(tài),則WebIDE服務(wù)器獲取鎖定文件的用戶標(biāo)識信息,并判斷用戶A的用戶標(biāo)識信息和鎖定文件的用戶標(biāo)識信息是否匹配,如果用戶A的用戶標(biāo)識信息和鎖定文件的用戶標(biāo)識信息匹配,則WebIDE服務(wù)器判斷用戶A有權(quán)限獲取鎖定文件并進(jìn)行編輯。
應(yīng)當(dāng)理解的是,在用戶A讀取到鎖定文件后,該鎖定文件在緩存服務(wù)器中仍然繼續(xù)保持鎖定狀態(tài)。
在本申請的一個(gè)實(shí)施例中,若第一用戶標(biāo)識信息與第二用戶標(biāo)識信息不匹配,則生成拒絕獲取鎖定文件的提示信息。具體地,如果是用戶B訪問緩存服務(wù)器中的鎖定文件,則用戶B的用戶標(biāo)識信息和鎖定文件的用戶標(biāo)識信息不匹配,即該鎖定文件是用戶A鎖定的,則WebIDE服務(wù)器判斷用戶B沒有權(quán)限獲取鎖定文件進(jìn)行編輯,生成提示提示信息提示用戶B。
在本申請的一個(gè)實(shí)施例中,如果WebIDE服務(wù)器判斷用戶B沒有權(quán)限獲取鎖定文件進(jìn)行編輯,則WebIDE服務(wù)器可以為用戶B提供一個(gè)鎖定文件的副本,用戶B可以對副本進(jìn)行編輯,以使在用戶A對鎖定文件解鎖后,WebIDE服務(wù)器根據(jù)用戶B編輯的副本在處理副本和用戶A編輯的鎖定文件的沖突之后再進(jìn)行提交。由此,在用戶B沒有對鎖定文件編輯的權(quán)限時(shí),可以為用戶B提供一種更加友好的操作方式。
S204,接收針對鎖定文件的編輯操作,并將編輯后的鎖定文件提交至緩存服務(wù)器,以使緩存服務(wù)器根據(jù)編輯后的鎖定文件對鎖定文件進(jìn)行更新。
具體地,WebIDE服務(wù)器將鎖定文件的文件內(nèi)容展現(xiàn)給用戶A,用戶A可以對文件內(nèi) 容進(jìn)行編輯,當(dāng)用戶A選擇保存編輯后的內(nèi)容時(shí),WebIDE服務(wù)器將編輯后的鎖定文件加上用戶標(biāo)識信息提交至緩存服務(wù)器。也就是說,WebIDE服務(wù)器將用戶A編輯后的內(nèi)容保存至緩存服務(wù)器的鎖定文件中。
應(yīng)當(dāng)理解的是,由于緩存服務(wù)器中緩存文件的持久化特性,用戶A在緩存服務(wù)器中存儲的鎖定文件會被持久保持,當(dāng)用戶A從一個(gè)客戶端切換至另一個(gè)客戶端時(shí),可以根據(jù)用戶A的用戶表示信息和文件標(biāo)識信息再次讀取緩存服務(wù)器中的鎖定文件進(jìn)行編輯。
圖3是本申請另一個(gè)具體實(shí)施例的文件讀寫方法的流程圖。
如圖3所示,文件讀寫方法包括:
S301,接收訪問請求,并根據(jù)訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息。
S302,在緩存服務(wù)器中查詢文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器獲取文件標(biāo)識信息對應(yīng)的第一原始文件。
S303,根據(jù)第一用戶標(biāo)識信息和第一原始文件生成鎖定文件,并將鎖定文件提交至緩存服務(wù)器。
S304,接收針對第一原始文件的編輯操作,并將編輯后的第一原始文件提交至緩存服務(wù)器,以使緩存服務(wù)器根據(jù)編輯后的第一原始文件對鎖定文件進(jìn)行更新。
S305,從文件服務(wù)器獲取第二原始文件,并判斷緩存服務(wù)器中鎖定文件的第一提交信息與第二原始文件的第二提交信息是否匹配,如果第一提交信息與第二提交信息匹配,則將鎖定文件提交至文件服務(wù)器,以使文件服務(wù)器將第二原始文件替換為鎖定文件。
具體地,WebIDE服務(wù)器根據(jù)用戶A編輯的內(nèi)容對緩存服務(wù)器中的鎖定文件更新后,從文件服務(wù)器再次獲取文件服務(wù)器中保存的原始文件,并從獲取該原始文件的提交信息,如果緩存服務(wù)器中鎖定文件的提交信息和文件服務(wù)器中原始文件的提交信息匹配,則WebIDE服務(wù)器將更新后的鎖定文件異步提交至文件服務(wù)器,將文件服務(wù)器中的原始文件替換為更新后的鎖定文件。
S306,如果第一提交信息與第二提交信息不匹配,則根據(jù)第二原始文件對鎖定文件進(jìn)行更新,并根據(jù)第二提交信息更新第一提交信息,以及將更新后的鎖定文件提交至文件服務(wù)器。
具體地,如果緩存服務(wù)器中鎖定文件的提交信息和文件服務(wù)器中原始文件的提交信息不匹配,說明文件服務(wù)器中原始文件已經(jīng)被更新,例如,用戶通過文件服務(wù)器的客戶端對原始文件進(jìn)行了更新,則WebIDE服務(wù)器將鎖定文件的內(nèi)容保存為副本,并獲取原始文件的內(nèi)容,根據(jù)原始文件的內(nèi)容對鎖定文件的內(nèi)容進(jìn)行更新。在用戶A在解決鎖定文件的內(nèi)容和原始文件的內(nèi)容之間的沖突之后,WebIDE服務(wù)器將緩存服務(wù)器中的鎖定文件的提交信息更新為文件服務(wù)器中原始文件的提交信息。然后,WebIDE服務(wù)器將更新后的鎖定文 件異步提交至文件服務(wù)器,將文件服務(wù)器中的原始文件替換為更新后的鎖定文件。
圖4是本申請另一個(gè)具體實(shí)施例的文件讀寫方法的流程圖。
如圖4所示,文件讀寫方法包括:
S401,接收訪問請求,并根據(jù)訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息。
S402,在緩存服務(wù)器中查詢文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器獲取文件標(biāo)識信息對應(yīng)的第一原始文件。
S403,如果查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則判斷第一用戶標(biāo)識信息是否與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配,若第一用戶標(biāo)識信息與第二用戶標(biāo)識信息匹配,則從緩存服務(wù)器中獲取鎖定文件。
S404,接收針對鎖定文件的編輯操作,并將編輯后的鎖定文件提交至緩存服務(wù)器,以使緩存服務(wù)器根據(jù)編輯后的鎖定文件對鎖定文件進(jìn)行更新。
S405,接收針對緩存服務(wù)器中鎖定文件的解鎖請求,并在判斷第一用戶標(biāo)識信息與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配時(shí),從緩存服務(wù)器中刪除鎖定文件。
具體地,在用戶A對鎖定文件編輯完成之后,用戶A可以發(fā)送對鎖定文件進(jìn)行解鎖的請求,WebIDE服務(wù)器在接收到用戶A發(fā)送的解鎖請求后,提示用戶即將對鎖定文件解鎖,并提示用戶是否在解鎖前將鎖定文件提交至文件服務(wù)器中。在用戶A確認(rèn)對鎖定文件解鎖之后,根據(jù)文件標(biāo)識信息在緩存服務(wù)器中查找到對應(yīng)的鎖定文件,并判斷鎖定文件對應(yīng)的用戶標(biāo)識信息是否和用戶A的用戶標(biāo)識信息匹配。如果鎖定文件對應(yīng)的用戶標(biāo)識信息和用戶A的用戶標(biāo)識信息匹配,則WebIDE服務(wù)器從緩存服務(wù)器中刪除該鎖定文件。
應(yīng)當(dāng)理解的是,在鎖定文件從緩存服務(wù)器刪除之后,如果用戶B請求訪問文件,則WebIDE服務(wù)器則進(jìn)一步根據(jù)步驟S401-S404的方法為用戶B提供單獨(dú)操作文件的獨(dú)享操作權(quán)。
圖5是本申請另一個(gè)具體實(shí)施例的文件讀寫方法的流程圖。
如圖5所示,文件讀寫方法包括:
S501,接收訪問請求,并根據(jù)訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息。
S502,在緩存服務(wù)器中查詢文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器獲取文件標(biāo)識信息對應(yīng)的第一原始文件。
S503,如果查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則判斷第一用戶標(biāo)識信息是否與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配,若第一用戶標(biāo)識信息與第二用戶標(biāo)識信息匹配,則從緩存服務(wù)器中獲取鎖定文件。
S504,若第一用戶標(biāo)識信息與第二用戶標(biāo)識信息不匹配,則生成拒絕獲取鎖定文件的提示信息。
S505,接收針對第二用戶標(biāo)識信息的替換請求,并根據(jù)替換請求將第二用戶標(biāo)識信息替換為第一用戶標(biāo)識信息,以及生成第二用戶標(biāo)識信息被替換的提示信息。
具體地,如果用戶B沒有權(quán)限獲取鎖定文件進(jìn)行編輯,而用戶B又急需對鎖定文件進(jìn)行編輯,此時(shí)該文件被用戶A鎖定,則用戶B可以選擇搶鎖,直接將具有鎖定文件的讀寫權(quán)限的用戶A變?yōu)橛脩鬊具有權(quán)限。也就是說,用戶B發(fā)送對緩存服務(wù)器中鎖定文件所對應(yīng)的用戶標(biāo)識信息的替換請求,WebIDE服務(wù)器在接收到用戶B發(fā)送的替換請求后,將鎖定文件的用戶標(biāo)識信息替換為用戶B的用戶標(biāo)識信息,并生成鎖定文件的用戶標(biāo)識信息被替換的提示信息以提示用戶A。
S506,接收針對鎖定文件的編輯操作,并將編輯后的鎖定文件提交至緩存服務(wù)器,以使緩存服務(wù)器根據(jù)編輯后的鎖定文件對鎖定文件進(jìn)行更新。
具體地,WebIDE服務(wù)器將鎖定文件的文件內(nèi)容展現(xiàn)給用戶B,用戶B可以對文件內(nèi)容進(jìn)行編輯,當(dāng)用戶B選擇保存編輯后的內(nèi)容時(shí),WebIDE服務(wù)器將編輯后的鎖定文件加上用戶B的用戶標(biāo)識信息提交至緩存服務(wù)器。也就是說,WebIDE服務(wù)器將用戶B編輯后的內(nèi)容保存至緩存服務(wù)器的鎖定文件中。
本申請實(shí)施例的文件讀寫方法,為用戶提供文件鎖定、文件解鎖和搶鎖等功能,解決了多人協(xié)同開發(fā)時(shí)提交的內(nèi)容互相沖突、互相覆蓋的問題,同時(shí)使用緩存服務(wù)器保存鎖定文件可以解決多個(gè)WebIDE服務(wù)器中信息不同步的問題,使得多人協(xié)同開發(fā)時(shí)能夠充分發(fā)揮快速、不受環(huán)境限制的優(yōu)勢。
為了實(shí)現(xiàn)上述實(shí)施例,本申請還提出一種文件讀寫裝置。
圖6是本申請一個(gè)實(shí)施例的文件讀寫裝置的結(jié)構(gòu)示意圖,如圖6所示,文件讀寫裝置包括:第一接收模塊101、第一獲取模塊102、查詢模塊103、第二獲取模塊104、生成模塊105、提交模塊106和第二接收模塊107。
具體地,第一接收模塊101用于接收訪問請求。第一獲取模塊102用戶根據(jù)訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息。具體而言,第一接收模塊101接收用戶A發(fā)送的訪問某個(gè)文件的訪問請求,第一獲取模塊102獲取該文件的文件標(biāo)識信息以及用戶A的用戶標(biāo)識信息。其中,文件標(biāo)識信息用于在服務(wù)器端查詢該文件的唯一標(biāo)識,例如,文件標(biāo)識信息可以是文件路徑、文件的MD5等。用戶標(biāo)識信息是用于驗(yàn)證用戶身份的唯一標(biāo)識,例如,用戶標(biāo)識信息可以是用戶ID等。
查詢模塊103用于在緩存服務(wù)器中查詢文件標(biāo)識信息對應(yīng)的鎖定文件。第二獲取模塊104用于當(dāng)查詢模塊103未查詢到文件標(biāo)識信息對應(yīng)的鎖定文件時(shí),從文件服務(wù)器獲取文件標(biāo)識信息對應(yīng)的第一原始文件。具體而言,查詢模塊103根據(jù)文件標(biāo)識信息在緩存服務(wù)器中查詢是否存在與文件標(biāo)識信息對應(yīng)的文件,其中,該文件在緩存服務(wù)器中是處于鎖定 狀態(tài)的,即鎖定文件。也就是說,在用戶A請求訪問文件時(shí),并不直接從文件服務(wù)器獲取文件,而是先在緩存服務(wù)器中查詢是否存在已被鎖定的文件,如果緩存服務(wù)器中不存在已被鎖定的文件,則再從文件服務(wù)器獲取該文件。如果查詢模塊103在緩存服務(wù)器中未查詢到對應(yīng)的鎖定文件,則說明文件服務(wù)器上存儲的原始文件目前處于未鎖定的狀態(tài),用戶A有權(quán)限從文件服務(wù)器上獲取原始文件并對該原始文件加鎖,因此,第二獲取模塊104在文件服務(wù)器中根據(jù)文件標(biāo)識信息查找到對應(yīng)的原始文件,并獲取該原始文件。
生成模塊105用于根據(jù)第一用戶標(biāo)識信息和第一原始文件生成鎖定文件。提交模塊106用于將鎖定文件提交至緩存服務(wù)器。具體而言,生成模塊105將原始文件的文件內(nèi)容展現(xiàn)給用戶A,同時(shí)生成模塊105根據(jù)用戶A的用戶標(biāo)識信息鎖定該原始文件,以生成包含原始文件和用戶標(biāo)識信息的鎖定文件。然后,提交模塊106以文件標(biāo)識信息作為鎖定文件的標(biāo)識,將鎖定文件提交至緩存服務(wù)器進(jìn)行存儲。
第二接收模塊107用于接收針對第一原始文件的編輯操作,其中,提交模塊106將編輯后的第一原始文件提交至緩存服務(wù)器,以使緩存服務(wù)器根據(jù)編輯后的第一原始文件對鎖定文件進(jìn)行更新。具體地,用戶A可以對原始文件的文件內(nèi)容進(jìn)行編輯,當(dāng)用戶A選擇保存編輯后的內(nèi)容時(shí),第二接收模塊107接收用戶的編輯操作,提交模塊106將編輯后的原始文件加上用戶標(biāo)識信息提交至緩存服務(wù)器。也就是說,將用戶A編輯后的內(nèi)容保存至緩存服務(wù)器的鎖定文件中。
本申請實(shí)施例的文件讀寫裝置,通過緩存服務(wù)器實(shí)現(xiàn)了適用于WebIDE系統(tǒng)的文件鎖定機(jī)制,利用緩存服務(wù)器作為文件服務(wù)器和WebIDE服務(wù)器之間緩沖,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,從而使得用戶在對文件操作的過程中擁有文件的獨(dú)享操作權(quán),避免了多個(gè)用戶對同一個(gè)文件操作時(shí)提交的內(nèi)容互相沖突,使得WebIDE系統(tǒng)能夠在多個(gè)協(xié)作開發(fā)過程中發(fā)揮更大的作用。此外,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,比每次都修改文件服務(wù)器的數(shù)據(jù)庫相比成本更低,且緩存機(jī)制能夠更加靈活地處理多種文件、產(chǎn)生同一個(gè)文件的不同副本等等,給用戶更好的體驗(yàn)。
圖7是本申請一個(gè)具體實(shí)施例的文件讀寫裝置的結(jié)構(gòu)示意圖,如圖7所示,文件讀寫裝置包括:第一接收模塊101、第一獲取模塊102、查詢模塊103、第二獲取模塊104、生成模塊105、提交模塊106、第二接收模塊107、第一判斷模塊108、第一提示模塊109、第二判斷模塊110、更新模塊111、第三接收模塊112、解鎖模塊113、第四接收模塊114、替換模塊115和第二提示模塊116。
具體地,第一判斷模塊108用于當(dāng)查詢模塊103查詢到文件標(biāo)識信息對應(yīng)的鎖定文件時(shí),判斷第一用戶標(biāo)識信息是否與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配。第二獲取模塊104還用于當(dāng)?shù)谝慌袛嗄K108判斷第一用戶標(biāo)識信息與第二用戶標(biāo)識信息匹配時(shí),從緩 存服務(wù)器中獲取鎖定文件。具體地,如果查詢模塊103在緩存服務(wù)器中查詢到對應(yīng)的鎖定文件,則說明文件服務(wù)器上存儲的原始文件目前處于鎖定的狀態(tài),則獲取鎖定文件的用戶標(biāo)識信息,第一判斷模塊108判斷用戶A的用戶標(biāo)識信息和鎖定文件的用戶標(biāo)識信息是否匹配,如果第一判斷模塊108判斷用戶A的用戶標(biāo)識信息和鎖定文件的用戶標(biāo)識信息匹配,則用戶A有權(quán)限獲取鎖定文件并進(jìn)行編輯,因此,第二獲取模塊104從緩存服務(wù)器中獲取鎖定文件。
第一提示模塊109用于當(dāng)?shù)谝慌袛嗄K108判斷第一用戶標(biāo)識信息與第二用戶標(biāo)識信息不匹配時(shí),生成拒絕獲取鎖定文件的提示信息。具體地,如果是用戶B訪問緩存服務(wù)器中的鎖定文件,則第一判斷模塊108判斷用戶B的用戶標(biāo)識信息和鎖定文件的用戶標(biāo)識信息不匹配,即該鎖定文件是用戶A鎖定的,則第一判斷模塊108判斷用戶B沒有權(quán)限獲取鎖定文件進(jìn)行編輯,第一提示模塊109生成提示提示信息提示用戶B。
在本申請的一個(gè)實(shí)施例中,文件讀寫裝置還包括第二判斷模塊110和更新模塊111。其中,第二獲取模塊104還用于從文件服務(wù)器獲取第二原始文件。第二判斷模塊110用于判斷緩存服務(wù)器中鎖定文件的第一提交信息與第二原始文件的第二提交信息是否匹配。提交模塊106還用于當(dāng)?shù)诙袛嗄K110判斷第一提交信息與第二提交信息匹配時(shí),將鎖定文件提交至文件服務(wù)器,以使文件服務(wù)器將第二原始文件替換為鎖定文件。具體地,提交模塊106根據(jù)用戶A編輯的內(nèi)容對緩存服務(wù)器中的鎖定文件更新后,第二獲取模塊104從文件服務(wù)器再次獲取文件服務(wù)器中保存的原始文件,并從獲取該原始文件的提交信息,如果第二判斷模塊110判斷緩存服務(wù)器中鎖定文件的提交信息和文件服務(wù)器中原始文件的提交信息匹配,則提交模塊106將更新后的鎖定文件異步提交至文件服務(wù)器,將文件服務(wù)器中的原始文件替換為更新后的鎖定文件。
更新模塊111用于當(dāng)?shù)诙袛嗄K110判斷第一提交信息與第二提交信息不匹配時(shí),根據(jù)第二原始文件對鎖定文件進(jìn)行更新,并根據(jù)第二提交信息更新第一提交信息,其中,提交模塊106還用于將更新后的鎖定文件提交至文件服務(wù)器。具體地,如果第二判斷模塊110判斷緩存服務(wù)器中鎖定文件的提交信息和文件服務(wù)器中原始文件的提交信息不匹配,說明文件服務(wù)器中原始文件已經(jīng)被更新,例如,用戶通過文件服務(wù)器的客戶端對原始文件進(jìn)行了更新,則更新模塊111將鎖定文件的內(nèi)容保存為副本,并獲取原始文件的內(nèi)容,根據(jù)原始文件的內(nèi)容對鎖定文件的內(nèi)容進(jìn)行更新。在用戶A在解決鎖定文件的內(nèi)容和原始文件的內(nèi)容之間的沖突之后,提交模塊106將緩存服務(wù)器中的鎖定文件的提交信息更新為文件服務(wù)器中原始文件的提交信息。然后,提交模塊106將更新后的鎖定文件異步提交至文件服務(wù)器,將文件服務(wù)器中的原始文件替換為更新后的鎖定文件。
在本申請的一個(gè)實(shí)施例中,文件讀寫裝置還包括第三接收模塊112和解鎖模塊113。其 中,第三接收模塊112用于接收針對緩存服務(wù)器中鎖定文件的解鎖請求。解鎖模塊113用于在第一判斷模塊108判斷第一用戶標(biāo)識信息與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配時(shí),從緩存服務(wù)器中刪除鎖定文件。具體而言,具體地,在用戶A對鎖定文件編輯完成之后,用戶A可以發(fā)送對鎖定文件進(jìn)行解鎖的請求,第三接收模塊112在接收到用戶A發(fā)送的解鎖請求后,提示用戶即將對鎖定文件解鎖,并提示用戶是否在解鎖前將鎖定文件提交至文件服務(wù)器中。在用戶A確認(rèn)對鎖定文件解鎖之后,第一判斷模塊108根據(jù)文件標(biāo)識信息在緩存服務(wù)器中查找到對應(yīng)的鎖定文件,并判斷鎖定文件對應(yīng)的用戶標(biāo)識信息是否和用戶A的用戶標(biāo)識信息匹配。如果第一判斷模塊108判斷鎖定文件對應(yīng)的用戶標(biāo)識信息和用戶A的用戶標(biāo)識信息匹配,則解鎖模塊113從緩存服務(wù)器中刪除該鎖定文件。
在本申請的一個(gè)實(shí)施例中,文件讀寫裝置還包括第四接收模塊114、替換模塊115和第二提示模塊116。其中,第四接收模塊114用于接收針對第二用戶標(biāo)識信息的替換請求。替換模塊115用于根據(jù)替換請求將第二用戶標(biāo)識信息替換為第一用戶標(biāo)識信息。第二提示模塊116用于生成第二用戶標(biāo)識信息被替換的提示信息。具體地,如果用戶B沒有權(quán)限獲取鎖定文件進(jìn)行編輯,而用戶B又急需對鎖定文件進(jìn)行編輯,此時(shí)該文件被用戶A鎖定,則用戶B可以選擇搶鎖,直接將具有鎖定文件的讀寫權(quán)限的用戶A變?yōu)橛脩鬊具有權(quán)限。也就是說,用戶B發(fā)送對緩存服務(wù)器中鎖定文件所對應(yīng)的用戶標(biāo)識信息的替換請求,第四接收模塊114在接收到用戶B發(fā)送的替換請求后,替換模塊115將鎖定文件的用戶標(biāo)識信息替換為用戶B的用戶標(biāo)識信息,第二提示模塊116生成鎖定文件的用戶標(biāo)識信息被替換的提示信息以提示用戶A。
本申請實(shí)施例的文件讀寫裝置,為用戶提供文件鎖定、文件解鎖和搶鎖等功能,解決了多人協(xié)同開發(fā)時(shí)提交的內(nèi)容互相沖突、互相覆蓋的問題,同時(shí)使用緩存服務(wù)器保存鎖定文件可以解決多個(gè)WebIDE服務(wù)器中信息不同步的問題,使得多人協(xié)同開發(fā)時(shí)能夠充分發(fā)揮快速、不受環(huán)境限制的優(yōu)勢。
為了實(shí)現(xiàn)上述實(shí)施例,本申請還提出一種文件讀寫系統(tǒng)。
圖8是本申請一個(gè)實(shí)施例的文件讀寫裝置的結(jié)構(gòu)示意圖,如圖8所示,文件讀寫系統(tǒng)包括:WebIDE服務(wù)器1、緩存服務(wù)器2和文件服務(wù)器3。
具體地,WebIDE服務(wù)器1用于接收訪問請求,并根據(jù)訪問請求獲取文件標(biāo)識信息和第一用戶標(biāo)識信息,以及在緩存服務(wù)器2中查詢文件標(biāo)識信息對應(yīng)的鎖定文件,如果未查詢到文件標(biāo)識信息對應(yīng)的鎖定文件,則從文件服務(wù)器3獲取文件標(biāo)識信息對應(yīng)的第一原始文件,并根據(jù)第一用戶標(biāo)識信息和第一原始文件生成鎖定文件,并將鎖定文件提交至緩存服務(wù)器2,以及接收針對第一原始文件的編輯操作,并將編輯后的第一原始文件提交至緩存服務(wù)器2;以及
緩存服務(wù)器2用于存儲鎖定文件,并根據(jù)編輯后的第一原始文件對鎖定文件進(jìn)行更新。
在本申請的一個(gè)實(shí)施例中,WebIDE服務(wù)器1還用于當(dāng)查詢到文件標(biāo)識信息對應(yīng)的鎖定文件時(shí),判斷第一用戶標(biāo)識信息是否與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配,若第一用戶標(biāo)識信息與第二用戶標(biāo)識信息匹配,則從緩存服務(wù)器2中獲取鎖定文件。
在本申請的一個(gè)實(shí)施例中,WebIDE服務(wù)器1還用于當(dāng)?shù)谝挥脩魳?biāo)識信息與第二用戶標(biāo)識信息不匹配時(shí),生成拒絕獲取鎖定文件的提示信息。
在本申請的一個(gè)實(shí)施例中,文件服務(wù)器3存儲有第二原始文件,其中第二原始文件為第一原始文件更新后的版本,WebIDE服務(wù)器1還用于從文件服務(wù)器3獲取第二原始文件,并判斷緩存服務(wù)器2中鎖定文件的第一提交信息與第二原始文件的第二提交信息是否匹配,當(dāng)?shù)谝惶峤恍畔⑴c第二提交信息匹配時(shí),將鎖定文件提交至文件服務(wù)器3。文件服務(wù)器3還用于第二原始文件替換為鎖定文件。
在本申請的一個(gè)實(shí)施例中,WebIDE服務(wù)器1還用于當(dāng)?shù)谝惶峤恍畔⑴c第二提交信息不匹配時(shí),根據(jù)第二原始文件對鎖定文件進(jìn)行更新,并根據(jù)第二提交信息更新第一提交信息,以及將更新后的鎖定文件提交至文件服務(wù)器3。文件服務(wù)器3還用于將第二原始文件替換為更新后的鎖定文件。
在本申請的一個(gè)實(shí)施例中,WebIDE服務(wù)器1還用于接收針對緩存服務(wù)器2中鎖定文件的解鎖請求,并在判斷第一用戶標(biāo)識信息與鎖定文件對應(yīng)的第二用戶標(biāo)識信息匹配時(shí),從緩存服務(wù)器2中刪除鎖定文件。
在本申請的一個(gè)實(shí)施例中,WebIDE服務(wù)器1還用于接收針對第二用戶標(biāo)識信息的替換請求,并根據(jù)替換請求將第二用戶標(biāo)識信息替換為第一用戶標(biāo)識信息,以及生成第二用戶標(biāo)識信息被替換的提示信息。
另外,根據(jù)本申請實(shí)施例的文件讀寫系統(tǒng)實(shí)現(xiàn)方式以及作用可以參考上述實(shí)施例中文件讀寫方法和文件讀寫裝置的實(shí)現(xiàn)方式,為了減少冗余,此處不做贅述。
本申請實(shí)施例的文件讀寫系統(tǒng),通過緩存服務(wù)器實(shí)現(xiàn)了適用于WebIDE系統(tǒng)的文件鎖定機(jī)制,利用緩存服務(wù)器作為文件服務(wù)器和WebIDE服務(wù)器之間緩沖,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,從而使得用戶在對文件操作的過程中擁有文件的獨(dú)享操作權(quán),避免了多個(gè)用戶對同一個(gè)文件操作時(shí)提交的內(nèi)容互相沖突,使得WebIDE系統(tǒng)能夠在多個(gè)協(xié)作開發(fā)過程中發(fā)揮更大的作用。此外,使用緩存機(jī)制實(shí)現(xiàn)文件的鎖定,比每次都修改文件服務(wù)器的數(shù)據(jù)庫相比成本更低,且緩存機(jī)制能夠更加靈活地處理多種文件、產(chǎn)生同一個(gè)文件的不同副本等等,給用戶更好的體驗(yàn)。
進(jìn)而,為用戶提供文件鎖定、文件解鎖和搶鎖等功能,解決了多人協(xié)同開發(fā)時(shí)提交的內(nèi)容互相沖突、互相覆蓋的問題,同時(shí)使用緩存服務(wù)器保存鎖定文件可以解決多個(gè) WebIDE服務(wù)器中信息不同步的問題,使得多人協(xié)同開發(fā)時(shí)能夠充分發(fā)揮快速、不受環(huán)境限制的優(yōu)勢。
應(yīng)當(dāng)理解,本申請的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對數(shù)據(jù)信號實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本申請的至少一個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
盡管上面已經(jīng)示出和描述了本申請的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對本申請的限制,本領(lǐng)域的普通技術(shù)人員在本申請的范圍內(nèi)可以對上述實(shí)施例進(jìn)行變化、修改、替換和變型。