ASP.NET编程:.NET程序功能的基础方法仓酷云
就安全性而言,net网页编程已经远远低于VB.NET,更无法与安全性著称的C#相比。提及Roslyn人人一定都已有所耳闻了,这是下一代C#和VB.NET的编译器完成。Roslyn利用纯托管代码开辟,但功能凌驾之前利用C++编写的原生完成。BillChiles是Roslyn的PM(程序司理,ProgramManager),他比来写了一篇文章叫做《EssentialPerformanceFactsand.NETFrameworkTips》,个中总结了几条履历,今朝是个CodePlex上的PDF文件,今后大概会公布在MSDN上。他在文章里谈到以下几点:
[*]不要举行过早优化。程序员有了必定履历今后,常常会对功能有所直觉,但也要制止自觉优化。
[*]没有评测,即是推测。比方,有的时分反复盘算都比利用哈希表举行缓存来的快。
[*]好工具很主要。这里他保举了PerfView,这是个微软公布的收费工具,未来剖析某些案例时我大概也会用到这个工具。
[*]功能的关头,在于内存分派。凭直觉大概良多人会以为编译器是一个CPU麋集型的场景,但实践上它毕竟仍是个IO麋集型的程序。
[*]其他一些细节。比方,关于字典的内存开支要有一些观点,另有比方我每次口试城市问到的class与struct的区分等等。
第4点值很多说几句。关于托管情况来讲,GC关于功能的影响严重。假设一段程序写的不敷GC友爱,让GC产生的多,特别是那种Stop-the-WorldGC,这对功能的影响远胜某些“多花了几条拷贝指令”之类的“探究”。并且良多时分,用户眼中的“功能”在于程序的“呼应水平(responsiveness)”,一旦GC停息了一切的线程,程序便很简单产生卡顿,这乃至不是经由过程复杂评测程序功能可以表现出来的。
相较于Java平台来讲,.NET已是个绝对GC友爱的运转情况了。个中最主要的方面之一即是自界说值范例,即struct。struct让程序员举行必定水平上可控的内存分派,制止在堆上发生对象。而在Java中,只要几种原生范例是值范例,它们还不克不及包括成员。要晓得在Java里没法利用一个未装箱的int值作为一个字典的键,这对一个.NET程序员来讲大概很难设想,但现实即是云云。
固然,Java仿佛已有盘算作这方面的改善,但离真正可用还指日可待。今朝Java只能经由过程一些如逃逸剖析的手腕,发明某个对象不会被共享到堆上,因而便将其分派在栈上,制止对GC发生压力。
不外.NET供应再多对GC友爱的功效,也抵不外开辟职员的误用。Bill的文章里举了一些罕见案例,这些实在都是每一个.NET开辟职员必需懂得的基本。最初谁人例子很是风趣,他谈到,关于功能敏感的中央,偶然候都要制止LINQ或Lambda。由于利用Lambda机关匿名函数时,编译器会发生闭包,由于所谓闭包,即是一个用来保留高低文的,分派在堆上的对象。别的,如List<T>的迭代器被成心完成为struct,但利用通用的LINQ接口,则会被转化为IEnumerable<T>和IEnumerator<T>,进而发生装箱。
不足为奇,不久前@连城404在新浪微博上说到:
依照Michael的倡议把HiveTableScan关头路径上的FP作风的代码换成while轮回加可复用的mutable对象,扫表功能提拔40%。”,这实在也正和此次的话题亲切相干。
你觉得数据库怎么样? 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! 最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
页:
[1]