
用户层实现课件.ppt
57页第七讲 用户层实现从企业级实战角度出发主讲人:李洪波1第七讲 用户层实现1. 远程登录数据源的配置远程登录数据源的配置3. 业务逻辑层代理类的开发业务逻辑层代理类的开发4.支行信息浏览界面的实现支行信息浏览界面的实现2. 分层的分层的WIN32控制台客户端实例演示控制台客户端实例演示21.远程登陆服务器设置远程登陆服务器设置-(1) 物理连通物理连通数据库服务器Web应用服务器1.远程登陆服务器设置远程登陆服务器设置-(2) 远程许可远程许可1.远程登陆服务器设置远程登陆服务器设置-(2) 远程许可远程许可1.远程登陆服务器设置远程登陆服务器设置-(2)远程许可远程许可1.远程登陆服务器设置远程登陆服务器设置(3) 服务器端远程新建登录设置服务器端远程新建登录设置1.远程登陆服务器设置远程登陆服务器设置(3) 服务器端远程新建登录设置服务器端远程新建登录设置1.远程登陆服务器设置远程登陆服务器设置(3) 服务器端远程新建登录设置服务器端远程新建登录设置1.远程登陆服务器设置远程登陆服务器设置(3) 服务器端远程新建登录设置服务器端远程新建登录设置1.远程登陆服务器设置远程登陆服务器设置(4) 远程登录远程登录SKYFLY-OKLHB1.远程登陆服务器设置远程登陆服务器设置(4) 远程登录远程登录SKYFLY-OKLHB1.远程登陆服务器设置远程登陆服务器设置 (5) 创建远程数据源创建远程数据源Branch1.远程登陆服务器设置远程登陆服务器设置 (5) 创建远程数据源创建远程数据源Branch1.远程登陆服务器设置远程登陆服务器设置 (5) 创建远程数据源创建远程数据源Branch1.远程登陆服务器设置远程登陆服务器设置 (5) 创建远程数据源创建远程数据源Branch1.远程登陆服务器设置远程登陆服务器设置(5) 创建远程数据源创建远程数据源Branch1.远程登陆服务器设置远程登陆服务器设置 (5) 创建远程数据源创建远程数据源Branch1.远程登陆服务器设置远程登陆服务器设置 (5) 创建远程数据源创建远程数据源Branch2. 分层的客户端实例演示分层的客户端实例演示(1) 复制构件212. 分层的客户端实例演示分层的客户端实例演示(2) 注册出纳组件222. 分层的客户端实例演示分层的客户端实例演示(3) 注册管理员组件232. 分层的客户端实例演示分层的客户端实例演示(4) Win32客户端应用242. 分层的客户端实例演示分层的客户端实例演示(5) Web应用252. 分层的客户端实例演示分层的客户端实例演示(6) Web应用267.1 用户界面的实现实现方式:采用web网页的形式实现手段:ASP.NET开发环境 C#作为开发语言 关键:如何实现AdministratorATL 组件与Web网页通信277.1 用户界面的实现287.1 用户界面的实现在添加对该COM对象的引用后,ASP.NET开发环境会自动为它创建一个AdministratorATLLib命名空间(namespace,ASP.NET使用命名空间而不是文件夹结构来管理项目元素,类可以用命名空间路径引用),该命名空间包括First_ATL、First_ATLClass、IFirst_ATL等与COM对象中对应的类或接口,实际上,开发环境对COM对象中提供的方法进行了包装,使得这些类和接口可以像普通的C#语言定义的类那样定义和使用。
297.1 用户界面的实现下面我们将以支行(branch)管理为例,介绍使用ASP.NET的Web控件实现用户界面,并调用COM对象功能实现数据操作的主体思路我们将主要介绍下面两个界面,一个是支行信息的浏览界面(使用GridView控件),一个是支行信息的编辑和添加界面(使用DetailsView界面)307.1 用户界面的实现支行信息浏览界面317.1 用户界面的实现支行信息修改界面327.1.1 业务分转层代理类的开发要使用COM对象提供的数据操作功能,ASP.NET开发框架提供的方案是将这些功能包装成业务实体类,使用前面介绍的ObjectDataSource控件调用业务对象的成员方法来完成数据操作功能但是ObjectDataSource使用的业务类需要实现DataSourceView类定义的数据操作框架,在很多情况下原有的业务分转层类的功能框架可能与此存在区别,因此可以考虑自行生成一个代理类,对原业务逻辑层提供的功能进行重新组合337.1.1 业务分转层代理类的开发在解决方案资源管理器中的BankManagement项目的App_Code文件夹(一般用来存放类代码)上点击右键,在弹出的快捷菜单里面选择添加一个类,名称为AdminBranch,将其放入BankManagement.BLL命名空间,类的基本定义如下:347.1.1 业务分转层代理类的开发using System;using System.Data;using System.Collections.Generic;using System.Linq;using System.Text;using ADMINISTRATORATLLib;/包含COM类和接口的命名空间namespace BankManagement.BLL public class AdminBranch /创建代理类提供的COM接口对象private static First_ATL first_ATL = new First_ATL(); private static IFirst_ATL first = (IFirst_ATL)first_ATL; public AdminBranch( ) first.AdminDatabaseLogin();/在构造函数中打开数据库连接 357.1.1 业务分转层代理类的开发public void Update(string old_branch_name, string branch_name, string city, float assets) first.AdminBranchUpdate(old_branch_name, branch_name,city, assets);public void Add(string branch_name, string city, float asset) first.AdminBranchAdd(branch_name, city, assets); public void Delete(string branch_name) first.AdminBranchDelete(branch_name, ); 367.1.1 业务分转层代理类的开发数据检索方法的实现较为复杂,COM对象中使用三个方法来实现记录信息的检索,首先由AdminBranchQuery接收查询条件返回相应的记录,然后调用AdminBranchGetFirstRecord方法获取第一条记录,再循环调用AdminBranchGetNextRecord方法逐条返回以后的记录,直到返回所有记录。
但是ObjectDataSource控件要求的数据检索方法必须一次性以IEnumerable对象的形式返回所有的记录,且最好返回DataView、DataTable、DataSet等对象以支持缓存、筛选等操作,因此我们在AdminBranch类中重新生成一个方法来完成数据检索操作:377.1.1 业务分转层代理类的开发public DataView QueryByString(string branch_name, string city) /创建数据操作所需的DataTable对象 DataTable dt = new DataTable(); dt.Columns.Add(branch_name, typeof(string); dt.Columns.Add(city,typeof(string); dt.Columns.Add(assets,typeof(float); /定义调用COM对象方法所需的参数 string bname, bcity; float assets; int status; /查询所有记录 first.AdminBranchQuery(, ); /检索第一条记录 first.AdminBranchGetFirstRecord(out bname, out bcity, out assets, out status); 387.1.1 业务分转层代理类的开发public DataView QueryByString(string branch_name, string city) /循环检索所有记录并添加到DataTable对象中 while (status = 8) DataRow dr = dt.NewRow(); drbranch_name = bname; drcity = bcity; drassets = assets; dt.Rows.Add(dr); first.AdminBranchGetNextRecord(out bname, out bcity, out assets, out status); 397.1.1 业务分转层代理类的开发public DataView QueryByString(string branch_name, string city) /生成数据筛选表达式 StringBuilder str = new StringBuilder(); if (!string.IsNullOrEmpty(branch_name) str.Append(branch_name = + branch_name + ); if (!string.IsNullOrEmpty(city) str.Append(And city = + city + ); else if (!string.IsNullOrEmpty(city) str.Append(city = + city + ); /使用筛选表达式对数据进行筛选并返回DataView对象 dt.DefaultView.RowFilter = str.ToString(); return dt.DefaultView; 407.1.2 支行信息浏览界面的实现银行业务系统的母版页设计视图417.1.2 支行信息浏览界面的实现 商业银行柜台业务管理系统 427.1.2 支行信息浏览界面的实现 437.1.2 支行信息浏览界面的实现 447.1.2 支行信息浏览界面的实现457.1.2 支行信息浏览界面的实现 支行名: 全部 467.1.2 支行信息浏览界面的实现 所在城市: 全部 477.1.2 支行信息浏览界面的实现 487.1.2 支行信息浏览界面的实现 497.1.2 支行信息浏览界面的实现 507.1.2 支行信息浏览界面的实现 没有符合条件的记录可以显示! 517.1.2 支行信息浏览界面的实现 添加新支行 527.1.3 支行信息编辑和添加界面的实现支行信息编辑界面支行信息添加界面537.1.3 支行信息编辑和添加界面的实现 547.1.3 支行信息编辑和添加界面的实现 没有符合条件的记录可以显示! 557.1.3 支行信息编辑和添加界面的实现 567.1.3 支行信息编辑和添加界面的实现 返回 57。
