【发布时间】:2013-12-13 20:20:35
【问题描述】:
我正试图围绕分层应用程序架构展开思考,在对该主题进行了大量阅读之后,我想出了一些尝试实现数据访问层/业务逻辑层/表示层的代码方法。代码符合我的预期,但我希望得到一些反馈,了解我是否成功实施了这个想法,或者我的思维过程是否存在任何问题。
这是我存储数据的自定义对象:
public class SalesOrderMetaData
{
private bool isValid;
public bool IsValid
{
get { return isValid; }
set { isValid = value; }
}
}
表示层:
protected void Page_Load(object sender, EventArgs e)
{
// instatiate the BLL object
SalesOrderBLL salesOrderBLL = new SalesOrderBLL();
// reuest the custom object from the BLL
SalesOrderMetaData salesOrderMetaData = salesOrderBLL.GetSalesOrderMetaData("23447");
// present a value from the custom object to the user
Label1.Text = salesOrderMetaData.IsValid.ToString();
}
业务逻辑层:
public class SalesOrderBLL
{
public SalesOrderMetaData GetSalesOrderMetaData(string csono)
{
// instantiate the DAL object
SalesOrderDAL salesOrderDAL = new SalesOrderDAL();
// request the custom object from the DAL
SalesOrderMetaData salesOrderMetaData = salesOrderDAL.GetSalesOrderMetaData(csono);
// return the custom object to the PL
return salesOrderMetaData;
}
}
数据访问层:
public class SalesOrderDAL
{
public SalesOrderMetaData GetSalesOrderMetaData(string csono)
{
// instantiate the custom object
SalesOrderMetaData salesOrderMetaData = new SalesOrderMetaData();
// retrieve the data from the data source
string sql = "IF EXISTS (SELECT * FROM sosord WHERE csono = @csono) SELECT 1 ELSE SELECT 0;";
SqlParameter param = new SqlParameter("csono", csono);
// set the custom object property based on the retrieved data
// SQLUtilities.GetScalar() is a custom method that returns a SqlCommand.ExecuteScalar() object
salesOrderMetaData.IsValid = Convert.ToBoolean(SQLUtilities.GetScalar(sql,param));
// return the custom object to the BLL
return salesOrderMetaData;
}
}
【问题讨论】:
-
这个问题似乎是题外话,因为它是关于审查代码。此类问题请参考codereview.stackexchange.com。
-
你可能是对的。我真正追求的不是代码审查,而是我的尝试是否成功实现了这个概念,这是否重要?语义?
-
代码审查正是如此。有效但需要优化的代码适用于 CodeReview。不起作用的代码适用于 StackOverflow。
-
好的,我下次从那里开始。谢谢。
标签: c# asp.net oop n-tier-architecture