软件开发三层构架解析
2008-07-16 11:56
381 查看
TraceBack 网络
整理者:赵岩
1. 三层应该是 “逻辑”三层,在设计上分为三层,但不一定必须好像要有三个文件那样
2. C/S 跟是不是三层没有关系,三层是指你对系统的逻辑规划,要有最顶层的Application,要有中间的业务逻辑和业务实体,要有底层的数据访问。举个例子,你用客户端的一个程序去访问数据库,首先这个 client 可以看成顶层,那么就算你是直接链接的数据库,在使用 DataSet 取得数据后你也不能直接让 UI 去负责显示了啊,你总要设计中间的一层,就是业务逻辑层。
一定不能是实现成这样:
private void button1_Click(object sender,EventArgs e)
{
SqlConnection conn = .......;
conn.Open();
DataTable table = adapter.GetData();
this.dataGridView1.DataSource = table;
}
此乃兵家大..大大...大...大...大...忌。不能你一个“按钮”就直接控制了访问数据库、取数据、显示,那就变成一层了。
参考实现成:
UI层
private void button1_Click(object sender,EventArgs e)
{
学生实体 entity = 业务逻辑层.Get学生实体();
textBox1.Text = entity.姓名;
textBox2.Text = entity.年龄.ToString();
}
业务逻辑层,定义一个类或 DLL
public 学生实体 Get学生实体()
{
数据访问层结构 data = 数据访问层.GetData();
学生实体 entity = new 学生实体();
entity.姓名 = data.Row[0].ToString();
...
}
数据访问层
public 数据访问层结构 GetData()
{
SqlConnection conn = .......;
conn.Open();
DataTable table = adapter.GetData();
....
}
以上举个小例子,这样,逻辑上分为了三层,数据层只负责对数据库的操作,逻辑层作为桥梁让上层更专注本身的业务结构,比如一个学生管理,对用户(UI)来说,每一个学生作为一个实体对它才是有意义的,而不是 DataTable.Row[0][1].ToString()的值是什么。所以逻辑层封装好了对上层有意义的数据结构,返回给上层。而 UI 只负责将这种有意义的实体做显示操作,并响应用户操作,告诉下层“我要获取一个”,“我要添加一个”,“我要修改一个”。
因此,C/S 架构和是不是三层没有什么逻辑关联,你可以将三层全部放在 C 端,但是由数据访问层去访问数据库。C/S 是你部署和运行的方式,三层是你对软件的架构方式。
整理者:赵岩
1. 三层应该是 “逻辑”三层,在设计上分为三层,但不一定必须好像要有三个文件那样
2. C/S 跟是不是三层没有关系,三层是指你对系统的逻辑规划,要有最顶层的Application,要有中间的业务逻辑和业务实体,要有底层的数据访问。举个例子,你用客户端的一个程序去访问数据库,首先这个 client 可以看成顶层,那么就算你是直接链接的数据库,在使用 DataSet 取得数据后你也不能直接让 UI 去负责显示了啊,你总要设计中间的一层,就是业务逻辑层。
一定不能是实现成这样:
private void button1_Click(object sender,EventArgs e)
{
SqlConnection conn = .......;
conn.Open();
DataTable table = adapter.GetData();
this.dataGridView1.DataSource = table;
}
此乃兵家大..大大...大...大...大...忌。不能你一个“按钮”就直接控制了访问数据库、取数据、显示,那就变成一层了。
参考实现成:
UI层
private void button1_Click(object sender,EventArgs e)
{
学生实体 entity = 业务逻辑层.Get学生实体();
textBox1.Text = entity.姓名;
textBox2.Text = entity.年龄.ToString();
}
业务逻辑层,定义一个类或 DLL
public 学生实体 Get学生实体()
{
数据访问层结构 data = 数据访问层.GetData();
学生实体 entity = new 学生实体();
entity.姓名 = data.Row[0].ToString();
...
}
数据访问层
public 数据访问层结构 GetData()
{
SqlConnection conn = .......;
conn.Open();
DataTable table = adapter.GetData();
....
}
以上举个小例子,这样,逻辑上分为了三层,数据层只负责对数据库的操作,逻辑层作为桥梁让上层更专注本身的业务结构,比如一个学生管理,对用户(UI)来说,每一个学生作为一个实体对它才是有意义的,而不是 DataTable.Row[0][1].ToString()的值是什么。所以逻辑层封装好了对上层有意义的数据结构,返回给上层。而 UI 只负责将这种有意义的实体做显示操作,并响应用户操作,告诉下层“我要获取一个”,“我要添加一个”,“我要修改一个”。
因此,C/S 架构和是不是三层没有什么逻辑关联,你可以将三层全部放在 C 端,但是由数据访问层去访问数据库。C/S 是你部署和运行的方式,三层是你对软件的架构方式。
相关文章推荐
- 软件开发过程中的三层架构的深入解析和搭建(一)
- 软件开发过程中的三层架构的深入解析和搭建(一)
- 软件开发过程中的三层架构的深入解析和搭建(一)
- 软件工程.软件质量控制,软件构架,软件开发综合经验谈
- android 条码识别软件开发全解析
- android 条码识别软件开发全解析(续2详解绝杀!)
- Android软件开发之发送短信与系统短信库解析
- Atitit.软件开发的三层结构isv金字塔模型
- 软件开发相关名称解析
- 大型软件开发与ORM构架
- 纯软件转型嵌入式开发解惑系列(一)嵌入式整体构架及驱动开发流程
- Atitit.软件开发的最终的设计 dsl化,ast化(建立ast, 解析执行ast)
- Android软件开发之发送短信与系统短信库解析
- 【漫画解析】软件开发评估过程
- 大型软件开发与ORM构架
- 常见名称解析_ 软件开发、应用相关 数据分析相关
- .NET中三层构架开发实例-用户注册系统
- ABBYY FineReader软件开发工具包解析
- .NET中三层构架开发实例-用户注册系统
- android 条码识别软件开发全解析(续2详解绝杀!)