第一部分 另類的MVC架構(gòu)JVPL架構(gòu)

為企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站優(yōu)化、營銷型網(wǎng)站建設(shè)、競(jìng)價(jià)托管、品牌運(yùn)營等營銷獲客服務(wù)。成都創(chuàng)新互聯(lián)公司擁有網(wǎng)絡(luò)營銷運(yùn)營團(tuán)隊(duì),以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗(yàn)助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡(jiǎn)單”。自創(chuàng)立至今,成功用技術(shù)實(shí)力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時(shí)降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!
(JVPL模式的系統(tǒng)結(jié)構(gòu)圖)
1.JVPL模式(JSON+視圖+處理器+加載器)
1)定義:
JVPL和mvc設(shè)計(jì)模式類似,一個(gè)變種的MVC設(shè)計(jì)模式。
2)MVC的優(yōu)弱點(diǎn):
MVC讓開發(fā)從原來的 webform中解脫出來,解決了層次清晰邏輯與UI的隔離以及服務(wù)端控件的一些瑕疵等諸多問題,但是MVC的弱點(diǎn)同時(shí)也存在.在MVC中我們的Model時(shí)常變動(dòng),我們必須手動(dòng)創(chuàng)建Model類和Model的變動(dòng)修改.同時(shí)對(duì)于 Model的Action控制操作也需要一定程度上的變動(dòng).(由實(shí)體框架等生成的實(shí)體(Model)是無法滿足現(xiàn)行邏輯需求的).
其次因?yàn)閷?shí)際開發(fā)中沒有銀彈,只有平衡點(diǎn).V,C之間的邏輯緊密,然而實(shí)際的前臺(tái)實(shí)現(xiàn)和效果需求是變化莫測(cè)的, 更加導(dǎo)致美工決定VC的局面,從而VC的重用性很低很低.如果一個(gè)頁面存在多個(gè)視圖,那么其邏輯就相對(duì)不易(我們需要維護(hù)多個(gè)VC組,我們需要處理VC組的一定邏輯次序,構(gòu)造不同的Model).
3)JVPL設(shè)計(jì)模式的優(yōu)勢(shì)
1)JVPL(json-視圖-處理器--加載器),如上圖所示.如果我要視圖重用我只要載入所需視圖和加載器即可.var 新的視圖=get("加載器","視圖"); 且Moon.net架構(gòu)會(huì)接著腳本引擎幫助我們生成后臺(tái)所需代碼.
2)整個(gè)JVPL模式建立建立在Ajax的機(jī)制上,它具有Ajax所有的優(yōu)缺點(diǎn).(但我認(rèn)為Ajax的優(yōu)點(diǎn)>>缺點(diǎn),且我們可以通過手段解決這些缺點(diǎn)).正如有人說Ajax不安全,因?yàn)楸┞读讼到y(tǒng)服務(wù)接口,這完全廢話,難道純的form提交就沒有暴露?這些都是門外漢說的話,因?yàn)楦镜臋?quán)限機(jī)制都沒有建立.接著說,正如前面文章提到的視圖數(shù)據(jù)的加載.如果我前臺(tái)的邏輯變動(dòng)系統(tǒng)的邏輯變動(dòng),這是Moon.Web會(huì)輔助我們生產(chǎn)新的后臺(tái)代碼. 如果一個(gè)頁面存在多個(gè)視圖,那么這多個(gè)視圖的加載,我們通過加載器直接調(diào)度即可.因?yàn)槟_本引擎的存在,它會(huì)幫助我們生成后臺(tái)代碼和數(shù)據(jù)分配及數(shù)據(jù)轉(zhuǎn)發(fā).Moon.NET中最為精華的部分就是腳本引擎.它也是我們提高開發(fā)效率的關(guān)鍵.
3)在我們的開發(fā)中,前端展現(xiàn)的標(biāo)準(zhǔn)是由策劃及美工定的,所以作為一個(gè)開發(fā)者還是架構(gòu)師必須緊密結(jié)合實(shí)際進(jìn)行架構(gòu)或開發(fā).這樣才能提高開發(fā)效率. Moon.Web主要對(duì)復(fù)雜的UI控件諸如:編輯器,分頁,異步文件上傳...等控件進(jìn)行了封裝且提供了美工可控制接口.因?yàn)镸VC的控件方法也是一樣的.
2.JVPL設(shè)計(jì)模式的demo實(shí)例
說明:JVPL設(shè)計(jì)模式與傳統(tǒng)的ASP.NET開發(fā)完全兼容,且符合MVC的設(shè)計(jì)理念.
實(shí)例一:程序配置
-------------------------------------配置文件設(shè)置--------------------------------------
--------------->數(shù)據(jù)處理器和數(shù)據(jù)加載器所在的類庫名(放在Bin里面) ----------->數(shù)據(jù)庫的類型 --->連接字符串 --->程序運(yùn)行的根目錄
//--------------------------------------庫文件引用----------------------
引用Moon.Orm和Moon.Web庫
//-------------------------------------加入腳本庫到根目錄
//-----------------------------------頁面開發(fā)
html結(jié)構(gòu)
- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Web.WebForm1" %>
model加載和數(shù)據(jù)更新
- 姓名:
- 性別
- 男
- value="false" type="radio" />女
- 年齡
- 北京戶口
- 年齡段
兩處黃色部分,表示的數(shù)據(jù)的加載和數(shù)據(jù)提交。
- [Log()]//加載的代碼
- public static void GetUserInfo()
- {
- PersonSet data= DBFactory.GetEntity
(PersonSetTable.ID.Equal(1)); - CustomData cus=new CustomData();
- cus.A=1;
- ReturnJSONString(data,cus);
- }
- [Log()]//更新部分的代碼(代碼生成器會(huì)自動(dòng)生成)
- public static void AjaxUpdateUserInfo()
- {
- PersonSet data=new PersonSet();
- string UserName=Request["UserName"];
- string Sex=Request["Sex"];
- string Age=Request["Age"];
- string IsBeiJing=Request["IsBeiJing"];
- string AgePeriod=Request["AgePeriod"];
- string otherData=Request["otherData"];
- string PrimaryKey=Request["PrimaryKey"];
- data.Set(PersonSetTable.UserName,UserName);
- data.Set(PersonSetTable.Sex,Sex);
- data.Set(PersonSetTable.Age,Age);
- data.Set(PersonSetTable.IsBeiJing,IsBeiJing);
- data.Set(PersonSetTable.AgePeriod,AgePeriod);
- data.SetOnlyMark(PersonSetTable.ID.Equal(long.Parse(PrimaryKey)));
- DBFactory.Update(data);
- ReturnTextString(PrimaryKey);
- }
//-----------------------頁面效果及代碼生成效果
第二部分 高效便捷的ORM架構(gòu)Moon.net
1、背景
針對(duì)Qin.Data的架構(gòu)設(shè)計(jì)反應(yīng)出的一些問題進(jìn)行了全新的架構(gòu)設(shè)計(jì),彌補(bǔ)了多數(shù)據(jù)源使用不便、同道反應(yīng)不過ORM、自身架構(gòu)的瑕疵等問題。
2、介紹
Moon .ORM是一個(gè)通用數(shù)據(jù)庫處理框架(可以包含MSSQL POSTGRESQL,SQLITE EXCEL MYSQL DB2 ORACLE...只要你愿意實(shí)現(xiàn)接口就可以)。很便捷地進(jìn)行常用數(shù)據(jù)庫操作(增刪改查)。其性能是幾近純ADO.NET。對(duì)于實(shí)體的查詢采用emit實(shí)現(xiàn),如果您還不滿意可用此框架的代碼生成器直接生成純ADO.NET SQL形式。其主要特色就是性能和便捷的操作。
3、特色
4、配置簡(jiǎn)單
![]()
微信二維碼