您的位置: 首页 > 技术文档 > 网络编程 > Visual Studio DSL 入门(一)
关于字符集和Unicode的相关知识 回到列表 Net设计模式实例之适配器模式
 Visual Studio DSL 入门(一)

作者:孤独侠客 时间: 2010-01-26 文档类型:原创 来自:似水流年

第 1 页 Visual Studio DSL 入门 [1]
第 2 页 Visual Studio DSL 入门 [2]

什么是Visual Studio DSL     

Vistual Studio DSL 工具,是微软针对特定领域开发而专门设计的.包含在Vistual Studio SDK中(vs 2010中将是单独安装),允许开发人员自行设计专属的图形化工具,它内置了模型的相关支持,以及模型与图形之间的支持,还包括对模型的验证,规则,事务的支持,同时还允许开发人员在结合VS.NET的一些扩展VSX一同使用.比如工具条,菜单等.可以将模型与T4一同使用,从而生成目标代码.Vs.Net现在的类设计器,分布式系统设计器(Distributed System Designer),LinqToSql设计器,EntityFramework设计器都是基于VS.NET DSL开发的,VS 2010新增了UML Modeling Project,终于提供了对类图,时序图,用例图等的支持,这也是基于Vs.NET DSL来实现的.

为什么要使用DSL工具

上面介绍了几种DSL工具,但是我们为什么要使用它呢?它又能给我们带来什么呢? 很关键的一点,DSL和UML不同,是用来解决问题的,而不是描述问题.如果你正在你的工作和解决方案中重复编写着相同或者相似的代码,而且这些重复的代码能够单独出来采用生成的方式,那么你就可以考虑结合DSL工具来生成这些代码. 

可能有人会说,那这和使用现有的这些基于数据库的代码生成工具(Codesmith,李天平的codematic等)又有何不同呢?DSL是站在领域专家的高度,而非软件开发专家来开始解决问题,如果需要对数据库进行设计,然后再生成代码Coding,那么你这个工具只能说是开发人员的一个辅助工具,只是面对实际开发人员,而这在大型的软件系统当中会有些力不从心.

采用DSL的开发过程定制

  1. 找出问题的固定部分,并把这些固定固定部分放在通用架构或平台中.通用的部分基本上都是我们根据长期的经验和积累抽象出来固定的.比如我们使用的Enterprise Library中已经将数据访问操作,日志操作,验证缓存等封装起来提供调用.
  2. 识别可变性和发现DSL. 找出其中变化的部分,并设计DSL, 通过DSL的表达式或模型提供给问题一个解决方案. 在使用Enterprise Library过程中,你发现其中大部分的变化的部分其实也相对"固定",他们还是基于你的模型,基于你的实体模型,服务模型,如果把这些元数据抽象出来,通过DSL来实现这些元数据的配置,那么就可以把这些部分直接生成到你的目标解决方案中.

优势 

  1. 大幅度的提高生产率. 生成代码可比人工复制粘贴快多了。
  2. 使系统的规范性更强.    每个开发人员对某一个功能的都会有不同的实现方式,采用DSL设计模型,结合代码生成能够使功能的实现相对固定.
  3. 降低了犯错的机会.
  4. 使非开发人员,那些顾问和售前,也能够直接了解模型。使开发过程提前,甚至顾问的调研需求时,就可以使用工具和客户沟通,抽象需求,从而提供给二次开发人员使用.
  5. 能够在较高的抽象层次对解决方案进行验证,过早的发现问题.
  6. 可以基于同一个模型配置不同的技术实现过程.降低技术难度和工作量。比如上次介绍的Sculpture,就可以针对不同的层次,提供不同的技术选择。针对同一个模型,我们可以选择使用Entity Framework或者NHibernate。UI层可以选择Asp.net MVC,Sliverlight,WPF等不同的实现方式.
  7. DSL不局限于生成我们的技术方案,还可以用来生成构建脚本,文档,计划等。
  8. 使解决方案进行技术转移变得相对容易,通过修改生成器或解释器就可以做到。模型元数据相对固定,使我们的解决方案相对规范。我们只需要生成不同的代码就可以了。

当然,这也是有前提的,一是开发DSL,进行抽象整合需要成本。二是并不是所有的解决方案都适合使用DSL,比如一个门户网站,可能相对固定的部门很少,可以定制的部分也很少,就不适合使用,如果对不适合使用的强制使用就会陷进定制化陷阱。在设计和开发时,一定要保留一定的灵活性,因为不可能所有的代码都能够生成,你必须提供一定的扩展性,保证能够对生成的代码进行扩展。另外就是一定要保证实现的规范,实现方式太多,会导致你的DSL过于复杂。有些时候你甚至需要舍弃一些实现,舍弃一些需求。“简单的问题的解决应该简单化,复杂问题的解决应该可能化”(smalltalk的创始人AlianKay).

系列介绍

本系列一开始将通过一个案例简单的介绍DSL的开发流程,这个案例来源于DSL Tools Lab,主要介绍DSL的一些简单开发方法,其中也包括T4与DSL结合完成代码生成,DSL工具的部署. 主要是完成一个状态机的DSL应用,具体我们会在接下来一一介绍。

对DSL的开发有过简单的了解后,我们会对完成一个实际使用的完整的开发工具的开发。在这个过程中也会包含介绍DSL设计和开发过程以及应该注意的问题,当然也会包括DSL以及VSX的一些比较深层次的应用。


点击放大

参考

Visual Studio DSL 工具特定领域开发指南   Doamin-Specific Development With Visual Studio DSL Tools

原文:http://www.cnblogs.com/lonely7345/archive/2010/01/24/1655495.html

本文链接:http://www.blueidea.com/tech/program/2010/7364.asp 

出处:似水流年
责任编辑:bluehearts

上一页 Visual Studio DSL 入门 [1] 下一页

◎进入论坛网络编程版块参加讨论

相关文章
Visual Studio调试中的断点技巧
Visual Studio 简介
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:2/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2