《WF编程》系列之7 - 工作流编写方式:对象及其关系
《WF编程》系列之7 - 工作流编写方式:对象及其关系
2.2对象及其关系
工作流最终会变成内存中的一组托管对象.这些对象之所以能够依照我们的构思来执行,是因为我们用一种关系把它们组织到了一起.不仅是工作流,看看一些Windows应用程序的代码:
button1.Location = new System.Drawing.Point(13, 13);
button1.Name = "button1";
button1.Size = new System.Drawing.Size(75, 23);
button1.Text = "Click Me!";
this.Controls.Add(this.button1);
这段代码是不是和InitializeComponent方法中的代码很像呢? InitializeComponent组织了一系列活动,而这段代码则组织UI控件:创建了一个Button并设置了一些外观属性.这段代码包含在一个继承自System.Windows.Forms.Form的类中.代码中最重要的一行是将Button添加到Form的控件集中:this.Controls.Add(this.button1).如果我们不去确定Form和Button之间的关系, 则Button永远不会在Form上显示.
大概我们不会自己动手写这样的代码,因为设计器会帮我们生成.设计器生成的代码有两个目标.首先是初始化对象并设置它们的初始值.然后确定并构造新对象之间的关系.
ASP.NET设计器为Web Form生成的代码也有两个相同的目标,但是”看”起来有一点不同:
<asp:Button runat="server" ID="button1" Text="Click Me!" />
</asp:Panel>
ASP.NET设计器使用定义性标记来替代命令性代码.这样做的原因是定义性标记具有混合.NET对象和HTML的能力,而且HTML本身就是定义性语言.再者,定义性风格可以增长生成代码的可读性.我们可以很轻松的看出Button是Panel的子对象.
Windows Presentation Foundation和Windows Worklow使用另外一种定义性标记语言:XAML.
<Button Grid.Row="0" Grid.Column="0">
Click Me!
</Button>
</Grid>
XAML也是有效的XML.上面的XAML演示了人读化(Human readable)和工具化(Tool-able)的定义性语言风格(很容易看出Button是Grid的子控件).工具化是指我们可以不借助设计器和编译器来读,写,修改并处理标记,我们可以为特定的任务编写自定义工具,也可以使用各种现有的XML技术,例如XPath, XQuery, XSLT和XML DOM等.