设为首页收藏本站language 语言切换
查看: 1270|回复: 0
收起左侧

利用.Net框架开发应用系统

[复制链接]
发表于 2010-2-25 10:26:11 | 显示全部楼层 |阅读模式
<p >在《开发.Net平台应用系统框架》(下面简称《一》文)中,我介绍我们开发的一个.Net下应用软件系统的框架,在本文,我将介绍我们是怎么在这个框架下开发系统的。前文附带了一个logistics示例工程,这是我们从开发的物流管理系统中精简出来的一个例子,为了便于说明,现在就按照这个简化的工程来具体谈谈各个部分的设计策略和框架的使用,从中也可以管窥整个系统的设计模式。<p >这个工程主要功能是入库单的入库,以及相应的产品资料维护的辅助功能。因为工程的功能比较一目了然,而本文的主要目的是说明软件的设计策略,因此,对于涉及到需求的Use Case等内容就不会加以论述了。<p ><center><font color="#000099"><strong>静态建模部分(数据实体层的设计)</strong></font></center><p >在这个案例中,主要涉及到产品和入库单两个对象,当然,还有一些辅助对象,如入库单的明细等。整个部分的静态模型可以用类图表示如下:<p ><center><img  src="http://www.hh010.com/upload_files/article/244/9_tct7om38855.jpg"></center><p >相应的,数据库的设计如下:<p ><center><img  src="http://www.hh010.com/upload_files/article/244/9_nbk2py38856.jpg"></center><p ><b>对象的粒度</b><p >现在,我们要做详细的实体类的设计了,也就是将数据库映射到程序的实体类中。<p >在考虑实体对象的设计时,“对象的粒度”是一个需要仔细考虑的问题,实体对象按照对象的粒度,通常可以分成所谓的“粗粒度对象”和“细粒度对象”。在J2EE中使用EntityBean为实体类作设计时,我们总是尽量将实体对象建模成粗粒度的对象,因为EntityBean是非常耗费资源的,系统中如果存在大量的细粒度对象,会在很影响系统的性能。而在J2EE中,粗粒度对象的设计也是一个需要一定技巧的工作。<p >在我们设计的框架中,由于在O-R Map部分充分利用了DataSet的强大功能,使得不论是粗粒度对象,还是细粒度对象,我们都采用了相同的处理方式,在对象粒度的设计方面能够得到一定的简化,对象粒度的粗细也不会对系统性能造成太大的影响。<p >在这几具体案例中,很明显,对于ProductType和Product的结构比较简单,在对他进行操作时,我们通常只涉及到一张表。虽然,对于Product来说,在对其进行查询的时候,需要知道产品类型的时候,会涉及到ProductType表,但是,在大部分的增加、修改、删除的操作中,我们都只对Product表进行操作,因此,我们把这两个对象都设计成细粒度对象。Product类的XML描述文件如下(删去了Sql语句部分):<p ><ccid_nobr><table width="550" border="1" cellspacing="0" cellpadding="2" bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>roduct.xml&lt;?xml version=&quot;1.0&quot; encoding=&quot;gb2312&quot; ?&gt;&lt;Entity&gt;    &lt;EntityTypeName&gtroduct&lt;/EntityTypeName&gt;    &lt;TableName&gtroduct&lt;/TableName&gt;    &lt;Columns&gt;        &lt;Column Name=&quotroductID&quot; DataType=&quot;System.String&quot; IsKey=&quot;true&quot;&gt;&lt;/Column&gt;        &lt;Column Name=&quotroductName&quot; DataType=&quot;System.String&quot; IsKey=&quot;false&quot;&gt;&lt;/Column&gt;        &lt;Column Name=&quotroductTypeID&quot; DataType=&quot;System.String&quot; IsKey=&quot;false&quot;&gt;&lt;/Column&gt;        &lt;Column Name=&quot;CurrentCount&quot; DataType=&quot;System.Decimal&quot; IsKey=&quot;false&quot;&gt;&lt;/Column&gt;        &lt;Column Name=&quot;UnitName&quot; DataType=&quot;System.String&quot; IsKey=&quot;false&quot;&gt;&lt;/Column&gt;    &lt;/Columns&gt;    &lt;RefTable Type=&quotarent&quot;&gt;        &lt;TableName&gtroductType&lt;/TableName&gt;        &lt;ForeignKey&gtroductTypeID&lt;/ForeignKey&gt;        &ltrimaryKey&gtroductTypeID&lt;/PrimaryKey&gt;        &lt;Columns&gt;          &lt;Column Name=&quotroductTypeID&quot; DataType=&quot;System.String&quot; IsKey=&quot;true&quot;&gt;&lt;/Column&gt;            &lt;Column Name=&quotroductTypeName&quot; DataType=&quot;System.String&quot; IsKey=&quot;false&quot;&gt;&lt;/Column&gt;        &lt;/Columns&gt;    &lt;/RefTable&gt;&lt;/Entity&gt;</ccid_code></pre></td></tr></table></ccid_nobr><p align="center"><font color="FF0000" >1</font>234<span class="content01">下一页&gt;&gt;</span></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-12 01:11 , Processed in 0.095324 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表