Visual Studio LightSwitch已经可以通过MSDN订阅下载了,相关介绍可以见:http://www.microsoft.com/visualstudio/en-us/lightswitch。
于是我马上下载下来体验了一把:
安装过程很简单,挂载ISO,运行setup.exe,提示需要1G多的空间,其实如果你安装了VS和Silverlight 4 SDK的话,要不了这么多的空间,500多M的安装包也是因为包含VS Shell的原因吧,我没有在干净的系统中安装,具体情况如何不太清楚。以后微软应该出一个针对已有VS环境的精简安装包。安装完成的界面截图如下:
安装完成后,打开VS,新建项目的时候,就可以看到多出了一种项目类型了,语言可以选择VB.NET和C#,如下图:
那么,就创建一个项目,初始界面,大家可能都熟知了:
一开始就然大家创建数据表(table),注意此数据表并非是真正的数据库中的表哦,可以说是一种抽象的数据表,或者是实体框架中的实体。我创建了一个名为的People的数据表:
从上图,可以看到,Id字段是默认就有的,无法修改名称,但可以添加描述,并选择是否要显示在操作界面(Screen)上。这里有个问题,连Id的数据类型都不能修改,只能是Int32,而很多时候我更习惯使用Guid。希望正式版中可以给Id字段选择不同的数据类型(至少可以支持GUID)。
可以添加数据类型的为EmailAddress的字段,对于这点显得非常方便,不过如果能自己扩展数据类型就好了,类似SharePoint那样。
Age字段是一个计算字段,通过属性窗口中提供的“Edit Method”按钮可以打开代码编辑界面,输入如下代码:
{
// Set result to the desired field value
if (this.Birthday.HasValue)
result=DateTime.Now.Year - this.Birthday.Value.Year;
}
代码的自动生成做的很好,如果改变Age的数据类型,可以同步就修改result的类型。分别查看Name,Age和Email字段的属性,可以看到:
字符串(或基于字符串)的数据类型,可以被搜索(不太理解Date就不能搜索,还是只能过滤?);每个字段都可以转换为计算字段;对于字符串字段,可以提供一个列表选择;数据验证,根据不同的数据类型,提供了不同的验证选项,也可以设置自定义验证模式;对于可空的字符串数据类型,可以选择空值如何保存。
除了定义自己的数据表以外,也可以添加外部数据源:
可以从数据库、SharePoint和WCF RIA Service中添加,奇怪的是数据库的选择可以通过other看到CE 3.5,不过我没有尝试,我只尝试了从SQL Server中导入一个表的操作:
这个过程也可以看作是实体框架中映射一个表的操作(背后实际上就是在用EF进行映射),Required是不能修改的,数据验证时候也不能修改,其他如字段名称,显示名称都可以修改,这样的要求估计也是EF的映射所要求的。
可以说,在LightSwitch中Table是一切的核心,也是一切的启动,可以从工具条的操作按钮看出来。这也昭示着LightSwitch是针对以数据为中心(数据驱动)的LoB应用的。
接着,我们再来添加两个表Dinner和RSVP,如下图:
这个时候,Peoples也变成了如下的图:
下面,我们来看看Solution Explorer:
整个解决方案的显示完全屏蔽了传统的那种列出代码的方式(虽然这个解决方案中实际上包含了6个项目,和n多代码文件),而是只显示三个主要的节点:属性,数据源,操作界面。在数据源中,直接创建的数据表,归到了ApplicationData目录下,每个数据表一个节点,不过无法同时打开多个数据表编辑(可能是基于工作的目标更集中,或更方便自动生成代码的考虑)。而引入的外部数据源是另外单列的。
顺带说一下,导入外部数据源的时候,如果选择WCF RIA Services,暂时只能选择到AuthenticationService和SecurityDataService,单点“Add Reference”的时候,你就会看到其他的项目名称了,如:
如果额外添加一个Service进去,暂时还未找到添加的地方。而且,在打开和关闭Add Reference窗口的时候都特别慢,估计是一个Issue。
准备好了数据源,那么就要添加操作界面了,添加也是非常简单,打开某个数据表,在工具条上点“Screen”按钮,如:
在添加了CreateNew、Search和Details的操作界面后,我们就可以来按F5运行我们的程序的,除了Age计算字段外的一句话,就没有再写代码了,运行效果如下:
注意,主界面的右上角有一个“Customize Screen”的按钮,可以让End-User自定义自己的操作界面,这个比那种自定义一下数据网格的显示列什么的强大太多,这都受益于XAML的强大,估计背后的技术是Blend SketchFlow类似的东西。更多的操作界面的体验,我会在后续的博客中和大家分享。
另外,还有一个宝库必须体验一下,就是整个应用程序的项目属性设置,在Solution Explorer上右键点“Application1”,选择“Properties”,就可以看到下图的属性设置界面:
在这里,提供了几个决定应用程序运行模式的选项,在General中Shell、Theme的选择让你的应用程序可以与众不同,另外不知道Culture的设置会不会影响界面的文字的显示,多语言的实现是不是在这里?
Extension,可以添加、选择不同的扩展包,实际上给开发人员提供扩展LightSwitch默认构建的地方,你可以把自己开发LoB的一些构建设想编写为LightSwitch扩展,让大家来使用。(此处纯属猜想)
Screen Navigation,可以让大家修改主界面的导航菜单,没有什么特殊的。
Access Control,可以设置内置访问控制的特性,默认提供Form Authentication和Windows Authentication。
Application Type,可以选择应用程序的具体运行情况,具体有:
大家注意,第一个选项是Desktop Client,且是只有2层,Silverlight的Client和SQL Server的Data,那么就是说LightSwitch为Silverlight提供了直接(或通过某种包装器)访问数据库的能力(中间应该还是EF)。
关于项目属性设置的体验,我后续会详细分享。
还值得注意的是,LightSwitch实际上也体现了我早在去年的这个构想:使用Silverlight 3作为桌面应用程序开发平台(1——构想)
最后来说说LightSwitch的定位问题:
在InfoQ上有一篇文章:LightSwitch——微软将要推出的专业开发工具,定位问题受到质疑,其中的提到的疑问,确实是现实存在,尤其和Access的功能类同。
不过我认为,LightSwitch相对于Access可以说一种完成不同的东西,运行环境不同,开发环境不同,开发语言不同,部署模型不同(尤其LightSwitch在浏览器模式下的footprint会很小),我相信开发效率与互操作能力也不可同日而语。
另外对于LightSwitch是否是给专业开发人员使用的问题,我觉得专业开发人员也需要这样的工具,有人提到可以开发原型系统或构想验证POC,不过以我自己的实践来说,我未来完成会用于开发正式项目和产品的。因为,我们主要开发专业数据分析产品的,但是偶尔也要给合作伙伴开发一些小的MIS或LoB这种数据为中心的应用,而这个时候,有了LightSwitch,我就不用自己去构建一套LoB的开发框架了,LightSwitch已经为我们大家好了很多基础的东西,我们需要考虑的就只有数据模型和操作界面的问题了。由于LightSwitch很容易上手,我也可以把这样的任务分给一些具有一定基础的实习学生来完成。又如,我之前在一家开发LoB的小企业,实现了一套3层架构的开发框架,提供了基础的数据访问模式,权限管理功能,并制定了一套准则方便大家遵循同样的构架来开发各个功能模块,而现在可以说,LightSwitch把这样的开发框架内化为一个IDE提供给大家,且可以让大家进行定制和扩展。