3层架构

来源:互联网 发布:华瑞it教育java学费 编辑:程序博客网 时间:2024/05/17 06:12

3层架构:界面层、业务逻辑层、数据访问层


        C#里分层是通过添加不同的项目来实现的,我们现在的项目叫做界面层,再加一个项目是业务逻辑层,再加一个数据访问层。现在我添加了一个dbhelper的类库项目,这是一种新的项目。
        我们以前说过,有winform,控制台之类的这些都是可直接运行的程序,但现在的类库项目不能直接运行,只能被可运行的项目引用来使用,因为dbhelps是一个项目,所以要从项目中引用,如果引用别人的编译好的项目(一个dll文件)的话就需要从磁盘上找这个dll文件了。现在我们在做一个新的项目,负责处理业务逻辑。

      界面上只负责如何显示和接受数据,具体的业务逻辑都交给业务层去处理。
      现在新建了一个项目,我们先把登陆模块的逻辑移到这个项目中,登陆模块的内容从逻辑上讲应该是user这个对象来负责的,所以我们做一个user类。该类负责检查当前登陆用户是否有权限,现在把在界面中的判断登陆的逻辑拿到这里来,这样我们就把是否有权限登陆的业务逻辑的代码移到业务层了。

      在user对象中不应该有界面元素的,比如文本框,这样做是不对的,业务逻辑里不能有界面的东西,界面只能在UI层里。你这样写的问题是因为你把校验放到了user对象中了,像现在的这样的校验应该放到UI中去做,这个校验不像那种年龄那种的,属于对象的行为,对像不能为空,数据类型不对,两次输入不同等都应该是界面的行为,想想对象的职责就比较容易分清楚了,user只要保证它自己的状态是正确的就可以了。反正你先记住要职责分明吧,不要把别人做的,让其他的对象去做。

 -------------------------------------------------
xml:
全称是叫可扩展的标志语言

他的内部都是自描述的,看到这个内容就能明白这个配置项是做什么用的

第一行是版本号,文件编码

configuration表示配置项的意思 是该文件的根节点
下面的appsettings是他的子节点

add又是appsettiing的子节点

就是这样一个层次结构

 

    /// <summary>
    /// 操作数据库的帮助类,该类包含了执行数据库的静态方法
    /// </summary>
    public class SqlHelper
    {
        public static string sqlConString = "";

        static SqlHelper()
        {
            //使用下面的类来读取 app.config中的配置项,这个配置项必须放在 AppSettings中
            sqlConString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionStr"];
        }
        /// <summary>
        /// 执行一个Sql返回一个DataSet
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static DataSet GetDataSet(string sql)
        {
        }

        /// <summary>
        /// 执行一个Sql,返回一datareader,注意,使用这个reader自己要关闭一下。
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static SqlDataReader GetDataReader(string sql)
        {
                 //使用这个参数,你在外面关闭reader时,会自动关闭连接
                reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
         }

        /// <summary>
        /// 这个方法执行一个语句,返回一个值
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql)
        {           
        }


        /// <summary>
        /// 执行不返回数据的sql,如 insert ,delete ,update 这样的语句
        /// </summary>
        /// <param name="?"></param>
        public static void ExecuteNonQuery(string sql)
        {
        }
    }

 

原创粉丝点击