项目总结一
项目:代理商注册系统...
采用三层架构...用vs2005+ms2005开发。
数据比较简单..建二个表,agentinformation和unauditedagentinformation,分别存放已经审核通过的用户和未审核的用户数据。
本项目中值得总结的地方有:
1. 序列化存储数据。
对于未审核的用户数据,先将数据序列化然后存入。所以unauditedagentinformation仅三个字段,一个存放序列化数据,一个存放用户名,还有一个标识用来判断用户的请求是否被驳回。
两个转化过程:
实例序列化:
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream stream = new System.IO.MemoryStream();
formatter.Serialize( stream, agentData );
反序列化为实例:System.IO.MemoryStream stream = new System.IO.MemoryStream();
formatter.Serialize( stream, agentData );
AgentData agentData;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
byte[] data = (byte[]) DbUtility.ExecuteScalar( "Select unauditedAgentData From UnauditedAgentInfomation Where userName={0}", userName );
if ( data == null ) { return null; }
agentData = (AgentData) formatter.Deserialize( new System.IO.MemoryStream( data ) );
//返回一个实例
return agentData;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
byte[] data = (byte[]) DbUtility.ExecuteScalar( "Select unauditedAgentData From UnauditedAgentInfomation Where userName={0}", userName );
if ( data == null ) { return null; }
agentData = (AgentData) formatter.Deserialize( new System.IO.MemoryStream( data ) );
//返回一个实例
return agentData;
2.数据实例化
建立一个实例..这样取数据还是写入数据都比较方便。
public static EmployeeData GetEmployeeData( int EmployeeId )
{
DataRow data = DbUtility.ExecuteSingleRow( "SELECT * FROM EmployeeInformation WHERE ID={0}", EmployeeId );
if ( data == null )
return null;
else
return ParseData( data );
}
/// <summary>
/// 解析代理商数据
/// </summary>
/// <param name="requestData">包含数据的NameValueCollection</param>
/// <returns></returns>
public static EmployeeData ParseData( NameValueCollection requestData )
{
if ( requestData == null )
return null;
EmployeeData instance = new EmployeeData();
ObjectDataParser.ParseData<NameValueCollection>( requestData, instance, ObjectDataParser.GetFieldData_Request );
return instance;
}
/// <summary>
/// 解析代理商数据
/// </summary>
/// <param name="data">包含数据的DataRow</param>
/// <returns></returns>
public static EmployeeData ParseData( DataRow data )
{
if ( data == null )
return null;
EmployeeData instance = new EmployeeData();
ObjectDataParser.ParseData<DataRow>( data, instance, ObjectDataParser.GetFieldData_DataRow );
return instance;
}
利用两种方式来解析数据。
以上这两个总结点都是我第一次接触。因此小结一下。
当然,除了上面这两点,对逻辑层和数据层的分工也有了更明确的认识。对界面的优化也获益甚多。