仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 884|回复: 10
打印 上一主题 下一主题

[学习教程] ASP.NET编程:对照NHibernate和Entity Framework仓酷云

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:18:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我以前很喜欢Serv-U,自从它用net网页编程重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。葡萄牙的一名开辟者RicardoPeres比来公布了一篇文章,以看起来无成见的情势对抢先的两种.NETORM:NHibernate和EntityFramework举行了对照。我们倡议思索利用这两种框架的人都应当读下他的文章,NHibernate和EntityFramework之间的区分,别的还将指出一些关头的区分。
从架构上看,NHibernate基于Java的HibernateORM。Ricardo写道:
在NHibernate中,事情单位和设置项和模子实例都互相自力。你起首会创立Configuration对象,在个中你会指定一切NHibernate设置,像要利用的数据库和言语、批处置的巨细、映照干系等等,然后你会依此构建ISessionFactory。ISessionFactory会持有与特定命据库绑定的模子和元数据,和来自于Configuration对象的设定,而且,一样平常每一个历程中只要一个实例。终极,你会基于ISessionFactory创立ISession的示例,它是事情单位(UnitofWork)和标识符舆图(IdentityMap)的NHibernate体现情势。这是一种轻量级的对象,它实质上会依据必要翻开和封闭数据库毗连,并跟踪与之相干的实体。ISession对象很简单创立和烧毁,由于一切的模子庞大性都存储在ISessionFactory和Configuration对象中。
批评者MortenMertner说:“我永久都不会利用NHibernate。只管它具有很棒的特征列表,但它并不是一种可以轻松利用的产物,并且API和计划中一直带有遗传自Java的滋味(一样,良多JavaAPI都太企业化,而且架构过于复杂;了局会与你想要的天差地别)。”
EntityFramework遵守的是加倍传统的.NET计划,个中一切统统都封装在独自的ObjectContext大概DbContext中。这让利用对象加倍复杂,可是弱点在于“类并没有因而是轻量级的,由于它有与NHibernate相似的内容,而且一样平常不会看到如许的例子:实例能够缓存在字段中。”
关于映照,NHibernate和EntityFramework之间的关头区分在于,前者撑持基于XML的映照文件,该文件能够自力部署。在实际上,这让你能够针对分歧的数据库schema利用不异的对象模子,而不必要从头编译使用程序。但在理论中很少这么利用。
在良多方面陈旧一些的NHibernate要优于EntityFramework。Ricardo供应了更多细节,并扼要地总结以下:


  • 联系关系:都撑持一对1、一对多、多对多,可是NHibernate还撑持各类排序、未排序和索引的选项。它乃至另有稳定的(immutable)、索引的(indexed)列表。
  • 缓存:NHibernate供应了带有大批完成的二级缓存。EntityFramework没有任何对此内建的撑持,可是有些增添二级缓存的例子。
  • ID天生:NHibernate供应了也许十二种战略,这取决于你怎样盘算。EntityFramework只为SQLServer供应了次要的三种:标识符列、GUID、和手动赋值。
  • 事务:EntityFramework只要两种基于事务的扩大点:ObjectMaterialized和SavingChanges。“NHibernate具有十分丰厚的事务模子,表露了凌驾20种事务,有些针对同步前实行(synchronouspre-execution),有些针对异步后实行(asynchronouspost-execution)”。
  • 级联:“两种框架都撑持汇合和联系关系的级联:当实体被删除的时分,相干的籽实体也会被删除。NHibernate还供应了一种特征,能够把籽实体上的外键设置为NULL,而不删除它们。”
  • 清算变动:NHibernate供应了一种主动形式,个中在需要的时分会保留变动,像“假如有一种实体范例的脏实例,而查询是针对这类实体范例实行”。FlushMode.Auto实践上是默许值,但偶然会看到因为主动扫除而招致功能成绩。
也有一些范畴中,EntityFramework会比NHibernate好,例如说:


  • 跟踪变动:只管两种框架在事情单位级别默许都可以跟踪变更,而EntityFramework还供应了自我跟踪实体(self-trackingentities)。
  • 整合:EntityFramework固然会与VisualStudio和各类ASP.NET和WCF类库有很好的绑定。
  • 文档:“这是另外一种EntityFramework体现十分好的中央:NHibernate短少针对初学者的文档,而且也没有与其最新版本同步的最新API参考。”
  • 查询:Craig写到:“NHibernate有更丰厚的特征,但有一个范畴除外,那就是对Linq的撑持。由于关于良多用户来讲,Linq大概别的查询言语都是ORM中最可见的部分,它会让人对功效发生毛病印象。”
另有某些范畴,两种框架都能够做出改善,像批处置功效。当必要真正撑持SQL的初级特征——像通用表表达式——的时分,两种ORM框架都没法撑持SQLAlchemy。
我们应当发明两个项目都很活泼,常常会有按期的改善。以是,假如两者都可以满意你的最小需求,那末思索就更多会合在程序库的计划形式和哲学上,而不是在特征列表上。
检察英文原文:ComparingNHibernateandEntityFramework
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)net网页编程是开放的,相同的工具就会有很多公司在做,加上net网页编程已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。
沙发
发表于 2015-1-20 20:01:50 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
山那边是海 该用户已被删除
板凳
发表于 2015-1-29 19:41:41 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
兰色精灵 该用户已被删除
地板
发表于 2015-2-6 03:40:43 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
不帅 该用户已被删除
5#
发表于 2015-2-15 09:52:32 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
飘灵儿 该用户已被删除
6#
发表于 2015-2-21 22:19:12 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-6 21:59:57 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
因胸联盟 该用户已被删除
8#
发表于 2015-3-7 10:25:56 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
小魔女 该用户已被删除
9#
发表于 2015-3-11 07:49:18 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
只想知道 该用户已被删除
10#
 楼主| 发表于 2015-3-17 23:11:41 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-25 06:39:02 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 09:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表