﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-canonical-文章分类-软件开发</title><link>http://www.blogjava.net/canonical/category/4831.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:05:22 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:05:22 GMT</pubDate><ttl>60</ttl><item><title>[导入]AOP vs. DSL</title><link>http://www.blogjava.net/canonical/articles/19698.html</link><dc:creator>canonical</dc:creator><author>canonical</author><pubDate>Mon, 14 Nov 2005 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/canonical/articles/19698.html</guid><wfw:comment>http://www.blogjava.net/canonical/comments/19698.html</wfw:comment><comments>http://www.blogjava.net/canonical/articles/19698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canonical/comments/commentRss/19698.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canonical/services/trackbacks/19698.html</trackback:ping><description><![CDATA[<!--StartFragment -->&nbsp;<FONT color=#000000 size=3>&nbsp;&nbsp;&nbsp; AOP(Aspect Oriented Programming)与DSL(Domain Specific Language)其实并不是相互冲突的概念。但在AOP社区流传过一种说法，认为AOP的出现使得DSL成为不必要的技术，也反对制造基于不同领域知识的特殊的DSL方言。从某种程度上说，这种说法有一定的道理。DSL的核心观念是在比较高的抽象层次上来描述问题并处理问题。除了抽象领域概念之外， DSL最关键的就是抽象出问题领域中的结构，并对他们进行有效的描述和控制。但是DSL本身并没有提供什么一致的方法来规范这种抽象的结果，因而最终对于同一问题我们可能得到很多种DSL解决方案。另外发明一种语言往往意味着连带提出一整套环境假设和规则约定，一般很难针对特殊情况进行局部修正，一旦初始设计出现问题，往往很难修正。结果，设计DSL目前还只能是少数人的专利。<BR>&nbsp;&nbsp;&nbsp; 与DSL相比，AOP是个相对简单的概念。抽象的说，它实现系统的一种行为切片(behavior slice)，可以看作是修饰语与动作之间的正交分解。而从基本的结构含义上说，AOP的目标没有DSL那么大，它解决的是程序中最简单的一个结构问题：定位到一段语句，在其前方和后方分别插入一段代码，并对其进行维护。AOP是对OOP(Object Oriented)最直接的也是最重要的一种补充，虽然它比DSL的概念要简单许多，但在具体的操作方法上也要明确许多。我们程序中最常见的结构问题都可以在AOP的框架下得到解决，因而大大削弱了在这些方面对于DSL的需求。<BR>&nbsp;&nbsp;&nbsp; 但是AOP的有效性并不意味着它将取代DSL，事实上AOP关注的重点仍然是程序领域，它所解决是线性结构（程序代码）的交织问题，而DSL所关注的是结构更加复杂丰富的业务领域。随着应用的深入，DSL将大有所为。</FONT> <img src ="http://www.blogjava.net/canonical/aggbug/19698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canonical/" target="_blank">canonical</a> 2005-11-14 15:37 <a href="http://www.blogjava.net/canonical/articles/19698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>