姜 贏, 高 巾, 張 婧, 朱玲萱, 張如玉
1(北京師范大學(xué)珠海分校 管理學(xué)院, 珠海 519087)
2(中國(guó)移動(dòng)通訊集團(tuán)廣東有限公司珠海分公司 信息技術(shù)中心, 珠海 519015)
標(biāo)簽式組裝建站系統(tǒng)研究①
姜 贏1, 高 巾2, 張 婧1, 朱玲萱1, 張如玉1
1(北京師范大學(xué)珠海分校 管理學(xué)院, 珠海 519087)
2(中國(guó)移動(dòng)通訊集團(tuán)廣東有限公司珠海分公司 信息技術(shù)中心, 珠海 519015)
針對(duì)我國(guó)中小企業(yè)電子商務(wù)需求現(xiàn)狀, 提出了基于第三方電子商務(wù)平臺(tái)的組裝建站系統(tǒng). 介紹了基于ASP.NET(C#)的組裝建站系統(tǒng)的標(biāo)簽庫(kù)和標(biāo)簽解析引擎的設(shè)計(jì)和實(shí)現(xiàn)思路, 并通過(guò)系統(tǒng)實(shí)現(xiàn)證明了方案的可行性.通過(guò)標(biāo)簽的組裝, 不僅可以完成中小企業(yè)的網(wǎng)站建設(shè)功能, 更可以通過(guò)組裝和添加多種功能和模塊以擴(kuò)展和建設(shè)第三方電子商務(wù)平臺(tái).
組裝建站; 標(biāo)簽; .NET
電子商務(wù)是未來(lái)的發(fā)展趨勢(shì), 越來(lái)越多的企事業(yè)開(kāi)始認(rèn)識(shí)到網(wǎng)絡(luò)營(yíng)銷對(duì)企業(yè)發(fā)展的重要性. 通過(guò)建設(shè)網(wǎng)站, 企業(yè)可以不受地域和國(guó)界的限制, 讓更多地區(qū)的人們能夠通過(guò)網(wǎng)頁(yè)認(rèn)識(shí)和了解企業(yè), 甚至還能夠?qū)崿F(xiàn)網(wǎng)上交易、客戶信息反饋, 極大的方便了企業(yè)與客戶之間信息交流, 擴(kuò)大企業(yè)的知名度. 因此, 中國(guó)電信、中國(guó)移動(dòng)、中國(guó)網(wǎng)通等基礎(chǔ)的電信運(yùn)營(yíng)商現(xiàn)在紛紛提供電子商務(wù)增值服務(wù), 已經(jīng)開(kāi)始要著重開(kāi)展面向中小企業(yè)的ISP服務(wù)、自助建站服務(wù)等等[1]. 另外, 專業(yè)網(wǎng)絡(luò)公司或運(yùn)營(yíng)商開(kāi)發(fā)出自助建站工具(DIY)提供企業(yè)在線使用, 企業(yè)每年只需繳納很少的服務(wù)費(fèi)用, 就可以擁有自己的網(wǎng)站. 通過(guò)使用自助建站系統(tǒng), 企業(yè)不需要聘請(qǐng)專門的技術(shù)人員, 只要會(huì)簡(jiǎn)單的打字, 處理圖片, 就可以根據(jù)頁(yè)面的提示信息維護(hù)網(wǎng)站內(nèi)容. 專業(yè)網(wǎng)絡(luò)公司或運(yùn)營(yíng)商還需要整合資源, 建設(shè)一個(gè)在各個(gè)DIY網(wǎng)站之上的第三方電子商務(wù)平臺(tái), 通過(guò)搜索和挖掘各個(gè)DIY子網(wǎng)站的信息內(nèi)容, 整理后發(fā)布在第三方電子商務(wù)平臺(tái)上. 平臺(tái)的內(nèi)容會(huì)隨著子網(wǎng)站的增加而不斷的豐富和壯大, 平臺(tái)的價(jià)值和人氣也會(huì)不斷提升, 反過(guò)來(lái)總網(wǎng)站也可以為DIY網(wǎng)站的企業(yè)提供更多的信息和更好的服務(wù). 這樣能形成一個(gè)企業(yè)聯(lián)盟式的電子商務(wù)網(wǎng)絡(luò)家族, 必然比單個(gè)小企業(yè)的網(wǎng)站有更強(qiáng)的生命力, 可以說(shuō)是B2B模式和B2C模式的結(jié)合, 更適合電子商務(wù)網(wǎng)站的穩(wěn)健發(fā)展[2].
自助建站系統(tǒng)在功能上, 主要分為整體類, 擴(kuò)展類,組合類. (1)整體類服務(wù)商提供固定化網(wǎng)站欄目和模板,由客戶選擇后填寫(xiě)進(jìn)入相關(guān)內(nèi)容既可. 本類系統(tǒng)優(yōu)點(diǎn)在于頁(yè)面經(jīng)過(guò)專業(yè)美工設(shè)計(jì), 整體效果美觀; 但欄目固定擴(kuò)展性小. 因而依附類服務(wù)商中, 針對(duì)某一行業(yè)的門戶網(wǎng)站大多選擇使用本類系統(tǒng). 據(jù)不完全統(tǒng)計(jì), 截止2015年底此類商家約200家, 如中國(guó)營(yíng)銷網(wǎng)自助企業(yè)網(wǎng)站建站平臺(tái)等都屬于這一種. (2)擴(kuò)展類服務(wù)商給用戶一定選擇空間, 用戶可以根據(jù)自身的需要進(jìn)行欄目的設(shè)置, 并可自行建立多級(jí)目錄(一般為二級(jí)目錄). 本類產(chǎn)品優(yōu)點(diǎn)在于給了用戶一定的選擇空間, 可以放置其特有欄目和信息; 但欄目的自行建立破壞了整體效果的美觀. 因而此方式相對(duì)靈活, 且技術(shù)難度不大, 所以獨(dú)立類服務(wù)商、門戶類服務(wù)商(其他服務(wù)與建站系統(tǒng)無(wú)關(guān))與大部分商務(wù)信息類門戶網(wǎng)站(跨行業(yè)進(jìn)行信息服務(wù)的門戶網(wǎng)站)所選擇. (3)組合類服務(wù)商在市場(chǎng)中極少, 部分服務(wù)商給了用戶最多的選擇, 使用戶可以在建立欄目同時(shí)選擇欄目使用功能模塊的功能, 并可以對(duì)頁(yè)面中更多元素進(jìn)行改變. 如表1所示, 這三類建站系統(tǒng)雖然都能在某種程度上滿足中小型企業(yè)用戶的需求,但都不具備良好的擴(kuò)展性, 沒(méi)有多種功能的復(fù)雜組合及疊加.
表1 三類自助建站系統(tǒng)對(duì)比表
面向中小型企業(yè)的自助建站系統(tǒng)作為第三方電子商務(wù)的重要應(yīng)用, 其發(fā)展趨勢(shì)必然是更加靈活的組裝方式, 更加安全的服務(wù)及與商務(wù)平臺(tái)更好的集成, 甚至于服務(wù)于商務(wù)平臺(tái)本身的建設(shè)和功能擴(kuò)展[6,7]. 在這樣的背景下, 筆者提出了基于第三方電子商務(wù)平臺(tái)的標(biāo)簽式組裝建站系統(tǒng). 通過(guò)標(biāo)簽的組裝, 不僅可以完成中小企業(yè)的網(wǎng)站建設(shè)功能, 更可以通過(guò)組裝和添加多種功能和模塊以擴(kuò)展和建設(shè)第三方電子商務(wù)平臺(tái).
如圖1所示, 本系統(tǒng)便采用了插件思路, 將細(xì)粒度的若干種可重用的網(wǎng)站功能封裝在不同的標(biāo)簽中, 將粗粒度的功能封裝在模板和欄目中, 從而形成類似于插件的表現(xiàn)方式, 通過(guò)標(biāo)簽解析引擎統(tǒng)一進(jìn)行管理.
如圖2所示, 本系統(tǒng)在標(biāo)簽設(shè)計(jì)上完全遵循XHTML標(biāo)準(zhǔn). XHTML就是一種XML應(yīng)用. 它采用XML的DTD文件格式定義, 并運(yùn)行在支持XML的系統(tǒng)上. 遵循此標(biāo)準(zhǔn), 本系統(tǒng)將業(yè)務(wù)流程的數(shù)據(jù)標(biāo)記文件與外觀文件完全分開(kāi), 通過(guò)XML標(biāo)準(zhǔn)接口進(jìn)行數(shù)據(jù)傳輸與解析, 從而大大增加了系統(tǒng)的可擴(kuò)展性. 當(dāng)系統(tǒng)需要增加新的功能時(shí), 只要確保新設(shè)計(jì)添加的標(biāo)簽符合XML標(biāo)準(zhǔn)并有相應(yīng)的標(biāo)簽類支持, 標(biāo)簽解析引擎便可以順利將其解析, 將新的功能注入系統(tǒng)中.
圖1 標(biāo)簽式組裝建站系統(tǒng)的插件示意圖
圖2 組裝建站系統(tǒng)基于XHTML的可擴(kuò)展性
3.1 標(biāo)簽程序?qū)嶓w對(duì)象設(shè)計(jì)
如圖3所示, 當(dāng)組裝建站標(biāo)簽解析引擎掃描到XHTML文件中的一個(gè)標(biāo)簽時(shí), 它首先通過(guò)一個(gè)類似于標(biāo)簽倉(cāng)庫(kù)管理的類將此標(biāo)簽字符串與數(shù)據(jù)庫(kù)中的標(biāo)簽定義相匹配, 進(jìn)而找到此標(biāo)簽實(shí)例所對(duì)應(yīng)的標(biāo)簽定義類, 由此標(biāo)簽定義類實(shí)例化此標(biāo)簽對(duì)應(yīng)的標(biāo)簽類實(shí)例與標(biāo)簽處理類實(shí)例, 接著由此標(biāo)簽類實(shí)例調(diào)用其對(duì)應(yīng)的標(biāo)簽處理工具類實(shí)例, 從而將此標(biāo)簽實(shí)例對(duì)應(yīng)的代碼生成并傳回, 為下一步組裝做好準(zhǔn)備. 整個(gè)標(biāo)簽處理過(guò)程涉及到4個(gè)標(biāo)簽相關(guān)實(shí)體. 他們分別是“標(biāo)簽倉(cāng)庫(kù)管理實(shí)體”、“標(biāo)簽定義實(shí)體”、“標(biāo)簽實(shí)體”、“標(biāo)簽處理實(shí)體”. 遵循面向?qū)ο蟪绦蛟O(shè)計(jì)的思路, 筆者在程序中對(duì)應(yīng)這4種對(duì)象分別定義了4個(gè)類.
圖3 標(biāo)簽作業(yè)流程示意圖
(1) 標(biāo)簽定義倉(cāng)庫(kù)(TagDefinitionRepertory)
它對(duì)標(biāo)簽定義類(TagDefinition)的管理、新建及初始化. 管理行為包括添加、刪除標(biāo)簽定義類; 根據(jù)特定條件(如功能限制)查詢并返回符合條件的標(biāo)簽定義類實(shí)例集合; 查詢特定標(biāo)簽屬性的種類(如查詢名字空間的種類). 新建及初始化行為包括根據(jù)namespace和localname在數(shù)據(jù)庫(kù)中查詢特定的標(biāo)簽定義類并初始化其基本屬性, 新建并返回標(biāo)簽定義類(TagDefinition)實(shí)例.
(2) 標(biāo)簽定義類(TagDefinition)
其實(shí)例代表特定名字空間(localname)和本地名(namespace)所組成的標(biāo)簽的特定含義, 是一個(gè)抽象實(shí)體. 特定的標(biāo)簽定義類與特定的標(biāo)簽類和標(biāo)簽處理類相關(guān). 主要負(fù)責(zé)新建并初始化標(biāo)簽實(shí)例和標(biāo)簽處理類實(shí)例. 行為包括新建標(biāo)簽類(Tag)實(shí)例, 新建其對(duì)應(yīng)標(biāo)簽處理類(TagHandler)實(shí)例, 關(guān)聯(lián)二者, 將標(biāo)簽處理類實(shí)例的引用賦予標(biāo)簽類實(shí)例. 初始化標(biāo)簽處理類實(shí)例的所有屬性. 初始化標(biāo)簽類的部分屬性.
(3) 標(biāo)簽處理類(TagHandler)
其實(shí)例代表完成特定標(biāo)簽行為的工具實(shí)體. 主要負(fù)責(zé)標(biāo)簽代碼的底層加工. 行為包括讀入特定后臺(tái)源代碼塊, 根據(jù)傳入?yún)?shù)對(duì)源代碼進(jìn)行加工替換. 完畢后返回給標(biāo)簽實(shí)例.
(4) 標(biāo)簽類(Tag)
其實(shí)例代表美工模版中使用的每個(gè)具有唯一名字空間和本地名組合的標(biāo)簽. 主要負(fù)責(zé)傳遞前臺(tái)參數(shù), 調(diào)用其對(duì)應(yīng)的標(biāo)簽處理類實(shí)例, 完成標(biāo)簽實(shí)例為前臺(tái)和后臺(tái)生產(chǎn)特定代碼的工作.
3.2 標(biāo)簽類設(shè)計(jì)
標(biāo)簽分類考慮了存儲(chǔ)平臺(tái)與標(biāo)簽功能自身特點(diǎn)兩方面的因素. 大致由“數(shù)據(jù)類”、“非數(shù)據(jù)類”、“平臺(tái)級(jí)別”與“企業(yè)級(jí)別”四個(gè)標(biāo)準(zhǔn)交叉組合, 再穿插具體功能細(xì)節(jié)組成. 非數(shù)據(jù)類標(biāo)簽不涉及到企業(yè)特定數(shù)據(jù)中數(shù)據(jù)的存取, 只依靠前臺(tái)參數(shù)的傳遞便可以直接形成頁(yè)面顯示; 數(shù)據(jù)類標(biāo)簽涉及到從特定企業(yè)的特定數(shù)據(jù)庫(kù)中讀取數(shù)據(jù); “平臺(tái)級(jí)別”與“企業(yè)級(jí)別”標(biāo)簽的區(qū)別在于涉及數(shù)據(jù)內(nèi)容的不同, 平臺(tái)級(jí)別的數(shù)據(jù)主要是整個(gè)組裝建站平臺(tái)上所涉及存儲(chǔ)的數(shù)據(jù), 而企業(yè)級(jí)別的數(shù)據(jù)則深入到特定行業(yè)中的不同企業(yè)數(shù)據(jù)庫(kù)中. 考慮到平臺(tái)將來(lái)的可擴(kuò)展性, 除去現(xiàn)在需要的標(biāo)簽, 筆者還專門預(yù)留了一類“第三方標(biāo)簽”(ThirdPartyWebServiceTag),方便將來(lái)有了新的應(yīng)用后通過(guò)Web服務(wù)等方式添加到組裝建站平臺(tái)中.
如圖4所示, 標(biāo)簽分類主要包括: (1) AbstractTag:所有標(biāo)簽類的抽象父類, 里面處理所有標(biāo)簽都具備的一些方法操作和屬性. (2) CustomAbstractTag: 當(dāng)前組裝建站平臺(tái)自身所有標(biāo)簽的抽象父類, 處理組裝建站自有標(biāo)簽都具備的一些方法操作和屬性. (3)ThirdPartyTag: 第三方標(biāo)簽的抽象父類, 處理組裝建站所有第三方外來(lái)標(biāo)簽都具備的一些方法操作和屬性.(4) WebServiceTag: 第三方標(biāo)簽的一類, 針對(duì)通過(guò)WebService與組裝建站平臺(tái)集成的標(biāo)簽類. (5) PlainLinkTag:非數(shù)據(jù)鏈接標(biāo)簽類, 專門處理非數(shù)據(jù)鏈接標(biāo)簽, 只根據(jù)屬性給與的數(shù)據(jù)生成鏈接, 不需要從數(shù)據(jù)庫(kù)中存取. 其他標(biāo)簽分類與(5)類似, 實(shí)現(xiàn)不同的功能, 故不再贅述.
圖4 標(biāo)簽分類
3.3 標(biāo)簽屬性參數(shù)設(shè)計(jì)
標(biāo)簽的屬性主要用于傳遞必要的數(shù)據(jù). 數(shù)據(jù)的來(lái)源有4個(gè): (1) 來(lái)自于數(shù)據(jù)庫(kù), 即在生成代碼時(shí)標(biāo)簽調(diào)用數(shù)據(jù)接入層對(duì)象從而從數(shù)據(jù)庫(kù)中取得的數(shù)據(jù)(例如“DBColumnName”, 數(shù)據(jù)標(biāo)簽定義所涉及到的數(shù)據(jù)庫(kù)字段, 用于直接存儲(chǔ)數(shù)據(jù)); (2) 來(lái)自于美工給出的數(shù)據(jù),如美工唯一確定的標(biāo)簽ID, 以及一些相關(guān)的鏈接地址等(例如“SuccessHref”, 操作成功后的跳轉(zhuǎn)鏈接地址);(3) 來(lái)自于模版頁(yè)面的上下文, 如列表標(biāo)簽中用于確定列表范圍的一些屬性數(shù)據(jù)、一直跟隨頁(yè)面?zhèn)鬟f的行業(yè)ID數(shù)據(jù)等(例如“FatherDBColumnName”, 標(biāo)簽的父標(biāo)簽對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名); (4) 由程序自動(dòng)合成的數(shù)據(jù), 如每個(gè)標(biāo)簽最終的唯一ID(例如“CodePath”, 代碼文件的路徑, 用于和標(biāo)簽處理類所知道的代碼文件名進(jìn)行組合從而找到最終代碼文件).
3.3 標(biāo)簽后臺(tái)代碼段參數(shù)設(shè)計(jì)
標(biāo)簽的主要任務(wù)便是根據(jù)前臺(tái)傳入的數(shù)據(jù)生成相關(guān)的后臺(tái)代碼. 本系統(tǒng)中標(biāo)簽將前臺(tái)及數(shù)據(jù)庫(kù)中的相關(guān)參數(shù)進(jìn)行處理和傳遞, 在找到對(duì)應(yīng)的后臺(tái)代碼后填充其中需要的參數(shù), 進(jìn)而生成最終返回前臺(tái)的程序代碼, 這其中, 參數(shù)的設(shè)計(jì)非常重要. 表2給出了標(biāo)簽后臺(tái)代碼的部分參數(shù)及其說(shuō)明.
表2 標(biāo)簽后臺(tái)代碼參數(shù)說(shuō)明
如何在現(xiàn)有的標(biāo)簽類和標(biāo)簽庫(kù)基礎(chǔ)之上增加新的標(biāo)簽?本系統(tǒng)提供以下3種機(jī)制: 新建標(biāo)簽類、只擴(kuò)展標(biāo)簽定義; 只用擴(kuò)展字段.
4.1 新建標(biāo)簽類
如果新標(biāo)簽完全是新的功能, TagMeta表中沒(méi)有對(duì)應(yīng)的標(biāo)簽代碼, 比如要添加投票功能, 那么需要新建功能和標(biāo)簽類. 主要步驟如下:
(1) 新建功能類, 在Functions表中添加功能定義相關(guān)數(shù)據(jù), 獲得功能id號(hào), 填寫(xiě)到TagMeta_FunId字段;(2) 根據(jù)新功能添加數(shù)據(jù)表;(3) 編寫(xiě)新功能的代碼;
(4) 對(duì)代碼進(jìn)行切割, 分離出新的標(biāo)簽代碼, 分析新的標(biāo)簽代碼所需要的參數(shù)以<<>>標(biāo)識(shí), 新代碼以.txt文件存儲(chǔ)起來(lái), 文件名填寫(xiě)到TagMeta_CodeName字段;
(5) 分析標(biāo)簽的優(yōu)先級(jí)別, 填寫(xiě)到TagMeta_Level(如列表list為2, 具體條目details為1, 其他為0, 優(yōu)先級(jí)別高的模版引擎會(huì)先處理);
(6) 分析新的標(biāo)簽代碼所需要的參數(shù), 如果恰好TagMeta_ClassType中的某個(gè)標(biāo)簽類與之符合, 則可以重用這個(gè)標(biāo)簽類, 即該標(biāo)簽屬于這個(gè)標(biāo)簽類; 如果沒(méi)有符合的, 則需要重新設(shè)計(jì)新的標(biāo)簽類和標(biāo)簽處理類對(duì)參數(shù)進(jìn)行處理, 并將其填寫(xiě)到TagMeta_ClassType和TagMeta_HandlerType字段;
(7) 填寫(xiě)標(biāo)簽的LocalName, Namespace和中文名稱介紹等;
(8) 根據(jù)(2)中數(shù)據(jù)表的信息, 填寫(xiě)標(biāo)簽TagMeta_DBColName, 如果TagMeta_Level為0, 則填寫(xiě)字段名, 如果TagMeta_Level為2則填寫(xiě)表名, 如果TagMeta_Level為1則填寫(xiě)表的標(biāo)識(shí)字段名(通常為…_id);
(9) 根據(jù)(6)中分析的參數(shù), 填寫(xiě)標(biāo)簽對(duì)應(yīng)的美工屬性到TagAtrTagDef表中;
(10) 根據(jù)(8)中填寫(xiě)的屬性, 填寫(xiě)標(biāo)簽父子對(duì)應(yīng)關(guān)系到TagLevel表中;
(11) 如果是數(shù)據(jù)標(biāo)簽, 即需要在后臺(tái)輸入數(shù)據(jù)的,需要開(kāi)發(fā)相應(yīng)的后臺(tái)管理頁(yè)面, 并將頁(yè)面掛在相應(yīng)的功能類下面作為管理入口.
4.2 只擴(kuò)展標(biāo)簽定義
如果新標(biāo)簽的是在原有的功能上進(jìn)行擴(kuò)展, 并不需要添新的功能和標(biāo)簽代碼, 則(1)至(5)步可以省略,使用已經(jīng)有的功能和標(biāo)簽代碼. 如新聞和產(chǎn)品都是使用同一種標(biāo)簽代碼, 同一種標(biāo)簽類, 卻是不同的標(biāo)簽定義(即Namespace和LocalName不同).
4.3 只用擴(kuò)展字段
如果已經(jīng)有擴(kuò)展字段標(biāo)簽, 則上文中的步驟(1)至(10)步都可以省略, 只需要使用這種擴(kuò)展字段標(biāo)簽就能完成, 比如對(duì)企業(yè)增加一個(gè)“企業(yè)形象代言人”屬性, 則只需要使用 5.1 標(biāo)簽解析引擎基本原理 標(biāo)簽解析引擎是標(biāo)簽式組裝建站系統(tǒng)的核心, 它負(fù)責(zé)模板的解析、檢測(cè)、注冊(cè)、生成和部署. 它能將XHTML模板解析成基于Asp.Net的網(wǎng)頁(yè)(包括前臺(tái)aspx頁(yè)面和后臺(tái)code_behind代碼). 每一組模板頁(yè)面被解析生成一個(gè)模板網(wǎng)站, 這個(gè)模板網(wǎng)站包含各種功能、欄目. 企業(yè)可以根據(jù)自己的需要選擇模板網(wǎng)站, 設(shè)計(jì)并填充符合企業(yè)特點(diǎn)的數(shù)據(jù). 由標(biāo)簽解析引擎生成的模板網(wǎng)站提供靈活的管理后臺(tái), 可自由編輯排版、智能式操作, 隨時(shí)新建網(wǎng)站欄目或更新欄目、不同用戶可分配不同管理權(quán)限、設(shè)置不同內(nèi)容的訪問(wèn)權(quán)限. 5.2 具體實(shí)現(xiàn)過(guò)程 第一步: 從數(shù)據(jù)庫(kù)中讀取模版號(hào)后, 根據(jù)模版號(hào),調(diào)用模版函數(shù), 得到模版對(duì)象, 這個(gè)模版對(duì)象中包含了這個(gè)模版里的每個(gè)頁(yè)面的引用, 每個(gè)頁(yè)面包含了這個(gè)頁(yè)面的以DOM形式存放的靜態(tài)和動(dòng)態(tài)文本和以引用方式存在的本頁(yè)面的Tags. 第二步: 循環(huán)這個(gè)模版的每個(gè)頁(yè)面, 執(zhí)行第三步的操作. 第三步: 首先構(gòu)建一個(gè)PageBuilder對(duì)象, 包含Aspx實(shí)例和CsCodeBehind實(shí)例, 前者包含了封裝了需要寫(xiě)在 第四步: 循環(huán)TagCollection, 執(zhí)行第五步的操作. 第五步: 對(duì)每個(gè)Tag, 先從DOM節(jié)點(diǎn)和標(biāo)簽的對(duì)照哈希表里, 由DOM節(jié)點(diǎn)為鍵, 取出Tag里面的string類型的AspxCode屬性, 包裝成一個(gè)DOM節(jié)點(diǎn), 替換前者的DOM節(jié)點(diǎn). 以保證最終生成的DOM是前臺(tái)頁(yè)面的DOM文檔. 同時(shí)執(zhí)行第六步. 第六步: 由DOM節(jié)點(diǎn)為鍵取出Tag里面的將要填入后臺(tái)代碼的string類型的數(shù)據(jù), 這里面分為三個(gè)部分,第一部分對(duì)應(yīng)的是將要生成的頁(yè)面的Using指令和類名以及命名空間, 第二部分對(duì)應(yīng)的是將要生成的頁(yè)面的PageLoad代碼, 第三部分對(duì)應(yīng)的是將要生成的頁(yè)面的普通函數(shù). 對(duì)于第一部分而言, 可以通過(guò)單個(gè)Tag的屬性UsingCode得到. 對(duì)于第二部分而言, 又有以下三種情況, 第一種情況是預(yù)處理指令, 這需要放入PageLoad的最前面. 第二部分是Page級(jí)別的之間的關(guān)系, 這個(gè)也需要放入PageLoad的前面, 但是相較于第一部分, 在其后, 第三部分就是一些這個(gè)頁(yè)面內(nèi)部的需要寫(xiě)入PageLoad指令的代碼, 而這一部分內(nèi)也是有先后順序的. PageLoad對(duì)象, 對(duì)每個(gè)tag需要存放文件的位置有預(yù)先定義好的級(jí)別. 首先將預(yù)處理指定當(dāng)做有最高級(jí)別的代碼塞入PageLoad對(duì)象的用來(lái)存放優(yōu)先級(jí)別最好的屬性當(dāng)中去. 再將Page級(jí)別的之間的關(guān)系也當(dāng)作有最高級(jí)別的代碼塞入此屬性中. 完成了要優(yōu)先輸入的代碼之后, 就可以根據(jù)Tag的具體級(jí)別分別塞入PageLoad對(duì)象里, 優(yōu)先級(jí)別高, 中, 低 的對(duì)應(yīng)屬性當(dāng)中去. 第七步, 已經(jīng)有了存在內(nèi)存里的封裝了前臺(tái)代碼的Aspx對(duì)象和封裝了后臺(tái)代碼的CsCodeBehind對(duì)象.那么可以一次性將這些對(duì)象里面的代碼輸出到相應(yīng)的文件夾里. 第八步, 第五步的循環(huán)結(jié)束, 調(diào)用方法將模版文件夾里面的所有文件都拷貝到目標(biāo)文件夾中, 完成整個(gè)模版引擎的工作. 重復(fù)進(jìn)如第五步的循環(huán). 第九步, 重復(fù)進(jìn)入第二步循環(huán), 直到此模版內(nèi)沒(méi)有需要處理的頁(yè)面. 本系統(tǒng)總共設(shè)計(jì)和實(shí)現(xiàn)了72個(gè)標(biāo)簽, 主要包含功能模塊: (1)產(chǎn)品展示: 發(fā)布和維護(hù)自己的產(chǎn)品信息; 商品分類顯示; 客戶可以詢盤、咨詢; 產(chǎn)品按目錄管理、支持產(chǎn)品訪問(wèn)權(quán)限設(shè)置; 產(chǎn)品信息可與電子商務(wù)平臺(tái)的信息自動(dòng)同步. (2)企業(yè)自有會(huì)員管理: 提供會(huì)員注冊(cè)、登錄和權(quán)限修改等. (3)新聞發(fā)布: 后臺(tái)發(fā)布新聞內(nèi)容, 首頁(yè)自動(dòng)生成鏈接. 本系統(tǒng)還設(shè)計(jì)了20套涵蓋物流、外貿(mào)、酒店、旅游、制造、工業(yè)園等不同行業(yè)特色的網(wǎng)站模板, 可以滿足大部分中小企業(yè)資助建站需求. 2蔣紅林. 淺談企業(yè)網(wǎng)站運(yùn)營(yíng)維護(hù). 計(jì)算機(jī)光盤軟件與應(yīng)用,2013, (13): 107,109. 3關(guān)博, 楊紅天, 劉博. 智能企業(yè)自助建站系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn). 電子技術(shù)與軟件工程, 2015, (8): 77. 4孫雷. 自助建站系統(tǒng)的研究與應(yīng)用. 自動(dòng)化技術(shù)與應(yīng)用, 2015,34(5): 101–103,114. 5楊明子. 中小企業(yè)自助建站信息系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā). 消費(fèi)導(dǎo)刊, 2009, (12): 190–191. 6張睿, 李欣. 基于PHP技術(shù)的自助建站系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 科技創(chuàng)新導(dǎo)報(bào), 2008, (4): 42–43. 7毛力. 無(wú)障礙自助建站系統(tǒng)轉(zhuǎn)戰(zhàn)內(nèi)地市場(chǎng). 互聯(lián)網(wǎng)天地, 2008,(5): 78–79. Research on Tag-Styled Website Builder System JIANG Ying1, GAO Jin2, ZHANG Jing1, ZHU Ling-Xuan1, ZHANG Ru-Yu1 1(School of Management, Beijing Normal University, Zhuhai 519087, China) According to the E-commerce demands of small and medium sized companies, this paper puts forward a scheme for the border construction of third party E-commerce platform. It introduces the tag warehouse based on the ASP.NET(C#) and the design and realization of the tag analyzing engine, demonstrating the feasibility of the scheme through the development of a website building system. Besides the function of website building, we can extend the platform of third party E-commerce by adding new functions using tags. website builder; tag; .NET 姜贏,高巾,張婧,朱玲萱,張如玉.標(biāo)簽式組裝建站系統(tǒng)研究.計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(7):65–70. http://www.c-s-a.org.cn/1003-3254/5830.html 星. 企業(yè)模板建站與定制建站有何區(qū)別. 計(jì)算機(jī)與網(wǎng)絡(luò),2015, (20): 43. 10.3969/j.issn.1008-1739.2015.20.040 廣東省自然科學(xué)基金項(xiàng)目(2016A030313386); 廣東省科技計(jì)劃項(xiàng)目(2014A080804001) 2016-10-21; 收到修改稿時(shí)間: 2016-11-245 標(biāo)簽解析引擎的實(shí)現(xiàn)
6 總結(jié)
2(IT Center, China Mobile Communications Group Guandong Co. Ltd., Zhuhai Branch, Zhuhai 519015, China)