一起谈.NET技术,微软PDC10:大牛谈ASP.NET和C#技术走向

  最近看了自己关心的主题的微软PDC视频,也结合自己的Web 2.0项目做了一些思考。这次PDC最大的一个主题就是Azure OS,所谓的云操作系统。不过微软的服务器要布到中国也不知道要到什么时候,所以也没有深究。我主要关心的是Asp.net和C#的技术走向。

  我总结了一下,总的走向就是更加的Web化,比如Webform的Tag的ID可以控制了,MVC将成为主流,C# 4.0更加向动态语言靠,甚至引入了一个dynamic的关键字。这些基本和我的预期相符合。其实都指向一个理念:Web的本质是文档。

  Web的本质是文档

  以前有网友对我的所谓“文档化”理念提出疑问。因为我一直认为理念和战略思想可能在一开始就决定了成败。感觉有必要探讨一下,或许可以给大家提供一个新的视角。

  我尽可能罗列结论,略去推导过程,节省大家的时间。

  首先,Web本质是文档,或者说更倾向于文档化。我对文档和应用的区分标准是,文档更倾向于让人理解,应用更倾向于让机器理解。

  WEB的三个要素已经产生了,就是3位一体的HTML+CSS+Javascript

  这个三角形结构已经愈发成熟愈发稳定愈发强大了。也许第四类要素也显出雏形了,就是语义要素,需要的只是时间吧。

  任何试图忽略,取代这三个要素中的任何一个都是一个危险的企图。

  (一个最典型的这样的尝试就是asp.net webfrom,居然可以同时屏蔽和封装这三个要素,而asp.net mvc则是一种回归,我对asp.net webform的最新理解是,一个使用Web技术的Windows应用。而Asp.net mvc才是更接近web的本质)。

  ◆HTML是一种文档。

  ◆CSS是一种变换,它的最大特点是在它变换HTML的时候不会改变HTML的拓扑结构,或者说是DOM结构。

  ◆Javascript也是一种变换,它可以改变HTML的拓扑结构,或者是DOM结构

  HTML文档的最大特点是自我解释性,这是互联网的特性决定的,因为互联网就是最大程度的交流。如果你开发了一个应用,试图“封装”,或者“替代”HTML,那么可能会在做一件蠢事。因为你的应用没有自我解释性,也许你要配一个详细的文档,教程,或者其它什么东西来解释你的应用,而且还须要用户能正确理解这种说明和解释。这就违背了Web了精神,分享的精神。

  那CSS为什么也不能被绕过呢?因为它和HTMl配合的最好,和HTML之间属于松散型耦合,通过长期演化,已经接近完美了。现在甚至发展出了,MicroFomats这样的赋予语义的css标准,或许这是迈向语义网的一个途径呢?who knonws?

  Javascript呢?很多.Net程序员不熟悉JS,不是也过得好好的吗?我在想,也许好日子到头了。Javascript的地位将不会被削弱,而可能是大大加强。

  CSS的成熟,导致了Div+CSS的开发方式的流行,而由于Firefox和AJax的流行,将近一步加强这3大要素的地位。相信多用用firebug可能对此有更深感受。Jquery的出现更是大大降低了JS开发难度。设想一下这样一个Firebug版本,在你发出一个Ajax请求的时候,你看到了一个Response到达你的浏览器,可以看到一个Json数据结构是如何改变你的DOM,不但可以设置断点,更为神奇的是DOM改变过程居然可逆。在C#程序中,设置一个断点,然后到了这个断点以后倒退着执行,能办到吗?也许要到C# 7.0了。但是,DOM可以,因为它是文档。只要建立快照就可以了。会不会有Transactional DOM出现呢?

  HTML是拓扑结构,是第一性,Javasript是一种变换,属于第二性。这和windows时代的所谓应用第一性其实已经是有了本质上的区别。事实上世界上最赚钱的软件是什么,就是Office.它其实就做了一件事情,就是处理文档。

  Office软件有好几种,它们之间的关系是什么呢?

  ◆Word是一维的文档,你可以对一个文档重新分页

  ◆PPT是二维的文档,每一页都是完整独立的一页,你没有办法重新分页

  ◆EXCEL是三维的文档,表格是两维,Tab页是第三维

  微软又搞了一个OneNote居然是四维的,似乎不是很火。所以要写的让更多的普通人能看懂就用Word,要更有效率传达更多信息,就用EXCEL。

  事实上,微软的高手当然都明白这些,只不过,如何将它们的商业模式,平滑的转向Web那是一个非常艰巨的任务。所以微软就有了各种试图将Web应用化(Windows化)的企图。甚至在所有产品前加上Windows 商标(比如Windows Live,难道是恶搞?)。

  PDC上展示了基于Silverlight技术的Web Office技术,微软终于对Google Docs做出了反应。

  谁会胜出?

  谁会最终胜出呢?3年内,我看好微软,3年后就很难说了。也许写一篇存在自己硬盘上的Word文档,会和写一封永远不寄出去的信类似。真的到了Web 平台,那么血统更纯正的google Docs会胜出吧。拭目以待。

  所以在对待诸如Siliverlight这样的新技术的时候,站在客户的角度去思考是非常必要的。如果你在期待着微软发布更多siliverlight控件的时候,也许应该想一想,你会不会在和Web背道而驰呢?

  当你面对Google Doc这样神奇的应用的时候,是不是能看到其中的内涵和潜力呢?重要的不是那些神奇的JS,重要的是它是一个HTML文档,一个资源,一个URL。它不是更容易向语义网扩展吗?

  有的时候感觉,技术的演进和生物的演进非常相似,生物树上最终消失的分支,往往是比较容易的演进,而演进的主线,往往是最困难,最缓慢的,然而最后却成为了演进的主线,并最终胜出。

  PDC的两个新亮点

  另外提一下PDC看到的两个新东西,特别是第二个,可能是非常重要的。也许是The next big Thing(下一个大事物)。

  在Anders的演讲中提到了,C# 4.0以后的一个特性,就是用C#重写C# Compiler,原来是C++写的。然后你就可以在你的程序中调用Complier的API的动态产生执行代码。非常有趣。不过他没有怎么提应用场景。感觉可以用在代码自动生成,和人工智能方面。

  另外一个是DHTML之父Scott Isaacs搞得一个 Web SandBox,简单而言,就是用JS写的一个虚拟机,可以运行在各种浏览器上,将各种浏览器的JScript标准化,建立一个砂箱模型,隔离JS,HTML,CSS。也就是说一个JS恶意代码插件,将不会对页面产生任何破坏作用。应用场景呢?Facebook的FBJS应用插件就是类似的功能。但这个是一个更加完美的解决方案,因为你不必改变你的JS的写法。

  不过文档里面没有提到插件之间如何通讯。那和IFrame有什么区别,据说是比IFrame 更加安全。如果这个技术成熟的话,会有很多有趣的应用出现。至少在技术上不输给 Facebook了,我会密切关注这个项目。开发Web 2.0有点像造火箭,成功了就是特大成功,失败则更是家常便饭。所以给正在搞Web 2.0的朋友们加个油。

时间: 2024-07-31 17:58:35

一起谈.NET技术,微软PDC10:大牛谈ASP.NET和C#技术走向的相关文章

微软PDC10:大牛谈ASP.NET和C#技术走向

最近看了自己关心的主题的微软PDC视频,也结合自己的Web 2.0项目做了一些思考.这次PDC最大的一个主题就是Azure OS,所谓的云操作系统.不过微软的服务器要布到中国也不知道要到什么时候,所以也没有深究.我主要关心的是Asp.net和C#的技术走向. 我总结了一下,总的走向就是更加的Web化,比如Webform的Tag的ID可以控制了,MVC将成为主流,C# 4.0更加向动态语言靠,甚至引入了一个dynamic的关键字.这些基本和我的预期相符合.其实都指向一个理念:Web的本质是文档.

一起谈.NET技术,重构TekPub——从ASP.NET MVC框架迁移到Ruby on Rails

TekPub是一个面向开发人员的站点,致力于为开发人员提供一系列主题的在线培训,主题范围非常广泛,从微软的O/R Mapping框架Microsoft Entity Framework,到如何使用Ruby on Rails技术编写自己的日志引擎等内容都有涉及.该网站是由前微软员工Rob Conery与Lounge的老板James Avery创立的. TekPub是个很有趣的学习案例,公司开始时使用ASP.NET MVC框架,之后很快迁移到了Ruby on Rails上.InfoQ与Rob和Jam

一起谈.NET技术,.NET简谈面向接口编程

过程式的开发方式已逐渐退出大众的眼线,随之而来的是各种各样的高抽象的开发模式:我们不得不承认在没有设计模式的时候,我们很难总结出有价值的开发模型,便于以后重复使用和推广:面向对象的流行,让我们开发人员重新站在一个高的起点来看待软件模型,抽象固然是好事,但是也给初学者带来了迷惑,将软件中的东西都想成很简单的封装,我们只需要调用就行,这样越来越多的开发人员开始慢慢的往上浮,有一定编程经验和感触的人,能够明白我所说的浮,也算是给初学者提个醒吧. 1: 2:  我们将计算机系统抽象层三个层次,我们做应

一起谈.NET技术,MSDN Webcast:ASP.NET MVC2程序开发入门到精通系列课程

课程讲师:苏鹏 MSDN特邀讲师北京工业大学软件工程硕士,微软最有价值专家(ASP.NET MVP),微软MSDN特约讲师.曾于微软亚洲工程院MSN组工作,现任中国网通四分公司技术支持与项目部开发经理.具有多年电信系统与OA系统实施经验. 课程下载: ASP.NET MVC2程序开发入门到精通系列课程(1):MVC架构概述 ASP.NET MVC2程序开发入门到精通系列课程(2):MVC范例分享 ASP.NET MVC2程序开发入门到精通系列课程(3):MVC中的View实现技巧(上) ASP.

一起谈.NET技术,最全的ASP.NET开源CMS汇总

国内: 1.SiteServer CMS SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能最近汇总了一些asp.net开源cms,希望对学习ASP.NET的人员带来帮助: 国内CMS: 1.SiteServer CMS SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能够以最低的成本.最少的人力投入在最短的时间内架设一个功能齐全.性能优异.规模

一起谈.NET技术,.NET简谈委托链

说起链表大家都很熟悉,说起委托相信大部分的.NET程序员都也很了解.在平时的开发过程中经常会用到这两种技术,只不过链表在.NET里面已经被封装了,让我们用起来更加的方便就是集合类型Collection.在某些时候我们有必要要了解这些方便而又快捷的背后是怎样封装的,委托是一种特殊的类型,在.NET里面是用来作为方法的一种封装.在一些非托管的代码中如C++就没有这么幸运了,我们要面对是一些复杂的地址变换.链表的指针维护.内存的取址等等.微软一向都是人性化模仿的对象,不管是他的操作系统还是开发平台ID

一起谈.NET技术,Unobtrusive JavaScript in ASP.NET MVC 3

Unobtrusive JavaScript 是什么? <!--以下是常规Javascript下写出来的Ajax--><div id="test"><a href="http://www.cnblogs.com/" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.Inse

一起谈.NET技术,巨大转变!ASP.NET MVC2行为方法新改进

在 上一篇文章中,我们看到了构建用户界面的基本实现.但在现实世界中,我们需要使用更加复杂的方法来开发出更复杂的用户界面.例如,用户不希望点击应用程序中的多个链接才浏览到他们想要的信息,他们希望能够很方便的在一个视图中便取得他们要求的所有信息. 在ASP.NET MVC中,我们仍然可以使用用户控件来创建一个应用程序中的可重用组件-它们被称为部分视图(Partial View).自从ASP.NET MVC 1.0始就提供了这一支持.在本文中,我们还要使用这种方法,并且结合MVC 2.0中提供的一个新

一起谈.NET技术,巨大转变!ASP.NET MVC2调用AJAX新特征

在ASP.NET MVC编程中使用AJAX功能是非常简单的.借助于JQuery框架,你还可以增加其他的优秀特征并且使AJAX调用特别简单.本文中,我们将探讨这方面的编程内容. 一.检测一个AJAX请求 在Web表单中,创建AJAX请求典型的方法是使用一个更新面板.当更新面板回寄时,ScriptManager提供一个方法(通过其isInAsyncPostBack属性)来检测服务器上的AJAX回寄.ASP.NET MVC也提供了类似的机制.因为AJAX能够调用行为方法,所以我们需要一种方法来检测一个