ASP.NET编程:评C#事务处置仓酷云
有专家说:net网页编程不是跨平台,net网页编程就是平台,这很好的定义了net网页编程的特点。有了net网页编程,你只需要等待net网页编程平台在新平台上移植。这还不错吧!只是,net网页编程不是一个平台,而是多个平台。你需要在这个net网页编程平台移植到另一个net网页编程平台。头几天学了一点C#,没认真的。由于要弄《MSDN开辟精选》的原因,完整不懂也说不外往。没看甚么言语方面的书。也就是把JeffereyRichter的《Applied.NETFramework》(李建忠译本)找来翻翻。看到event那一部分就烦了,本来C#的delegate和event只是外表光,上面的完成仍是十分粗笨。一个长长的链表,内里放着闭包指针,范例是够平安了,支付的空间和工夫效力都不小。对我我这类从C言语爬过去的人,就是以为不爽。事务处置机制是C++及厥后继者(Java、C#)的最年夜软肋之一。实质上是由于C++昔时的选择,把对象之间的一般动静传送用成员函数挪用给办理了。成员函数挪用快是够快,可是招致了动静发送者与承受者之间的紧耦合。年夜多半情形下这倒也并非甚么年夜不了的事,恰恰在事务处置上,理论中必要松耦合,因而C++的成绩就表露出来了。君不见,一切用C++写的GUIFramework都在event这件事变上年夜做文章。对照笨的如MFC的全局映照表,对照伶俐的如Qt的Signal/Slot,一个破例是VCL,Borland完成了closure指针,把callercontext跟指针绑到一同发送给callee,Java对照中规中矩,依照最OO的体例完成了事务处置机制,可是可扩大性欠好。C#的delegate实在就是VCL中closure指针的新版。总之是八仙过海,各显其能。可是我以为,都是在C++已走歪的老路上枉然勉力。只需这个思绪还在,事务处置就不成能十分elegant。C#可让整件事变在外表上看起来很大度,但是骨子里仍是肮脏的。
就团体而言,我仍是对照浏览C的举措:划定一个协定,我把event数据筹办好放在一个中央,然后就不论了,事务的承受者本人往取数据,本人剖析,本人决意怎样处置。
如许的承受者,在对象分类中,叫做自动对象——activeobject。这两年在embeddedsystemprogramming两头,人人愈来愈发明自动对象的各种上风。我团体以为支流编程范畴也应当思索一下这个成绩。
自动对象的成绩多是范例不平安,但实践上范例平安没有那末主要,没需要逝世抱住不放。本来C言语里:
int(*compare)();
声明的指针能够指向任何前往整数的函数,不论其参数列表怎样。在C++内里,这个指针只能指向一个前往整数的无参函数了,天真性年夜年夜下降。也难怪opensource人士仍是偏幸C。固然平安性和天真性一律主要,可是真实的黑客能够用本人的手艺来保证平安性,却没法承受天真性的缺掉。
扯远了。
总之,看得越多,越以为C真是一种巨大的言语,也许只要Fortran和LISP跟它处于统一级别。
附带提一句,李建忠翻译的质量极高,令我辈叹服。
来自:http://blog.csdn.net/myan/archive/2004/04/21/489.aspx
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊? 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 那么,ASP.Net有哪些改进呢? 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
页:
[1]
2