ASP.NET网页编程之.NET 4.0函数式编程与和谐数据布局仓酷云
我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:)和谐数据布局(CoordinationDataStructures,CDS)是在.NET4.0中包括的一套线程平安对象,个中年夜部分是汇合范例。在寂静了6个月以后,这些内容终究有了严重的更新。个中最分明的部分莫过于引进了函数式编程手艺,从而削减了计划形式的利用。一个新范例是ConcurrentLinkedList,它利用一个predicate函数,并共同TryInsertBetween办法以线程平安的体例拔出节点。这个predicate函数会被对象自己屡次挪用,用于断定符合的拔出地位。如许,即便在单线程的情形下,它利用起来也比一般的LinkedList要便利一些。
另外一利用函数式技能的中央是SpinWait对象。开辟职员能够向SpinWait.SpinUntil办法传送一个predicate函数,而不是一遍又一各处手动挪用SpinOnce办法。
下一个则是新范例:ConcurrentBag。这比如是一个对多线程举行附载平衡的行列汇合。一般情形下,每一个线程只对其本人的行列举行读写。不外在行列为空时,它就会从别的线程的行列中“夺取”一些元素。这意味着在年夜多半情形下,线程之间不会呈现资本合作,可是每一个线程在一切事情完成之前仍然会“尽心尽力”。ConcurrentBag并不是ConcurrentQueue的替换品,后者仍然是单临盆者/单消耗者场景下更好的选择。
WriteOnce类已被移除——这个功效仿佛其实不怎样有效,它只是在setter被会见屡次的情形下抛出非常罢了。比拟之下Lazy和LazyVariable范例更加有效一些,因而它们被保存了上去。这二者都表现了提早初始化的特征(因而又被称为futures)。前者是一个类,尔后者则是一个轻量的,但并不是“相对”线程平安的布局。别的,类库中新增了LazyInitializer,用于处置内存占用(memoryfootprint)成为成绩的情形。另有ThreadLocal类,它能够将线程当地资本和Futures线程平安地绑定起来。
平安地作废义务而不激发线程作废非常仍旧是一个主要的方面。为了改良这个成绩,每一个大概会带来堵塞的办法都增加了作废的功效。微软今朝仍然在遍地引进义务作废模子,如许能够年夜年夜简化类库的开辟难度。
更多的信息可参阅微软并行编程博客和我们之前对CDS的存眷。
检察英文原文:FunctionalProgrammingandCoordinationDataStructures
来自:http://www.infoq.com/cn/news/2009/03/CDS-March
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到net网页编程编译器那么简易。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
页:
[1]