在Visual Studio 2010中使用DSL Tool特定领域开发 开篇
本来是很想写关于VS的DSL的文章的,有点小忙,就一直在拖延,忽然有看见了“《在Visual Studio 2012中使用VMSDK开发特定领域语言》”,又有写的欲望了,这段时间没事,而且处于寂寞无聊的状态,就准备写一个关于自己应用DSL(Domain-Specific Languages)经验的小系列,不讲详细的系统的技术,只讲具体应用中用到的。而且作为编程的新手,就分享一下仅有的一点点经验,不知道能不能坚持下来。
我用过的是VS2010,那这篇文章就针对VS2010的DSL来写,我参考过的文献资料有:
1.Visualization and Modeling SDK - Domain-Specific Languages——微软的MSDN里面的,重要;
2.LearnVSXNow------如何开发VSX系列——明年我18的,重要,在MSDN里面英文不理解的,可以参考这个;
3.T4 Code Generation——代码生成用到的,还有代码生成器;
具体的技术细节基本在上面的这些文档里面可以找得到,就不再这里翻译或者是讲述了。做特定领域开发,用的比较多的有Java的MetaEdit+,现在在微软发布的VMSDK上用DSL Tool的也逐渐多了起来。在VS2010里面做这个开发需要VS2010 SDK,需要建模的VMSDK,这些都可以到微软官网去下载,可能还需要MPF的源文件,这个需要到MSDN里面看说明,下载以及配置方法。
在VS2010中开发建模,用到实际应用中,而不仅仅是停留在微软的说明文档的层级上,首先需要确定一下问题:
一、开发的工具是Integrated Model还是Isolated Model?
根据应用场景,还有软件需求,所开发的工具是作为插件放在VS210之中,还是用VS2010的shell做一个独立的软件,这两个工作量有很大的不同,也和是否要生成代码,以及生成什么语言的代码有关系。一般是希望做为一个独立的软件也就是Isolated Mode模式开发的,目前,据我自己经过一个月的考证,如果进行这样的开发,比较明晰的是如果生成的代码是.Net工程的用哪一种模式,都可以,如果生成C++的工程的,只能用插件模式,也就是Integrated Model。当然,如果不想生成代码,或者说是只用建模的,这个关系到不大。这个会单独写一篇位置来说。
二、VS2010的DSL开发的技术应用实践
这个也会作为一个一篇来具体的写,具体会设计到VS DSL或者说是VMSDK中定义的属性定义要注意的事项,属性定义类型的具体实现,这个好像涉及的比较细,但是比较少,这个也是我在开发的时候碰到的比较刺手的问题,主要还是概念的理解。
三、生成C++代码
这里只讲T4模板的,现在网络上的文档多事生成.Net源代码的文章,这里要说一个比较简单的生成C++代码的方法,包括多个代码文件生成等具体的应用的实践。
做VMSDK开发到真正的应用不仅涉及了对DSL的定义,而且也涉及了VSIX的知识,还是比较琐碎的,特别是对有些概念的理解。
今天终于搭一个框架,很早以前就想写,但是不知道怎么写出来,这三点应该是我很想写的了,等有空了,会把这三条详细的说一下的。
祝大家七夕快乐!
在Visual Studio 2010中使用DSL Tool特定领域开发 开篇的更多相关文章
- Visual Studio 2010 中的 Web 开发
概述 Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供非常多新的功能.这些新功能旨在帮助开发者高速方便地创建和部署质量高且功能全的 Web 应用 ...
- Visual Studio 2010中创建ASP.Net Web Service
转自:http://blog.csdn.net/xinyaping/article/details/7331375 很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net ...
- SharePoint 2010中使用Visual Studio 2010进行方便快速的Web Part开发
转:http://www.cnblogs.com/fatwhale/archive/2010/02/24/1672633.html 在Visual Studio 2010中, 已经集成了用于Shar ...
- 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序
原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim ...
- (转)在 Visual Studio 2010 中创建 ASP.Net Web Service
很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net Web Service”这种project了,下面跟帖者云云,有的说这是因为微软已经将Web Service整合进W ...
- 在 Visual Studio 2010 中创建 SharePoint 2010 事件接收器
Microsoft Visual Studio 2010 提供了一个可用于生成事件接收器的项目类型,事件接收器会在 Microsoft SharePoint 2010 网站上选择事件之前或之后执行操作 ...
- Visual Studio 2010中的js注释
Visual Studio 2010中的js注释已经很强大了,但怎么才能和调用c#的方法一样容易呢?怎样才能让每个参数都有注释说明呢?底下就是想要的答案. 先上图,如图所示: 其中红色的办法为注释效果 ...
- 在 Visual Studio 2010 中创建 ASP.Net Web Service
第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含 ...
- [转]Visual Studio 2010 中安装Qt 5.1
截至目前(2013年7月12日)为止,Qt 的最高版本为Qt5.1,在该版本中已经将Qt Creator与Qt Lib集成在一个文件夹中,因此安装的时候较为方便,只需安装一个即可.因为Qt具有超强的可 ...
随机推荐
- spark向量
转自 1.本地向量MLlib的本地向量主要分为两种,DenseVector和SparseVector,顾名思义,前者是用来保存稠密向量,后者是用来保存稀疏向量,其创建方式主要有一下三种(三种方式均创建 ...
- @properties指针说明
在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了,在此我也不介绍,网上有很多相关文章. 现在我们看看iOS5中新的关键字strong, weak, ...
- html input type="button" 页面跳转
<div class="message_text"> <p>你的申请已提交,请耐心等候哦!~</p><br /> <input ...
- Android中Google地图路径导航,使用mapfragment地图上画出线路(google map api v2)详解
在这篇里我们只聊怎么在android中google map api v2地图上画出路径导航,用mapfragment而不是mapview,至于怎么去申请key,manifest.xml中加入的权限,系 ...
- 【BZOJ3524】 [Poi2014]Couriers
Description 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. ...
- Understanding Responsive Web Design: Cross-browser Compatibility
http://www.sitepoint.com/understanding-responsive-web-design-cross-browser-compatibility/ In the las ...
- Linux必学的60个命令
inux必学的60个命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想 ...
- Extjs4 treePanel异步加载菜单(后台从数据库读取)
运行环境:springMVC+mybatis 一.建表 说明:0表示此节点为非叶子节点,即此节点还包括了子节点:1表示此节点为叶子节点,即此节点没有子节点.:关于图标iconCls是从Extjs的文件 ...
- ExtJS4.2学习(四)Grid表格中文排序问题(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/173.html --------------- ...
- JavaScript中创建字典对象(dictionary)实例
这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...