三层架构企业BS管理OA系统项目

1.确定项目需求

a.使用用例图:

 

2.分析:

a.ER图(找实体层)-->powerdesign工具 //powerdesign效率高

b. conceptial data model(ER图)

c. 不能有冗余的表(列的不可再分性)

d. 文件+文件夹

e. 实体可以按物理实体,抽象实体,业务功能的原子性来进行划分和创建

f. 三大范式:第一范式(确保每列保持原子性)  ;第二范式(确保表中的每列都和主键相关)  ;第三范式(确保每列都和主键列直接相关,而不是间接相关)

j.  也可以总结为:信息不可分;以分组消除冗余数据,组内有主键作为唯一标识;组内部的非主键数据不能相互依赖。

 

3.物理建模--->根据ER图来建模

a.Power Designer中创建physical Data Model

b. 创建主外键关系--->就是考虑谁来自于谁,谁先创建(引用就是对应起来)

c. 主键一定要有内容,但是外键可以没有内容

d.类型,单个元素的基本信息,枚举,共同可以被抽象的父类--->都可以作为一张主键表用来被引用

e. A,B两个表存在多对多的情况时,可以创建一个中间表C来实现该功能,例如下图:

4.表与表之间尽量创建关系--->以减少字段冗余和关系冗余

 

5.三层架构经典创建顺序

a.Entity(model)层 创建

b. IDAL(DAL接口)创建

c. DALsqlprovider(DBHelper)创建

d. DALFactory创建

e. BLL创建

f. UI创建

 

6.

a.反射可以不通过运行编译--->直接通过代码生成一个类的实例

b.反射-->在程序运行期间从Dll中获取属性或者创建类

c. 如在UI层不能直接使用DAL层的数据,所以可以将DAL编译生成DLL文件,UI层通过反射就可以直接使用

d.而且反射完成了接口和功能实现分离的原则,使BLL层通过DALfactory接口可以动态调用不同的数据库(例如:Oracle,Sql)

 

7.反编译研究代码工具: .net反编译 Reflect

8.抽象工厂模式

 

9. CodeSmith

a. 选择NetTier.cst---->然后根据属性开始生成代码  //NetTier.cst是N层架构的模板

b. 设计表最好用英文,codesmith对中unicode支持不好,中文会变成safename

b. codesmith的模板与aspx很像,每个模板的前台都可以视作aspx(其语法方式与aspx也相似,也支持C#指令)

而且每个模板后台都有一个cs(与aspx 的cs很相似)

c. codesmith的property(属性)可以以下几种方式进行声明:

  *  <%...%>  //<%...%>中只能放方法和可以执行的语句或者属性(=...),不能放定义(例如:类和方法定义)

  *  codesmith前台编辑中:   <script> public class... </script>  //此种形式可以进行类和方法的定义,其中可以直接使用C#语法,然后该定义直接放入后台的Template中

 

d.  <% table.name %>  ---->可以像Item一样绑定一个数据列

e.  entlib(框架)+codesmith -->生成数据访问层

f.  codesmith中

  *方法定义  <script runat="Template">  //相当于添加到后台C#库中,或者父类模板中;写在前台的script 只有当前模板使用

                  public string All()

                 {   string args="  ";

                      foreach(columnSchema  col  in this.currentTable)  //当前表定义的属性

                      {

                       }

                 }     </script>

 

  * 方法调用  <%  All() %>

 

 

10.

a. 一个表的外键对应的主键-->可能有多个列,所以该外键也有多个列

b.一个表可能有多个“主键”(被其他外键表所引用)

 

11.  codesmith 中调试 Debug.writeline(pk.GetType().ToString)  //

12.

a. 凡是多个产品系列(例如 : oracle,Access,sql)要进行切换就一定需要使用接口来将这个切换功能做出来

b.一般切换(接口)可以放置在总输入/输出端

 

13.使用codesmith每个模块生成代码的步骤

c. 在Main.cst中注册该模板

d. 调用Main.cst中的生成方法,eg:

   private  void  GenerateIDALInterface( )

  {

  }

 

14.

a.DALsqlFactory--->是具体工程实例(其实就是数据库体系,oracle,sql) ,其内部拥有所有产品的privider

b. 而 DALsql--->是对IDAL的实现,是每个产品的类实现

 

15. Enterprise Liberay

c.  common.dll ,data.dll ...--->此二库在Enterprise Liberay中很重要

d.有的插件或dll需要在config中配置

e.因为有DALFactory(sql,oracle,可以根据config进行不同的切换)--->引用其的类就是不能直接引用,而是使用反射来使用其动态生成的DLL,这样使用起来很方便,

不用将整个项目都编译

f. DBreader(在线模式)//效率高,但每次读取数据都要链接

   DBdataset (离线模式) //效率低(相当于缓存)

g. datasource只要有虚拟表就可以

h.  Enterprise  Liberty -->相当于 DBHelp + DBserver

   *主要用模板批量生成每个产品的insert、select、update、delete的所有存储过程

   *然后再DALsql中使用其的类库方法+相应的存储过程进行操作

i.  codesmith 标准循环方式:

<% foreach( columnschema  col  in   this.currentTable.columns)

{%>

 cmd.parameter.AddwithValue("@<%...%>,<%...%>");   //循环原样输出的就不用放在<% ...%>中

<% } %>

 

 

16.

j. 使用 Jquery可以屏蔽各个浏览器之间的差异

k. 样式布局可以将div+css和table方式结合起来使用

l. body样式是基本样式,其他页面内样式都继承该样式--->相当于全局默认样式

m.

iframe(左布局)iframe(右布局)

 以上是master中的center

frameset只能使用行列的方式,但是iframe可以任意嵌入到一个布局中去 

o. 所有表格默认情况都是左对齐

p. 表格中要使有继承关系: 表--->行--->列--->单元格

q. sitmap 控件-->可以实现网站地图

r. webconfig可以对这个网站,甚至单独的文件夹-->进行配置(eg:用户权限的配置)

 

17. 数据库中的null空值是一种类型,不是值,不能用==来进行判断,而是使用IsType来进行判断//相当于C#中的DBnull类型(不是值)

18.  使用反射的话,应先将库调试通过,否则使用反射调用DLL时,就无法进行调试(相当于黑箱)

19.  reapter 很干净,不会像其他的ADO控件一样生成冗余的代码

20.  自定义绑定控件时,如果控件中嵌套一个控件,例如:一个reapter中嵌套一个reapter那么最好应该将该子控件放在ascx中,

因为数据绑定和控件赋值顺序会用不同

21. VS中编辑CSS文件,可以右键自动生成样式

22.  <%...%> --->asp执行到该处会动态执行

       <#%...%> --->进行绑定,但不会动态执行,只有进行Bind() 期间,才会解释

23. 如果一个aspx中多个ADO控件分别绑定不同的DataSource,最好将除主控件以外的其他控件-->做成自定义控件,然后引入到该aspx中--->这样方便设计

24.  fieldset/ legend --->容器的一种

25. ADO控件都有:

     inserting事件--->可以用于对insert事件的数据进行更改

      inserted事件--->在inserted中可以对要insert到库中的数据进行检查(可以规避事物的使用)

26.

a.如果想对ADO控件的数据显示部分的某个列进行精细的控制--->可以不使用默认的数据绑定模式--->而是使用模板列,例如:

                         <asp : TemplateField HeadText=...,  sortExperssion=...>

                          <itemTemplate>

                              ....

                          </itemTemplate>

                          </asp: TemplateField>

b. 使用模板列-->可以使用手动的<%..%>方式进行灵活的数据绑定

c.模板列非常强大-->可以内嵌asp指令和各种控件

e. 对于ADO控件中各个单元格可以和数据进行简单的绑定

 

27. 如果在已构建好的(用codesmith生成的)的BLL层中的各个业务类添加新的方法和需求--->可以在BLL层继承该业务类,然后再子类中添加相关的新业务和功能

---->这样就不用修改codesmith模板了

28. datalist 的显示方式

abc
def
g  

29.

a.皮肤和样式-->都可以把页面的外观与数据分开

b.皮肤类似于样式--->可以使用页面aspx看起来更简洁--->见皮肤引用到外部(一般将皮肤和样式放在Theme主题中

 

30. objectDatasource的机制步骤

      selecting事件  ----------------->inserting事件

(其中选择数据的来源)           (数据插入到objectDatas中)

 -------------入口-------------------------------操作-----------------------

 

31.如果一个带ID的控件去hre(超链接)另外一个页面,那么该ID一般会作为quarystring--->传入下一个页面

32.一个button在操作buttonclick之前,可以加一个aspx "confirm()" 对话框--->以确保一些重要操作,例如:delete...操作的谨慎性

33. 删除主表的数据时,应先删除子表的引用数据,然后删除主表的数据,反之无所谓

34. &npb -->是一个空格

35. 在网页中对ADO空寂爱你进行修改的两种方式

a. 如果与页面控件元素无关,如故需要或缺页面元素--->就直接新建aspx,在新的页面中进行操作(例如:edit,insert)

b. 如果与页面元素有关,则--->不能再另一个页面中对原页面进行操作

c. 页面之间传递数据使用 context.request(quarystring) 方式进行,也可以使用viewstate传参数

 

36. 应用theme--->l类似于skin,css--->可以提高重用度,使Aspx代码更简洁

37.

a. 在ADO控件中,单元格可以和数据简单的绑定

b.也可以使用 <Templatefield>

                   <itemTemplate>  //模板列的方式来更灵活和强大的展示数据

BS在线文件管理系统】版本:1.0.2 ------------------------------------------------------------------ 系统要求: 1.服务器支持ASP权限且支持FSO(File System Object)权限; 2.建议win2000 + IIS5.0 以上; 3.本系统在Win2000+IIS5.0下测试可用; ------------------------------------------------------------------ 功能如下: 1.可以显示服务器上的所有硬盘目录,可以显示每个文件以及目录; 2.可以修改、删除、改名、编辑(此功能仅限编辑文本类文件,如.txt/.asp /.htm/.html/.css 文件)、复制、移动任意文件和目录; 3.可以在线修改本程序自身;(此功能仅建议ASP技术熟练者在必要时使用) 强烈建议不要在线修改本程序自身,如果出错请用原文件覆盖即可; 4.可以设置超级管理员、普通管理员,超级管理员可以访问所有硬盘上的文件 ,可以为普通管理员设置权限目录; 5.普通管理员可以访问超级管理员设置的权限目录里的文件和目录; 6.可以用浏览器浏览服务器上非虚拟目录里的文件; 7.文件上传功能采用稻草老农(5xsoft.com)的无组件上传文件;可同时上传 多个文件到指定目录; 8.数据库密码:brightstar,默认超级管理员:brightstar,密码:brightstar 建议自行更改数据库文件名,同时将conn.asp中"brightstar.asp"改为你的 数据库文件名;(数据库为:db/brightstar.asp,Access数据库) ------------------------------------------------------------------ 主要更新说明: 1.上传文件采用稻草老农(5xsoft.com)的无组件上传类(2.0),上传速度成倍 提高; 2.修改优化若干小问题; 2.数据库添加防止下载的表,防止下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值