知识大全 .NET中容易混淆的几组重要概念
Posted 框架
篇首语:贪婪是最真实的贫穷,满足是最真实的财富。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET中容易混淆的几组重要概念相关的知识,希望对你有一定的参考价值。
.NET中容易混淆的几组重要概念 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
许多朋友在学习和开发 NET程序的过程中经常发现一些误用 NET概念的情况 本文将对AJAX LINQ Lambda等相关的概念进行梳理 希望在明确这些概念之后 大家能够把注意力集中在对于具体问题的分析解决上 而不要让沟通成为瓶颈
在这篇文章中 希望澄清三组概念 它们是
◆AJAX / AJAX框架 / AJAX NET (Professional) / ASP NET AJAX ◆LINQ / LINQ to SQL / LINQ to XXX ◆Lambda Expression / Expression Tree / 匿名方法
AJAX / AJAX框架 / AJAX NET (Professional) / ASP NET AJAX
这是我见过的混淆最多的一组概念 不过当去年AJAX技术如火如荼 AJAX框架层出不穷 而微软又推出ASP NET AJAX框架之后 这四个概念之间的混淆也愈发严重起来了 我经常能看到这样的问题
◆我在用AJAX技术时不知道怎么在UpdatePanel里…… ◆我用AJAX NET框架调用Web Service时……
这是非常典型的概念混淆 上面两句话的AJAX与AJAX NET都应该使用ASP NET AJAX替换 关于这几个概念的区别我《深入浅出ASP NET AJAX》系列WebCast多次进行解释 不过收效似乎并不明显 于是我打算在这里再进行一下说明
AJAX是Asynchronous JavaScript and XML缩写 这个概念代表的是一种技术 当您在说 我在项目中使用了AJAX技术时 只是代表了您使用客户端XMLHttpRequest对象与服务器端进行异步通信 不过因为随着AJAX技术的运用往往会带来丰富的客户端效果 因此对AJAX技术的广义理解也可以认为这是一种操作客户端DOM而带来丰富效果的技术(这个 广义 的描述其实并不准确 大家明白老赵的意思就可以了)
AJAX框架是一套辅助开发人员使用AJAX技术的代码包(库 etc ) 一个AJAX框架的目的一般是对XMLHttpRequest对象的使用进行封装 并提供一些操作DOM元素或者实现特殊效果的 捷径 成熟的AJAX框架有很多 它们可以被分为 以客户端为中心 和 面向特定服务器技术 两大类 前者的优秀代表有(排名不分先后) Prototype jQuery Mootools YUI Dojo等等(最后两个其实更接近一套客户端界面库 也就是 广义 的AJAX框架) 而后者的典型代表既是AJAX NET和ASP NET AJAX了——当然 也有优秀的AJAX框架面向其他服务器技术 在此不提
AJAX NET (Professional)是ASP NET平台上著名的AJAX框架 诞生于 年 月(虽然正式命名为AJAX NET则是在两个月之后) 作者为Michael Schwarz
同年 月 Michael为AJAX NET提供了更丰富的功能(主要是安全性方面) 并将其改名为AJAX NET Professional AJAX NET提供的最主要的(也是唯一)的功能就是异步调用服务器端方法 可谓非常纯粹的 基于数据 的AJAX使用方式 这个框架是一个个人作品 有支持 NET 和 的版本 它并不属于微软官方 目前已经停止更新
ASP NET AJAX的Code Name为 Atlas 在CTP向Beta版转移时曾经发生过翻天覆地的变化 ASP NET AJAX中包含了UpdatePanel等控件 可以非常透明地为现有的ASP NET WebForms应用程序添加AJAX效果 此外还提供了客户端异步调用Web Services的方法 使开发人员也能够使用面向数据的方式使用AJAX技术 值得一提的是ASP NET AJAX的 附属品 相当丰富 例如ASP NET AJAX名为 Microsoft AJAX Library 的客户端部分是一个纯客户端AJAX框架 提供了面向对象类型系统 浏览器兼容层 异步通信层等多种基础组件 ASP NET AJAX的开源扩展包 AJAX Control Toolkit 包含了数十个可以直接使用的AJAX服务器端控件 这样开发人员能够轻松地添加丰富的客户端效果 同时 官方还为ASP NET AJAX提供了 非正式 地扩展包 其中的History等优秀控件也将加入未来版本的ASP NET AJAX框架中 ASP NET AJAX是官方出品的AJAX框架 目前已经被集成到ASP NET 中去了 因此其版本号也从ASP NET AJAX 一下子 跃升为 ASP NET AJAX 如果您看到了这些版本号也请不要疑惑 其实ASP NET AJAX 相对于ASP NET AJAX 来说只是修补了一些细小bug 几乎没有任何变化
LINQ / LINQ to SQL / LINQ to XXX
LINQ是新生事物 不过从不少文章和讨论上看来 这方面的概念也已经有点混沌不清了 因此我们经常可以看到这样的话
◆LINQ只能将数据表与实体属性一一对应…… ◆LINQ开发指南 在LINQ中进行数据库字段映射……
以上两句话其实说的都是LINQ to SQL而不是指LINQ 可能由于LINQ to SQL的上镜率最广(连MSDN上About LINQ的第一个示例就是查询数据库的) 因此许多人都将LINQ to SQL与LINQ混用 这会给初学者造成误解 认为LINQ就是LINQ to SQL LINQ to SQL就是LINQ——事实当然不是这样的
LINQ是Language Integrated Query的缩写 是C# 和VB 中新加入的语言特性 可以在编程时使用内置的查询语言进行基于集合的操作 这么做可以大大简化开发过程 提高开发效率 例如
List userList = GetUserList();var userWithOddId = from u in userList where u UserID % == select u; foreach (User u in userWithOddId) Console WriteLine(u UserName);如果没有LINQ 要筛选出ID为奇数的User对象则需要创建一个List 然后遍历整个列表 将符合特定条件的User对象放入新列表 而有了LINQ 这部分的筛选就变得非常容易
甚至只需要一句话就能完成 如果觉得这个例子不够说明LINQ对生产力有重大贡献的话 请关注我接下来的一篇文章(暂定名为《我们为什么要拥抱LINQ》) LINQ特指形如上面这段代码中from where select这样的用法 其返回值是IQueryable或IEnumerable
LINQ to SQL是 NET 内置的一个轻量级O/R Mapping解决方案 可以将数据表映射为实体对象 方便开发人员对数据库的操作 可见 LINQ to SQL实只是LINQ的一个实现 提供了一个可以查询SQL Server数据库的LINQ Provider
LINQ Provider是LINQ查询的执行器 标准LINQ语法支持许多的操作符 但是某个具体的LINQ实现可能只支持其中的一部分 在 NET 默认提供了三种LINQ Provider 分别是LINQ to Object(即上面的例子) LINQ to SQL以及LINQ to XML
cha138/Article/program/net/201311/15025相关参考