2

最近,我们的教授说我们的表示层应该主要由方法调用组成,并且我们的大部分代码应该在业务对象和数据访问层中完成。我的问题是这通常包括用户输入的代码吗?我的意思是这个;我有一个由多个文本框组成的表单,以便用户可以输入不同内容的值。然后,用户单击一个按钮,信息将保存在数据库中。

按钮偶数方法如下所示:

//event handler for data input
public static void btnEnterAbRipperXInfo_Click(object sender, EventArgs e)
{
    //convert text box data into int datatype and assign to variable
    inAndouts = int.Parse(txtInAndOuts.Text);
    forwardBicycles = int.Parse(txtForwardBicycles.Text);
    reverseBicycles = int.Parse(txtReverseBicycles.Text);
    crunchyFrog = int.Parse(txtCrunchyFrog.Text);
    crossLegWideLegSitups = int.Parse(txtCrossLegWideLegSitups.Text);
    fiferScissors = int.Parse(txtFiferScissors.Text);
    hipRockNRaise = int.Parse(txtHipRockNRaise.Text);
    pulseUpsHeelsToHeaven = int.Parse(txtPulseUpsHeelsToHeaven.Text);
    vUpRollUpCombos = int.Parse(txtVUpRollUpCombos.Text);
    obliqueVUps = int.Parse(txtObliqueVUps.Text);
    legClimbs = int.Parse(txtLegClimbs.Text);
    masonTwists = int.Parse(txtMasonTwists.Text);            
} 

上述按钮事件方法中的代码是否应该真正进入业务对象或数据访问类而不是表示层类?

这不是家庭作业。在我的编程课之外,我正在为我的儿子创建一个 90 天的锻炼计划。我也可以将它用作毕业时的投资组合,因此,我想确保我遵循标准做法。

4

4 回答 4

1

您的代码从 UI 读取值。

此代码只能在 UI 层,因为业务层无法访问 UI。

于 2012-04-16T17:13:42.120 回答
1

通常在 UI 层或表示层中,您可以从控件中获取值(就像您现在所做的那样)。然后使用所有这些值调用您的业务逻辑方法。就像是

BAL.ProcessRequest(arg1,arg2,.....);

现在,如果您有一些与这些输入相关的业务规则,那么您可以在业务逻辑中执行。例如,如果您传递产品及其订购数量,并且您想根据某些业务规则计算这些产品的折扣,那么您在业务层中执行折扣计算。
之后,当您即将提交到数据库时,您将调用数据访问层。就像是:

DAL.SaveData(arg1,arg2,...);

拥有单独层的原因基本上是为了松散地耦合应用程序。例如,如果您决定更改底层数据库,那么您将只需要更改数据访问层,而不是业务层或表示层。
假设您想将 UI/Presentation 层从 Web 应用程序更改为桌面应用程序,那么如果更改只会在 Presentation 层中进行。业务层和数据访问层将保持不变。如果您正在考虑将文本框控件传递给业务层,那么您的应用程序将被耦合(UI/Presentatioin 层将与业务层耦合)。
这是一篇解释三层架构的文章。

于 2012-04-16T17:22:54.053 回答
0

BOL 负责在进入 DAL(数据访问层)之前需要清理的特定业务检查/案例。DAL 只是从 BOL 中获取输入并将它们传递给数据库。

如果您的文本框值不需要任何类型的业务逻辑,您可以将它们传递给 BOL 以自由地将它们传递给 DAL。

从您的代码的外观看,不需要检查/验证。尽管它可能看起来多余,但为了与您的项目保持一致,您仍然可以将它们传递给 BOL。本质上,您的 BOL 不会对这些值采取行动 - 它只会采用这些值并将其传递给 DAL。

于 2012-04-16T17:10:34.597 回答
0

不,这不适用于域或数据层对象。因为您直接与表示元素交互,所以这对于 UI 层来说很好。

现在,一旦您将这些值提取并解析为适当的类型,那么将这些工作从 UI 层转移是一个好主意。

此外,您应该考虑使用int.TryParse来转换您的值,因为如果您在一个文本框中输入一个非数字值,您的表单将引发异常。

于 2012-04-16T17:12:25.550 回答