Duwamish7学习笔记1
2024-07-21 02:16:07
供稿:网友
duwamish7学习笔记(-)
duwamish解决方案总共有6个项目,结构上分为5层:业务外观层(businessfacade)、业务规则层(businessrules)、业务实体层(common)、数据访问层(dataaccess)、业务展示层(web).另外一项目为systemframework,顾名思意,主要是用来进行整个系统构架的一些配置、跟踪、日志等.
common项目
1.让我们来看一看duwamish7的数据结构,图1
2.对数据库中book,category,customer,order四个最主要的对象进行了业务实体封装,四个类均继承自dataset,但类加入两个属性: [system.componentmodel.designercategory("code")]、[serializableattribute],前一个属性的意思是指定当前类设计器属于某一类别。后一个属性标记当前类为可序列化类,使之可远程调用。
类中对数据库中表和表中字段进行了映射,部份类中还定义了相关的错误信息如
public const string email_field_not_unique = "email not unique";
3.在默认的构造函数中调用builddatatables()方法创建表结构并添加到dataset中。bookdata、categorydata、customerdata类中均只保存一个表,而orderdata类中保存有与订单相关的6个表信息。
dataset中的表与数据库中物理表有的是一一对映,有的是一个物理表对应dataset中多个表,而有的多个物理表对应dataset中一个表.
4.common项目中还有一个duwamishconfiguration类,用来获取web.config文件中对duwamish配置项,继承自iconfigurationsectionhandler接口。该接口定义如下协定:所有配置节处理程序必须在实现后才能参与配置设置的解析。该接口只有一个create()方法,duwamishconfiguration类中实现create()方法,通过namevaluesessionhander实例basehandler.create()方法填充namevaluecollection setting,再调用
applicationconfiguration.readsetting()方法返回指定的某个配置信息。
疑问:
1.4个业务实体类均有一个支持序列化的构造函数如bookdata类的
private bookdata(serializationinfo info, streamingcontext context) : base(info, context) {}
不是很明白,此4个类序列化没有特别的的引用对象,应该只要进行“基本序列化”即简单的在类前加serializable 属性对它进行标记即可,为什么还要定义一个支持序列化的构造函数呢?是不是因为继承dataset的原因??
2.系统什么时候,怎么样调用duwamishconfiguration类的create()方法取得web.config文件中的相关配置信息?
msdn帮助:
1.system.configuration 命名空间
ms-help://ms.msdnqtr.2003feb.2052/cpref/html/frlrfsystemconfiguration.htm