Visual Studio LightSwitch已經(jīng)可以通過MSDN訂閱下載了。
于是我馬上下載下來體驗(yàn)了一把:
安裝過程很簡(jiǎn)單,掛載ISO,運(yùn)行setup.exe,提示需要1G多的空間,其實(shí)如果你安裝了VS和Silverlight 4 SDK的話,要不了這么多的空間,500多M的安裝包也是因?yàn)榘琕S Shell的原因吧,我沒有在干凈的系統(tǒng)中安裝,具體情況如何不太清楚。以后微軟應(yīng)該出一個(gè)針對(duì)已有VS環(huán)境的精簡(jiǎn)安裝包。安裝完成的界面截圖如下:
安裝完成后,打開VS,新建項(xiàng)目的時(shí)候,就可以看到多出了一種項(xiàng)目類型了,語言可以選擇VB.NET和C#,如下圖:
那么,就創(chuàng)建一個(gè)項(xiàng)目,初始界面,大家可能都熟知了:
一開始就然大家創(chuàng)建數(shù)據(jù)表(table),注意此數(shù)據(jù)表并非是真正的數(shù)據(jù)庫(kù)中的表哦,可以說是一種抽象的數(shù)據(jù)表,或者是實(shí)體框架中的實(shí)體。我創(chuàng)建了一個(gè)名為的People的數(shù)據(jù)表:
從上圖,可以看到,Id字段是默認(rèn)就有的,無法修改名稱,但可以添加描述,并選擇是否要顯示在操作界面(Screen)上。這里有個(gè)問題,連Id的數(shù)據(jù)類型都不能修改,只能是Int32,而很多時(shí)候我更習(xí)慣使用Guid。希望正式版中可以給Id字段選擇不同的數(shù)據(jù)類型(至少可以支持GUID)。
可以添加數(shù)據(jù)類型的為EmailAddress的字段,對(duì)于這點(diǎn)顯得非常方便,不過如果能自己擴(kuò)展數(shù)據(jù)類型就好了,類似SharePoint那樣。
Age字段是一個(gè)計(jì)算字段,通過屬性窗口中提供的“Edit Method”按鈕可以打開代碼編輯界面,輸入如下代碼:
partial void Age_Compute(ref int result) { // Set result to the desired field value if (this.Birthday.HasValue) result=DateTime.Now.Year - this.Birthday.Value.Year; }
代碼的自動(dòng)生成做的很好,如果改變Age的數(shù)據(jù)類型,可以同步就修改result的類型。
分別查看Name,Age和Email字段的屬性,可以看到:
字符串(或基于字符串)的數(shù)據(jù)類型,可以被搜索(不太理解Date就不能搜索,還是只能過濾?);每個(gè)字段都可以轉(zhuǎn)換為計(jì)算字段;對(duì)于字符串字段,可以提供一個(gè)列表選擇;數(shù)據(jù)驗(yàn)證,根據(jù)不同的數(shù)據(jù)類型,提供了不同的驗(yàn)證選項(xiàng),也可以設(shè)置自定義驗(yàn)證模式;對(duì)于可空的字符串?dāng)?shù)據(jù)類型,可以選擇空值如何保存。
除了定義自己的數(shù)據(jù)表以外,也可以添加外部數(shù)據(jù)源:
可以從數(shù)據(jù)庫(kù)、SharePoint和WCF RIA Service中添加,奇怪的是數(shù)據(jù)庫(kù)的選擇可以通過other看到CE 3.5,不過我沒有嘗試,我只嘗試了從SQL Server中導(dǎo)入一個(gè)表的操作:
這個(gè)過程也可以看作是實(shí)體框架中映射一個(gè)表的操作(背后實(shí)際上就是在用EF進(jìn)行映射),Required是不能修改的,數(shù)據(jù)驗(yàn)證時(shí)候也不能修改,其他如字段名稱,顯示名稱都可以修改,這樣的要求估計(jì)也是EF的映射所要求的。
可以說,在LightSwitch中Table是一切的核心,也是一切的啟動(dòng),可以從工具條的操作按鈕看出來。這也昭示著LightSwitch是針對(duì)以數(shù)據(jù)為中心(數(shù)據(jù)驅(qū)動(dòng))的LoB應(yīng)用的。
接著,我們?cè)賮硖砑觾蓚(gè)表Dinner和RSVP,如下圖:
這個(gè)時(shí)候,Peoples也變成了如下的圖:
下面,我們來看看Solution Explorer:
整個(gè)解決方案的顯示完全屏蔽了傳統(tǒng)的那種列出代碼的方式(雖然這個(gè)解決方案中實(shí)際上包含了6個(gè)項(xiàng)目,和n多代碼文件),而是只顯示三個(gè)主要的節(jié)點(diǎn):屬性,數(shù)據(jù)源,操作界面。在數(shù)據(jù)源中,直接創(chuàng)建的數(shù)據(jù)表,歸到了ApplicationData目錄下,每個(gè)數(shù)據(jù)表一個(gè)節(jié)點(diǎn),不過無法同時(shí)打開多個(gè)數(shù)據(jù)表編輯(可能是基于工作的目標(biāo)更集中,或更方便自動(dòng)生成代碼的考慮)。而引入的外部數(shù)據(jù)源是另外單列的。
順帶說一下,導(dǎo)入外部數(shù)據(jù)源的時(shí)候,如果選擇WCF RIA Services,暫時(shí)只能選擇到AuthenticationService和SecurityDataService,單點(diǎn)“Add Reference”的時(shí)候,你就會(huì)看到其他的項(xiàng)目名稱了,如:
如果額外添加一個(gè)Service進(jìn)去,暫時(shí)還未找到添加的地方。而且,在打開和關(guān)閉Add Reference窗口的時(shí)候都特別慢,估計(jì)是一個(gè)Issue。
準(zhǔn)備好了數(shù)據(jù)源,那么就要添加操作界面了,添加也是非常簡(jiǎn)單,打開某個(gè)數(shù)據(jù)表,在工具條上點(diǎn)“Screen”按鈕,如:
在添加了CreateNew、Search和Details的操作界面后,我們就可以來按F5運(yùn)行我們的程序的,除了Age計(jì)算字段外的一句話,就沒有再寫代碼了,運(yùn)行效果如下:
注意,主界面的右上角有一個(gè)“Customize Screen”的按鈕,可以讓End-User自定義自己的操作界面,這個(gè)比那種自定義一下數(shù)據(jù)網(wǎng)格的顯示列什么的強(qiáng)大太多,這都受益于XAML的強(qiáng)大,估計(jì)背后的技術(shù)是Blend SketchFlow類似的東西。更多的操作界面的體驗(yàn),我會(huì)在后續(xù)的博客中和大家分享。
另外,還有一個(gè)寶庫(kù)必須體驗(yàn)一下,就是整個(gè)應(yīng)用程序的項(xiàng)目屬性設(shè)置,在Solution Explorer上右鍵點(diǎn)“Application1”,選擇“Properties”,就可以看到下圖的屬性設(shè)置界面:
在這里,提供了幾個(gè)決定應(yīng)用程序運(yùn)行模式的選項(xiàng),在General中Shell、Theme的選擇讓你的應(yīng)用程序可以與眾不同,另外不知道Culture的設(shè)置會(huì)不會(huì)影響界面的文字的顯示,多語言的實(shí)現(xiàn)是不是在這里?
Extension,可以添加、選擇不同的擴(kuò)展包,實(shí)際上給開發(fā)人員提供擴(kuò)展LightSwitch默認(rèn)構(gòu)建的地方,你可以把自己開發(fā)LoB的一些構(gòu)建設(shè)想編寫為L(zhǎng)ightSwitch擴(kuò)展,讓大家來使用。(此處純屬猜想)
Screen Navigation,可以讓大家修改主界面的導(dǎo)航菜單,沒有什么特殊的。
Access Control,可以設(shè)置內(nèi)置訪問控制的特性,默認(rèn)提供Form Authentication和Windows Authentication。
Application Type,可以選擇應(yīng)用程序的具體運(yùn)行情況,具體有:
大家注意,第一個(gè)選項(xiàng)是Desktop Client,且是只有2層,Silverlight的Client和SQL Server的Data,那么就是說LightSwitch為Silverlight提供了直接(或通過某種包裝器)訪問數(shù)據(jù)庫(kù)的能力(中間應(yīng)該還是EF)。
關(guān)于項(xiàng)目屬性設(shè)置的體驗(yàn),我后續(xù)會(huì)詳細(xì)分享。