问题
最近一段时间在用 C# 和 ASP.NET,在受训和使用中偶尔有一些心得。
我觉得有时候问题比答案本身要重要,所以列了些问题,
这些问题主要是关于基本概念的,或者是初学者一上手就要碰到的。
至少我为其中一些问题困惑过。
关于答案我就并不是都知道了,更要命的是现在自己疑问越来越多,答案出现的越来越慢.....
1. Page class 实现了哪个重要的 interface?
a: IHttpHandler
偶以为了解 .net class, interface 特重要的说......
2. foo.aspx 编译后的 class 名字是什么?
a: foo_aspx
扩展问题:如何动态地,用程序(programmatically)引用一个 user control?
有什么要注意的?
别告诉我 msdn beta 1 里有。你编译一下就知道它在胡说。
3. Shadow-copy dll 存在哪里?
a:
考虑一下,如果没有一种机制(现在我们管它叫 shadow-copy),
我们能否删除/改变正在被使用的 dll?
比如在 vb6+iis+asp+mts 环境中,多少次需要 restart iis service or reboot...
4. 谈谈 AutoEventWireup
a:
有谁发现自己写的某些事件被执行了两遍? ;)
5. 关于 Directive 中的 Inherits:一个 aspx 可能 inherits 多个 class 吗?
多个 page 可能 inherits 一个 code behind 吗?
a:
c# 中不能多重继承。
但多个不同 aspx 肯定能 share 一个 code behind ---- 哪怕 page 里的 server control 不一样。
6. @Assembly 和 csc /r 和 vs.net 项目中 reference 的关系是什么?
a:
需要同时使用 ide 和手工编译的人最清楚了。;-(
7. web control 和 html control 在 performance 上有区别吗?
a:
文档上总说 beta1 拒绝 performance 测试 ;-)
8. 对 asp.net 的请求是由哪个 isapi extension 处理分发的?
a:
xspisapi.dll 在 iis mmc 中改
如果有自己写的继承 IHttpHandler 的东东,知道这些就有用了。
9. 这个 isapi extension 实际上把请求 forword 到哪个 process?
a:
xspwp.exe
10 如果使用外部进程维护 session,这个进程是什么?
a:
aspstate.exe
在 config.web 里面修改设置,可以把 session 放在其它机器上,甚至 sql 里。
这样就可以直接支持 web farm 了。
但 session 变量如果是 object,就会有个 serialize 的过程,很耗资源。
如何让你的 object 更好地支持 serializable interface 是个比较大的话题,
实在敲不动的说。
11 如何自己做个 httphandler? 能想出它有什么实际用处吗?
a:
实现 IHttpHandler 做出自己的 handler 很简单,但很有用,比如当用户请求一些
特殊文件时,比如 *.log,你可以在 config.web 中设置定向到你自己的 handler 上,
让它做处理。
12 谈谈 HttpModule
a:
问题 11 的延伸
13 如何在 VS.NET 中 debug asp.net 应用?
a:
attach process
14 如果你通过继承 System.Web.UI.Control 写了个 Custom Control,
如何加上对 client-side script 的支持?
a:
没什么可说的。
15 在 aspx 页面中放上一些 TextBox, ListBox 等等 Web Control,
但在 code-behind 中并不定义它们,是否可能使用这些 control?
a:
能。通过 page.controls, or form.controls, or container.controls whatever...
这样你可以做出完全不同的 web UI,share 一个共同的 code behind,
做出真正 generic 的应用。