仓酷云 发表于 2015-1-18 11:26:11

ASP.NET编程:微软C#产物司理对Richard告辞书的回应仓酷云

因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如net网页编程改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。  比来我通读了RichardGrimes在Dr.DobbsJournal上宣布的文章"Grimes的告辞.NET书"。我想对该文章中Richard的概念作一些回应。Richard明白地传播鼓吹该文章是"本人的概念",也就是说,他的文章应当被看做是他本人关于.NET以后的情形的意见,而不是会商我们走了多远、要到那里往。他提出了三个论点--.NET框架组件太年夜了以致于妨害了它的使用,.NET框架组件的计划成绩,文章另有约莫一半的内容在反攻VisualBasic,最初的结论是微软对.NET框架组件"得到了信念"。鄙人面的内容中,斜体字是援用他的概念,前面是我的回应。

  关于.NET框架组件的巨细妨害了它的使用成绩

  ·RG:该框架组件的可从头公布部分(redistributable)有25MB,比Java的可从头公布部分年夜良多倍。VisualBasic初期版本得出的履历是共享软件和收费软件市场作育某种言语的盛行。只管有些共享软件是利用.NET编写的,可是我常常听到人们埋怨谁人伟大的可从头公布部分。

  我的回应:大概是我过于抉剔了,可是它的巨细切实其实是23,698K或23.7MB。只管Java的运转时绝对较小,可是仍是有15MB。通不雅全文,Richard谈到.NET使用程序的时分,他谈到的实践上是客户端或大众客户端(即不在防火墙内)。比方,把.NET框架组件安装在服务器上,大概安装在你能够把持的外部网情况中基本就不会有成绩。即便在大众客户端盘算机上,也有大批的贸易共享软件--从游戏到RSS浏览器--都必要.NET框架组件。我已经扣问过良多共享软件开放职员,他们切实其实没有利用Java,多半人利用C/C++、VisualBasic或Delphi。在谈".NET的情况"的时分,开辟部副主管Soma的关于.NET的能量的文章做了更好的总结。

  Soma:到今朝为止,我看到人们从Windows更新和微软下载中央下载了7000万次.NET框架组件。复杂的盘算一下,这个数据能够转换为每月下载550万次。另外一个风趣的数据是,在2004年,我们估计约有5400万台新PC中会安装/预装.NET框架组件。我们还具有约莫250万受控代码开辟者。

  关于.NET框架组件的计划的成绩

  ·RG:我宣布在手艺预览旧事组上的第一篇文章是一个复杂的Cool把持台使用程序、一个与其功效相称的Java程序,并用一些奇妙成绩指出了二者之间的不同。

  ·RG:个中有些类仅仅是Win32的包装,另有一些类看起来是从别的的框架组件中导进的。微软在公布.NET之前,它已具有本人的Java框架组件类库(叫做WFC),还具有一个作为传统的VisualBasic运转时部分的受控(managed)类库。假如我能晓得有几WFC和VB的类迁徙到了.NET就行了。

  我的回应:这两个概念是冲突的。在第一个概念中他表示.NET框架组件是Java的复成品,可是在前面一个概念中,他声明.NET框架组件复杂地迁徙自Win32类、Windows基类(WFC)和VB运转时类。他的概念究竟是哪个呢?假如他的概念是能够编写一个复杂的使用程序,该程序在C#、Java或C++看起来一样,那末我以为这基本就不克不及证实甚么。看看上面的一个for轮回:

for(inti=0;i<x;i++){...}

  猜猜它是用哪一种言语编写的?假如你的回覆是C、C++、C#和Java,那末就答对了。我看不出他究竟想证实甚么。假如他试图创建一个比"HelloWorld"加倍壮大的使用程序,那末就应当在框架组件或类库的详细特征(ATL不是,MFC也不是EJB等等)下运转。

  关于基于接口的编程和Remoting手艺的成绩

  ·RG:接口长短常精巧的(elegant),可是.NET却保举利用基于类的办理计划,这标记着接口的灭亡。我们来看一看.NETremoting(远程手艺):微软供应.NETremoting用于同意在创立本人的情况中运转的对象被另外一个情况会见。这意味着该对象的形态是当地的(local),而它的举动则是远程的(remoted)。因而,remoting是一个基于接口的工具。你能够使用接口来利用.NETremoting,可是假如你浏览文档大概会见Web上的"how-to(操纵指南)",你就基本认识不到这一点。

  第一点--接口灭亡了

  我的回应:.NET框架组件中各处都用到了接口,接口在相似VB或C#的特定的单层承继言语中出格有代价。即便最复杂的String类也有IComparable、ICloneable、IConvertible和IEnumerable接口。再向前看,.NET框架组件2.0的关头的新特征--泛型(generics)--也用接口来束缚数据范例。

  第二点--短少在.NETRemoting中利用接口的文档

  我的回应:我决不说我们的文档是没有瑕疵的,我能够供应一个链接关于Remoting的.NET框架组件SDK示例。请注重下载的第五个示例就是在remoting中利用接口。

  ·RG:.NET可使用接口(interface),可是保举的办法是利用类。

  ·RG:微软的替换作法是保举人们利用基于类的办法,这一般会招致一些奇异的征象呈现--人们向客户端部署服务器部件,如许客户端才具有可用的服务对象的元数据(metadata),大概招致泡沫部件,它使哪些基于类的remoting成绩到处散布。

  我的回应:我们自己没有"保举"任何机制。只管我们大概供应了引导,可是开辟者能够选择本人以为符合的办法开辟使用程序。我们的形式和理论小组切实其实供应了这些方面的引导和最好履历,并在怎样计划远程接口中包括了导游。我看不出来我们偏好过基于类的体例,实践上,利用面向动静和服务的比利用面向对象的要增加得快一些。我供认必要把服务器部件部署到客户端上,可是欠好的计划就是欠好的计划,别无别的。把服务器部件部署到客户端上,使服务器对象的元数据可用,可让人们简单地利用接口或纲目(schema)。这就是说,存在一些但愿每一个客户端具有服务器代码的情况,比方对等(peer-to-peer)谈天就请求客户端同时承当客户端和服务器的脚色。

  关于微软在产物中利用.NET框架组件的成绩

  ·RG:微软把.NET作为扩大本人的产物的一个有效的类库,可是到今朝为止,微软却没有显现出对框架组件的更年夜的信念。今朝只要很少的.NET产物是全部利用.NET编写的;个中一个是微软的CRM……他们不但愿承当为.NET从头编写代码的开支,并且没有谁强制他们在.NET中供应全新的代码;.NET将会被投止,而且在必要的时分,同意经由过程用户供应的代码来举行扩大。

  我的回应:我们必要把Richard的话举行分化。他说微软正在利用.NET扩大已有的产物,而且微软不但愿承当从头编写.NET代码的开支。为何我们必要从头编写完善的代码呢?.NET代码能够与已有的代码交互操纵,并且你也赌博说我们将使用交互操纵才能层增加那些最好的受控代码供应的新特征。我后面已经指出过,微软在一切的软件中利用了.NET,从操纵体系到开辟工具再到Office。

  ·RG:微软以后的操纵体系XP和Windows2003其实不依附于.NET;并且XP中.NET是一个可选组件。

  我的回应:上述概念最多只要一半是现实。WindowsXP专业版没有利用.NET框架组件,那是由于.NET框架组件是在WindowsXP专业版以后公布的。上面是.NET框架组件公布以后公布的操纵体系:

  ·WindowsXP多媒体中央版请求.NET框架组件撑持特定的MCE使用程序。

  ·WindowsXP专业平板PC版请求用.NET框架组件处置辨认程序(它是一个受控使用程序)。

  ·WindowsServer200必要.NET框架组件来利用ASP.NET、UDDI服务或Sharepoint小组服务。

  ·Windows小型营业服务器2003必要.NET框架组件来利用ASP.NET、实行SBS特别的使用程序,比方远程Web事情室和BackupSnap-in。

  关于Longhorn和扫瞄器使用程序灭亡的成绩

  ·RG:我的意见是Avalon--更详细地说是XAML,将标记着ASP的灭亡。其缘故原由在于Avalon是一种客户端手艺,而扫瞄器则是该散布模子的一个主要部分。XAML功效是云云丰厚,以致于包括扫瞄器的XAML使用程序与基于历程的Avalon使用程序看起来没有不同,并且与Web服务大概Indigo(会见远程代码的机制)耦合以后,XAML使用程序会使ASP.NET使用程序看起来没有代价而且陈腐。微软为何想毁失落ASP呢?安装ASP.NET的时分,微软会卖出一套Windows2003,同时还大概卖出几套VisualStudio.NET。客户端能够不是Windows,因而微软不会有别的的发卖(不管是产物也许可)。这是一块很年夜的支出来历,更糟的是,ASP.NET实践上使编写使用程序加倍简单了,因而它能够被IE之外的扫瞄器利用。

  我的回应:XAML将供应丰厚的界面,可是ASP.NET和HTML不会离我们而往。它的代价在于,我们能够同时在两个天下中获得最好效果,为XAML扫瞄器供应最好的体验,同时保存与老式盘算机的兼容。我们必需注重到,客户端使用程序与服务器使用程序之间是有不同的。服务器市场自己完整分歧于客户端/消耗者市场。只管人们在议论到微软公司把持了90%的客户端操纵体系,可是在服务器市场我们没有到达这个数字。

  我们必要与IBMWebSphere、成百上千个的两头件产物、Oracle数据库等等产物和公司举行合作。假如我们但愿获得服务器市场的成功,我们就必需为创建Web使用程序供应速率最快的、最牢靠的、最平安的、效力最高的、客户承当得起的办理计划。谈到扫瞄器使用程序威逼到微软的工夫约莫是1996年。Web不是威逼。假如它是威逼,那为何微软使Web变得难以相信的乐成和盛行呢?Richard接着说微软如许做的目标是为了客户真个支出。客户端操纵体系市场,微软具有凌驾90%的占据率,几近是饱和的。服务器市场才是真实的支出增加点。在支出的成绩上,典范的服务器买卖必要数千美圆,用于付出上面一些部分:

  ·操纵体系

  ·事件引擎

  ·两头件

  ·数据库

  依据办理计划的庞大水平,其代价大概从几千美圆到几百万美圆。服务器产物十分高贵。假如你检察Web内容办理办理计划,就会发明每一个处置器企业级允许的均匀代价是50,000美圆。我的意义是说,在服务器市场存在大批的支出来历,也遭到相似IBM和别的公司的剧烈合作。你晓得数据库软件市场的支出是几吗?你信任无数十亿美圆吗?你晓得Oracle是排名第二的软件公司,他们的次要支出都来自数据库吗?这只是服务器软件市场中的一个时机罢了。回到我的概念,我们完整忠实于本人的服务器产物,而且要把Windows服务器和ASP.NET酿成创建Web使用程序的最好的平台。

  关于Longhorn的成绩

  ·RG:我以为使Avalon可用于别的版本的Windows标明微软对Longhorn的发卖短少信念。

  ·RG:可是微软传播鼓吹Avalon将能够用于别的版本的Windows,向我标明他们对Longhorn的晋级也不是那末自傲,并且假如开辟者不克不及断定客户端是不是会运转Avalon使用程序,那末他们就不会为Avalon编写使用程序。

  我的回应:构成Avalon可用于别的版本Windows的决意是由一个缘故原由--用户必要--所驱动的。一切基础的Web研讨都发明主顾埋怨上层操纵体系中没有这类功效。

  关于在产物中利用.NET框架组件的成绩

  ·RG:因而,从客岁的声明中能够看出,微软以为Longhorn并非在PDC2003上获得我们信托的巨大的.NET厘革。这标明微软正在慢慢对.NET得到信念。

  我的回应:Richard,你在的文章中提到的Longhorn的关头部分--Avalon和Indigo--都是用受控代码编写的。当我们决意把赌注押在创建在.NET框架组件之上的下一代操纵体系的乐成的时分,怎样会标明我们对.NET得到了信念呢?你大概会争辩说并不是全部操纵体系都是用受控代码编写的,这就是我们已"得到了信念"。可是这是你的概念,我不以为受控代码合适于一切情况,并且微软也历来没有如许说过。微软仍旧完整撑持C/C++,我们具有十分年夜的C/C++代码基本和多量C++主顾。我们只在得当的时分利用受控代码。

  ·RG:它的框架组件酿成了VisualBasic--它是供用户开辟使用程序的,而不是供微软创建操纵体系或创建他们所依附的带来支出的产物的。

  我的回应:我制止复兴那些对VB的反攻,由于有些人已如许做了。我要指出两点,第一是利用.NET框架组件创建操纵体系的成绩,第二是微软的支出成绩。在用.NET框架组件创建操纵体系的成绩上,我历来都没有说过你应当在独自的受控代码上创建操纵体系。现实上,我们大批的客户不会创建操纵体系。关于那些必要创建操纵体系的大概必要谁人条理的把持和功能的客户来讲,我们具有C/C++,并且我们相对没有丢弃它。至于支出来历的成绩,我已枚举了几个利用.NET框架组件带来支出的使用程序。微软被分红了以下所示的几个营业部门,让我们来看看哪一些在利用受控代码:

  ·Client(客户)-利用了

  ·InformationWorker(信息工人)-利用了

  ·Server&Tools(服务器和工具)-利用了

  ·HomeandEntertainment(家庭和文娱)-利用了

  ·MSN-利用了

  ·MBS-利用了

  ·MobileandEmbeddedDevices(挪动和嵌进设备)-利用了

  我但愿这些内容能够打消那些对受控代码的半真半假的报导和曲解。假如有甚么不合错误,请告知我!在CSDN里搜索一下“初学”两字,竟有三百余篇帖子(也许更多)。有些帖子说,有了asp的基础,只要15天就能很熟悉了,我甚感自己的愚钝。更多帖子是向大家请教初学者适合看书。两个多月的时间(当然平常杂事比较多。

仓酷云 发表于 2015-1-21 06:18:22

CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。

因胸联盟 发表于 2015-1-22 15:37:16

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

小魔女 发表于 2015-1-23 08:10:31

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

小女巫 发表于 2015-1-26 22:09:07

那么,ASP.Net有哪些改进呢?

只想知道 发表于 2015-2-4 20:49:09

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!

admin 发表于 2015-2-10 08:40:46

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

不帅 发表于 2015-2-11 04:53:48

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

变相怪杰 发表于 2015-2-28 15:12:11

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

精灵巫婆 发表于 2015-2-28 20:49:25

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

兰色精灵 发表于 2015-2-28 21:22:24

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

柔情似水 发表于 2015-3-7 15:15:12

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

山那边是海 发表于 2015-3-11 17:04:57

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

第二个灵魂 发表于 2015-3-19 02:20:20

ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。

若天明 发表于 2015-3-27 00:09:25

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
页: [1]
查看完整版本: ASP.NET编程:微软C#产物司理对Richard告辞书的回应仓酷云