zoukankan      html  css  js  c++  java
  • 三层架构的一点小小的认识(很小很小)

    其实做三层架构软件也就3个月吧,通过项目实现,对于三层也有了一定认识,只是有一个问题总是困扰着我。

    在项目中,我主要负责web层和bll层的开发。虽然是分了层,对于dal,主要是对数据文件(xml,数据库等)的操作,这层问题不大,主要总是对web层和bll层的代码,总是掌握不好某一段代码究竟写在哪里好。

    以前总认为有些代码写在哪里好像都模棱两可的,就比如:

    要一个人在文本框输入年龄,显然提交时要验证年龄是不是大于18周岁,那么这个验证放哪层好呢?

    首先这个年龄要大于18岁,显然算是业务上的要求,因此这个验证放入bll可以把。

    但是,对于一个用户层的文本框,要验证输入是否有效,这个验证放web层似乎也可以。(当然js也能判断,这里忽略)

    放在web层我会写:

    //其他验证如:是否为数值、为整数等略

    if(isvalidate(textbox1.text))

    {

    }

    在当前页面的类中,写个验证函数:

    public bool isvalidate(string age)

    {

    if(xxxxxx)/验证是否大于18岁的代码

    {

    return true;

    }

    else

    return false;

    }

    如果写在bll中,就会把isvalidate放入bll的对应业务类中,来调用。

    一般我是会用第一种,觉得方便,要不调来调去的,不太习惯。

    后来才觉得将isvalidate放入bll更为合适。

    考虑如下:

    分层就是为了减少各层之间的耦合度,是否应该放在bll还是web,只需要考虑一种假设:

    现在我的web层控件变了,比如从textbox换成dropdownlist,甚至从b/s变为c/s了,那么我这个isvalidate还能不能用?是否需要重写?像上面把isvalidate写在了一个web层页面的后台代码中,显然不太合适。

    总结来说就是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层。

    这里多谢yoyiorlee的《.NET 三层架构》给我的启示。

  • 相关阅读:
    LeetCode "Median of Two Sorted Arrays"
    LeetCode "Distinct Subsequences"
    LeetCode "Permutation Sequence"

    LeetCode "Linked List Cycle II"
    LeetCode "Best Time to Buy and Sell Stock III"
    LeetCode "4Sum"
    LeetCode "3Sum closest"
    LeetCode "3Sum"
    LeetCode "Container With Most Water"
  • 原文地址:https://www.cnblogs.com/lerit/p/1663957.html
Copyright © 2011-2022 走看看