ASP.NET网站权限设计实现(二)——角色权限绑定

 

上一篇:ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计

 

1、关于使用的几张表的说明

(1)Module:模块表,记录模块名称、编码等模块基本数据。 
(2)Permissions:权限表,记录所有模块权限distinct之后的数据。

 

(3)ModulePermissions:模块权限,记录每个模块对应的权限,一个模块可能存在多条数据,每条表示该模块的一个操作权限。

 

(4)Roles:角色表,记录角色名称、编码等角色基本数据。

 

(5)RolePermissions:角色权限表,记录每个角色对应的权限,一个角色可能存在多条数据,每条数据表示该角色在某个模块的一个操作权限;表中的数据其实记录的是角色编码跟ModulePermissions表中的主键对应,表ModulePermissions中特定主键的数据行就表示了某个模块的一个操作权限。

 

(6)SUser:用户表,记录用户名等用户基本信息。

 

(7)UserRole:用户角色表,记录每个用户对应的角色,可以是多个,但本例只设置对应一个,只要用户具有了某个角色,那么该用户就具有了和角色一样的权限。

 

2、关于PowerDesigher :上一篇介绍了初次在数据库生成表的过程,实际上还可以实现更新和逆向操作(根据数据库中的表在PD中生成表模型)。

 

3、模拟数据

(1)表Module

 

(2)表Permissions 

 

(3)表ModulePermissions 

 

 

4、角色分页显示和删除

这里实现功能的代码基本都是最初级的代码,后面另一个版本会在架构、UI、代码等方面进行较大的改进;另外这里的代码纯粹是演示,不会考虑注入、异常等方面的处理。

 

(1)分页显示数据直接使用GridView了 

 

 

(2)在列表页面可以全选本页数据一次性删除,全选/全取消使用JQuery实现,选中时将值(这里是角色编码)保存在一个隐藏域中,隐藏域中的值的格式:'值1','值2',...(数据库中的RoleCode列的数据类型是nvarchar);取消选中时将隐藏域中的值清空;单行CheckBox选中/取消时,将当前行的值追加到隐藏域的值或从隐藏域的值中移除当前行的值 。删除时先判断隐藏域的值是否为空,如果为空提示”选中数据“,如果不为空提示”确定删除吗?“,确认删除后,根据隐藏域中的值构造delete语句(使用in子句)将数据删除。

 

 

 

(3)代码

Index.aspx

说明: 

$("#txtKeys") :JQuery得到ID为txtKeys的元素

$("#txtKeys").val() ;:获得ID为txtKeys的元素的值

$("#txtKeys").val("");:设置ID为txtKeys的元素的值,这里是空字符串

$(":checkbox").each(function () { });:遍历当前文档中CheckBox类型的元素,并在function中进行处理

$(this).attr("checked");:获得当前遍历到的CheckBox的checked属性的值

$(this).attr("checked", $("#cbAll").attr("checked"));:设置当前CheckBox的选中状态跟“全选”CheckBox一样,实际上就是通过这种方式给当前CheckBox的checked属性

注意所有CheckBox都有客户端onclick事件,触发时会调用不同JavaScript函数执行 

用到的Web服务器控件:TextBox 、Button、HiddenField、GridView、HyperLink、LinkButton

 

Index.aspx.cs 

 

说明:

SqlHelper:是数据访问类,包含一些方法提供对数据库的访问和操作 

ExecuteNonQueryWithTran:调用SqlCommand的ExecuteNonQuery方法执行insert、update、delete语句,添加了事务处理

 

5、角色新增和修改

(1)新建角色

 这儿的关键是绑定权限、全选或全取消及获取选中项的值、构造insert语句,先看一下页面运行后的结果 

 

(1.1)绑定权限 

使用两个GridView嵌套,最外面的(gvParent)显示顶级模块名称;嵌套在内的(gvChild)在gvParent的RowDataBound中进行数据绑定以显示二级模块名称(根据gvParent当前行的模块编码Moudle表中查询数据; 在gvChild的RowDataBound中绑定权限复选框列表,数据根据gvChild当前行的模块编码从下面视图(V_ModulePermissions)中查询,这里的复选框用的是<input type="checkbox" />,首先跟权限的数量构造CheckBox的html代码字符串,然后用Label显示出来,由于Label在客户端生成的代码中将变为所有这些CheckBox的父元素,所以也方便将来实现单模块的全选或者全取消,具体内容看后面代码。

视图V_ModulePermissions:

 

SQL:

SELECT     dbo.Permissions.PermissionName, dbo.ModulePermissions.ModuleCode, dbo.ModulePermissions.PermissionCode, dbo.ModulePermissions.ID
FROM         dbo.ModulePermissions INNER JOIN
                      dbo.Permissions ON dbo.ModulePermissions.PermissionCode = dbo.Permissions.PermissionCode INNER JOIN
                      dbo.Module ON dbo.ModulePermissions.ModuleCode = dbo.Module.ModuleCode
WHERE     (dbo.Module.ModuleVisible = 1) AND (dbo.Permissions.PermissionVisible = 1)

 

 (1.2)全选或全取消及获取选中项的值

每一个CheckBox的Click事件触发时都会调用一个JavaScript函数执行,这些函数不仅是完成选中或者取消选中,还要完成获得并追加或移除相应的CheckBox的值,最终构造的字符串是这种格式:,1,,2,,3,,4,...,并存储在隐藏域中。代码后面附上 。

 

(1.3)构造insert语句 

获取隐藏域的值进行字符串替换和拆分,遍历拆分出来的数据,构造insert语句,最后执行。 

 

(2)修改角色

 关键是设置当前角色已有权限项选中,先看页面结果

 

 

这里的处理是根据URL参数RoleCode的值从视图V_RolePermissions查询该角色的所有权限,然后构造一个字符串,在构造<input type="checkbox" />时判断该字符串是否包含此权限的标识,如果包含,就添加 checked属性。

 

SQL:

SELECT      dbo.V_ModulePermissions.ID, dbo.RolePermissions.RoleCode
FROM          dbo.V_ModulePermissions  INNER   JOIN
                      dbo.RolePermissions  ON  dbo.V_ModulePermissions.ID  =  dbo.RolePermissions.ModulePermissionID

 

(3)新建、修改全部代码

Edit.aspx

  

Edit.aspx.cs 

 

 

(4)操作成功后的提示及页面跳转

 

 

Redirect.html

使用setInterval函数倒计时 

获取传递过来的路径(传递的是相对路径),倒计时到0秒时,使用window.clearInterval(intervalId)清除setInterval事件,并指定window.location.href=路径,使得由当前页跳转到目的页

 

 

OK,到此全部完成,感觉说的太多了,所以有些内容没介绍,看代码吧。 

 

已标记关键词 清除标记
第1章 登录验证模块 1 1.1 开发站点前的配置 1 1.1.1 创建Web站点 1 1.1.2 使用站点安全工具配置身份验证模式 2 1.1.3 配置站点的数据存储方式 4 1.1.4 定制自己的数据存储方式 4 1.2 最普通的登录方式 6 1.2.1 用户注册功能 6 1.2.2 用户的登录功能 7 1.2.3 修改密码功能 8 1.2.4 在登录页面中添加注册导航功能 8 1.2.5 显示登录用户名和用户状态功能 8 1.2.6 根据用户登录身份显示不同效果页功能 9 1.3 基于角色的登录方式 10 1.3.1 在应用程序中启用角色 10 1.3.2 创建角色 10 1.3.3 创建角色访问规则 11 1.3.4 赋予用户角色权限 11 1.3.5 验证角色的登录 12 1.4 匿名用户的授权管理 12 1.5 小结 13 第2章 缓存管理模块 14 2.1 数据库缓存依赖的优点 14 2.2 开始使用缓存 15 2.2.1 开启应用程序的缓存功能 15 2.2.2 配置缓存依赖的数据库 15 2.2.3 为SQL Server启用缓存通知 16 2.3 控件级数据缓存功能 16 2.3.1 添加时间戳和数据 16 2.3.2 观察缓存数据的变化 18 2.4 页面级数据缓存依赖功能 18 2.4.1 配置页面的缓存属性 18 2.4.2 完善模块中两个功能的导航 19 2.5 小结 20 第3章 个性化设置模块 21 3.1 简单类型的个性化设置功能 21 3.1.1 设置个性化的项目 21 3.1.2 配置个性化信息 22 3.1.3 个性化用户登录站点 22 3.1.4 保存个性化设置 22 3.1.5 显示个性化设置 23 3.2 复杂类型的个性化设置功能 23 3.2.1 设计复杂个性化的项目 24 3.2.2 配置复杂项目 25 3.2.3 保存复杂项目的设置 25 3.2.4 获取复杂项目的设置并显示 26 3.3 匿名用户的个性化设置功能 27 3.3.1 启用匿名用户的个人配置属性 28 3.3.2 设计匿名用户的登录功能 28 3.3.3 将匿名用户的个性化设置移植到已验证用户 30 3.4 完善系统对3个功能的导航 31 3.5 小结 31 第4章 投票模块 32 4.1 一个简单的投票系统 32 4.1.1 设计投票功能的数据存储方式 32 4.1.2 投票项目管理功能 33 4.1.3 投票功能 37 4.1.4 图形化显示投票结果功能 38 4.2 防止重复投票技术 40 4.2.1 利用Session对象 40 4.2.2 利用Cookies对象 41 4.2.3 验证IP和登录时间 41 4.2.4 小范围调查 42 4.3 一个完整的投票系统 42 4.3.1 投票系统的功能模块 42 4.3.2 投票系统的数据库架构 43 4.3.3 数据库中数据之间的关系 43 4.3.4 投票主题管理 44 4.3.5 投票项目管理 52 4.3.6 投票功能管理 54 4.3.7 投票系统后台权限管理 59 4.4 小结 60 第5章 RSS模块 61 5.1 RSS的定义 61 5.2 RSS的作用 61 5.3 RSS的订阅原理 62 5.3.1 RSS的工作原理 62 5.3.2 RSS订阅工具的使用 63 5.4 在网站内加入RSS功能 65 5.4.1 使用Microsoft提供的RSS工具包 65 5.4.2 一个简单的RSS阅读器 66 5.4.3 一个复杂的RSS阅读器 67 5.4.4 让站点提供订阅功能 69 5.5 小结 70 第6章 在线编辑模块 71 6.1 在线编辑的原理 71 6.2 编辑器的界面 71 6.3 一个简单的在线编辑器 72 6.3.1 在线编辑窗口的界面设计 72 6.3.2 在线编辑的功能实现 73 6.3.3 在线编辑的运行效果 74 6.4 多功能在线编辑器的介绍 74 6.4.1 FreeTextBox编辑器 74 6.4.2 FCKEditor在线编辑器 76 6.5 小结 79 第7章 在线支付模块 80 7.1 在线支付介绍 80 7.1.1 在线支付的安全保障 80 7.1.2 在线支付的优点 80 7.2 在线支付的流程 81 7.3 使用支付宝实现在线支付 81 7.3.1 支付宝接口概述 81 7.3.2 支付宝接口服务下载 81 7.4 使用支付宝实现在线支付的实例 82 7.4.1 在项目中加入支付宝程序 82 7.4.2 设计订单提交功能 82 7.4.3 获取支付成功后的返回信息 84 7.4.4 设置支付过程中的通知 88 7.4.5 实现订单到支付宝的提交 90 7.5 小结 92 第8章 电子邮件模块 93 8.1 用ASP.NET 3.5实现邮件的发送 93 8.1.1 SMTP介绍 93 8.1.2 实现邮件发送功能 94 8.1.3 实现邮件附件的发送 95 8.2 使用功能齐全的JMail 96 8.2.1 JMail的优点 96 8.2.2 JMail的安装 96 8.2.3 在ASP.NET中使用JMail发送邮件 97 8.2.4 在ASP.NET中使用JMail接收邮件 98 8.3 小结 103 第9章 上传和下载模块 104 9.1 上传和下载简介 104 9.2 简单的上传和下载 104 9.2.1 上传文件到服务器 105 9.2.2 从服务器下载文件 106 9.3 复杂的上传和下载 109 9.3.1 上传图片到数据库 109 9.3.2 从数据库下载图片 112 9.4 “AspnetUpload”上传组件的使用 115 9.4.1 多文件的上传 115 9.4.2 支持上传文件的实时进度条 117 9.5 小结 118 第10章 图文验证模块 119 10.1 概述 119 10.1.1 验证码的作用 119 10.1.2 验证码的原理 119 10.1.3 比较常见的几种验证 方式 120 10.2 最简单的随机数字验证 120 10.2.1 生成随机数字 120 10.2.2 设计验证功能 121 10.2.3 实现服务器端验证 122 10.3 复杂的图文验证 123 10.3.1 创建生成随机字符的方法 123 10.3.2 创建生成随机图片的方法 124 10.3.3 实现验证功能 126 10.4 小结 127 第11章 缩略图水印模块 128 11.1 缩略图加水印的原理 128 11.2 自定义带版权水印的缩略图 129 11.2.1 生成缩略图功能 129 11.2.2 为缩略图添加版权信息 131 11.2.3 为缩略图添加水印 132 11.2.4 一个高质量的缩略图水印模块 133 11.3 使用第三方组件生成缩略图水印 136 11.3.1 “AspJpeg”组件的功能特点 136 11.3.2 在项目中添加“AspJpeg”组件 137 11.3.3 使用“AspNetImage”组件生成缩略图的范例 137 11.3.4 使用“AspNetImage”组件生成缩略图文字水印的范例 138 11.4 小结 139 第12章 防盗链模块 140 12.1 盗链对网站的影响 140 12.2 盗链应对措施 141 12.2.1 HTTP请求的定义 141 12.2.2 服务器处理请求的原理 141 12.2.3 ASP.NET 3.5的运行机制 142 12.3 ASP.NET 3.5中防盗链的解决方案 142 12.3.1 设计处理图片的HttpHandler处理程序 143 12.3.2 在应用配置中注册HttpHandler 144 12.3.3 在IIS中配置图片的特殊处理程序 145 12.3.4 测试处理程序的执行效果 147 12.4 防盗链下载实例 147 12.5 小结 149 第13章 在线客服模块 150 13.1 概述 150 13.2 QQ网站提供的在线客服 151 13.2.1 QQ网站自动生成在线客服代码 151 13.2.2 将代码应用于项目中 152 13.3 多用户在线客服范例 153 13.3.1 设计用户QQ列表数据库 153 13.3.2 设计客服人员的增删功能 154 13.3.3 实现多用户在线客服模块 158 13.4 小结 159 第14章 网页搜索模块 160 14.1 概述 160 14.1.1 搜索引擎分类 160 14.1.2 搜索引擎的实现原理 161 14.1.3 搜索引擎的相关技术 162 14.2 用第三方的API实现搜索 162 14.2.1 使用Google API 163 14.2.2 使用百度 API 164 14.3 小结 168 第15章 网站统计模块 169 15.1 概述 169 15.2 Alexa数据的调用 170 15.2.1 Alexa的作用 170 15.2.2 如何在ASP.NET 3.5中调用Alexa的数据 170 15.3 自定义统计模块 171 15.3.1 设计保存IP数据的数据库 171 15.3.2 设计显示IP信息的界面 173 15.3.3 显示最近访问站点的10个IP信息 174 15.3.4 实现IP数据的统计 177 15.3.5 页面访问量统计 181 15.3.6 统计在线人数 183 15.4 小结 184 第16章 聊天模块 185 16.1 简单的聊天功能 185 16.1.1 简单的聊天登录 185 16.1.2 保存聊天信息 186 16.1.3 获取聊天信息 187 16.1.4 格式化显示聊天信息 188 16.1.5 设计聊天屏幕 188 16.1.6 实现两个人聊天的功能 189 16.2 一个功能完善的聊天室 191 16.2.1 设计聊天室的数据库 192 16.2.2 更改数据存储方式 192 16.2.3 用户注册模块 194 16.2.4 用户登录模块 194 16.2.5 登录配置信息 195 16.2.6 设计聊天室主界面 196 16.2.7 显示在线用户 198 16.2.8 用户发言 200 16.2.9 聊天内容显示 205 16.3 小结 207 第17章 在线点播模块 208 17.1 认识流媒体服务器WMS 208 17.1.1 Windows Media Services 9简介 208 17.1.2 WMS的应用范围 209 17.1.3 WMS流媒体的优势 209 17.2 通过WMS生成点播HTM页面 209 17.2.1 添加发布点 209 17.2.2 创建点播HTM页面 212 17.3 使用ASP.NET 3.5生成点播模块 214 17.3.1 在ASP.NET中引用自动生成的HTM页面 214 17.3.2 制作点播列表 215 17.3.3 完成点播功能 216 17.4 在播放媒体中插播广告 217 17.5 小结 218 第18章 报表模块 219 18.1 用数据控件实现的简单报表范例 219 18.1.1 创建报表数据 219 18.1.2 创建报表视图 220 18.1.3 打印报表 224 18.2 水晶报表的介绍 227 18.3 ASP.NET中使用水晶报表范例 228 18.3.1 创建显示数据库数据的水晶报表 228 18.3.2 创建报表的数据集 229 18.3.3 关联数据集和报表 231 18.4 自定义主从结构的水晶报表 232 18.4.1 使用带报表的网站模板 233 18.4.2 创建包含主从关系表的数据集 234 18.4.3 用编程方式实现报表与数据源的关联 234 18.5 小结 235 第19章 PDF文档处理模块 236 19.1 PDF文档介绍 236 19.2 数据表格与PDF的格式转换 237 19.2.1 第三方组件“iTextSharp”的调用 237 19.2.2 将数据表转化为PDF的方法 237 19.2.3 实现Table到PDF文件转换的范例 239 19.2.4 使用浏览器打开PDF文档 242 19.3 用ASP.NET 3.5制作PDF格式化工具 242 19.3.1 创建文本型PDF文档 243 19.3.2 在PDF中添加导航链接 244 19.3.3 在PDF中添加页眉页脚 245 19.3.4 在PDF中插入图片 247 19.4 小结 248 第20章 留言板模块 249 20.1 利用XML技术构造留言板 249 20.1.1 保存留言内容的XML模板 250 20.1.2 读取和保存XML数据的方法 250 20.1.3 发表留言功能 251 20.1.4 浏览所有留言功能 252 20.1.5 管理员登录功能 254 20.1.6 用XSL文件转换XML文件 256 20.1.7 删除留言功能 257 20.2 利用数据库技术构造留言板 259 20.2.1 设计保存留言内容的数据库 260 20.2.2 部署数据库提供程序 260 20.2.3 保存数据的方法 261 20.2.4 发表留言功能 264 20.2.5 浏览所有留言功能 265 20.2.6 管理员登录功能 267 20.2.7 删除留言功能 267 20.3 小结 268 第21章 数据库快速访问模块 269 21.1 概述 269 21.2 不返回结果的执行方法 270 21.2.1 不带参数的SQL语句执行方法 270 21.2.2 带参数的SQL语句执行方法 273 21.2.3 不带参数的存储过程执行方法 275 21.2.4 带参数的存储过程执行方法 276 21.3 返回一个字段的方法 278 21.4 返回数据集DataReader的方法 279 21.5 方法集成测试 282 21.6 小结 282 第22章 新闻自动发布模块 283 22.1 后台管理模块 283 22.1.1 新闻模块数据库设计 283 22.1.2 新闻发布模板 287 22.1.3 新闻修改和删除功能 289 22.1.4 后台管理登录功能 290 22.2 新闻主界面展示功能 291 22.2.1 普通展示功能 291 22.2.2 滚动展示功能 293 22.3 新闻列表功能 294 22.4 新闻内容浏览功能 296 22.5 整合新闻发布模块 297 22.6 小结 298 第23章 ASP.NET+XML定制论坛模块 299 23.1 论坛数据库的介绍 299 23.1.1 设计数据库结构 299 23.1.2 设置数据表关系 301 23.1.3 配置数据库Provider 301 23.1.4 配置“Web.config”中的数据库连接 303 23.1.5 添加数据库访问实体类 304 23.2 新用户入口 310 23.2.1 用户的注册 310 23.2.2 用户的登录 310 23.3 论坛主题的类别 311 23.3.1 添加论坛的类别 311 23.3.2 编辑论坛的类别 313 23.3.3 显示论坛的类别 313 23.4 论坛的帖子详细信息 314 23.4.1 帖子列表的显示 315 23.4.2 帖子的发布 316 23.4.3 显示帖子的详细信息 320 23.4.4 帖子的回复 322 23.5 小结 325 第24章 Web Service实现天气预报模块 326 24.1 Web Service介绍 326 24.1.1 概述 326 24.1.2 Web Service的优点 327 24.1.3 使用Web Service实现Hello World 327 24.2 使用Web Service实现天气预报 329 24.2.1 创建Web Service天气服务 329 24.2.2 在程序中使用Web Service 330 24.3 小结 332 第25章 在线随机考试模块 333 25.1 随机考试的技术要点 333 25.1.1 随机性 333 25.1.2 防止重复 334 25.2 考题数据库设计 334 25.2.1 设计数据库架构 334 25.2.2 配置项目中的数据库 335 25.3 考题管理功能 338 25.3.1 添加考题 338 25.3.2 编辑和删除考题 339 25.4 在线考试功能 340 25.4.1 随机选取考题 340 25.4.2 判断考题是否重复 343 25.4.3 对比考试答案 344 25.5 小结 345 第26章 Web图表模块 346 26.1 OWC简介 346 26.2 使用OWC组件生成图表 347 26.2.1 使用OWC组件的流程 347 26.2.2 生成柱状图 347 26.2.3 生成饼状图 350 26.3 使用OWC组件生成Excel数据表 352 26.4 小结 353 第27章 Pet Shop 4.0架构分析模块 354 27.1 Pet Shop概述 354 27.1.1 Pet Shop的发展 354 27.1.2 Pet Shop 4.0的安装前提条件 355 27.1.3 Pet Shop 4.0的安装手册 355 27.2 Pet Shop 4.0数据库分析 358 27.2.1 数据库概览 358 27.2.2 Pet Shop 4.0的数据库登录名 359 27.2.3 Pet Shop 4.0基本信息管理数据库——MSPetShop4 361 27.2.4 Pet Shop 4.0用户服务数据库——MSPetShop4Services 362 27.2.5 Pet Shop 4.0订单管理数据库——MSPetShop4Orders 363 27.2.6 Pet Shop 4.0用户配置数据库——MSPetShop4Profile 363 27.3 Pet Shop 4.0项目文件分析 364 27.3.1 加解密“Web.config”配置 364 27.3.2 项目内容概览 366 27.4 Pet Shop 4.0的新功能和新特色 368 27.5 小结 369 第28章 Pet Shop 4.0数据层分析 370 28.1 设计模式介绍 370 28.1.1 工厂设计模式 370 28.1.2 工厂设计模式在Pet Shop 4.0中的应用 374 28.2 数据层的数据库访问 375 28.2.1 数据访问接口IDAL 375 28.2.2 数据访问的实现类 377 28.2.3 数据访问工厂类DALFactory的实现 379 28.3 数据层中的个性配置 381 28.3.1 个性配置接口IProfileDAL 381 28.3.2 个性配置的实现类ProfileDAL 382 28.3.3 个性配置工厂类ProfileFactory的实现 384 28.4 SQL Server数据库缓存依赖 384 28.4.1 缓存依赖接口ICacheDependency 384 28.4.2 缓存依赖实现类TableCacheDependency 385 28.4.3 缓存调用工厂模块CacheDependencyFactory 386 28.4.4 数据库缓存依赖的实现机制 388 28.5 小结 389 第29章 Pet Shop 4.0界面布局模块 390 29.1 Pet Shop 4.0中的MasterPage 390 29.1.1 设计母版页MasterPage 390 29.1.2 添加应用母版页的子页 393 29.1.3 在子页中访问母版页 395 29.2 Pet Shop 4.0中的皮肤 396 29.2.1 创建皮肤文件 396 29.2.2 引用皮肤文件 397 29.3 Pet Shop 4.0中的错误处理 397 29.4 Pet Shop 4.0中的页面验证 398 29.5 小结 399 第30章 Pet Shop 4.0购物篮管理模块 400 30.1 购物篮总体架构 400 30.2 购物篮的数据库设计 401 30.2.1 购物篮表的依赖 401 30.2.2 购物篮表的结构 402 30.3 购物篮的数据访问层DAL 403 30.3.1 购物篮的实体类 403 30.3.2 购物篮的数据访问类 404 30.4 购物篮的业务逻辑层BLL 408 30.5 购物篮的界面层 410 30.5.1 购物篮的界面设计 410 30.5.2 实现添加购物篮商品 412 30.5.3 更新购物篮商品数量 413 30.5.4 计算购物篮中商品总价 414 30.5.5 移除购物篮中商品 415 30.6 匿名用户到验证用户购物篮的转移 416 30.7 小结 417 第31章 Pet Shop 4.0订单管理模块 418 31.1 订单的数据库设计 418 31.1.1 订单数据库结构 418 31.1.2 订单数据库中表关系 419 31.2 订单的数据访问层 420 31.2.1 订单的实体类 420 31.2.2 订单的数据访问类 421 31.3 订单的业务逻辑层 422 31.3.1 订单的数据访问类 423 31.3.2 同步提交订单操作类 424 31.3.3 异步提交订单操作类 425 31.4 MSMQ的使用 426 31.4.1 MSMQ简介 426 31.4.2 MSMQ在ASP.NET中的使用语法 427 31.4.3 Pet Shop 4.0中的消息队列接口 427 31.4.4 Pet Shop 4.0中实现消息处理的类 428 31.5 详细分析订单的异步提交功能 431 31.5.1 创建MSMQ 431 31.5.2 配置应用程序实现异步处理 432 31.5.3 创建Windows服务实现后台订单处理 432 31.5.4 加载异步处理订单的服务 433 31.6 订单的界面层 435 31.6.1 查看订单的设计步骤 435 31.6.2 订单中账单地址Profile 436 31.6.3 订单中的ShippingAddress 438 31.6.4 信用卡信息处理 439 31.6.5 订单确认信息 439 31.6.6 订单提交完成 440 31.7 小结 442 第32章 用WWF制作订单状态管理工作流 443 32.1 WWF工作流组件详述 443 32.1.1 工作流的概述 443 32.1.2 WWF的组成 444 32.1.3 WWF中的预定义活动(Activity) 444 32.2 订单状态管理工作流框架预览 445 32.3 订单状态管理工作流的运行时服务 445 32.3.1 创建Windows服务 445 32.3.2 编译Windows 服务为DLL程序 447 32.4 订单状态管理工作流的活动库(Activity) 448 32.4.1 创建状态工作流 448 32.4.2 设置工作流的开始点和结束点 451 32.5 订单状态管理工作流的运行时引擎 452 32.6 小结 454 第33章 使用WCF构建计算器服务模块 455 33.1 WCF技术详解 455 33.1.1 SOA架构模式 455 33.1.2 什么是WCF 456 33.1.3 WCF的工作原理 457 33.1.4 WCF服务的契约(Contract) 457 33.1.5 WCF服务的绑定(Binding) 458 33.1.6 WCF服务的地址(Address) 458 33.2 使用WCF构建计算器的服务端 458 33.2.1 设计计算器服务契约 459 33.2.2 实现计算器服务契约 460 33.2.3 配置并发布计算器服务 461 33.3 使用WCF构建计算器的客户端 462 33.3.1 配置WCF计算器服务的ABC 462 33.3.2 创建计算机的客户端代理服务 463 33.3.3 正式调用WCF计算器服务 464 33.4 小结 466
相关推荐
技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 Attributes in C# 手痒痒,也来个c# 2.0 object pool 泛型技巧系列:用泛型打造可复用的抽象工厂 体验.net2.0的优雅(四):Provider、策略、控制反转和依赖注入 泛型最佳实践 asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型打造可复用的抽象工厂 泛型技巧系列:如何提供类型参数之间的转换 .NET 2.0 泛型Quiz Visual Studio 2005体验泛型编程 C++ 泛型编程系列讲座之实施 泛型技巧系列:简单类型选择器 C# 泛型简介 我眼中的C#2.0新功能特性 泛型技巧系列:避免基类及接口约束 New Article 不该用Generics实现Abstract Factory的理由 C#2.0-泛型 C#2.0-extern C#2.0-可空类型 C#2.0-分部类 C#2.0-迭代器 C#2.0 的新增功能学习 泛型的序列化问题 .NET 2.0 泛型在实际开发中的一次小应用 C#2.0 Singleton 的实现 .Net Framwork 强类型设计实践 通过反射调用類的方法,屬性,字段,索引器(2種方法) ASP.NET: State Server Gems 完整的动态加载/卸载程序集的解决方案 从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET实现脚本引擎 (CodeDom篇) .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托:一个C#睡前故事 [推荐] - [原创] Microsoft .NET策略及框架概述 卸载Class? Web Form 窗体 如何实现web页面的提
书名:《ASP.NET开发实战1200例》(清华大学出版社.房大伟.吕双) PDF格式扫描版,全书分为23章,共935页。2011年1月出版。 全书压缩打包成3部分,这是第2部分 内容简介   《ASP.NET开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第I卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用ASP.NET进行程序开发的各种知识和技巧。主要包括ASP.NET技术基础、VS 2008环境搭建,还详细讲解了C#语言设计入门,然后从常用Web服务器控件、ASP.NET安全验证控件、数据绑定控件、Web用户控件和ASP.NET导航控件全面介绍了几乎所有ASP.NET控件应用,接着以AJAX无刷新技术及页面模板设计ASP.NET客户端进行了详细介绍,最后以高效网站开发缓存技术、文件I/O处理和图形图像与多媒体方面更高层次地讲解了ASP.NET网站开发技术。本卷共分6篇23章内容,共计600个实例经验技巧。每个实例都是作者精心筛选的,具有很强的实用性,其中一些是开发人员难于寻觅的。 目 录 第1篇 ASP.NET快速入门篇 第1章 搭建ASP.NET开发环境 2 1.1 ASP.NET环境配置 3 实例001 安装和配置Visual Studio 2008开发环境 3 实例002 安装和配置IIS(Web服务器) 7 实例003 安装MSDN帮助编程学习 10 实例004 在VS 2008中设定断点及调试程序 13 1.2 应用Web.Config配置网站 16 实例005 配置Access数据库连接 16 实例006 配置SQL Server数据库连接 18 实例007 配置Session变量的生命周期 19 实例008 限制上传文件的大小与时间 20 实例009 连接默认错误页 21 实例010 配置验证级别 22 第2章 C#语言基础 25 2.1 实用的数据类型 26 实例011 仓库与盒子的学问——数据类型与变量 26 实例012 数据类型之值类型的使用 27 实例013 数据类型之引用类型的使用 30 实例014 数据类型之浅复制:包含引用类型的值类型 31 实例015 按值传递引用类型 33 实例016 按引用传递引用类型 35 实例017 程序性能的优化——装箱和拆箱的 最小化 36 2.2 流程控制和数组的应用 38 实例018 岔路口的选择——这是去医院还是去学校的路 38 实例019 看看你现在是否处于人生的黄金阶段 40 实例020 当前所处月份是地球上的春夏秋冬哪个季节 41 实例021 巧妇的“精打细算”——百钱买百鸡 43 实例022 后台管理登录窗口中用户名及密码的重置 45 实例023 制作一个简单的循环计数器 47 实例024 媳妇儿喜欢的“大乐透”号码 48 实例025 我的“双色球”从小到大的排序号码 50 实例026 明日科技编程全能词典种类及其价格 51 实例027 浓浓思乡之情——李白的《静夜思》 53 实例028 会考考试中的汉字拼音简码 54 实例029 经典算法之歌德巴赫猜想的算法 55 实例030 经典问题之约瑟夫环问题(使用数组解决) 57 实例031 数组与算法之冒泡排序 58 实例032 冒泡排序的改进——快速排序算法 60 实例033 较高级的数组与算法——分法搜索 61 2.3 运算符的应用 63 实例034 加加减减——前缀方式增1和减1运算符 63 实例035 乾坤大挪移——移位运算符的简单应用 64 实例036 制作一个简单的加法计算器(利用算术运算符) 66 实例037 判断合法的用户名称和密码 67 实例038 加密用户密码等重要的数据信息 69 2.4 静态字符串String操作 70 实例039 用户注册中“密码”和“确认密码”是否一致 70 实例040 定位字符串和子串 71 实例041 标准的图书定价及上市时间 72 实例042 由用户名“MR”和密码“明日科技”组成新密码 73 实例043 分行显示我的兴趣与爱好 75 实例044 两种比较不错的密码修改方案 76 实例045 再谈两种比较不错的密码修改方案 77 实例046 智能复制当前输入的数据信息 79 实例047 用户密码重置功能 80 2.5 动态字符串StringBuilder操作 81 实例048 动态追加用户密码信息 81 实例049 客户管理系统中动态组成用户新密码 82 实例050 用户密码设置简单化 83 实例051 动态替换用户密码信息 84 2.6 常用日期操作 85 实例052 获得
<p> <span style="color:#337FE5;"><strong>【为什么还需要学习C++?】</strong></span> </p> <p style="margin-left:0cm;"> 你是否接触很多语言,但从来没有了解过编程语言的本质? </p> <p style="margin-left:0cm;text-align:start;"> 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? </p> <p style="margin-left:0cm;text-align:start;"> 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? </p> <p style="margin-left:0cm;text-align:start;">   </p> <p style="margin-left:0cm;text-align:start;"> 那么C++就是你个人能力提升,职业之路进阶的不之选。 </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p style="margin-left:0cm;"> <strong><span style="color:#337FE5;">【课程特色】</span></strong> </p> <p style="margin-left:0cm;text-align:start;"> 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 </p> <p style="margin-left:0cm;text-align:start;"> 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 </p> <p style="margin-left:0cm;text-align:start;"> 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p class="ql-long-24357476"> <span style="color:#337FE5;"><strong>【学完后我将达到什么水平?】</strong></span> </p> <p class="ql-long-24357476"> 1.对C++的各个知识能够熟练配置、开发、部署; </p> <p class="ql-long-24357476"> 2.吊打一切关于C++的笔试面试题; </p> <p class="ql-long-24357476"> 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 </p> <p class="MsoNoSpacing" style="margin-left:18pt;"> <br /> </p> <div> <br /> </div> <p> <br /> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#337FE5;"><strong>【面向人群】</strong></span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">1.希望一站式快速入门的C++初学者;</span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">2.希望快速学习 C++、掌握编程要义、修炼内功的开发者;</span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">3.有志于挑战更高级的开发项目,成为资深开发的工程师。</span> </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p> <br /> </p> <p> <span style="color:#337FE5;"><strong>【课程设计】</strong></span> </p> <p> 本课程包含3大模块 </p> <p> <strong>基础篇</strong><br /> 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 </p> <p> <br /> <strong>进阶篇</strong><br /> 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 </p> <p> <br /> <strong>提升篇:</strong><br /> 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。 </p> <p> <img src="https://img-bss.csdnimg.cn/202007091130239667.png" alt="" /> </p>
百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Jav
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页