代码改变世界

随笔分类 -  Web

ASP.NET 2.0 中的 DataSource 系列控件

2006-10-22 15:41 by Cat Chen, 1012 阅读, 收藏, 编辑
摘要: 在ASP.NET 2.0中,引入了DataSource系列控件,扔一个到页面上并且选择性的配置好SELECT/UPDATE/INSERT/DELETE对应的操作,它就能够和数据空间无缝合作自动处理查询与更新,并且提供分页、排序等支持。 有一些ASP.NET 1.x的程序员,并不喜欢使用DataSource控件,觉得还是按找1.x的写法在Page_Load里面设定数据控件的DataSource属性然... 阅读全文

Script# - 把 C# 编译为 JavaScript

2006-10-22 15:39 by Cat Chen, 2126 阅读, 收藏, 编辑
摘要: 原来有一样东西叫做Script#,是Atlas的主要开发者之一的Nikhil Kothari自己编写的一个小框架,目标就是制作一个C#编译器让C#可以直接编译为JavaScript,并且是不经过编译为IL这个步骤。 之前我就说过,以MS的做法如果要想继续宠着那群很RAD的ASP.NET程序员,并且确保他们继续think inside MS's box,那就必须做一个C#到JavaScript的编译... 阅读全文

Meebo 和 GMail + Talk 等 WebIM 的实现方式

2006-10-22 15:35 by Cat Chen, 2238 阅读, 收藏, 编辑
摘要: 我用Fiddler监听过Meebo和GMail + Talk,终于知道他们是如何实现event机制的了(也有人称之为Comet模式)。event包括好友发信息给你、好友上线/下线,甚至连是否显示某某人"is typing"的状态变换也算,反正就是指模仿桌面应用event机制需要服务器端主动触发客户端的东西。 例如有一个event.ashx是专门负责发送event消息的,那么工作的时候就保证一个客户... 阅读全文

初次使用Atlas JavaScript (Part 3 - 实现自己的应用)

2006-10-22 15:35 by Cat Chen, 947 阅读, 收藏, 编辑
摘要: 在这里,我假设你肥肥的客户端是基于MVC设计,同时Web Service的内容是以数据为中心的。 在说客户端之前,必须先说说服务器端如何设计。如果服务器端你习惯了3层设计,那就保留你以前的数据访问层和业务逻辑层设计方法,用一模一样的方法完成这两层,只不过我们不再有通过Page表现的UI,而是通过Web Service直接暴露一些业务逻辑层的调用,这就是服务器端需要完成的一切。看起来没有了Page轻... 阅读全文

初次使用Atlas JavaScript (Part 2 - Web Service扩展)

2006-10-22 15:32 by Cat Chen, 890 阅读, 收藏, 编辑
摘要: Atlas对Web Service两方面的扩展包括:1.自动生成javascript代理类的代码2.在javascript代理类调用时使用JSON表达式进行数据交换 通过看Atlas项目的web.config,你可以发现*.asmx现在关联到了一个新的handler,也就是ScriptHandlerFactory,这个handler的行为很简单,如果请求是REST方式则用新的RestHandler... 阅读全文

初次使用Atlas JavaScript (Part 1 - JavaScript扩展)

2006-10-22 15:30 by Cat Chen, 1008 阅读, 收藏, 编辑
摘要: Atlas的服务器端控件已经说了,现在说说客户端脚本。Atlas的脚本分为xml-script和javascript两部分:xml-script作为一种描述性语言主要用来做Controller,直接放在页面里面;javascript经过Atlas库扩展后可以用来写Atlas特有的客户端控件,而其内容最好放在独立的js文件中通过引用来使用。xml-script我还没有专门研究过,不是太懂其机制,所以... 阅读全文

Atlas 服务器端控件 - 易用但不灵活

2006-10-22 14:54 by Cat Chen, 609 阅读, 收藏, 编辑
摘要: 首先,我会把Atlas服务器端控件区分为两类,纯服务器端控件和客户端逻辑封装控件。前者类似WebControl派生出来的控件那样,它自身并非直接呈现(render)一个客户端元素的实例就算,而是拥有复杂的服务器端逻辑,它呈现出来的HTML由交错的规则决定着;至于后者,则类似HtmlControl派生出来的控件,它所做的基本上就是将自身呈现为一个单一的客户端元素,其服务器端属性比较直接的生成客户端元... 阅读全文

ViewState - ASP.NET 的一个特有存储容器

2006-10-22 14:52 by Cat Chen, 3567 阅读, 收藏, 编辑
摘要: 首先,我不确定是不是只有ASP.NET由ViewState,也不确认它有多特有,只是觉得这个东西对于Web开发MVC分离的进步很有帮助。 所谓的ViewState,就是用来存放关于View的State的地方。以前的存储容器包括Cookies, Session, Application, Cache, Hidden,有时候连传递变量用的QueryString也用作存储容器,但都不是专门用来存储Vie... 阅读全文

ASP.NET 设计优秀之处

2006-10-22 14:51 by Cat Chen, 731 阅读, 收藏, 编辑
摘要: 我觉得ASP.NET设计得最好的地方,就是控件树的概念。虽然WebForm的概念很烂,误导了不少没有Web开发经验的程序员,但它带来的控件这一概念及控件树结构就真的很好。 控件树优秀的地方,就在于它把整个页面的处理逻辑分割到控件,控件与控件之间是松耦合的,不存在任何依存关系。以往的Web开发,所有的代码都是平板式的接受Request平板式的输出Response,Request被看作由不同的Requ... 阅读全文

LoadPostData 最多只有两次

2006-10-22 14:49 by Cat Chen, 1314 阅读, 收藏, 编辑
摘要: 在很多MSDN的一般文档中,都回避了LoadPostData这个问题,直接就说Page由Init到Load然后就是控件事件了。而根据我的实验,在Load的前后会出现两次的LoadPostData,而最后在MSDN也找到了独立的文章证实了这个流程。一般的HTML中静态声明的控件初始化应该发生在Init,Init之后这些控件也就初始化完成。然后此时会有一次LoadPostData,这是面向仅使用HTM... 阅读全文

ASP.NET 2.0 解决了 Code-Behind 需要控件声明同步的问题

2006-10-22 14:45 by Cat Chen, 972 阅读, 收藏, 编辑
摘要: 这显然是一个非常明智而且很早就应该实现的做法,因为已经在HTML中声明为runat="server"的控件,就应该算是声明过,还要在code-behind中同步的用C#代码再声明一个同名控件显然是违反了《程序员修炼之道》中所谓的DRY(Don't Repeat Yourself)原则。 原本ASP.NET 1.x的编译模型是编译站点时先编译code-behind部分,然后得到code-behind... 阅读全文

ASP.NET 2.0 ClientScript Callback

2006-10-22 14:41 by Cat Chen, 1095 阅读, 收藏, 编辑
摘要: 当AJAX出名的时候,ASP.NET 2.0已经基本上完成并且离最后发布时间还剩下半年,此时人人都希望MS为ASP.NET 2.0加上AJAX支持但MS说我们没时间加了,AJAX将成为独立的Atlas项目并出现在ASP.NET 3.0中。不过ASP.NET 2.0中有一个非常通用的但只能称为Method而不能称为Framework的AJAX支持,那就是Callback。 Callback的使用非常... 阅读全文

ASP.NET 2.0 实在太强了!

2006-10-22 14:38 by Cat Chen, 780 阅读, 收藏, 编辑
摘要: .NET Framework 1.x设计很优秀,但是很多东西都还没有,只能借用.NET Framework写自己的Framework然后再用。好象.NET Framework给你不少东西,但实际上你自己不开发自己的Framework那么.NET Framework根本做不了大项目。例如Sharepoint的WebPart架构是套很好的东西,但是只有MS自己用得爽,不装Sharepoint你就不能用... 阅读全文

我不懂 ASP.NET

2006-10-22 14:36 by Cat Chen, 844 阅读, 收藏, 编辑
摘要: 这真是个严重的问题,而且我越来越发觉其严重性。要懂得ASP.NET语法非常容易,要学习MS提供给你那种RAD开发方法也很容易,但是你无法做大东西,或者说你只能够按照ASP的老路去做大东西,并不能“享受”ASP.NET带来的“优越性”。 要做到“优秀”的Web应用,最重要的就是“分离”(“正交设计”就是老生常谈的问题了)。首先就是Web Standards里面鼓催的内容(Content)与布局(La... 阅读全文

ASP.NET 是如何让 aspx 完全编译的呢?

2006-10-22 14:28 by Cat Chen, 1443 阅读, 收藏, 编辑
摘要: 我以前对这个问题一直持怀疑态度,因为.NET Framework里面就有很多TemplateControl处理类和方法挂上了Parse(或Parser)的字样,不过也有挂上Compile字样的。最近我确实测试了一次它是否完全编译: 我做了一个简单的纯asp页面: <html> <head> <title>Now!</title> </head... 阅读全文

2 Ways Thinking In Ajax

2006-10-22 14:21 by Cat Chen, 510 阅读, 收藏, 编辑
摘要: 至今来看,ajax的模式有两种,就是Google模式和.NE­T模式。 Google模式就是服务器仅仅接收xml和返回xml,其他一­切工作都是客户端做。开发的重点在于客户端,然后xmlhttp­仅仅用于发送和接收数据,服务器端则是仅处理数据的逻辑,如果把­xmlhttp看作"透明代理"的话,那么这个设计就是属于客户­端设计了。 .NET模式则刚刚好相反,虽... 阅读全文