ASP.NET 4.0从入门到精通的目录

ASP.NET 4.0从入门到精通的目录,第1张

丛书序

前言

第一篇 net framework 40简介

第1章 c#与net framework简介 1

11 net framework基础 1

111 什么是net framework 1

112 公共语言运行库 1

113 net类库简介 2

114 net framework的功能 2

12 c#编程语言简介 2

121 net编程语言介绍 2

122 c#程序设计语言 2

123 hello world示例程序 3

13 小结 4

14 常见面试题 5

15 习题 5

第2章 visual studio 2010集成化开发环境 6

21 visual studio 2010 ide介绍 6

211 解决方案资源管理器 7

212 文档窗口 8

213 错误列表和任务列表窗口 9

214 服务器资源管理器 11

215 对象浏览器 11

216 代码编辑器 11

22 visual studio 2010的功能特色 14

221 多目标支持 14

222 javascript代码智能提示和调试功能 15

223 内置的aspnet ajax支持 16

224 web站点与web项目支持 17

225 web设计器的改进 18

226 css功能的增强支持 19

227 嵌套的母版页支持 19

23 小结 21

24 常见面试题 22

25 习题 22

第3章 c# 40语言特色 23

31 局部变量的隐式声明 23

311 如何声明隐式局部变量 23

312 在foreach循环中使用隐式声明 24

313 隐式类型变量的限制 25

314 隐式类型的局部数组 26

315 隐式类型变量的作用 27

32 自动属性 28

321 理解自动属性 28

322 访问自动属性 29

323 自动属性的访问限制 30

324 自动属性和默认值 31

33 对象初始化器 32

331 理解对象初始化器语法 32

332 调用使用初始化语法的自定义构造函数 33

333 内部类型的初始化 34

334 理解集合初始化语法 35

34 扩展方法 36

341 定义扩展方法 36

342 调用扩展方法 38

343 扩展方法的使用范围 39

344 使用扩展方法扩展接口类型 40

35 匿名类型 43

351 理解匿名类型 43

352 匿名类型的内部呈现 44

353 匿名类型的相等语法 45

36 局部方法 46

361 理解局部方法 47

362 使用局部方法 48

37 lambda表达式 49

371 理解lambda表达式 49

372 剖析lambda表达式 52

373 在lambda中使用多语句块 52

374 多参数的lambda表达式 53

38 linq简介 54

381 什么是linq 55

382 linq示例 56

39 小结 59

310 常见面试题 60

311  习题 60

第二篇 aspnet开发基础

第4章 aspnet 40技术简介 61

41 aspnet技术介绍 61

411 aspnet 40的特点 61

412 一个简单的aspnet应用程序 62

42 aspnet程序结构 65

421 aspnet文件类型 66

422 aspnet目录介绍 66

43 aspnet配置 67

431 webconfig配置文件 67

432 嵌套配置设置 68

433 在webconfig中存储自定义设置 71

434 aspnet web站点管理工具wat 72

435 编程读取和写入配置设置 73

436 加密配置块 75

44  web窗体基础 77

441 基于事件的编程模型 77

442 自动回发特性(autopostback) 78

443 web窗体处理流程 79

444 aspnet中的page类 81

445 页面重定向 82

446 html编码 83

45 应用程序事件 83

451 globalasax全局文件 84

452 基本应用程序事件 85

46 小结 86

47 常见面试题 87

48 习题 87

第5章 aspnet服务器控件 88

51  html服务器控件 89

511 html服务器控件简介 89

512 htmlcontainercontrol和htmlinputcontrol类 91

513 html控件类 92

514 编程创建html控件 93

515 处理服务器端事件 94

52  web服务器控件 96

521 基本web服务器控件介绍 96

522 常用控件的属性介绍 99

523 列表控件介绍 102

524 可选择的列表控件 104

525 bulletedlist列表控件 108

526 表格式控件 109

53 验证控件 111

531 验证控件介绍 111

532 验证控件的基类basevalidator 112

533 使用requiredfieldvalidator强制用户输入 113

534 使用rangevalidator控件指定输入范围 113

535 使用comparevalidator比较值 114

536 regularexpressionvalidator正则表达式验证 114

537 customvalidator自定义验证 115

538 使用validationsummary显示验证信息 116

539 使用validationgroup属性 117

5310 编程使用验证控件 118

54 calendar日期控件 119

541 日期控件简介 119

542 日期控件格式化显示 121

543 限制日期 121

544 编程控制日期选择 123

55 广告轮询控件adrotator 123

551 广告文件设置 123

552 adrotator类介绍 125

56 multiview和wizard控件 126

561 multiview多视图控件 126

562 wizard向导控件 128

563 wizardstep向导步骤属性 129

564 wizard事件 130

57 小结 132

58 常见面试题 132

59 习题 133

第6章 aspnet应用程序状态管理 134

61 aspnet状态管理简介 134

62 viewstate视图状态 135

621 视图状态原理 135

622 在视图状态中存储对象 137

623 视图状态的安全 139

63 跨页传递信息 140

631 查询字符串 140

632 跨页回送技术 143

64 使用cookie保存会话信息 146

641 cookie技术简介 146

642 使用cookie保存信息 147

65 会话状态 148

651 会话状态简介 148

652 使用会话状态 149

653 配置会话状态 151

66 应用程序状态 157

67 小结 158

68 常见面试题 158

69 习题 158

第7章 异常处理和日志追踪 160

71 aspnet应用程序异常处理 160

711 异常处理基础 161

712 exception类 162

713 捕捉异常 164

714 异常的嵌套 165

715 自定义异常 166

716 finally语句块 168

72 记录异常 169

721 查看windows事件日志 169

722 写入事件日志 171

723 自定义日志 172

724 编程查看事件日志 173

73 错误页面 176

731 错误模式 176

732 自定义错误页面 177

74 页面追踪 177

741 启用页面追踪 178

742 页面追踪信息 178

743 写入页面追踪信息 181

744 应用程序页面追踪信息 182

75 小结 184

76 常见面试题 184

77 习题 184

第三篇 构建aspnet应用程序

第8章 aspnet中的样式、主题和母版页 185

81 在aspnet中应用css样式 185

811 创建样式 185

812 应用样式 189

82 主题 190

821 创建主题 190

822 创建命名皮肤 192

823 处理主题冲突 193

824 为整个网站应用主题 193

825 添加css样式 194

826 动态应用主题 194

83 母版页 195

831 创建母版页 195

832 默认内容 199

833 母版页和相对路径 200

834 在webconfig中配置母版页 201

835 修改母版页 202

836 动态加载母版页 204

837 母版页的嵌套 205

84 小结 208

85 常见面试题 208

86 习题 208

第9章 aspnet中的站点导航技术 209

91 站点地图 209

911 定义站点地图文件 209

912 使用sitemappath控件 211

913 sitemap类 214

914 url地址映射 215

92 treeview控件 217

921 使用treeview控件 217

922 以编程的方式添加节点 220

923 使用treeview控件导航 220

924 绑定到xml文件 223

925 按需加载节点 225

926 带复选框的treeview控件 226

93 menu控件 228

931 使用menu控件 228

932 以编程的方式添加菜单项 230

933 使用menu控件导航 231

934 一个站点地图示例 232

935 绑定到xml文件 235

936 menu控件样式 237

937 为menu控件应用模板 240

94 小结 240

95 常见面试题 241

96 习题 241

第10章 用户控件和绘图 242

101 用户控件 242

1011 创建用户控件 242

1012 使用用户控件 245

1013 在webconfig中注册用户控件 246

1014 用户控件中公开属性 247

1015 用户控件事件 248

1016 动态加载用户控件 249

102 动态绘图 251

1021 基本绘图 252

1022 绘制一个自定义的 253

1023 在web页面放置自定义 255

1024 格式和质量 257

1025 一个web绘图示例程序 260

103 小结 262

104 常见面试题 262

105 习题 263

第11章 aspnet ajax开发技术 264

111 aspnet ajax基础 264

1111 ajax技术简介 264

1112 aspnet ajax架构 267

112 aspnet ajax服务器端扩展 268

1121 声明scriptmanager控件 268

1122 使用scriptmanager分发自定义脚本 269

1123 在scriptmanager中注册web服务 270

1124 处理scriptmanager中的异常 272

1125 编程控制scriptmanager控件 275

1126 使用updatepanel控件 277

1127 使用多个updatepanel控件 279

1128 编程控制updatepanel控件 282

1129 使用updateprogress控件 283

11210 取消异步回送 285

11211 使用timer控件更新updatepanel 286

113 aspnet ajax服务器端控件扩展 288

1131 安装aspnet ajax control toolkit 288

1132 使用aspnet ajax扩展控件 289

114 小结 290

115 常见面试题 291

116 习题 291

第12章 web部件技术 292

121 web部件基础 292

1211 一个webparts示例程序 293

1212 定制webpartzone控件 299

1213 动态控制显示模式 300

1214 动态编辑webpart 303

122 web部件的个性化设置 304

1221 基本个性化设置 304

1222 个性化范围设置 306

1223 个性化webpart属性 310

123 小结 311

124 常见面试题 311

125 习题 311

第四篇 数据访问技术

第13章 adonet数据访问技术 313

131 adonet基础 313

1311 adonet架构 313

1312 adonet数据提供者 314

132 连接数据库 315

1321 sqlconnection数据库连接类 315

1322 使用sqlconnectionstringbuilder连接字符串 317

1323 关闭和释放连接 318

1324 在webconfig配置文件中保存连接字符串 320

1325 连接池技术 322

133 与数据库交互 325

1331 使用sqlcommand *** 作数据库 325

1332 为sqlcommand传递参数 327

1333 使用sqlcommand执行存储过程 330

1334 使用事务 332

1335 使用dataadapter对象 335

134 管理内存数据 337

1341 了解数据集 337

1342 使用datatable实现内存表 338

1343 使用dataset管理数据 340

1344 使用reader获取只读数据 345

1345 比较dataset和datareader 348

135 小结 348

136 常见面试题 348

137 习题 349

第14章 aspnet数据绑定技术 350

141 绑定技术基础 350

1411 单值绑定 350

1412 重复值绑定 352

142 数据源控件 357

1421 数据绑定的页面生存周期 358

1422 sqldatasource控件 358

1423 使用参数过滤数据 361

1424 更新数据和并发处理 363

1425 编程执行sqldatasource命令 366

1426 objectdatasource控件简介 369

1427 创建业务对象类 370

1428 在objectdatasource中使用参数 374

1429 使用objectdatasource更新数据 376

14210 linqdatasource数据源简介 378

14211 使用linqdatasource更新数据 381

143 小结 381

144 常见面试题 382

145 习题 382

第15章 数据绑定控件 383

151 gridview控件 383

1511 使用gridview控件 383

1512 定制gridview控件的列 385

1513 使用模板列 387

1514 gridview控件的选择功能 390

1515 使用gridview控件创建主从表 392

1516 gridview控件事件 392

1517 编程格式化特定行列值 393

1518 为gridview控件添加统计信息 395

1519 实现分页、排序效果 397

152 listview和datapager控件 398

1521 listview控件简介 398

1522 listview控件的分组布局 402

1523 使用datapager分页 404

153 detailsview和formview控件 405

1531 detailsview控件简介 406

1532 定义detailsview字段 408

1533 在detailsview中显示图像 410

1534 编程 *** 作detailsview 414

1535 formview控件简介 414

154 小结 415

155 常见面试题 416

156 习题 416

第16章 缓存技术 417

161 理解aspnet缓存技术 417

162 输出缓存 418

1621 定义输出缓存 418

1622 查询字符串缓存 418

1623 自定义缓存 419

1624 用户控件缓存 420

1625 使用缓存配置 421

1626 使用httpcachepolicy类控制缓存 422

163 缓存数据 422

1631 添加缓存项 423

1632 指定缓存依赖 425

1633 缓存优先级 425

1634 使用缓存删除通知 426

1635 数据源控件缓存 429

164 缓存依赖 430

1641 文件和缓存项依赖 430

1642 聚合依赖 431

1643 配置sql缓存依赖 432

1644 使用sql缓存依赖 433

165 小结 434

166 常见面试题 435

167 习题 435

第17章 linq技术 436

171 linq基础 436

1711 linq简介 436

1712 延迟执行 438

1713 linq表达式简介 438

172 linq to dataset *** 作内存表 445

1721 linq to dataset简介 445

1722 类型化dataset 448

173 linq to sql *** 作数据库 450

1731 数据实体类 450

1732 datacontext类介绍 451

1733 在aspnet中应用linq to sql 454

1734 自动生成数据实体类 456

1735 生成存储过程方法 457

1736 提交更改 458

174 小结 461

175 常见面试题 461

176 习题 462

第五篇 aspnet应用程序安全

第18章 成员和角色管理技术 463

181 aspnet membership api简介 463

182 使用membership api 464

1821 配置表单身份验证 465

1822 创建membership数据存储 466

1823 配置membershipprovider和数据库连接 468

1824 创建和验证用户 470

183 使用登录控件 471

1831 login控件 472

1832 loginstatus控件 476

1833 loginview控件 476

1834 passwordrecovery控件 476

1835 changepassword控件 478

1836 createuserwizard控件 478

184 使用membership类 481

1841 获取用户列表 482

1842 创建、编辑和删除用户 483

1843 验证用户 485

185 角色和授权 486

1851 url授权 486

1852 文件和文件夹访问授权 487

1853 使用角色管理器 488

1854 使用roles api配置基于角色的授权 489

186 小结 491

187 常见面试题 491

188 习题 492

第六篇 aspnet应用程序实战

第19章 aspnet求职系统 493

191 系统总体设计 493

1911 系统功能介绍 493

1912 系统架构简介 495

192 数据库设计 496

1921 数据表结构 497

1922 数据表关系 500

193 系统核心层设计 500

1931 aspnet ajax客户端脚本扩展 501

1932 webconfig系统配置 506

1933 数据访问类的设计 510

1934 业务对象类设计 517

194 表现层技术分析 520

1941 aspnet ajax技术的应用 521

1942 基于ajax的导航栏 526

1943 母版页 528

1944 主题和皮肤 529

1945 用户控件 530

1946 webparts控件的应用 534

1947 个性化设置 536

195 求职者功能设计 539

1951 发布简历 540

1952 搜索工作职位 545

1953 收藏工作职位 549

196 企业雇主功能设计 551

1961 登记公司信息 551

1962 查看和添加工作职位 554

1963 添加/编辑工作职位 556

197 小结 559

1 PHP, Hypertext Preprocessor, 动态网页开发语言。

PHP,Hypertext Preprocessor,最初在95年问世(那时以前叫Personal Home Page)。PHP最初是制作动态网页的服务器端脚本语言,但

现在PHP已经可以作为command line运行有GUI的standalone的程序。现在是PHP Group在开发和管理PHP的规则,功能等。但PHP大都用在

dynamic webpage scripting上,好象没听过谁用它开发desktop application。

PHP使用率是制作动态网页的几种语言(JSP,ASP,ASPNET, ColdFusion, Ruby, SHTML)中最高的。因为PHP在95年已经问世至今,以有

相当数量的开发者。我们熟知的国际权威百科全书Wikipedia有90%用PHP写的,而且国外流行多年的“校内网”FaceBook 也全部用PHP写

的,同时Yahoo, Sony官方,Pepsi百事官方这些网站都是用PHP的。根据维基百科(Wikipedia)的说法,PHP被超过20,000,000的网站所

用,被超过1,000,000的网页服务器所用。目前到2008五月,PHP最新版本为526。

PHP不仅使用率高,而且能兼容各类平台。它可以在大多数网页服务器上运行(如:MS IIS,Apache),大多数 *** 作系统上运行(如:

Windows, UNIX, Linux)。而且PHP支持很大多数牌子的数据库:MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Gerneric

ODBC等。

结构方面,虽比JSP,ASPNET差点,PHP也有很多Framework可用。微软的ASPNET结构是出名的,JSP的MVC结构也很厉害,所以开发大网

站ASPNET,JSP都很快。而PHP Group也为此付出很大努力,来开发自己特有的结构适应不同类型的大网站的需求。常见的PHP的

Framework有:CakePHP, PRADO, Symfony, Zend等。

另外LAMP结构,是PHP最常用的开发模式,即是配合Linux, Apache, MySQL, PHP,合称LAMP。

2 ASP(Active Server Pages), ASPNET 两个分别是 动态网页开发语言,动态网页开发语言和结构

(1) 关于ASP的淘汰

ASP, Active Server Pages已经过时了, 但因为其出现的早,96年就有了,所以现在有些中小网站还用(但,使用最多最广的是PHP,最

初于95年现世。ASP是微软第一代动态网页开发语言,只能在Windows系统 + MS IIS服务器平台下运行。

Wikipedia, Facebook, 百度等都用PHP,PHP学习的简单度和ASP差不多;JSP稍微难点,JSP用的一般都是银行,购物等安全性较高的网站

,Google也用JSP)。但随着开发者的各种需求,ASP以后可以被ASPNET取代,因为微软停止对其的一切技术维护与功能更新。ASPNET是

革新版本的ASP(注意是“革新版本”,而非“改进版本”),或者说是完全新一代的Dynamic Web Scripting。

ASP代表着传统的dynamic web scripting,与ASPNET没什么关系,学了确实也没用。因为ASP不象CGI(Common Gateway Interface),

CGI是动态网站制作的始祖,所有ASP,JSP,PHP什么的都根据CGI演化而来,而且ASP,PHP,JSP都包含了些 CGI的东西;而ASP却没有被

衍生出任何新技术,ASPNET也不算基于ASP,只能说ASPNET开发理念,library,功能完全是基于NET的其它组件。

其实PHP,JSP,ASP明白其中一种,其它的都很容易学会了。如果非要学学传统的dynamic web scripting,那就学学PHP吧,不比ASP难,

但比ASP功能多,稳定性好,PHP5运行速度也比ASP快很多(JSP稍难因为要学点 Java)。学了PHP或JSP什么的,对学ASPNET有好处,而

且还可以直接用PHP,JSP进行开发。去google差差英文资源,有评价PHP 最好的,有评价JSP最好的,还从没有听谁说过ASP最好。

ASPNET毕竟在NET中,所以ASPNET还是有相当地位的。

(2) 关于ASPNET的优势

ASPNET是微软NET Framework的一部分。伴随NET 10在2002的问世,ASPNET也出现在动态网页开发语言的家族中(与

PHP,JSP,ColdFusion, Ruby, SHTML等并行了)。

功能上,ASPNET比ASP有更强大的library, 更好的稳定性。 ASPNET可以使用NET Framework中所有组件(也就是说NET能实现的,

ASPNET一样能实现),功能上显然强大于传统功能单调的ASP。最强的技术支持Web Service, 而且有NET的所有library做后盾。而且

ASPNET 在NET 35中还有微软专门为AJAX开发的功能--ASPNET AJAX。

结构上,传统的ASP把所有代码混为一团,简单的用<%%>把HTML和VBScript(或JScript)分开,实现动态输出 HTML。因为ASPNET模仿

JSP的MVC网页结构,微软为ASPNET开发了自己的Code-Behind结构,将 presentation(文件拓展名:aspx)和business logic(文件拓

展名:cs或vb等)分离。同时Code-Behind模式也实现了让ASPNET开发者用NET中最普通Winform的开发模式来开发网站,方便非网页开

发者制作动态网站。所以ASPNET更容易维护,比ASP更适合于Enterprise Level 的大网站开发。

由于ASPNET比JSP,PHP等更接近于NET Winform的开发。如Tree View, Datagrid View(即高级Table)等高级UI,都可以直接用

ASPNET中的Web Control来实现,这比传统的使用JavaScript + XTHML + CSS的DHTML开发方式简单不少,也更好维护。同时ASPNET开发

这可以定义自己的User Control,制作自己特别的一种UI(如网站LOGO,版权等部分),而且此User Control可以被存为ascx文件,方

便让每一页(aspx)来使用。

运行速度上,ASPNET模仿了JSP的预编译机制(Pre-Compile)。使编译好的代码(MSIL语言)在网页服务器上运行。这样比传统的ASP,传统

PHP(PHP4以前版本)更快,因为传统的ASP是直接运行开发者写的Script,相当于每运行一次,就得编译一次那么慢。 ASPNET可以用

VB, C#, J#等所有NET Framework的语言开发(但其实每种语言做的东西都一样 就象山东话, 东北话, 写出来都是中文:)

不过ASPNET对出学者可能有点难 因为它其实在模拟desktop application development,即Winforms开发的模式, 不象传统的JSP,

PHP, ASP这样容易明白。传统的Dynamic Server Scripting, 象PHP 5, 这是现在最简单的, 最有效的了。( 那个JSP也不难 如果有钱

还可以考虑下Adobe ColdFusion。)

ASPNET的新潮的Dynamic Server Scripting, 在其带动下SUN也推出自己的JavaServer Faces (其实是拓展JSP,但JSF无法取代JSP), 和

ASPNET很象, 也有很多Web Control(JTable, JTree),同时JSF也曾强了对WEB SERVCIE的支持, 也很适合ENTERPRISE LEVEL 的网站。

(3) ASP与ASPNET的优劣总结:

-- ASP已经被微软停止更新;ASPNET却在NET(10, 20, 30, 35)中突飞猛进;

-- ASP在96年出现,并没有引领一个潮流,PHP,ColdFusion都出现于95年,引领了整个潮流;ASPNET引领新的动态网站开发潮流,SUN

的JSF(JavaServer Faces)就是与ASPNET极其相似;

-- ASP大多被用在是中小网站;PHP被Wikipedia, Facebook, 百度所用,JSP被GOOGLE所用;

-- ASP不支持Web Service; ASPNET支持Web Service。要是了解NET中的Web Service在大组织系统中的重要性,就能立杆见影的看出差

-- ASP开发AJAX比较麻烦;而ASPNET专门用AJAX控件,更方便。要是了解Web 20,那么AJAX是什么地位,就不用我说了吧。

-- ASPNET模仿JSP,是pre-compile的;ASP不compile,直接运行Script的速度显然没有compile之后的快。

-- ASPNET的唯一缺点,就是开发用的IDE--Visual Studio Professional比较贵(express版免费的功能太少);ASP的唯一优点是,其

学起来最简单,跟PHP一样简单,比JSP简单,更比ASPNET简单几倍。

3 NET Framework

NET Framework的概念就大了。NET Framework是微软开发的一种软件开发技术。主要用来开发MS Windows系统上的各类软件。NET主要

包含一个庞大的library(解决常见编程问题)和一个virtual machine(管理程序的运行)。可以说Windows是微软的命根:),所

以NET就是微软占领软件市场的关键。

NET Framework的library叫做BCL, Base Class Library,包含了在各种领域的大范围的编程需要,如user interface用户界面,data

access数据接入,database connectivity, cryptography, web application development网站开发,numeric algorithms数学计算,

network communications网络交流等。开发者利用各种BSL来构成自己的代码,进而开发出多样的应用程序。

NET写出的程序在CLR, Common Language Runtime上运行。CLR是一个application virtual machine来帮助运行开发者写的程序。CLR提

供很多重要功能,如:security安全,memory management内存管理,exception handling错误控制。

BSL,CLR构成了强大的NET Framework。

NET Framework主要安装在Windows Server 2008, Windows Vista。小版本的NET Framework还安装在Windows Mobile系统上。但是家用

Windows XP等系统一样可以安装NET Framework来运行用NET写的程序。

平时在学校学习,通常学习NET中的三个主要技术:Winforms(桌面应用程序开发,就是平时普通程序如QQ,Skype可以用它,但其实QQ

用C,C++写的), ASPNET(网页,平时在IE,FireFox上看的网页可以用它), ADONET(接入数据库,处理相关数据)。但NET不是一种

语言。写NET程序可以用任何NET支持的语言,如:C#, VBNET, J#等等。明白其中一种就可以了。

NET概念挺大,东西也非常非常多。与之相似的技术有SUN的Java技术(分三个技术部分Java SE, Java EE, Java ME)。

先简单回顾下aspnet过去十年

mvc流行前

aspnet的服务端控件,将html和js一起封装,很多客户端事件自动通过生成的js将数据重新post回服务端。而对于很多刚入门的小伙伴来说,仅仅靠拖放控件和写C#代码就可以实现一个可用的Web项目,大大降低了入门门槛。相应的,服务端控件这种过度耦合的设计带来了很多缺点:自定义控制难,难以纯粹将前后端分离,导致aspnet从业人员既不能精通前段技术,又不能涉猎更多的后端技术(生态问题)。

这个年代,net被贴上了“拖放控件”的标签。

mvc流行后

微软推出了aspnetmvc,很多公司已经开始尝试前后端分离。就模式上面来说,已经和其它语言平台基于mvc的web项目开发模式无异。

但是aspnet本身的服务框架太杂乱,尤其是艰难(如果你留意过,甚至可以说难产)支持asyncawait异步编程后,他的同步上下文模型缺点太大:首先是源码的结构混乱,其次是使用过程很多人容易造成死锁,异步方法使用不当导致请求已返回上下文已释放然后找不到同步对象导致的异常。问题的根源是大部分程序员对线程了解不深,如果项目有正确的规范用法还好,一旦没有,产生异常很多人根本不知道问题出在哪里。博客园改造过程中就出现过的死锁,有兴趣的可以去看看博客园官方博客写过。

aspnetcore

新应用程序模型设计和代码实现,我非常喜欢。其它的不说,看看那简洁的Reqeust和Response对象,是不是就会让你欣喜?再看看中间件管道,上下文(Context)通过委托链链一路传递,再也不用晦涩的同步上下文,也移除了和Windows安全相关的特征。

整个架构更加清晰,喜欢做扩展的人绝对会有一日看尽长安花的快感。

自然性能也不用说,可以关注github上微软之前做过的除了mvc之外的性能测试对比。

net生态

拥抱开源后,netcore,standard,aspnetcore,efcore等一系列实现全部都有了,明年的netcore30还会包含客户端模型(wpf和winform,只能在windows下使用)。

github上面aspnet,dotnet,dotnet-architecture等分支包含大量微软直接维护的开源项目。

开源社区大部分的项目已经跟进将三方组件基于standard标准打包。

微软也久违地把散乱的文档汇集到docs子域名下

万事剧本,就欠生态!如果apache基金会下面的重要项目都有net的分支,相信依靠netcore必定可以再次抢占不少的份额。

前景

微服务流行后,其实内部可以混合多种平台提供服务,用aspnetcore做对三方组件需求不太大的业务服务是完全的可以的,基于微软一贯的作风,开发效率是很高的。

其实现在很多内部系统在用net,只是面向互联网相关的项目,更加需求丰富的三方资源,采用net的比较少。不过很多大的公司都有net的分支团队。毕竟在桌面和开发效率上的优势,还是有他存在的价值。

aspnet到底会如何发展,个人感觉还是要看社区的反应,要看生态是否能逐步丰富起来。

看在微软这么努力的份上,个人挺希望他能够扳回一局。

所以?

眼光放长远一点,平台只是我们的工具,一个IT人不应当把自己的技术范围限定到某一个平台。多学多积累,实际项目中应该针对需求、架构以及团队做出选择。

比如Java和net同时掌握,各取所长,基于他们重叠性较高的原因,学习成本并不高。何况绝大部分的知识和平台并无关系。

个人见解纯手打,欢迎大家评论或者提出意见。

具有7年项目开发与实施经验的实力作者,以大量实例,深入浅出地介绍ASPNET35的最新技术,结合完全商业化的应用项目,真实再现ASPNET35技术的综合运用。

20节视频教学课程,作者倾心奉献的535分钟多媒体教程,详尽讲解ASPNET35关键技术,另附《ASPNET35从入门到精通(基于C#)》完整范例程序及相关数据库文件。

你看下这篇文章可以吗,ASPnet方面的论文

现代远程教育成为教育信息化的重要实践内容和研究方向之一,硬件、软件和教育资源构成了现代远程教育的三大基础,网络课程则是现代远程教育资源的重要组成部分。

在现代远程教育中,教学活动围绕着网络课程展开,网络课程是实施现代远程教育目标的基本单元和核心因此运用较新的动态网络编程技术来开发适用于现代远程教育的高质量的网络课程成了我国发展现代远程教育的一个非常重要而迫切的课题。 网络课程是通过网络表现的某门学科的教学内容及实施的教学活动的总和。

网络课程的设计与制作是一项很复杂的任务,必须运用多种计算机技术才能够实现。现有网络课程编程技术有:ASP、PHP、JSP、VBScript 和JavaScript 等,但这些技术均在不同程度上都存在着程序复用程度低、重复劳动大、浏览速度低、程序源代码安全性差等一些缺陷和不足。

随着Internet 和信息技术的发展,现有网络课程日益彰显的技术缺点及不足,势必又制约着网络课程建设工程的发展。

ASPNET 是基于NET 框架体系结构的一部分,它为网络课程的建设与开发提供了强有力的技术支持和保障。与现有网络课程开发技术相比,提供了许多重要的优点如:简易性、安全性、可管理性等,且ASPNET可用Microsoft Visual Studionet、Dreamweaver 等多种工具进行开发,大大地加快了开发效率。

ASPNET从整个网页的执行架构、编写程序使用的语言和程序设计的方法上都较传统编程技术发生了质的改变。

论文在对网络课程开发的教学理论基础和现有网络课程开发技术分析的基础上,从分析NET 框架着手,具体解析了ASPNET 编程技术。其后,

介绍了利用ASPNET 技术实现了《网络规划与设计》网络课程的开发。该网络课程利用Web Form(网络窗体)技术设计动态页面,用ADONET 实现数据库的连接与访问,

用SQL Server 2000 实现数据库的管理,用Dreamweaver MX 2004 开发工具实现静态页面的设计,用Web Services(网络服务)实现网络的调用。

最后介绍了学生在线自测系统、在线答疑系统的总体设计与实现,且对其各模块的实现作了详细探讨,同时附有少量的重要源程序代码。

打开Internet 信息服务 新建虚拟目录 按提示配置好站点后右击虚拟目录中的主页-浏览 如果还提示要下载请检查IIS是否安装正确,版本跟系统是否对应

一般来说会在主页中 mainasp 加载 headasp,在DW中打开mainasp找找 <!#include file="headasp"-->类似的代码,看看这个路径是否正确,然后打开这个headasp文件看看是否能正常运行

本书学习导航如下:

 要认识Web开发并掌握ASPNET的开发语言的语法,请仔细阅读第0~6章。

 要了解ASPNET网络开发的核心对象,请仔细阅读第3~6章。

 要学习Visual Studio 2008的ASPNET 35应用,请仔细阅读第1~10章。

 要学习ADONET开发,请仔细阅读第11~14章。

 要掌握ASPNET 35网络开发的一些高级技巧,请仔细阅读第15~22章。

 要学习ASPNET 35开发大型案例,请仔细阅读第7~12章,第21~22章。

 要掌握ASPNET在XML和AJAX上的特长,请仔细阅读第13章和第20章。  0 学习Web开发必备知识 22

01 基础概念 22

011 什么是网页 22

012 网页开发技术 22

013 Web开发相关技术 24

02 搭建开发环境 24

021 安装Visual Studio 2008 24

022 Visual Studio 2008 IDE简介 26

023 实现第一个ASPNET程序 27

03 IIS 7 Web服务配置 28

031 安装IIS 7 28

032 配置 IIS 7支持的NET版本 29

033 浏览第一个ASPNET程序 31

04 C# 30语言基础 32

041 C#简介 32

042 变量和常量 32

043 运算符 33

044 流程控制 35

045 隐性局部变量 37

046 Lambda表达式 37

047 LINQ集成查询概述 38

05 编码规范 39

051 好的编码结构 39

052 好的注释风格 40

053 好的命名规范 41

054 避免文件过大 41

承上启下 42

 1 走进ASPNET 35 44

11 ASPNET 35概述 44

111 ASPNET 35——动态页面开发利器 44

112 创建网站 45

113 设计网站 46

114 网站的前台和后台 46

12 ASPNET 35动态网页剖析 48

121 前台客户端的事件处理 48

122 后台服务器端的事件处理 49

123 网站处理网页的顺序和原理 50

承上启下 51

 2 C#面向对象的特性 52

21 面向对象编程概述 52

211 什么是类和对象 52

212 用C#如何创建类 53

213 用C#如何创建对象 54

214 什么是面向对象编程 54

22 面向对象的技术 55

221 接口 55

222 用C#如何创建接口 55

223 继承 56

224 用C#如何实现继承 56

225 多态 57

226 用C#如何实现多态 58

23 面向对象开发的简单实例 58

231 面向对象功能设计 58

232 面向对象的类设计 58

233 面向对象的应用 59

承上启下 61

 3 ASPNET核心对象 62

31 Page类 62

311 Page类概述 62

312 探索页面生命周期 63

32 ASPNET核心对象 65

321 利用Response输出信息 66

322 利用Request获取页面输入 67

323 利用Server获取服务器信息 69

33 共享数据 71

331 利用Application共享数据 72

332 使用Globalasax文件 73

333 利用Session共享数据 74

334 利用Session验证用户 76

承上启下 78

 4 字符串 79

41 字符串String 79

411 比较字符串 80

412 判定首尾字符串 82

413 判断是否包含子串 82

414 定位字符和子串 82

415 格式化字符串 84

416 连接字符串 84

417 拆分字符串 85

418 插入字符串 86

419 填充字符串 86

4110 删除字符串 86

4111 复制字符串 87

4112 替换字符串 88

4113 更改大小写 88

42 动态串StringBuilder 88

421 比较String 89

422 设置容量 89

423 追加字符串 90

424 插入字符串 90

425 删除字符串 91

426 替换字符串 91

43 正则表达式Regex 91

431 正则表达式简介 92

432 构造正则表达式 92

433 使用Regex类 94

44 字符编码 95

441 字符编码概述 95

442 字符编码类 96

承上启下 98

 5 数组和集合 100

51 数组 100

511 什么是数组 100

512 创建数组 102

513 数组基类Array 103

514 访问数组元素 104

515 转化元素类型 105

516 遍历数组元素 106

517 排序数组元素 107

518 查找数组元素 109

519 反转数组元素 110

5110 复制数组 111

52 集合 112

521 什么是集合 112

522 列表类ArrayList 113

523 创建列表 114

524 遍历列表 114

525 添加元素 115

526 插入元素 116

527 删除元素 117

528 简单排序 118

529 复杂排序 118

5210 查找元素 119

53 队列 120

531 什么是队列 120

532 队列类Queue 120

533 创建队列 120

534 元素入队 121

535 元素出队 122

54 堆栈 122

541 什么是堆栈 122

542 堆栈类Stack 123

543 创建堆栈 123

544 元素入栈 123

545 元素出栈 124

承上启下 125

 6 调试和异常处理 126

61 程序调试技术 126

611 调试语法错误 126

612 调试逻辑错误 127

62 异常处理机制 129

621 异常类Exception 129

622 使用try-catch处理异常 130

623 异常处理的原则 131

承上启下 132  7 标准服务器控件 134

71 WebControls概述 134

711 什么是服务器控件 134

712 WebControls空间 135

72 输入控件 137

721 按钮Button 137

722 文本框TextBox 141

723 复选框CheckBox 143

724 单选按钮RadioButton 145

725 超级链接HyperLink 147

726 链接按钮LinkButton 148

727 图像Image 150

728 图像按钮ImageButton 151

729 图像热区ImageMap 152

7210 项列表BulletedList 154

73 列表控件 155

731 下拉框DropDownList 156

732 列表框ListBox 158

733 复选框列表CheckBoxList 159

734 单选按钮列表RadioButtonList 162

74 容器控件 163

741 面板Panel 163

742 表格Table 165

75 其他控件 169

751 广告栏AdRotator 170

752 日历Calendar 171

承上启下 174

 8 HTML服务器控件 175

81 HtmlControls概述 175

811 比较标准控件 175

812 HtmlControls空间 176

82 输入控件HtmlInput 177

821 按钮HtmlInputButton 177

822 单行文本框HtmlInputText 180

823 多行文本框HtmlTextArea 182

824 隐藏文本框HtmlInputHidden 182

825 文件框HtmlInputFile 184

826 复选框HtmlInputCheckBox 186

827 单选框HtmlInputRadioButton 188

83 容器控件HtmlContainer 189

831 表格HtmlTable 190

832 列表框/下拉框控件HtmlSelect 192

84 图像控件HtmlImage 195

承上启下 197

 9 数据验证控件 199

91 概述 199

92 验证控件 200

921 必填验证控件RequiredFieldValidator 200

922 比较验证控件CompareValidator 202

923 范围验证控件RangeValidator 205

924 正则验证控件RegularExpressionValidator 206

925 自定义验证控件CustomValidator 208

926 验证摘要控件ValidationSummary 211

93 注册页面示例 213

承上启下 216

 10 用户控件 217

101 概述 217

1011 什么是用户控件 217

1012 何时使用用户控件 217

102 使用用户控件 218

1021 创建用户控件 218

1022 添加用户控件 219

1023 定义用户控件属性 220

1024 定义用户控件事件 221

1025 比较Web页面 221

承上启下 222  11 ADONET 224

111 概述 224

1111 ADONET的功能 224

1112 ADONET基本结构 225

1113 SystemData空间 225

112 连接数据库 226

1121 SqlConnection类 226

1122 连接数据库 227

1123 使用webconfig配置连接 228

1124 断开数据库 229

113 *** 作数据库 230

1131 SqlCommand类 230

1132 查询数据 231

1133 SqlDataReader类 232

1134 *** 作数据 233

114 内存数据对象 234

1141 SqlDataAdapter类 235

1142 DataSet类 237

1143 DataTable类 239

115 SQL基础 243

1151 SQL基础 243

1152 创建数据库CREATE DATABASE 244

1153 删除数据库DROP DATABASE 244

1154 创建表CREATE TABLE 245

1155 修改表UPDATE TABLE 246

1156 删除表DROP TABLE 248

1157 插入数据INSERT 248

1158 修改数据UPDATE 249

1159 删除数据DELETE 249

11510 SQL简单查询 249

11511 使用GROUP BY对结果分组 252

11512 使用DISTINCT对结果去重 253

11513 使用ORDER BY对结果排序 253

11514 使用函数和表达式 254

11515 使用运算符 254

116 LINQ基础 254

1161 LINQ查询数据库原理 254

1162 在项目中添加数据库映射类 255

1163 使用LINQ *** 作数据库——查询、增、删、改 256

承上启下 257

 12 数据控件 258

121 概述 258

122 网格视图GridView 259

1221 认识GridView 259

1222 GridView中的列类型 260

1223 自动生成数据列 261

1224 使用BoundField列显示数据 264

1225 使用CommandField列编辑数据 266

1226 使用CommandField列删除数据 268

1227 使用CommandField列选择数据 270

1228 使用HyperLinkField列链接数据 271

1229 使用ButtonField列灵活 *** 作数据 273

12210 分页浏览数据 275

123 列表控件 276

1231 把DataSet绑定到DropDownList 277

1232 把DataReader绑定到ListBox 279

1233 把DataTable绑定到CheckBoxList 280

1234 把HashTable绑定到RadioButtonList 282

124 使用LinqDataSource数据源控件 284

1241 使用SqlDataSource生成支持增删改的GridView 284

1242 使用LinqDataSource生成支持增删改的GridView 285

125 DataPager控件和ListView控件 287

1251 ListView绑定数据 287

1252 ListView结合DataPager控件实现数据分页 288

承上启下 289

 13 XML数据 *** 作 290

131 NET框架中的XML 290

1311 什么是XML 290

1312 XML文档对象模型DOM 291

1313 SystemXml命名空间 292

132 读取XML 292

1321 使用XmlDocument读取XML 293

1322 使用XmlReader读取XML 293

1323 使用XmlNode读取节点 297

133 查询XML 298

1331 基本XPath表达式 299

1332 限定查询范围 299

1333 使用函数设置查询条件 300

1334 使用运算符设置查询条件 300

1335 使用通配符模糊匹配 301

1336 综合示例 301

134 修改XML 302

1341 创建新DOM节点 302

1342 创建DOM节点属性 303

1343 修改DOM节点 304

1344 删除DOM节点 305

1345 保存DOM树 306

135 与DataSet交互 307

1351 使用DataSet加载XML数据 307

1352 使用XmlDataDocument加载关系数据 309

承上启下 310

 14 文件 *** 作 311

141 *** 作文件 311

1411 创建文件 312

1412 复制文件 312

1413 重命名文件 312

1414 删除文件 313

142 读写文件 313

1421 使用StreamWriter写入文件 313

1422 使用StreamReader读取文件 314

承上启下 315  15 母版页 317

151 静态母版页 317

1511 创建母版页 318

1512 向母版页添加控件 319

1513 使用母版创建内容页 320

1514 挖掘母版页的机制 321

152 与母版页交互 322

1521 母版页和内容页的生命周期 322

1522 母版页内部的控件事件 323

1523 在母版页中访问内容页控件 324

1524 在内容页中访问母版页控件 325

153 动态选择母版页 326

承上启下 328

 16 站点导航系统 330

161 ASPNET导航系统概述 330

1611 导航概述 331

1612 从网站到导航控件 331

162 站点地图SiteMap 332

1621 SiteMap概述 332

1622 用SiteMapNode构造SiteMap 333

1623 用SiteMapProvider提供数据 333

1624 用默认SiteMapProvider提供数据 334

1625 用个性配置SiteMapProvider提供数据 337

163 导航控件 339

1631 使用SiteMapPath导航 339

1632 使用TreeView导航 341

1633 使用Menu导航 343

164 可编程导航 345

1641 为网站配置多个SiteMapProvider 345

1642 用XML创建TreeView 348

1643 用XML创建Menu 350

承上启下 351

 17 样式和主题 352

171 样式表CSS 352

1711 什么是CSS 352

1712 指定HTML元素的样式 353

1713 指定HTML服务器控件样式 355

1714 指定标准服务器控件样式 355

1715 CSS的基本语法 357

1716 利用VS2008创建样式表 360

172 主题和外观 361

1721 什么是主题和外观 361

1722 建立主题和外观 362

1723 为所有页面指定主题 364

1724 为特定页面指定主题 364

1725 为特定控件指定主题 365

1726 动态指定主题和外观 365

承上启下 366

 18 Web Part 367

181 概述 367

1811 先睹为快 367

1812 认识Web Part 368

1813 页面管家WebPartManager 369

1814 用户数据库配置 370

182 个性化设置页面 370

1821 使用WebPartZone划分页面 371

1822 个性化设置页面布局 373

1823 向页面添加Web Part控件 375

1824 编辑Web Part控件的属性 378

183 Web Part之间的通信 380

承上启下 382

 19 成员和角色管理 384

191 成员服务 384

1911 成员服务概述 384

1912 Membership类 385

1913 创建新用户 386

1914 验证用户身份 391

1915 MembershipUser类 392

1916 获取用户信息 393

192 成员管理控件 394

1921 成员管理控件概述 394

1922 使用Login控件登录用户 395

1923 使用CreateUserWizard创建新用户 396

1924 使用LoginName得到用户名 398

1925 使用LoginStatus显示登录状态 398

1926 使用ChangePassword修改密码 399

1927 使用PasswordRecovery找回密码 399

193 角色管理 400

1931 角色管理概述 401

1932 Roles类 401

1933 配置角色管理 402

1934 使用管理工具管理角色 403

1935 使用角色控制页面行为 405

承上启下 408

 20 AJAX程序设计 409

201 认识AJAX组件 409

202 脚本控制器ScriptManager 409

2021 脚本控制器ScriptManager的结构 410

2022 使用ScriptManager调用脚本文件 410

2023 ScriptManager调用Web服务 411

2024 动态注册ScriptManager 413

203 代理控制器ScriptManagerProxy 414

2031 用ScriptManagerProxy代理ScriptManager 414

2032 在母版页中应用ScriptManagerProxy 414

204 局部更新控件UpdatePanel 416

2041 UpdatePanel控件的结构 416

2042 局部更新的简单示例 417

2043 UpdatePanel的属性UpdateMode和ChildrenAsTriggers 418

2044 UpdatePanel的触发器Triggers 419

2045 动态更新UpdatePanel的内容 420

205 更新进度提示控件UpdateProgress 421

2051 认识UpdateProgress 421

2052 UpdateProgress简单实例——实现代码更新提示 422

206 定时控件Timer 423

2061 认识Timer 423

2062 使用Timer控件定时更新实例 423

2063 使用一个Timer定时更新多个UpdatePanel实例 424

承上启下 425  21 Web系统的多层结构 427

211 Web系统的三层结构 427

212 多层结构之NorthWind 428

2121 整体结构 428

2122 数据访问层DAL 428

2123 业务逻辑层BLL 431

2124 用户表示层UI 432

承上启下 433

 22 三层结构的新闻管理系统 434

221 新闻管理系统功能预览 434

222 数据库设计 435

2221 数据库设计注意事项 435

2222 数据库中各表结构 436

2223 创建网站并映射表实体 438

223 网站整体布局设计 439

2231 母版页设计 439

2232 网站三层结构设计 440

224 网站会员管理功能 440

2241 会员注册功能 440

2242 会员登录功能 442

2243 会员资料修改功能 444

2244 在线会员资料统计功能 447

225 新闻分类功能 448

2251 添加新闻分类 448

2252 修改新闻分类 450

2253 删除新闻分类 452

226 新闻管理主要功能 454

2261 添加新闻 454

2262 编辑新闻 457

2263 浏览和删除新闻 459

227 公告管理功能 462

2271 添加公告 462

2272 编辑公告 463

2273 浏览和删除公告 466

228 友情链接管理功能 468

2281 添加友情链接 468

2282 浏览和删除友情链接 469

229 评论管理功能 471

2210 会员浏览网站主要功能 473

22101 浏览新闻功能 473

22102 浏览公告功能 475

22103 浏览新闻 477

22104 其他普通用户功能 478

2211 一些网站 *** 作技巧 478

22111 上传文件 479

22112 创建并引用用户控件 479

2212 网站的一些主要截图 480

承上启下 481

 23 简易论坛系统 482

231 AJAX控件包 482

232 论坛的功能简介 483

233 论坛中的AJAX技术应用概况 484

234 论坛的数据库设计 484

2341 配置存取ASPNET服务的数据库 484

2342 创建论坛中的数据表 486

2343 论坛中数据表之间的关系 486

235 论坛的数据库设计 487

2351 配置存取ASPNET服务的数据库 487

2352 配置存取ASPNET服务的数据库 488

236 发表留言主题的功能 489

2361 设计发表留言功能的布局 490

2362 实现发表留言功能的主要方法 492

237 浏览留言主题的功能 494

238 留言回复的功能 496

2381 显示所有的回复 496

2382 添加回复 498

2383 修改回复模板支持AJAX 501

2384 为删除按钮添加确认提示 503

239 论坛短消息功能 504

2391 发送短消息 504

2392 接收短消息 506

2393 AJAX显示短消息提示 508

2310 用户自定义界面风格功能 510

23101 启用ASPNET的Profile配置 510

23102 使用AJAX ProfileService实现个性化界面定制 511

总结 514

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/12183727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存