研究Duwamish,运用Duwamish,按照其架构,本人尝试开发一家以农资信息为主,外加网上购物的小型商业站点(请大家按照Duwamish四层架构的思想给与建议与意见)
设计SystemFramework以及Common命名空间的类型
Duwamish的SystemFramework的作用是:
记录日志以及直接读取Web.config.这里,我们只是设计Common命名空间,舍弃SystemFramwork
(1)New3ney.Common.New3neyConfiguration
namespace Common
{
using System;
using System.Configuration;
using System.Collections;
using System.Xml;
using System.Collections.Specialized;
public class New3neyConfiguration:IConfigurationSectionHandler
{
private static String DbPath;
private const string DBPATH="DbPath";
private const string DBPATH_DEFAULT="data/data.mdb";
public Object Create(Object parent,Object configContext,XmlNode section)
{
NameValueCollection settings;
try
{
NameValueSectionHandler baseHandler = new NameValueSectionHandler();
settings = (NameValueCollection)baseHandler.Create(parent, configContext, section);
}
catch
{
settings = null;
}
if(settings==null)
{
DbPath=DBPATH_DEFAULT;
}
else
{
DbPath=ReadSetting(settings,DBPATH,DBPATH_DEFAULT);
}
return settings;
}
//获得DataPath
public static string DataPath
{
get{return DbPath;}
}
//这个方法在Duwamish里面被放置在SystemFramwork里面
public static String ReadSetting(NameValueCollection settings, String key, String defaultValue)
{
try
{
Object setting = settings[key];
return (setting == null) ? defaultValue : (String)setting;
}
catch
{
return defaultValue;
}
}
}
}
其具体作用:
读取Web.Config里面的设置,如果没有设置就返回默认设置,这一点正是我们创建自己的配置节类型的原因.
(2)从Duwamish里面的Common.Data定义的类型继承于DataSet,而且加上了[SerializableAttribute] 可以看出其主要为利用Remoting技术部署提供可以序列化为Binary或者SOPA的数据类型.另外,也为程序更少的依赖数据库而更好地控制数据提供了方便.
这里,我们由于架构没有用到DotNetRemoting技术,没有设计这个类型.
接下来就是独立实现DataAccess层了,对数据进行一系列的操作返回类型基本上用DataSet,Bool,String.