在软件开发过程中,客户往往希望在签署规格说明书之前看到系统的大致模样。为了满足这一需求,最近在项目中设计了一个T4模板,该模板基于XML/XSD生成业务逻辑层(BLL)和数据访问层(DAL),并在内存中执行CRUD(Create/Retrieve/Update/Delete)操作。这个模板可以根据个人需求轻松配置。
原型的最初目的是允许软件用户通过实际尝试来评估开发者对最终产品设计的提议,而不是基于描述来解释和评估设计。在这里采用的方法非常简单。T4模板从XSD读取实体定义,并相应地生成实体,然后从XML文件填充实体集合。这个过程在下面的图表中展示。
T4模板通过两个简单的步骤生成并填充DAL实体和BLL对象。首先,T4模板需要知道实体的数据类型和属性。这可以通过提供一个XSD来实现,可以在其中定义实体属性和数据类型作为属性。如下图所示,“User”实体有七个属性。
Name
包含属性的名称,
type
是相应属性的数据类型,
use
表示是否允许为空。
其次,T4模板寻找XML数据来填充实体集合。如下图所示,每一行都指代一个用户对象,每个用户节点的属性是属性,并且必须与XSD指定的完全相同。
第三,生成模板的部分相对简单。如下图所示,T4模板在预定义的位置寻找XSD,XML数据的位置可以通过web.config配置。
模板所做的是从指定位置读取XSD,并且根据模式配置DataSet。因此,XSD中指定的每个元素,都会在同一个DataSet下配置相应的DataTable。剩下的就简单了;从App_Data读取XML并加载到相应的DataTable。BLL/DAL已经准备好了内置的基本CRUD操作。利用CRUD函数构建原型。对于这个示例和附带的演示项目,使用了对象数据源,它只需要很少的工作量就可以构建UI。
这个模板在设计时考虑了以下几点:
对于附带的演示项目,不需要配置任何内容,只需下载、解压、打开并运行解决方案。如果想要添加/编辑/删除新的实体,需要遵循一些规则。首先,在添加新实体的情况下,需要在XSD中添加新元素,然后根据新添加的元素提供单独的XML数据文件。XML文件名应该是复数形式,如"Users"/"Contacts"/"Orders",而不是"User"/"Contact"/"Order"等。对于编辑,取XSD中的一个现有元素,进行修改,并在相应的XML文件中进行相同的修改。在删除的情况下,首先从XSD中移除元素,然后从APP_Data文件夹中删除相应的XML数据文件。最后,从解决方案资源管理器中点击"Transform All Templates"。
// 用户元素的XSD
<xs:element name="User">
<xs:complexType>
<xs:attribute name="UserId" type="xs:int" use="required"/>
<xs:attribute name="UserName" type="xs:string" use="required"/>
<xs:attribute name="FirstName" type="xs:string" use="required"/>
<xs:attribute name="LastName" type="xs:string" use="required"/>
<xs:attribute name="MiddleName" type="xs:string" use="optional"/>
<xs:attribute name="Email" type="xs:string" use="required"/>
<xs:attribute name="Password" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
在提供的T4模板中,可以在以下领域进行进一步的增强:
这些计划在后续版本中包含。对于模板改进的任何建议都持开放态度。