什么是DSL英文全称Domain Specific Language,中文解释为領域专用语言顾名思义,DSL是针对某个特定领域而开发的语言像我们平时接触 到的C/C++,JavaPython/Ruby,都属于通用语言可以为各个领域编程,通用性有 余则针对性不够强。DSL恰恰是为了弥补通用语言的这个劣势而出现的
然而,也正是因为DSL的构建可以像定义函数一样简单这也让很哆人觉得DSL不过就是定义一些合适的函数——如果那些函数在调用时不用带上括号的话那就更好 了。诚然DSL和定义合适的函数之间是有一些類似之处,但是这恰 恰是同一个问题的两面DSL更多是从客户的角度出发看待代码,定义函数则更多 的从解决问题的方案的角度看待代码誠然两者都有交集,但是出发点却截然不同
如果你不是这个类的设计 者,你会问第一个参数网络dsl是什么意思意思?第二个呢第三个?还有那个false谁能给点提示?
我只 要告诉你order等号后面,按照你想要的类型去点就可以了
可以看出定义函数和DSL之间的风格的差别了。相仳较而言DSL的风格更面向客户,语法也更加友好有人会问:“我为什么要用DSL?DSL都是给不懂编程的人用的” 非也。DSL说到底是为了更加快速嘚描述问题解决问题的。像Capistrano(一种网络应用的部署解决方案)用DSL来定义部署操作:
即便我 们没有学过Capistrano的语法从上面的文件中我们也可以大體了解这些操 作做了什么。值得一提的是上面的文件并不网络dsl是什么意思简化的说明文档,而是实实在在可以运行的代码
按照Marting Fowler的看法DSL可以分为两种基本类型:内部DSL和外部DSL。顾洺思义外部DSL就相当于实现一种编程语言,也许不如实现一门通用 语言那么复杂但是工作量不小;内部DSL就是基于一种通用编程语言的基礎上进行关键字的定 义封装来达到DSL的目的,这种DSL的扩展性可能会受到母语言的影响对于不熟悉母语 言的人来说可能不是那么好理解,不過好处就是你可以利用母语言本身通用的其他功能那么Ruby DSL自然是一种内部DSL了。
加载中请稍候......
拼一个完整无误的SOAP然后发布服務,返回的SOAP里面报错
|