随笔 - 126  文章 - 0 评论 - 273 trackbacks - 5

一本厚厚的书,由于只是讲一个系统,比较详细,所以拿过来看看,不过也发现此系统的N多问题,不过我们应该取其精华,去齐糟粕嘛。

这本书主要是讲一个.NET的B/S OA系统,整体来说大部分还是运用了.NET思想,少部分有点问题,但是不影响其整体优秀的思想。其中可以学到大量的编程技巧。

这里先看到第一部分:前两章。

框架设计心得:
1.对于复杂的系统,我们可以分模块;可以分为多级模块,大模块包含小模块。在数据表的具体表现就是把所有的小模块放在一起,每个模块会有自己的一些属性。比如此系统的模块基本信息表:
字段名 描述
pkid 主键(自动增加)
tabid 一级ID
indexid 二级ID
name 模块名称
description 模块描述
url 模块页面路径

2.权限的问题也变得比较重要。首先,每个用户必须属于某个“角色”,而每个角色对于每个模块又会有相应的代码。这是一种处理权限的标准思路,也就是说,分为用户表(包含每个用户的所属角色)、角色模块权限表。这样,便可以处理复杂的权限关系。

3.这个系统分为了四个层:通用层、数据层、逻辑层、表示层(Web)。设置通用层是比较必要的,可以放置许多需要调用的函数(比如判断某项是否为空)。

4.最好能把一系列相关的信息归并成类。比如数据层或逻辑层有一个日志操作类,专门用于对日志写入和读取等等操作。这样,可以用几个方法来实现。但是,一个操作分为很多项,比如操作人ID,姓名,操作时间等等。这些信息是否也可以归并为一类呢?可以,所以我们可以在通用层中建立一个类,这个类主要是用成员属性来归并信息,这样可以加强结构化。(其实这种类本身就和结构差不多,也不需要方法等复杂操作)

5.可以充分利用存储结构中的返回参数来返回值(即param output)。调用他的方法很简单,首先和一般参数一样,定义一个参数,声明类型为output,然后执行该Command后,直接取出该Param的值即可。如:
SqlParameter parameterEmpID = new SqlParameter("@empid", SqlDbType.Int, 4);
parameterEmpID.Direction 
= ParameterDirection.Output;    //对输出参数的处理很简单,指明为输出参数即可.运行命令后就可以直接取它的值param.Value.
myCommand.Parameters.Add(parameterEmpID);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
string result = parameterEmpID.Value;
//上面的result即为我们所要求的返回参数值

6.页面基类。这是ASP.NET面向对象思想的核心应用,如果一个.NET B/S系统没有使用基类根本就不算是.NET程序。所有模块的WEB页面都要继承基类PageBase,它提供WEB页面所需要的基本信息和相关服务,比如登录用户信息、用户访问权限、操作日志、页面错误处理。这样的好处很明显,每个继承了此基类的页面可以直接调用这些信息,比如可以简单的实现当前页面位置信息,权限管理等等。同时,也加强了灵活性,如果要增减页面特性,只需要在PageBase里修改,所有页面都会相应增减特性。
posted on 2005-11-02 22:42  wddavid  阅读(...)  评论(...编辑  收藏