由于常有网友索取源代码,所以把从2004年3月开始到2004年12月的部分文章的源代码放了上来供网友下载
1. 使用C#控制远程计算机的服务
文章
http://blog.csdn.net/zhzuo/archive/2004/03/29/22025.aspx
代码
http://www.aspx163.com/zhzuo/CsharpControlServices.rar

2.  在C#中调用VBScript、JavaScript等脚本的实现
文章
http://blog.csdn.net/zhzuo/archive/2004/04/26/22031.aspx
代码
http://www.aspx163.com/zhzuo/CsharpCallScript.rar

3. 在.net中轻松掌握Windows窗体间的数据交互
文章
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
http://blog.csdn.net/zhzuo/archive/2004/04/05/22028.aspx
http://blog.csdn.net/zhzuo/archive/2004/04/05/22029.aspx
代码
暂缺

4. 在asp.net中为Web用户控件添加属性和事件
文章
http://blog.csdn.net/zhzuo/archive/2004/04/02/22026.aspx
代码
http://www.aspx163.com/zhzuo/aspnetuceventsandproperty.rar

5. 在DataGrid中使用下拉列表框和设置焦点 
文章
http://blog.csdn.net/zhzuo/archive/2004/05/31/22036.aspx
代码
 http://www.aspx163.com/zhzuo/datagridboxfucus.rar

6. 在IE浏览器中使用Windows窗体控件(一)
文章
http://blog.csdn.net/zhzuo/archive/2004/05/10/22032.aspx
http://blog.csdn.net/zhzuo/archive/2004/05/10/22033.aspx
http://blog.csdn.net/zhzuo/archive/2004/05/10/22034.aspx
代码
http://www.aspx163.com/zhzuo/ucinie.rar

7. 用C#去除代码的SourceSafe管理
文章
http://blog.csdn.net/zhzuo/archive/2004/06/15/22038.aspx
http://blog.csdn.net/zhzuo/archive/2004/06/15/22039.aspx
代码
http://www.aspx163.com/zhzuo/removeSourceSafetag.rar

8. 使用多线程加载多个Xml文件到TreeView控件
文章
http://blog.csdn.net/zhzuo/archive/2004/06/10/22037.aspx
代码
http://www.aspx163.com/zhzuo/loadXmlwiththread.rar

9. 编写多线程网络检测程序的简单实现
文章
http://blog.csdn.net/zhzuo/archive/2004/07/08/37262.aspx
代码
http://www.aspx163.com/zhzuo/pingnetworkwiththread.rar

10. 使用Ado.net获取数据库架构信息 
文章
http://blog.csdn.net/zhzuo/archive/2004/07/03/33273.aspx
代码
 http://www.aspx163.com/zhzuo/getdatabaseschema.rar

11. ADO.NET中的多数据表操作浅析
文章
http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
代码
http://www.aspx163.com/zhzuo/adonetskill.rar

posted @ 2005-05-31 14:21 大力 阅读(244) 评论(0)  编辑

控件命名规则一般为前缀+字段名
例如  字段Title,在界面中的控件为textbox 命名为txtTitle
下列为各种控件所统一的前缀

textbox   txt
DropDownList1  drp
ListBox   lst
DataGrid  dag
DataList  Dal
CheckBox  ckb
RadioButtonList  rad
Repeater  rep
Image   img
Button   btn


按钮命名规则
按钮命名一般为前缀btn+动作名称
几种常用按钮命名
保存  btnSave
重置  btnReset
查询   btnSearch
修改  btnEdit
添加  btnAdd
删除  btnDelete

 

3、编码约定
目前,中勤在线已正常运作三年有余,程序员由九七级本科生延续至现在的零二级,各个年级的程序员编码的熟悉程度和编码的方式各不一致,以至于程序编码五花八门,严格的说,从目前中勤在线的网站后台程序编码总体来看,中勤在线还停留在个人网站的水准上,看不出一个教育类大型网站的应有的水准,因此,我们的程序员必须统一编码方式,原因其一,可以体现出整个网站的整体性;其二,可以提高程序的可阅读性,方便下一阶段的程序员修改更新程序。以下为具体内容:
1、    变量先定义后使用;
2、    首字大写,尽量采用英语描述,不宜采用拼音描述;
3、变量命名基本采用匈牙利命名法则;
匈牙利命名法则基本原则是:
变量名=属性 + 类型 + 对象描述
即一个变量名由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。
下边是根据我站一些推荐使用的规则例子(详细命名规则请参看匈牙利命名规则):
·属性部分
全局变量:         g_
常  量:         c_
·类型部分
 指  针:         p_
 句  柄:         h_
 整  型:         i_
 浮 点 型:         f_
 日 期 型:         d_
 布 尔 型:         b_
 字 符 型:         s_
数 组 型:         ary_
·描述部分
 初 始 化:         Init
 临时变量:         Tmp
其中部分规则考虑到将来.net发展的c# 变量命名规则,在Asp中可不考虑。
参考实例:c_i_InitBorderColor、g_s_TmpNewsTitle、g_i_ary_VoteNum,程序员可根据实际情况梢做改动,但必须遵循匈牙利命名法则,能够使其他程序员看变量名便知其类型和属性等关键标识符意义;
4、所有控件的属性值都要使用双引号或者单引号包括起来;
5、控件的命名规则:
  Button:          btn
Form:          frm
Select:          sel
Textarea:         txt
Input:           ipt
  Hidden:          hid
6、各控件主要使用规则:
  ·img控件
alt:所有展示类图片都要具有能简要描述图片内容的文字说明。
·Input控件
maxlength:所有Input控件都需要制定maxlength属性,默认值为数据库中对应的字段的长度。
readonly:所有不可更改的信息都要使用readonly属性。
·Form控件
action:所有Form都要指定action,如果提交给本身就指定action=""
method:尽量使用post方式
onsubmit:所有form都要指定提交前需要的检查程序。
所有form都要有对应的reset button。
·Button控件
Onclick:form中用于提交的button不容许使用此方法,所有数据检查通过form的onsubmit激活。
·head属性
所有页面都要具有不为空的head属性。
·所有中文页面都要加上如下语句:
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

4、数据库设计
程序员在进行数据库设计前应先仔细阅读由市场部做的各项分析文档(包括可行性分析,需求分析等),查看由信息部拟订的项目所需功能列表后,仔细斟酌后进行数据库初步设计,设计完后提交数据库设计报表。详细规范如下:
·所有表必须以字符“t”(table)开头,如表tUsers,tAffriches,tMessages等等;
·所以字段必须以字符“f”(field)开头,如字段fID,fName,fTitle等等;
·较重要表中,最少创建2个预留字段,命名为fPre_Int (数字型),fPre_Str (字符型);
·设计Access数据库应有较长数据库文件名,或者与网络部协商,做成ODBC连接,防止数据库被非法下载。
·设计SQL Server数据库还应备份数据库创建SQL脚本,即备份数据库结构。
数据库设计基本

5、文件夹设置
随着中勤在线的发展,其栏目设置越来越多,经过三年的开发,现已有十多个栏目,各个栏目均由不同人员开发,各栏目文件夹的设置也是七临八乱,不成规矩,很难让别的开发人员一目了然其栏目结构。因此为了更加规范程序和页面文件夹的设置,现规定如下:
·必须设有Connections文件夹,存放数据库连接文件;
·必须设有Inc文件夹,存放包含文件和其他页面调用程序;
·必须设有Images文件夹,存放图片文件;
·必须设有Css文件夹,存放样式表文件;
·必须设有Doc文件夹,存放开发文档;
·必须设有Original Files文件夹,存放图片源文件;
·必须设有Js文件夹,存放脚本文件;
·在有上传功能的栏目中,必须设有Upload文件夹,存放上传的图片及文件;
·Asp.net栏目中,必须设置Source文件夹,存放程序C#或者Vb.net源文件;
·Asp.net栏目中,必须设置Bin文件夹,存放动态连接库文件;
·使用SQL Server库栏目中,必须设置Sql文件夹,存放数据库结构SQL脚本文件;
·必须设置Backup文件夹,存放更新前的备份文件。

6、注释与缩进
在过去的开发中,中勤在线使用的大部分为Asp脚本语言,此语言程序与页面嵌套在一起,通常被称为“意大利面条”式代码,所以阅读程序往往很费时间,在.net开发中,出现了CodeBehind技术可将代码和页面分开,在一定程度上可以减轻程序员的负担,但是要让程序更快的阅读代码,还必须在适当的部分添加注释,并且请合理采用代码缩进,在模块与模块之间,循环区块,条件区块等等都应该使用代码缩进,缩进一级为两个半角空格。

7、安全与调试
开发后期,程序员还担负着代码的调试和漏斗检测任务,其中就包括如下内容
·所有页面要在800*600,1024*768两种分辨率下运行通过;
·所有页面要在IE5.0,5.5以及6.0下运行通过没有JavaScript错误;
·所有涉及删除的操作,在用户选定以后都要再进行一次确认操作;
·检查Sql漏洞,以及每个传递参数,排除入侵可能性;
·开发完毕后必须挂在工作机房调试经内部调试一周方可正式发布;
 
==============================================================================

C#程序编码规范
发表:2004-6-17 15:19:26  出处:博客网(yourblog.org)
--------------------------------------------------------------------------------

1.       目的

为了保证企业编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。

2.       范围

适用于企业所有基于.NET平台的软件开发工作。

3.       规范内容

3.1.    代码格式

u       所有的缩进为4个空格,使用VS.NET的默认设置。
u       在代码中垂直对齐左括号和右括号。

if(x==0)

              {

                   Response.Write("用户编号必须输入!");

              }

           不允许以下情况:

if(x==0) {

              

                   Response.Write("用户编号必须输入!");

              }

或者:

if(x==0){ Response.Write("用户编号必须输入!");}

 

u       为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在1024*800的显示频率下不得超过一显示屏

u       当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。

u       每一行上放置的语句避免超过一条。

u       在大多数运算符之前和之后使用空格,这样做时不会改变代码的意图却可以使代码容易阅读。

例:

        int j = i + k;

而不应写为

    int j=i+k;

u       将大的复杂代码节分为较小的、易于理解的模块。

u       编写 SQL 语句时,对于关键字使用全部大写,对于数据库元素(如表、列和视图)使用大小写混合。

u       将每个主要的 SQL 子句放在不同的行上,这样更容易阅读和编辑语句,例如: SELECT FirstName, LastName

                             FROM Customers

                  WHERE State = ’WA’

 

 

3.2.    注释(Comment)规范

注释规范包括:模块(类)注释规范、类的属性、方法注释规范、代码间注释

3.2.1. 模块(类)注释规范

模块开始必须以以下形式书写模块注释:

///<summary>

         ///模块编号:<模块编号,可以引用系统设计中的模块编号>

         ///作用:<对此类的描述,可以引用系统设计中的描述>

         ///作者:作者中文名

         ///编写日期:<模块创建日期,格式:YYYY-MM-DD>

         ///</summary>

如果模块有修改,则每次修改必须添加以下注释:

         ///<summary>

         ///Log编号:<Log编号,从1开始一次增加>

         ///修改描述:<对此修改的描述>

         ///作者:修改者中文名

         ///修改日期:<模块修改日期,格式:YYYY-MM-DD>

         ///</summary>

 

3.2.2. 类属性注释规范

在类的属性必须以以下格式编写属性注释:

         /// <summary>

         ///属性说明

/// </summary>

3.2.3. 方法注释规范

在类的方法声明前必须以以下格式编写注释

         /// <summary>

         /// 说明:<对该方法的说明>

         /// </summary>

          /// <param name="<参数名称>"><参数说明></param>

         /// <returns>

         ///<对方法返回值的说明,该说明必须明确说明返回的值代表什么含义>

         /// </returns>

 

3.2.4. 代码间注释规范

代码间注释分为单行注释和多行注释:

         单行注释:

//<单行注释>

         多行注释:

         /*多行注释1

          多行注释2

          多行注释3*/

代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。

 

 

3.3.    变量(Variable)命名规范

3.3.1. 程序文件(*.cs)中的变量命名规则

      

       程序中变量名称 = 变量的前缀 +代表变量含意的英文单词或单词缩写。

 

1.  类模块级的变量请用“m_”作前缀

public class hello

{

         private string m_Name;

         private DateTime m_Date;

 

}

2.  类的属性所对应的变量,采用属性名前加“m_”前缀的形式

public class hello

{

     private string m_Name;

     public string Name

     {

         get

{

      return m_Name;

}

}

}

3.  过程级的变量不使用前缀

public class hello

{

         void say()

         {

                string SayWord;

}

}

4.  过程的参数使用“p_”作为参数

        public class hello

        {

               void say(string p_SayWord)

               {

               }

        }

 

补充说明:

        针对异常捕获过程中的Exception变量命名,在没有冲突的情况下,统一命名为e;

如果有冲突的情况下,可以重复e,比如:ee。

Try

{

         //your code

         try

{

//code

}

catch(Exception ee)

{

//your code

}

}

catch(Exception e)

{

         //your code

}

补充:如果捕获异常不需要作任何处理,则不需要定义Exception实例

例:

try

{

         //your code

}

catch( Exception )

{

}

 

5.  鉴于大多数名称都是通过连接若干单词构造的,请使用大小写混合的格式以简化它们的阅读。每个单词的第一个字母都是大写.

6.  即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如 i 或 j。

7.  在变量名中使用互补对,如 min/max、begin/end 和 open/close。

8.  不要使用原义数字或原义字符串,如 For i = 1 To 7。而是使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解。

3.3.2. 控件命名规则

 

控件命名=Web控件缩写前缀  + “_” +变量名

 

 

控件
缩写

Label
lbl

TextBox
txt

CheckBox
chk

Button
cmd

ListBox
lst

DropDownList
drp

等等
  

 


3.4.    常量命名规范

常量名也应当有一定的意义,格式为 NOUN 或 NOUN_VERB。常量名均为大写,字之间用下划线分隔。

例:

        private const bool   WEB_ENABLEPAGECACHE_DEFAULT           = true;

        private const int    WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;

        private const bool   WEB_ENABLESSL_DEFAULT                 = false;

 

注:

变量名和常量名最多可以包含 255 个字符,但是,超过 25 到 30 个字符的名称比较笨拙。此外,要想取一个有实际意义的名称,清楚地表达变量或常量的用途,25 或 30 个字符应当足够了。

 

 

3.5.    类(Class)命名规范

1.    名字应该能够标识事物的特性。

2.    名字尽量不使用缩写,除非它是众所周知的。

3.    名字可以有两个或三个单词组成,但通常不应多于三个。

4.    在名字中,所有单词第一个字母大写。

         例如    IsSuperUser,包含ID的,ID全部大写,如CustomerID。

5.    使用名词或名词短语命名类。

6.    少用缩写。

7.    不要使用下划线字符 (_)。

例:

public class FileStream
public class Button
public class String


3.6.    接口(Interface)命名规范

      和类命名规范相同,唯一区别是  接口在名字前加上“I”前缀

    例:

    interface IDBCommand;

    interface IButton;

 

3.7.    方法(Method)命名规范

      和类命名规范相同。

3.8.    命名空间(NameSpace)命名规范

      和类命名规范相同。

posted @ 2005-05-06 23:15 大力 阅读(997) 评论(0)  编辑
Abs(number) 取得数值的绝对值。   
Asc(String) 取得字符串表达式的第一个字符ASCII 码。   
Atn(number) 取得一个角度的反正切值。   
CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。   
CBool(expression) 转换表达式为Boolean 型态。   
CByte(expression) 转换表达式为Byte 型态。   
CChar(expression) 转换表达式为字符型态。   
CDate(expression) 转换表达式为Date 型态。   
CDbl(expression) 转换表达式为Double 型态。   
CDec(expression) 转换表达式为Decimal 型态。   
CInt(expression) 转换表达式为Integer 型态。   
CLng(expression) 转换表达式为Long 型态。   
CObj(expression) 转换表达式为Object 型态。   
CShort(expression) 转换表达式为Short 型态。   
CSng(expression) 转换表达式为Single 型态。   
CStr(expression) 转换表达式为String 型态。   
Choose (index, choice-1[, choice-2,  [, choice-n]]) 以索引值来选择并传回所设定的参数。   
Chr(charcode) 以ASCII 码来取得字符内容。   
Close(filenumberlist) 结束使用Open 开启的档案。   
Cos(number) 取得一个角度的余弦值。   
Ctype(expression, typename) 转换表达式的型态。   
DateAdd(dateinterval, number, datetime) 对日期或时间作加减。   
DateDiff(dateinterval, date1, date2) 计算两个日期或时间间的差值。   
DatePart (dateinterval, date) 依接收的日期或时间参数传回年、月、日或时间。   
DateSerial(year, month, day) 将接收的参数合并为一个只有日期的Date 型态的数据。   
DateValue(datetime) 取得符合国别设定样式的日期值,并包含时间。  
Day(datetime) 依接收的日期参数传回日。   
Eof(filenumber) 当抵达一个被开启的档案结尾时会传回True。   
Exp(number) 依接收的参数传回e 的次方值。   
FileDateTime(pathname) 传回档案建立时的日期、时间。   
FileLen(pathname) 传回档案的长度,单位是Byte。   
Filter(sourcearray, match[, include[, compare]]) 搜寻字符串数组中的指定字符串,凡是数组元素中含有指定字符串,会将它们结合成新的字符串数组并传回。若是要传回不含指定字符串的数组元素,则include 参数设为False。compare 参数则是设定搜寻时是否区分大小写,此时只要给TextCompare 常数或1 即可。   
Fix(number) 去掉参数的小数部分并传回。   
Format(expression[, style[, firstdayofweek[, firstweekofyear]]]) 将日期、时间和数值资料转为每个国家都可以接受的格式。   
FormatCurrency(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 将数值输出为金额型态。numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。   
FormatDateTime(date[,namedformat]) 传回格式化的日期或时间数据。   
FormatNumber(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回格式化的数值数据。Numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。   
FormatPercent(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回转换为百分比格式的数值数据。numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。   
GetAttr(filename) 传回档案或目录的属性值。   
Hex(number) 将数值参数转换为16 进制值。   
Hour(time) 传回时间的小时字段,型态是Integer。   
Iif(expression, truepart, falsepart) 当表达式的传回值为True 时执行truepart 字段的程序,反之则执行falsepart 字段。   
InStr([start, ]string1, string2) 搜寻string2 参数设定的字符出现在字符串的第几个字符,start 为由第几个字符开始寻找,string1 为欲搜寻的字符串,string2 为欲搜寻的字符。   
Int(number) 传回小于或等于接收参数的最大整数值。   
IsArray(varname) 判断一个变量是否为数组型态,若为数组则传回True,反之则为False。  
IsDate(expression) 判断表达式内容是否为DateTime 型态,若是则传回True,反之则为False。   
IsDbNull(expression) 判断表达式内容是否为Null,若是则传回True,反之则为False。   
IsNumeric(expression) 判断表达式内容是否为数值型态,若是则传回True,反之则为False。   
Join(sourcearray[, delimiter]) 将字符串数组合并唯一个字符串,delimiter 参数是设定在各个元素间加入新的字符串。   
Lcase(string) 将字符串转换为小写字体。   
Left(string, length) 由字符串左边开始取得length 参数设定长度的字符。   
Len(string) 取得字符串的长度。   
Log(number) 取得数值的自然对数。   
Ltrim(string) 去掉字符串的左边空白部分。   
Mid(string, start[, length]) 取出字符串中strat 参数设定的字符后length 长度的字符串,若length 参数没有设定,则取回start 以后全部的字符。   
Minute(time) 取得时间内容的分部分,型态为Integer。   
MkDir(path) 建立一个新的目录。   
Month(date) 取得日期的月部分,型态为Integer。  
MonthName(month) 依接收的月份数值取得该月份的完整写法。   
Now() 取得目前的日期和时间。   
Oct(number) 将数值参数转换为8 进制值。   
Replace(expression, find, replace) 将字符串中find 参数指定的字符串转换为replace 参数指定的字符串。   
Right(string,length) 由字符串右边开始取得length 参数设定长度的字符。   
RmDir(path) 移除一个空的目录。   
Rnd() 取得介于0 到1 之间的小数,如果每次都要取得不同的值,使用前需加上Randomize 叙述。   
Rtrim(string) 去掉字符串的右边空白部分。   
Second(time) 取得时间内容的秒部分,型态为Integer。   
Sign(number) 取得数值内容是正数或负数,正数传回1,负数传回-1,0 传回0。   
Sin(number) 取得一个角度的正弦值。   
Space(number) 取得number 参数设定的空白字符串。  
Split(expression[, delimiter]) 以delimiter 参数设定的条件字符串来将字符串分割为字符串数组。   
Sqrt(number) 取得一数值得平方根。   
Str(number) 将数字转为字符串后传回。   
StrReverse(expression) 取得字符串内容反转后的结果。   
Tan(number) 取得某个角度的正切值。   
TimeOfDay() 取得目前不包含日期的时间。   
Timer() 取得由0:00 到目前时间的秒数,型态为Double。   
TimeSerial(hour, minute, second) 将接收的参数合并为一个只有时间Date 型态的数据。   
TimaValue(time) 取得符合国别设定样式的时间值。   
Today() 取得今天不包含时间的日期。   
Trim(string) 去掉字符串开头和结尾的空白。   
TypeName(varname) 取得变量或对象的型态。   
Ubound(arrayname[, dimension]) 取得数组的最终索引值,dimension 参数是指定取得第几维度的最终索引值。   
Ucase(string) 将字符串转换为大写。   
Val(string) 将代表数字的字符串转换为数值型态,若字符串中含有非数字的内容则会将其去除后,合并为一数字。   
Weekday(date) 取的参数中的日期是一个星期的第几天,星期天为1、星期一为2、星期二为3 依此类推。   
WeekDayName(number) 依接收的参数取得星期的名称,可接收的参数为1 到7,星期天为1、星期一为2、星期二为3 依此类推。 

选择自 AppleBBS 的 Blog 

作者Blog:http://blog.csdn.net/AppleBBS/
posted @ 2005-05-06 23:11 大力 阅读(2076) 评论(1)  编辑
摘要: 楼主真sa,为什么要这么说呢?? 主  题: 靠,CSDN上面尽是误导之人! 作  者: kflash (狂闪工作室) 等  级: 信 誉 值: 100 所属社区: .NET技术 ASP.NET 问题点数: 1 回复次数: 33 发表时间: 2005-04-07 10:23:52 客户端获取服务器控件值的代码大家都说是document.getElementById("TextBoxID&...阅读全文
posted @ 2005-05-06 22:51 大力 阅读(380) 评论(0)  编辑

《msdn开发精选》“高性能Web开发技术”网上聊天活动

本期嘉宾:郭红俊(ghj1976),孟宪会(孟子E章) ,刘如鸿(策划编辑)

聊天主题:高性能的Web应用程序开发


嘉宾[主持人]: 各位网友大家下午好!

欢迎大家到CSDN嘉宾聊天室。

[2004-10-21 13:39:00]

嘉宾[主持人]:

今天我们非常荣幸的请到了几位在Web开发方面非常有经验的嘉宾来CSDN聊天室作客。

[2004-10-21 13:48:00]

嘉宾[主持人]:

请大家在这次聊天活动中,尽量围绕关于Web开发技术方面的问题进行讨论,请不要涉及其他内容

[2004-10-21 13:49:00]

嘉宾[主持人]: 嘉宾介绍

先介绍一下今天来聊天室做客的嘉宾

[2004-10-21 13:51:00]

嘉宾[主持人]:

孟宪会:大名鼎鼎的“孟子E章”,CSDN上的顶尖人物,“江湖”一等一的高手。

[2004-10-21 13:51:00]

嘉宾[主持人]:

郭红俊(ghj1976):MS MVP,CSDN论坛架构设计者和主力开发人员,擅长ASP.NET和XML。

[2004-10-21 13:52:00]

嘉宾[主持人]:

刘如鸿:《MSDN开发精选》策划编辑,擅长基于COM/COM+和ASP.NET的企业应用,同时熟悉客户端脚本设计。同时也是这次聊天的主持人。

[2004-10-21 13:54:00]

嘉宾[主持人]: 聊天规则1

在聊天过程中,请不要谈论与本次聊天主题无关的话题

[2004-10-21 13:55:00]

嘉宾[主持人]: 聊天规则2

请各位网友将需要嘉宾解答的问题提交给现场的chengyancy

[2004-10-21 13:55:00]

嘉宾[主持人]:

我们的聊天马上就要开始了。

[2004-10-21 13:57:00]

嘉宾[主持人]:

再次声明,请大家在这里不要涉及一些与本次主题无关的话题!

[2004-10-21 14:01:00]嘉宾[刘如鸿]:

大家好,我是刘如鸿,目前是《MSDN开发精选》的策划编辑,主要擅长com/com+和dotNet及其脚本开发

[2004-10-21 14:05:00]

嘉宾[孟宪会(孟子E章)]:

欢迎大家光临“高性能的Web应用程序开发” 聊天室

[2004-10-21 14:07:00]

嘉宾[主持人]:

已经有嘉宾来了,请大家开始!

[2004-10-21 14:07:00]

嘉宾[刘如鸿]:

我们今天举办这个活动是希望有更多的人了解asp.net,孟子和郭红俊(ghj)都是csdn上的顶尖高手,这次有幸请到他们来作为我们的嘉宾

[2004-10-21 14:07:00]

嘉宾[郭红俊(ghj1976)]:

欢迎大家来到聊天室,我的一些信息如下:

网名: ghj1976 蝈蝈俊.net

Blog: http://blog.joycode.com/ghj/

Email: ghj1976@csdn.net

目前正在从事下一代CSDN技术社区的规划工作,对下一代技术社区有任何想法,都可以联系我。

[2004-10-21 14:08:00]

嘉宾[郭红俊(ghj1976)]:

问:能否介绍一下CSDN论坛的架构设计?几次改版都在提高性能方面做了哪些工作?如何做的?效果如何?

答:目前 CSDN 论坛的架构,从性能来说,主要采用下面几个技术:

1、静态文件技术;

2、双缓存帖子列表技术;

3、应用逻辑数据库存储过程封装(这个技术由于受数据库服务器性能的限制,下一代会放弃这个技术)

[2004-10-21 14:10:00]

嘉宾[刘如鸿]:

问:asp转asp.net,C#有没有问题,整个框架老是搞不清楚,谢谢!

答:asp和asp.net还是两个不同的框架,或者说运行环境还是有比较大的差距,总体来说asp是解释执行的服务器端技术,而asp.net则在托管环境下的Web应用解决方案

[2004-10-21 14:11:00]

嘉宾[刘如鸿]:

我想,高性能可以从如下几个方面考虑吧

1。响应速度

2。容载能力

3。系统的可扩展性

4。系统的弹性

[2004-10-21 14:13:00]

嘉宾[郭红俊(ghj1976)]:

问:asp转asp.net,C#没有问题,整个框架老是搞不清楚,谢谢!

答:看来你架构方面的文章看的比较少, MSDN 专门有站点讲架构的。

http://msdn.microsoft.com/architecture/

另外,如果英文不是足够好,可以看《.NET系统架构与开发》这本书。不过这本书仅仅是翻译的一些MSDN上关于.net 架构方面的文章。 英语好的,就不要看了。这本书,翻译仍然不是足够好。

[2004-10-21 14:14:00]

嘉宾[刘如鸿]:

问:对海量数据型网站应如何处理?

答:缓存设计是一个非常重要的策略。另外需要根据具体的业务去做具体的实现的

[2004-10-21 14:16:00]

嘉宾[孟宪会(孟子E章)]:

问:我一直不能理解XML在页面与Database之间如果起到很好的作用的?

答:两者之间本质上并没有什么关系,只是应用的时候才进行结合。

[2004-10-21 14:16:00]

嘉宾[郭红俊(ghj1976)]:

问:在CSDN中静态文件技术怎么实现?

答:静态文件只是为了提高阅读速度,而不是保存数据,所以CSDN的静态文件是数据库内容的一个镜像,所以有时候,会发现有些不同步的问题。静态文件的更新,只是在需要的时候在更新。

[2004-10-21 14:16:00]

嘉宾[郭红俊(ghj1976)]:

问:WEB的安全性如何,以及如何提高其速度?

答:安全性和速一般是矛盾的。衡量的标准就是看你要保密的东西有多大价值,如果发现价值不大,速度第一,安全第二,否则安全第一,数据第二。

[2004-10-21 14:18:00]

嘉宾[刘如鸿]:

问:.NET开发的Web应用比JAVA开发的Web应用好在哪里?

答:.NET开发相对于Java最大的优势还是在开发效率吧,毕竟对于一个商业公司,成本是一定需要考虑的,而不仅仅是因为信仰所以选择Java,VS.NET是目前市面上最好的IDE,而且.net在针对开发人员方面的考虑更加亲切一点

[2004-10-21 14:18:00]

嘉宾[郭红俊(ghj1976)]:

问:双缓存帖子列表技术是什么技术能说一下吗

答:一层缓存,即数据缓存;再一层缓存,即输出缓存。这跟ASP.net 的缓存概念一样的。

不过,目前CSDN 的ASP 缓存是通过使用 Application+Xml Dom 对象来实现的缓存,.net 中就不用这么复杂,有很多种选择。但是思路,仍然是这两种缓存。

[2004-10-21 14:20:00]

嘉宾[刘如鸿]:

问:三层体系结构会不会影响web应用程序的性能?

答:在Web应 用开发中,分层是非常必要的,从某种意义上来说紧耦合的编码方式是能够获得最好的效率,但是在一个大型站点开发过程中,如果都那样的开发大家应该可以理 解,是无法想象的。分层设计有利于你更好的抽象,也比较合适大型站点开发。如果因为分层而造成性能问题,我们可以在设计完毕之后对模型进行降解,比如原先 都分层设计的某些模块采用在同一个代码段中实现,但是这个并不意味着你不分层设计。

[2004-10-21 14:22:00]

嘉宾[郭红俊(ghj1976)]:

问:缓存与静态页面,那种方法效率最高?

答:具体情况具体分析。比如,如果数据量很大,像 CSDN 论坛帖子, 总共有进20 G的数据量。使用缓存就很复杂。所以采用静态页面技术。如果更新比较频繁,你再采用静态页面技术的话,数据库的磁盘I/O负载就会很大,这时候,使用缓存就比较好些,因为都是内存操作。依次类推,你要找到你要解决啥问题。再确定用那种方式提高效率。

[2004-10-21 14:23:00]

嘉宾[孟宪会(孟子E章)]:

问:双缓存帖子列表技术是什么技术能说一下吗?

答:asp.net建议尽量使用缓存来提高性能,缓存技术在msdn上和网络上都有许多介绍。专们的书没有看到。如果需要的话我可以进行综合一下房到csdn上

[2004-10-21 14:24:00]

嘉宾[刘如鸿]:

问:请介绍一下asp.net中MVC模式的实现吧?

答:Model,View,Control,从简单的来说我们可以理解为BO(Business Object),这个层面是针对数据模型的,View可以理解为aspx页面,Control则是你的业务逻辑,三层设计在web开发中是很常见的,你可以参考微软提供的《企业结构与模式》这本书,在中文站点有对应的地址。

[2004-10-21 14:24:00]

嘉宾[郭红俊(ghj1976)]:

问:如何突破SESSION下载,保存网页html?

答:最简单,模拟人的正常操作, 如果该网站限制了一分钟只能访问三个页面,那你程序中也一分钟请求三次。IE 的操作,就是传递Http信息,这些完全可以用程序模拟出来的。

[2004-10-21 14:25:00]

嘉宾[刘如鸿]:

问:.NET和JAVA的web应用中,速度谁更好一些呢?我以前用过C#写web应用,发现速度好像不快。

答:如果从运行速度来说,C#应该是优于Java实现的,毕竟在虚拟机这个层次上,在windows上.net做的比java好,影响速度的原因很多的,不能够因此归咎于c#或者java谁慢。

[2004-10-21 14:26:00]

嘉宾[孟宪会(孟子E章)]:

问:如果只开发过asp,可以推荐一些书,系统的对.net的web开发学习的吗?好的一本书实在太重要了!

答:你说的很对。一本好的书对学习有很大帮助。可以参考asp.net高级编程,wrox出版的。清华翻译的

[2004-10-21 14:26:00]

嘉宾[郭红俊(ghj1976)]:

问:CSDN的静态页面不是XML么?

答:那是你只看到CSDN有论坛,没看到CSDN有新闻、文档,新闻、文档,这里CSDN是用的 SHtml 技术,而不是XML 技术。静态文件技术其实可以根据使用哪种静态文件,分很多类。具体使用那种静态文件,要看你的实际需求。

[2004-10-21 14:27:00]

嘉宾[郭红俊(ghj1976)]:

问:像sohu这样的大的门户网站,如何生成静态页面给客户端访问的呢?

答:sohu 的其实是最简单的,他的核心是新闻, 新闻只要一次发布, 然后就不用修改了,他只需要在发布后,生成静态文件即可。

[2004-10-21 14:28:00]

嘉宾[孟宪会(孟子E章)]:

问:我在开发一个B/S模式的文档管理系统,实现电子文档的在线编辑和签入签出等功能,其中批量文件上传(包括相对路径信息)功能由于浏览器安全限制没办法在web上实现,大家有办法吗?

答:批量上传一般是在客户端做控件。

[2004-10-21 14:29:00]

嘉宾[刘如鸿]:

问:像sohu这样的大的门户网站,如何生成静态页面给客户端访问的呢

答:你可以通过一些框架来完成静态页面的生成,这是纯粹的服务器端技术,在IIS下面,你甚至可以用aspx来实现,然后采用URL Rewrite技术,让用户感觉你是生成了大量的html,比如你可以将/article.aspx?id=12345映射成/articles/12345.html,请求的是静态html,真正处理还是aspx。这些技术在iis5.0通过isapi就可以实现,当然了,asp.net下面实现更加容易一些

[2004-10-21 14:29:00]

嘉宾[郭红俊(ghj1976)]:

问:csdn网站用了几个服务器,实现群集和负载均衡了吗?

答:目前版本的CSDN没有实现负载均衡,下一代的设计,负载均衡是要实现的。目前CSDN有10多台服务器。分别在做不同用途。

[2004-10-21 14:29:00]

嘉宾[刘如鸿]:

问:文档,新闻类使用shtml的静态文件的好处是什么?

答:使用shtml最大的好处就是容易被搜索引擎索引,一般来说搜索引擎对于静态页面的pagerank是高于动态页面的

[2004-10-21 14:31:00]

嘉宾[孟宪会(孟子E章)]:

问:alibaba网站的站内搜索是怎么实现的?它的特点是用户搜索后得到的页面全是静态的,连分页都是,这是如何实现的?

答:alibaba网站没有去研究,应当是服务端动态生成的。

[2004-10-21 14:31:00]

嘉宾[刘如鸿]:

问:对生成的大量静态临时文件该怎么处理?

答:你可以通过一些存储机制去解决的,或者简单的删除,就看你的业务需要了。

[2004-10-21 14:32:00]

嘉宾[孟宪会(孟子E章)]:

问:生成静态页的的好处是什么?跟ASP,JSP页面有什么区别?

答:静态页不需要服务器进行处理,直接送往客户端。可以大大降低服务器的开销。asp,jsp等需要在服务器端解析后才发送到客户端。需要cpu,内存的消耗

[2004-10-21 14:34:00]

嘉宾[郭红俊(ghj1976)]:

问:在WEB开发中最主要的部分是数据库结构设计吗?

答:对小型网站来说,数据库设计好了,绝大多数问题就解决了。如果对大型网站来说,机群、性能、这些会占很大比重。网站是啥? 网站是个数据展现、收集平台,也就是把数据库的内容展现出来,以及把需要收集的数据记录到数据库。显然,展现这里也是一个重要的部分。所以,我的观点,对于小型的网站,要做好WEB开发,重要的两点基本功:

1、数据库;2、美工(提高用户体验)。如果网站大了,就需要综合考虑了。

[2004-10-21 14:34:00]嘉宾[刘如鸿]:

问:高性能的Web应用程序开发含义很大了吧! b/s 结构是否可以真正取代 c/s结构呢?

答:我想不可以的,目前很多C/S回归的论讨在各个网站都可以看见,但是可以预见的是,目前的发展需要一个更加易于部署,易于实现的运行时,比如微软的Smart Client技术,还有Mozilla的XUL,还有MacroMedia的Flex等等,也许我们可以期待Longhorn的avalon技术!

[2004-10-21 14:34:00]

嘉宾[刘如鸿]:    

问:采用URL Rewrite技术让用户感觉是生成了大量的html,实际还是aspx,请问,采用这种方式(至少我觉得换汤不换药)对性能是否一定有提高?

答:我想性能的提高不是在于你采用哪个具体的技术,而是在于你是否有完整的解决方案,比如你提到的这个问题,我们可以通过aspx的缓存来提高效率的。

[2004-10-21 14:36:00]

嘉宾[孟宪会(孟子E章)]: :

问:.NET框架下可以开发MVC结构的应用吗?

答:是可以的,可以参考在 ASP.NET 中实现 Model-View-Controller

http://www.microsoft.com/china/MSDN/library/architecture/patterns/esp/ImpMVCinASP.mspx

[2004-10-21 14:36:00]

嘉宾[刘如鸿]:

问:那么,是否可以这样,我建立数据库对其地址索引,过期删除,但是又被访问到的话再重新生成文件。

答:恩,这是一种实现的方式

[2004-10-21 14:36:00]

嘉宾[刘如鸿]:

问:上万条的记录从XML文件读出来与用dataset从SQL数据库读出来那种效率最高?

答:这个时候的XML不是一个最佳的解决方案,特别是在结构化的数据中,xml擅长的领域是在半结构化数据和语义表达,如果是简单的数据访问,DataReader更加优于DataSet。

[2004-10-21 14:38:00]

嘉宾[郭红俊(ghj1976)]:

问:上万条的记录适合采XML文件的方式处理吗?

答:上万条的记录适不适合Xml,主要是看:

  1、你会对这些数据进行查询么?? 目前 XML的查询性能不是很乐观;

   2、你需要把这些数据加载到内存么??如果要,是不是要一次性加载??那第一加载时间多长你是可以接受的??我想,只要你不需要考虑上面两个问题的话,用Xml 就是可以的,否则不适合。

[2004-10-21 14:38:00]

嘉宾[刘如鸿]:

问:默认情况下,使用ASP.NET总是带有一大堆烦人的VIEWSTATE,而我看到很多ASP.NET构建的网站上都是不用VIEWSTATE的,请问他们是怎么做的,是否有相关的模式.VIEWSTATE对效率的影响情况大吗?

答:对于asp.net的web control,你可以禁用viewstate的,效率肯定会有影响的,毕竟对于这些数据服务器需要一个加载和存储的过程。

[2004-10-21 14:39:00]

嘉宾[郭红俊(ghj1976)]:

问:shtml和html区别在哪里?

答:最明显的一个不同:shtml 可以 使用 这样的包含文件方式。Html 不可以 。

[2004-10-21 14:40:00]

嘉宾[刘如鸿]: :

问:用其他语言,譬如说asp,该怎么实现URL Rewrite,能否举个例子?

答:helicon提供了一个免费的解决方案,你可以从网络上得到,ISAPI_Rewrite支持asp,你甚至可以在iis上启用jsp,php那样的后缀名

[2004-10-21 14:42:00]

嘉宾[孟宪会(孟子E章)]:

问:我是一家某行业B2B商务网站的技术人员,我们采用的仍然是asp,是否可以实现URL Rewrite技术呢

答:asp不支持UrlRewrite。你可以参考http://dev.csdn.net/article/42/42861.shtm

[2004-10-21 14:43:00]

嘉宾[刘如鸿]:

问:学习过ASP,不过觉得ASP和ASP。NET实在是天壤之别呀,不知道该学什么,怎么学?

答:我觉得面向对象的设计思想是非常重要的,网络上有相当多asp.net的文章,孟子的网站(http://dotnet.aspx.cc)也有很多文章。

[2004-10-21 14:44:00]

嘉宾[郭红俊(ghj1976)]:

问:CSDN为何老是“Service Unavailable”,有无方法解决 ?

答:“Service Unavailable ”是这个瞬间IIS服务器处于非开通状态。出现这个的情况,是因为以前CSDN服务器经常死到哪里,服务器没有任何响应。 后来就作了一个定时监控程序,如果发现一个指定页面,限定时间内,访问没有反应,自动把IIS 重起。

Service Unavailable 就是 IIS 正在重起中时候,访问网页给出的错误信息。在没有彻底提高服务器性能前,没有办法解决 Service Unavailable 的问题。

[2004-10-21 14:44:00]

嘉宾[孟宪会(孟子E章)]:

问:能否说一下像论坛这样的海量数据型程序,数据在时刻变化的,到底用XML技术好不好?

答:用xml技术主要是减轻服务器的负担,对搜索,查询等都没有好处,还是要结合数据库的。

[2004-10-21 14:45:00]

嘉宾[孟宪会(孟子E章)]:

问:请问孟子,你建议在开发大中型的网站时数据库操做全部使用存储过程吗?

答:是否用存储过程要看你的操作,对于比较复杂的数据库操作和比较费时的,建议用存储过程。同样的sql语句,存储过程总是比asp/asp.net中的快。

[2004-10-21 14:47:00]

嘉宾[郭红俊(ghj1976)]:

问:能否指点一下怎么学习ASP。NET呢?要看那些书籍比较好呢?

答:强烈推荐《ASP.NET Unleashed》第二版这本书。

也就是这本:http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS0022702

[2004-10-21 14:47:00]

嘉宾[孟宪会(孟子E章)]:

问:有没有人熟悉web开发中的构件化设计?向往这方面的研究,请高人指点!

答:你说的构架化是什么意思?是模块化的意思吗?这个应当是软件发展的方向。以后开发软件应当像搭积木。

[2004-10-21 14:49:00]

嘉宾[孟宪会(孟子E章)]:

问:能介绍几本关于ASP.NET的书籍吗?最好是循序渐进的方式阅读那种。

答:asp.net高级编程讲的比较全面。先入门,再进行深入参考资料钻研

[2004-10-21 14:50:00]

嘉宾[郭红俊(ghj1976)]:

问:三层体系结构会不会影响web应用程序的性能?

答:这要看你如何设计这个三层架构了,以及你的网站是不是达到了需要三层架构的时候。如果网站本身访问量不大,又特意的做三层架构,未必会好。我的意见,不要太刻意的追求这个模式那个模式,选择最适合自己网站的方式。

[2004-10-21 14:52:00]

嘉宾[郭红俊(ghj1976)]:

问:有一个朋友说,如果访问量过大会给数据库造成很大的压力,你在实际应用中是怎样提高程序频繁访问数据库效率问题的?

答:1、缓存.虽然对你网站的请求有上万了,但是通过缓存,你可以把对数据库的请求减少到只有几十个;2、提高数据库性能.比如用存储过程。以及数据库设计上使用冗余。减少数据库的压力。

[2004-10-21 14:53:00]

嘉宾[孟宪会(孟子E章)]:

问:sina那样的大型网站是怎么开发的,用asp.net可以做到那种效果吗?

答:高性能网站要考虑很多因素,软件硬件都有,sina主要生成的都是静态页面。asp.net应当也可以。

[2004-10-21 14:53:00]

嘉宾[郭红俊(ghj1976)]:

问:能否说一下像论坛这样的海量数据型程序,数据又在时刻变化,应如何处理?

答:论坛从总的来说,变化很快,但是具体到一个帖子,这个帖子,可能变化就会很慢。明白我的意思了吧,如果一个东西变化很快,那你就拆分,拆分成小的个体。注意不要拆分的让人感觉你的论坛死气沉沉就行。当然,提高性能也是必须的。

[2004-10-21 14:55:00]

嘉宾[孟宪会(孟子E章)]:

问:真正的高性能需要哪几个方面的因素呢?

答:高性能的因素很多:尽量用Cache,少用Session,尤其Session对象,少用Web COntrol,尽量用客户端实现,尽量少与服务器回发,生成的html 应简洁,无多余代码。我若有时间进行整理,会放到http://dotnet.aspx.cc/,这里空间有限!

[2004-10-21 14:57:00

嘉宾[郭红俊(ghj1976)]:

问:像阿里巴巴,易趣等这样的电子商务网站,关系到会话的,适合用静态文本技术吗?

答:电子商务网站不太适合用纯静态文件。但是,一个页面不可能都是需要及时更新的,其中一部分可能n久都不更新。这样的话,部分区域的缓存,以及部分区域作静态文件。就可以解决这个问题。

[2004-10-21 14:57:00]

嘉宾[郭红俊(ghj1976)]:

问:日流量100万的网站,数据量不是很大,大概需要几台服务器集群?

答:这涉及到你的网站的具体架构。如果你的网站数据更新不需要很及时。采用了静态文件技术。那么,一台普通的服务器就可以完全胜任了。所以,要看几台服务器,除了要看流量,还要看架构。

[2004-10-21 14:59:00]

嘉宾[刘如鸿]:

问:用cache怎么用,具体讲一下?

答:比较简单的讲,cache实现就是将一些数据变动不是特别频繁的内容作缓存,比如对于某些统计数据。我可以缓存一个页面,可以局部缓存。这个依赖于具体框架的实现技术!

[2004-10-21 14:59:00]

嘉宾[郭红俊(ghj1976)]:

问:对于CSDN帖子列表技术我还有点疑问。帖子列表的变动是很频繁的,现在都是保存在数据库里面吗?

答:前面我说过,目前版本的帖子列表,采用的是双缓存技术。也就是,其实你阅读帖子列表,是没有跟数据库打交道的,是在跟缓存打交道。

[2004-10-21 15:00:00]

嘉宾[孟宪会(孟子E章)]:

问:vs2005+sql2005缓存技术和现在相比是不是会发生比较大的改变,有相关的对比网址吗?

答:sql2005有许多改进。vs2005增加了开发的方便性,比如:自定义,断点,更好的是支持xslt的断点调试,具体可参考http://www.microsoft.com/sql/2005/

[2004-10-21 15:00:00]

嘉宾[刘如鸿]:

问:请推荐一下WEB报表设计的工具?

答:如果是基于.NET的,Reporting Service是首选,另外BO的Crystal Report(水晶报表)应用也非常广泛,DataDynamic出品的ActiveReport也非常不错。

[2004-10-21 15:02:00]

嘉宾[孟宪会(孟子E章)]:

问:可否请孟子老师介绍一下自定义服务器控件?

答:asp.net快速入门就有了,就不在这里说了吧

http://chs.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/quickstart.aspx

[2004-10-21 15:02:00]

嘉宾[刘如鸿]:

问:用asp.net可否做倒像servlet那样,在url中没有文件的扩展名或给文件任意显示扩展名?

答:恩,可以做到的,通过UrlRewrite就可以,但是不要滥用,因为将所有的请求都提交给ISAPI_ASPNET.dll对于性能是有一些影响的。

[2004-10-21 15:03:00]

嘉宾[郭红俊(ghj1976)]:

问:ASP三层开发的优势在哪?仅仅是是代码分离吗?性能上会不会有影响?国内成功应用是:DVBBS。

答:一个论坛成功与否,不是他技术有多牛,而是看他的论坛制度。易用性。三层架构是一种比较通用的架构。它能解决绝大多数的问题,但不能解决你的一些特殊需求,特殊情况。比如你的网站很小,做啥三层架构,一层就行了

[2004-10-21 15:04:00]

嘉宾[刘如鸿]:

问:请教一个可能比较可笑的问题,什么叫“部署”?

答:简单的理解,就是将你开发完毕的应用如何从测试平台迁移到运行平台。

[2004-10-21 15:04:00]

嘉宾[孟宪会(孟子E章)]:

问 :怎样设计这种缓存呢?我能用XML暂时存储最常被访问的数据,但是频繁的打开/关闭xml文件也会给I/O带来压力,您说的内存方式是怎么解决的?

答:xml不适合做缓存的存储地的。

[2004-10-21 15:05:00]

嘉宾[郭红俊(ghj1976)]:

问:请问采用C/S结构开发网络数据库应用程序还要注意些什么?

答:C/S 结构,其实是两层结构,如果你发现你的数据库压力太大,这时候两个解决方法:1、提高数据库的性能,比如拆分数据库到不同服务器,优化数据库等等;

2、变成三层架构,一个中间层,中间层缓存一些常请求的数据。

[2004-10-21 15:06:00]

嘉宾[孟宪会(孟子E章)]:

问:如果你的QQ在线话,在QQ论坛也会显示你在线,好像很同步,我想问一下这是如何实现的?

答:是从一个数据库取信息,登录时作个标记。

[2004-10-21 15:06:00]

嘉宾[孟宪会(孟子E章)]:

问:可否请孟子老师介绍一下自定义服务器控件?

答:请参阅:http://chs.gotdotnet.com/QuickStart/aspplus/default.aspx?url=/quickstart/aspplus/doc/quickstart.aspx

[2004-10-21 15:06:00]

嘉宾[刘如鸿]:

问:web程序可以开发高性能的像QQ那样的即时通吗?

答:我想这是两个不同范畴的应用把,在这点上,你可以看看Web MSN Messenger,从http://webmessenger.msn.com/可以直接使用你的msn,但是我想web最适合做的工作不是做及时通信,而是在于别的领域

[2004-10-21 15:07:00]

嘉宾[郭红俊(ghj1976)]:

问:怎么做缓存 能具体点吗

答:具体的代码,根据语言不同。对WEB程序来说,其实就两大类:1、页面输出缓存,这时候,缓存的是Html这些输出信息;2、数据缓存,这些数据由于要做逻辑运算,缓存的是比较方便计算的数据结构,比如DataSet、xml 等等。

[2004-10-21 15:07:00]

嘉宾[郭红俊(ghj1976)]:

问:讲讲怎么做缓存吧,天哪,我什么都没学到

答:数据结构那门课学习过么??缓存就是把需要东西保存到内存中,被后来使用,至于如何缓存,可以使链表,可以是队列等等。。当然,有现成的DataSet、Xml、内存镜像文件 等等这些可以用。

[2004-10-21 15:10:00]

嘉宾[刘如鸿]:

问:像动网中存的一些信息在cookie中,这叫不叫缓存?

答:缓存是针对数据而言的,将一些信息放在cookie严格上来说是一种状态跟踪

[2004-10-21 15:10:00]

嘉宾[郭红俊(ghj1976)]:

问:我有个朋友他用C#开发手机短信的应用,我想问一下,手机短信的应用和web的应用有什么不同?

答:短信程序跟其他程序差别不大,其实就是调用其它公司的短信接口,这个接口可能是一个Http Get请求,也可能是一个Http Post 请求,当然,还有Web Service。具体看对方合作公司。剩下的,跟其他的程序一样的。

[2004-10-21 15:11:00]

嘉宾[孟宪会(孟子E章)]:

问:问个最笨的问题,什么是缓存?

答:生成高性能、可缩放的 Web 应用程序最重要的因素之一是能够在首次请求项时将这些项存储在内存中,不管它们是数据对象、页还是页的某些部分。可以将这些项存储在 Web 服务器上或请求流中的其他软件上,例如代理服务器或浏览器。使您能够避免重新创建满足先前请求的信息,尤其是那些需要大量处理器时间或资源的信息。这就是通常所说的缓存,它允许您使用多种技术跨 HTTP 请求存储页输出或应用程序数据并对其进行重复使用。这样,服务器不需要重新创建信息,从而节省了时间和资源。ASP.NET 提供了两种您可以用来创建高性能 Web 应用程序的缓存类型。第一种叫做输出缓存,它允许将动态页或用户控件响应存储在输出流(从发起服务器到请求浏览器)中任何具备 HTTP 1.1 缓存功能的设备上。当后面的请求发生时,不执行页或用户控件代码,缓存的输出用于满足该请求。第二种类型的缓存是传统的应用程序数据缓存,可以使用它以编程方式将任意对象(例如数据集)存储到服务器内存,这样您的应用程序可以节省重新创建这些对象所需的时间和资源。

[2004-10-21 15:11:00]

嘉宾[郭红俊(ghj1976)]:

问:请讲一下为什么一定要用HttpModule和HttpHandler?

答:这个并不是一定要用呀,在你需要的时候,再用呀。建议你看看 ASP.net 的工作原理,懂得工作原理,对设计高性能的程序很有帮助的。

[2004-10-21 15:13:00]

嘉宾[刘如鸿]:

问:请讲一下为什么一定要用HttpModule和HttpHandler?

答:如果你理解ISAPI的两种应用,我想理解httpModule和Httphandler就相对容易一点,简单的讲,httpmodule相当于过滤器,能够监听所有的http请求,而httphandler则是一个处理程序,aspx页面也是一个httphandler,只是实现了更多的功能罢了

[2004-10-21 15:13:00]

嘉宾[郭红俊(ghj1976)]:

 问:能不能叫孟宪会(孟子E章)整理一点缓存相关的技术文章放在csdn?

答:孟子的个人网站: http://dotnet.aspx.cc/

                     http://sz.luohuedu.net/xml/

[2004-10-21 15:13:00]

嘉宾[孟宪会(孟子E章)]:

问:动网论坛是如何应用缓存技术的?

答:asp只能用application或者session

[2004-10-21 15:13:00]

嘉宾[刘如鸿]:

问:在效率和服务器负载上哪样更好呢?

答:我想,设计一个好的系统不是在于你某段代码执行有多快,而是在于你的系统是否有能够承受大量的请求,还有在负载量变化比较大的时候怎样去适应这样的改变

[2004-10-21 15:14:00]

嘉宾[孟宪会(孟子E章)]:

问:请问采用C/S结构开发网络数据库应用程序还要注意些什么?

答:安全性,性能比较关键。

[2004-10-21 15:15:00]

嘉宾[孟宪会(孟子E章)]:

问:我周围有个朋友,他们采用ASP三层结构开发,他们这样就将asp开发中遇到的代码不能分离很好的解决,国内成功的应用是DvBBS,请问这样用在性能上有缺点吗?

答:最好做成dll组件,这样比较高效。

[2004-10-21 15:16:00]

嘉宾[郭红俊(ghj1976)]:

 问:能谈谈关于自己在开发中从asp转型到.net中最困难和最重要的地方吗

答:Session 不能共享。

[2004-10-21 15:16:00]

嘉宾[刘如鸿]:

问:如何在web中调用usb硬件的密匙?我的意思是我做的OA是能过插入usb来登录的。

答:如果要在Web上访问本地资源,需要签名的ActiveX,而且需要在每个客户机器都需要安装,另外一些证书也可以解决的!

[2004-10-21 15:16:00]

嘉宾[孟宪会(孟子E章)]:

问:关于缓存设计,哪里这方面比较好例子或书?

答:在网络上就可以找到很多教程的。专门的书好像没有!

[2004-10-21 15:16:00]

嘉宾[孟宪会(孟子E章)]:

问:C#在windows下运行速度比JAVA下快,这我相信,两者都是微软的产品,兼容性好。我想问一下,用C#开发的web应用好果不在windows下运行呢?

答:c#目前在wndows下运行的好,其它系统还有问题。不过,Mono已经实现在Lunix下运行了!

[2004-10-21 15:17:00]

嘉宾[郭红俊(ghj1976)]:

问:用WEB方式访问网络数据库快呢,还是用C/S访问网络数据库快呢??

答:这个问题要具体问题具体分析,他们是不是走的都是一样的带宽,是不是都是ADO.net,被访问的数据库压力如何?访问的服务器压力如何?等等这些都影响到谁更快的问题。

[2004-10-21 15:19:00]

嘉宾[刘如鸿]:

问:ASP.NET的安全性到底如何?

答:我想一个系统的安全性是需要依赖的一些技术和实现,更多的是依赖于你的实现吧,相对于之前的服务器,Windows Server 2003是第一个从安全角度考虑设计的系统,同时ASP.NET对于资源方面提供了一个很好的模型,你可以使用Windows 认证,可以使用简单配置来实现权限控制,可以采用表单认证,还有passport的支持!

[2004-10-21 15:19:00]

嘉宾[孟宪会(孟子E章)]:

 问:sqlserver 和 access哪个资源占用大?

答:sqlserver 和 access具体没有见到比较的结果数据,sqlserver应该比较大。access一般用来做小的,不并发的应用!

[2004-10-21 15:20:00]

嘉宾[刘如鸿]:

问:采用C/S和WEB开发网络数据库应用程序那个性能好些?

答:C/S结构能够充分利用客户端资源,而B/S则拥有更好的弹性,一切还是从应用的角度出发去考虑你的系统!

[2004-10-21 15:21:00]

嘉宾[孟宪会(孟子E章)]:

问:用在web页面上的flash很容易被用户下载,有什么办法加密,防止用户下载,可不可以将flash做成像Real那样的流式处理,在线播放?

答:flash已经是流格式的了。这与swf文件格式有关系!

[2004-10-21 15:22:00]

嘉宾[刘如鸿]:

问:在asp.net采用xml有什么样的益趣?

答:在xml的支持上,.net是做的最好的,XML在存储半结构化数据是有明显的优势的,而且在ado.net,对于xml提供了大量的支持!

[2004-10-21 15:22:00]

嘉宾[孟宪会(孟子E章)]:

问:xml web service 主要应用在哪些方面?

答:可以用在任何方面,只是现在应用还不多,技术还不是很成熟。比如提供股票信息,天气预报等!

[2004-10-21 15:23:00]

嘉宾[郭红俊(ghj1976)]:

问:asp.net和最近流行的web标准有冲突吗?我注意到asp.net生成的代码有时候是很庞大的,这对性能来说应该是一种负担吧,虽然有缓存机制,但是好像没从根本上减少带宽占用。

答:1、ASP.net 2.0 中, html head 上的那些垃圾代码默认没有了。2、ASP.net 中引入的 Web Form , 需要服务器跟客户端大量的通讯,ViewState 就是为此产生的。这显然影响的网站的性能,(传递的数据更多了。)所以,根据你的自己情况,用 Web Form,以及禁用一些 ViewState,对性能提高都是很有帮助的。微软提供了这个东西,并不是要你任何时候都要用它,我们要有选择的使用它。必要的时候,我们要自己写些组件,替代微软的一些默认组件。

[2004-10-21 15:23:00]

嘉宾[孟宪会(孟子E章)]:

问:httphandle与httpmodule是什么,如何应用,有何区别,用这些可以提高性能吗?

答:可参考

http://tech.ccidnet.com/pub/article/c294_a34991_p1.html

http://www.frontfree.net/view/article_856.html

[2004-10-21 15:24:00]

嘉宾[郭红俊(ghj1976)]:

问:Session 不能共享。我发现csdn登录程序是用asp.net做的,进去后是asp页面。那样如何处理session?

答:Cookie, 两者Cookie 是可以通用的。可以参看我的这篇Blog:

http://blog.joycode.com/ghj/archive/2004/03/17/16453.aspx

[2004-10-21 15:25:00]

嘉宾[孟宪会(孟子E章)]:

问:对于大型商务网站,常面临采用静态页面好呢,还是采用页面缓存好呢?这样的选择有答案吗?

答:各有利弊,对商务网站,还是采用动态的好,因为要进行验证身份等!

[2004-10-21 15:25:00]

嘉宾[孟宪会(孟子E章)]:

问:在效率和负载上,我们没有大量请求这个测试环境怎么办?怎么能知道系统是否能经受住考验?

答:微软在vs.net提供了act,可以大致了解!

[2004-10-21 15:27:00]

嘉宾[刘如鸿]:

问:对于大型商务网站,常面临采用静态页面好呢?还是采用页面缓存好呢?这样的选择有答案吗?

答: 从安全的角度考虑,作为电子商务网站,所有的数据是应该保密的,这个时候采用动态页面时一个比较合适的选择,这只是我个人的倾向性,因为使用动态页面,在 页面权限控制方面我们可以更加容易一些,当然了,具体的应用还是依赖于实际的业务,如果你的页面不想被搜索引擎索引到,那么我还是建议使用动态页面,否则 反之[2004-10-21 15:27:00]

嘉宾[郭红俊(ghj1976)]:

问:能不能具体说一说csdn上的双缓存是怎么实现的?是否页面缓存保存信息,数据缓存保存页面缓存的索引?

答:对,页面缓存是使用 ASP 的Application 缓存了页面输出的Html代码;数据缓存是把一个 XML Dom 对象缓存到 Application 对象了。另外有个上次缓存更新时间被记录到 Application , 来实现定时维护缓存。对 ASP 来说,全局缓存只有用 Application 。 下一代的社区,缓存的可选方案就多多了。

[2004-10-21 15:28:00]

嘉宾[孟宪会(孟子E章)]:

问:我在网上下载了一个国外朋友写的组件,他可以实现加密flash在网页上的路径,请问这是怎样实现的

加密成什么样子的?

[2004-10-21 15:29:00]

嘉宾[郭红俊(ghj1976)]:

问:csdn论坛是完全用Cookie会话的吗?

答:no, 因为CSDN 的Cookie 是加密的Cookie。如果完全用 Cookie 会话的话,性能有压力。CSDN 的会话是结合Session 的使用Cookie。Session 保存的是解密后的数据。

Cookie 是保存的加密后的数据。这样就不用每次都作解密处理。只是啥时候解密,定时,或者Session丢失的时候解密。

 [2004-10-21 15:30:00]

嘉宾[郭红俊(ghj1976)]:

问:如果我使用asp中的application对象,来存储信息,算不算使用了缓存呢?

答:当然算呀!

[2004-10-21 15:30:00]

嘉宾[刘如鸿]:

问:怎么测试性能问题,其入口点是哪里?

答:你可以采用一些压力测试工具,VS.NET自带了Application Center Test,还有Rational也提供了很好的工具,另外对于业务逻辑组件,可以做一些单元测试,这个你可以采用NUnit!

[2004-10-21 15:30:00]

嘉宾[刘如鸿]:

问:对于Web应用程序,如何测试以定位其性能问题?换句话说,高性能的Web应用开发怎么测试?

答:我想还是压力测试吧,比如你的站点可以同时接受多少的请求,每秒可以处理多少笔交易!

[2004-10-21 15:31:00]

嘉宾[郭红俊(ghj1976)]:

问:如何进入一个要求有验证的页面!比如说如何做一个win form的程序 ,让他用我自己的帐号发帖到SCDN上?

答:注意CSDN的Cookie,你就可以用程序来实现你在CSDN的活动了。不过也小心你的Cookie被盗。那你就麻烦了。另外,如果你被封杀了,当然无论如何,都发不了帖的。

[2004-10-21 15:32:00]

嘉宾[孟宪会(孟子E章)]:

问:从没试过自己开发组件,请问有好的书籍推荐吗?

答:可以到书店看看,我也好久没有留意了。如果开发.net组件,可以看《asp.net 服务器控件与组件开发》。

[2004-10-21 15:33:00]

嘉宾[孟宪会(孟子E章)]:

问:不用sessionce能在页面间传递dataset对象吗?

答:Cache也可以

[2004-10-21 15:34:00]

嘉宾[孟宪会(孟子E章)]:

问:怎么把一个对象存放到application呢?比如数据库连接,或者XML DOM对象?一般用到什么知识或者技术?

答:放application里不需要什么特别的只是,与一般的相同。不建议存放对象

[2004-10-21 15:36:00]

嘉宾[刘如鸿]:

问:一个页面url加密的问题:像本聊天室地址:?user=uglybean&pass=owTxTExVYMyRDYYTjEeMdqlJTjSGghaU&xb=1&r=19133中间加密算法是怎么样的?有什么好处?

答:这个需要依赖于你具体的算法,有些使用MD5加密或者其他的加密算法!

[2004-10-21 15:36:00]

嘉宾[郭红俊(ghj1976)]:

问:好象session也使用了cookie,这与直接使用cookie有什么区别呢?再就是session的安全性到底有多高?

答:Session 的具体数据是保存在服务器的,但是他会保存一个Key在客户端的Cookie中,只有这个Key才可以取对应Session的值。所以,如果你登录某个网站了,我知道你的这个Key,这时候,我完全可以冒名你。Cookie 则是把具体数据,直接保存到客户端了。

[2004-10-21 15:37:00]

嘉宾[孟宪会(孟子E章)]:

问:不用sessionce能在页面间传递dataset对象吗?

答:Cache也可以的

[2004-10-21 15:37:00]

嘉宾[郭红俊(ghj1976)]:

问:用C#能否开发一个类QQ的网上视频会议系统?客户端是否一定要装.NET框架呢?

答:这就看你是不是 BS 的结构了。现在不是有视频聊天室么, 他们客户端就不需要 .net!

[2004-10-21 15:38:00]

嘉宾[刘如鸿]:

问:MS说NET上的语言都是平等的,功能是相同的,可是以后的C++要作到开发一切程序甚至是开发操作系统(stan lippmant说的),那么C#也可以罗?是骗人的吗?

答:每个语言都有自己的定位的,即使在.net,c#相对于合适做enterprise 开发,而c++/cli做系统级的开发,这个我们《程序员》杂志社第11期有专门c++/CLI的专题,其中也讲到了c++/cli和c#的关系!

[2004-10-21 15:38:00]

嘉宾[郭红俊(ghj1976)]:

问:我觉得要开发高性能的Web应用一定要有可靠的测试做后盾,否则无从谈起?

答:这是当然,高性能网站,其实就是要你找到你网站的瓶颈,然后针对瓶颈修改代码。

[2004-10-21 15:38:00]

嘉宾[孟宪会(孟子E章)]:

问:web应用,有很多客端代码 javascrpt, vbscript等,用什么工具测试比较好?

答:interdev,vs.net都支持调试的!

[2004-10-21 15:39:00]嘉宾[郭红俊(ghj1976)]:

问:web应用,有很多客端代码 javascrpt, vbscript等,用什么工具测试比较好?

答:微软的 ATC 就是一个典型的测试WEB的工具。

[2004-10-21 15:39:00]

嘉宾[郭红俊(ghj1976)]:

问:采用C/S和WEB开发网络数据库应用程序那个性能好些?为什么用c/S开发网络数据库应用程序的软件如此少,好多都是WEB的,为什么?

答:C/S 的是 胖客户端, 客户端要求必要严。其实现在整天鼓吹的不是 C/S 也不是 B/S,而是智能客户端程序。

[2004-10-21 15:41:00]

嘉宾[孟宪会(孟子E章)]:

问:STAN LIPPMAN说C++要成为NET中的系统语言,C#也应是才行,对不?

答:这个不能妄下结论,看微软的了!

[2004-10-21 15:41:00]

嘉宾[郭红俊(ghj1976)]:

问:我总觉得asp.net的运行速度很慢,vs中运行一个页面要等好半天,原因?

答:第一次运行,他要编译的,当然慢了

[2004-10-21 15:42:00]

嘉宾[郭红俊(ghj1976)]:

问:请问什么是智能客户端程序?

答:参看:

http://www.microsoft.com/china/community/program/originalarticles/TechDoc/smartclient.mspx这里讲了智能客户端程序的一些基本概念。

[2004-10-21 15:47:00]嘉宾[郭红俊(ghj1976)]:

问:B/S应用中怎样权衡客户端代码与服务器端代码,以提高性能呢?

答:其实就是安全性跟性能综合考虑。比如有些校验,就必须客户端有,服务器段也有。

[2004-10-21 15:48:00]

嘉宾[郭红俊(ghj1976)]:

问: CSDN能不能出些C#程序开发的视频讲座呢?最好具体到某一方面的开发,让大家下载啊?

答:CSDN目前正在联系可以提供视频讲座的厂商,跟他们谈合作。如果你有认识的,或者你公司就是做视频讲座的,可以联系我: ghj1976@csdn.net另外,微软中国自己有WebCase , 可以到那里下载一些自己感兴趣的视频讲座。

[2004-10-21 15:53:00]

嘉宾[主持人]:

我们的聊天活动将要结束,给大家带来的不妥之处,请原谅。

以后我们还会见面的!

谢谢大家的合作与支持!

希望大家继续关注和支持我们的网站和杂志!

发表于 2004年10月22日 2:54 PM


评论
# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-10-26 2:24 PM hillg
还行吧,虽然讨论的是微软的技术。
但是服务端大部分技术是通用的。


# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-10-26 10:56 PM aa
很多都是所答非所问

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-10-27 1:20 PM baitianhai
我看将所谓的"高性能web开发"改为"高性能微软web开发技术"吧。
题目都不对

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-10-29 7:15 PM vt
真的应该改一下题目,这样误导人

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-01 5:39 PM 孤沙
MSDN不就是微软的吗?不明白么

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-02 11:51 AM jhon
没有多少实质性的东西!sigh

# 如何在虚拟服务器上发布WEB程序 2004-11-02 5:12 PM 笨小孩
请教专家:
使用visaul studio .net 开发的WEB程序如何在虚拟空间运行.
因为虚拟服务器租用的人员不能进行程序安装.
需要修改项目中哪些文件的哪些部份.如何改.

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-08 5:46 PM gg
干吗老替微软吹嘘?谁都知道java在B/s开发上占有优势,csdn好像从没这样下功夫讨论过java。商业利益驱使吧

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-09 6:16 PM eric liu
to 笨小孩
如果只是简单的应用,都可以直接运行吧

主要的修改都在web.config文件中

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-14 2:09 AM starfeng
怎么感觉学asp.net总在问一些很原始的东西呢,是不是被微软封得太厉害了?

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-14 2:02 PM 稻香老农
这次讨论不是很好,佳宾对很多问题的回答其实不是很准确,深度也不够。

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-14 8:39 PM 蛙蛙
感觉很不错呀,挺好的,长了不少知识哦,稻香老农好象颇不以为然哦

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-15 2:23 AM gxboy
高性能web开发,实际上是web的架构问题。

问的不深。回答的也不够详细!

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-16 11:05 AM chengsion
还不如吹吹牛皮

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-16 12:54 PM 呼啦
纯粹聊天了,没有深入下去。可能也是这些高手们本身在CSDN网站上的实现没有什么太多自己的东西。

例如说的最多的双缓存,数据缓存,输出缓存,看来是通过ASP中的Application实现的。那么你的Application对象里面放的是自己的写的一个用ATL开发的自由线程/多线程的控件(VB不可能,只支持apartment,放在application中是有病),还是直接就是Application[url1]=xmlstring?如果是后者,你让作者说什么?所有的工作全让ASP内置对象Application实现了。

如果是前者,那么都是可以讲讲这个控件是如何实现并发,读写锁策略,粒度大小,替换算法,cache如何和数据库同步等等。但是从聊天记录来看,可能并不是该种情况。

因此,所谓的高性能,高也高不到哪儿去。例如竟然还在application中保存xml,还不如直接保存一个二进制的结构。但是MS提供的application本身不能直接保存一个结构,因此就用上xml了,每次都需要经过xml serialize/deserialize,速度就打了折扣。保存对象吧,又由于很多对象可能只支持apartment模式,因此干脆就将对象的状态也串行化到xml string中。

只是几个将系统提供的几个API了解清除了的高手。

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-18 6:42 PM hui
xml绝对是废资源的持久层!
能不用就不用。

csdn根本就没体现出来xml的优点,
xml是机器与机器交流的语言,
而现在的csdn只是用了xsl这项技术,
把rendering的部分交给客户端就叫做高性能了?

抛开微软,看看apache上的java项目,那才是真正的高性能web开发技术。

C#的速度可能看着比java快,但是作web开发,IIS会是你的大瓶颈,而且如果处理不好内存问题,也就是“缓存”,IIS会拖死你。

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-18 6:46 PM hui
xml绝对是废资源的持久层!
能不用就不用。

csdn根本就没体现出来xml的优点,
xml是机器与机器交流的语言,
而现在的csdn只是用了xsl这项技术,
把rendering的部分交给客户端就叫做高性能了?

抛开微软,看看apache上的java项目,那才是真正的高性能web开发技术。

C#的速度可能看着比java快,但是作web开发,IIS会是你的大瓶颈,而且如果处理不好内存问题,也就是“缓存”,IIS会拖死你。

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-19 11:33 AM lightwiter
没看出太多的名堂,不知道在干什么.????
讲一点实在的呀.具体业务具体实现,我还问你干嘛.我也知道讲.

对我高性能这一方面我没看到什么具体的东西

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-20 1:41 PM Izual
怎么那么多人都不关心jsp呢?asp.net压得太狠了吧!

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-22 10:08 AM xuxu
通片下来,我就记得个双缓存,一会asp,一会.net
application到底能啥???

# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-24 5:49 PM zwp315
没搞清啥叫双缓冲

# iusr_计算机名 2004-11-26 10:23 AM feifeiyaqi
由于数据库文件所在目录的NTFS权限而引起的'不能更新。数据库或对象为只读"错误。
说明:
WIN2K系统延续了WINNT系统的NTFS权限。
对于系统中的文夹都有默认的安全设置。
而通过HTTP对WWW访问时的系统默认用户是 iusr_计算机名 用户 ,它属于guest组。
当通过HTTP访问时,可以ASP或JSP,也或是PHP或.NET程序对数据进行修改操作:
比如:
当打开某一个文章时,程序设定,文章的阅读次数=原阅读次数+1
执行
conn.execute("update arts set clicks=clicks+1 where id=n")
语句时,如果 iusr_计算机名 用户没有对数据库的写权限时,就会出错.
解决方法:
找到数据库所在目录
右键》属性》安全选项卡》设置 iusr_计算机名 用户的写权限(当然,也可以是everyone)
请问:右键》属性》安全选项卡》设置 iusr_计算机名 用户的写权限(当然,也可以是everyone)具体
在数据库的那里?


# 回复:《msdn开发精选》“高性能Web开发技术”网上聊天活动 2004-11-29 11:39 PM shuug
确实都是微软的WEB开发技术,而没有JAVA,题目该改正了,以后不应该这样欺骗程序员,CSDN的信誉应更重要.

posted @ 2005-05-06 22:19 大力 阅读(1321) 评论(1)  编辑

ASP.NET Form Authentication安全漏洞及对策

NT-Bugtraq的邮件列表上首先报告的Security bug in .NET Forms Authentication适用于ASP.NET 1.0 (RTM, SP1, SP2, SP3)ASP.NET 1.1 (RTM, SP1).

 

Form Authentication被使用时,匿名用户在试图访问被保护的页面如http://localhost/WebApplication2/secret.aspx时会被redirect到登录网页如http://localhost/WebApplication2/login.aspx?ReturnUrl=%2fWebApplication2%2fsecret.aspx.

 

但是如果使用Mozilla,匿名用户可以这样未经认证就访问被保护的页面:http://localhost/WebApplication2\secret.aspx;对IE,可以使用%5C达到类似的效果:http://localhost/WebApplication2%5Csecret.aspx

 

微软在105日发布了What You Should Know About a Reported Vulnerability in Microsoft ASP.NET网页以提供针对此安全漏洞的对策。当前的对策主要是如KB887459所描述的那样在Global.asax或其Code-Behind中在Application_BeginRequest中增加检查

 

    if (Request.Path.IndexOf('\\') >= 0 ||
        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath)
{
        throw new HttpException(404, "not found");
    }

显然每个Application都需要有这样的检查以应对此安全漏洞。微软还会提供其他的对策,请关注What You Should Know About a Reported Vulnerability in Microsoft ASP.NET网页更新。

 

ASP.NET 2.0 Beta1,并没有此漏洞而是得到404错误。

 

贴子以"现状"提供且没有任何担保也没有授予任何权利

发表于 Thursday, October 07, 2004 1:53 AM

评论

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 8:49 AM TommyWOo

http://localhost/WebApplication2%5Csecret.aspx


试过了,不行。IE 版本问题?

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 9:40 AM R2

啊,好可怕!幸好我用Beta1

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 9:43 AM R2

难道微软的这种Form认证这么脆弱??

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 10:09 AM wonge

Windows 2003下不会出现这种错误:http://localhost/WebApplication2%5Csecret.aspx ?

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 10:12 AM 孙展波

我是使用XPSP2的OS及其带的IE6验证的。
从What You Should Know About a Reported Vulnerability in Microsoft ASP.NET网页,Windows 2003 Server也有这个问题。这是ASP.NET的Bug而不是OS的Bug.

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 10:44 AM Lostinet

可怕的漏洞啊~~~
解决方法可以做个简单的IHttpModule,把它注册到GAC和machine.config中.

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 1:21 PM Flashtoy

我按方法试了.怎么没有这个问题.
吓的我半死!
http://www.creva.org.cn/creva/orgshow.aspx

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 6:19 PM TommyWOo

楼上的朋友,,我想到了。。


因为我们用的是IE,IE要用这个漏洞,得使用%5C来代替\符号。。。

我们两个都是在根目录的第一级子目录加验证的,比如你的,得用http://www.creva.org.cn%5Ccreva/orgshow.aspx

显然这里有一个问题,域名是什么?这里域名被表示成了“www.creva.org.cn%5Ccreva”,而不是实际域名“www.creva.org.cn”。

我想问题应该在这里,展波用的是,虚拟目录下的子目录,所以出现了那个漏洞。

你可以用Mozilla的\符号试试。

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 6:25 PM 蓝色空间

确实有问题,赶快修正

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 6:38 PM libber

为什么我测试不出来呢? .net framework 1.1 sp1

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 8:28 PM kwklover

我也测试过了,没有这个问题啊
大家可以测试一下这个网站

# re: ASP.NET Form Authentication安全漏洞及对策 10/7/2004 8:33 PM erictang2003

我也没测试出来,用IE6 和 FireFox1.0 都没试出来.
不过还是改了代码以防万一

# re: ASP.NET Form Authentication安全漏洞及对策 10/8/2004 12:10 AM xiaoheng

测试了,没发现问题!!!!

# re: ASP.NET Form Authentication安全漏洞及对策 10/8/2004 9:09 AM Gigabyte

可以在Global.asax里面加上这么一段解决:

void Application_BeginRequest(object source, EventArgs e) {
if (Request.Path.IndexOf('\\') >= 0 ||
System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {
throw new HttpException(404, "not found");
}
}

这里有MS的解释:
http://www.kbalertz.com/kb_887459.aspx

# re: ASP.NET Form Authentication安全漏洞及对策 10/8/2004 1:14 PM Michael Lee

God ! 噩耗!!!

这种毛病都能出。还有前一阵的那个GDI+的bug,更是让人匪夷所思。

posted @ 2004-10-08 17:54 大力 阅读(376) 评论(0)  编辑
  [本站讯]2004年8月17日的美国加州圣巴巴拉,正在召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告。在会场上,当她公布了MD系列算法的破解结果之后,报告被激动的掌声打断。王小云教授的报告轰动了全场,得到了与会专家的赞叹。报告结束时,与会者长时间热烈鼓掌,部分学者起立鼓掌致敬,这在密码学会议上是少见的盛况。王小云教授的报告缘何引起如此大的反响?因为她的研究成果作为密码学领域的重大发现宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。会议总结报告这样写道:“我们该怎么办?MD5被重创了;它即将从应用中淘汰。SHA-1仍然活着,但也见到了它的末日。现在就得开始更换SHA-1了。”
    
     关键词:碰撞=漏洞=别人可以伪造和冒用数字签名。
     Hash函数与数字签名(数字手印)
     HASH函数,又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,它有一种类似于指纹的应用。在网络安全协议中,杂凑函数用来处理电子签名,将冗长的签名文件压缩为一段独特的数字信息,像指纹鉴别身份一样保证原来数字签名文件的合法性和安全性。在前面提到的SHA-1和MD5都是目前最常用的杂凑函数。经过这些算法的处理,原始信息即使只更动一个字母,对应的压缩信息也会变为截然不同的“指纹”,这就保证了经过处理信息的唯一性。为电子商务等提供了数字认证的可能性。
     安全的杂凑函数在设计时必须满足两个要求:其一是寻找两个输入得到相同的输出值在计算上是不可行的,这就是我们通常所说的抗碰撞的;其二是找一个输入,能得到给定的输出在计算上是不可行的,即不可从结果推导出它的初始状态。现在使用的重要计算机安全协议,如SSL,PGP都用杂凑函数来进行签名,一旦找到两个文件可以产生相同的压缩值,就可以伪造签名,给网络安全领域带来巨大隐患。
     MD5就是这样一个在国内外有着广泛的应用的杂凑函数算法,它曾一度被认为是非常安全的。然而,王小云教授发现,可以很快的找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另外一份具有相同签名但内容迥异的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安全,这一发现使目前电子签名的法律效力和技术体系受到挑战。因此,业界专家普林斯顿计算机教授Edward Felten等强烈呼吁信息系统的设计者尽快更换签名算法,而且他们强调这是一个需要立即解决的问题。
    
     国际讲坛 王氏发现艳惊四座
     面对Hash函数领域取得的重大研究进展,Crypto 2004 会议总主席StorageTek高级研究员Jim Hughes 17 日早晨表示,此消息太重要了,因此他已筹办该会成立24年来的首次网络广播(Webcast )。Hughes在会议上宣布:“会中将提出三份探讨杂凑碰撞(hash collisions )重要的研究报告。”其中一份是王小云等几位中国研究人员的研究发现。17日晚,王小云教授在会上把他们的研究成果做了宣读。这篇由王小云、冯登国、来学嘉、于红波四人共同完成的文章,囊括了对MD5、HAVAL-128、 MD4和RIPEMD四个著名HASH算法的破译结果。在王小云教授仅公布到他们的第三个惊人成果的时候,会场上已经是掌声四起,报告不得不一度中断。报告结束后,所有与会专家对他们的突出工作报以长时的热烈掌声,有些学者甚至起立鼓掌以示他们的祝贺和敬佩。当人们掌声渐息,来学嘉教授又对文章进行了一点颇有趣味的补充说明。由于版本问题,作者在提交会议论文时使用的一组常数和先行标准不同;在会议发现这一问题之后,王小云教授立即改变了那个常数,在很短的时间内就完成了新的数据分析,这段有惊无险的小插曲倒更加证明了他们论文的信服力,攻击方法的有效性,反而凸显了研究工作的成功。
     会议结束时,很多专家围拢到王小云教授身边,既有简短的探讨,又有由衷的祝贺,褒誉之词不绝。包含公钥密码的主要创始人R. L. Rivest和A. Shamir在内的世界顶级的密码学专家也上前表示他们的欣喜和祝贺。
     国际密码学专家对王小云教授等人的论文给予高度评价。
     MD5的设计者,同时也是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest在邮件中写道:“这些结果无疑给人非常深刻的印象,她应当得到我最热烈的祝贺,当然,我并不希望看到MD5就这样倒下,但人必须尊崇真理。”
     Francois Grieu这样说:“王小云、冯登国、来学嘉和于红波的最新成果表明他们已经成功破译了MD4、MD5、HAVAL-128、RIPEMD-128。并且有望以更低的复杂度完成对SHA-0的攻击。一些初步的问题已经解决。他们赢得了非常热烈的掌声。”
     另一位专家Greg Rose如此评价:“我刚刚听了Joux和王小云的报告,王所使用的技术能在任何初始值下用2^40次hash运算找出SHA-0的碰撞。她在报告中对四种HASH函数都给出了碰撞,她赢得了长时间的起立喝彩,(这在我印象中还是第一次)。…… 她是当今密码学界的巾帼英雄。……(王小云教授的工作)技术虽然没有公开,但结果是无庸质疑的,这种技术确实存在。…… 我坐在Ron Rivest前面,我听到他评论道:‘我们不得不做很多的重新思考了。’”
    
     石破惊天 MD5堡垒轰然倒塌
     一石击起千层浪,MD5的破译引起了密码学界的激烈反响。专家称这是密码学界近年来“最具实质性的研究进展”,各个密码学相关网站竞相报导这一惊人突破。
     MD5破解专项网站关闭
     MD5破解工程权威网站http://www.md5crk.com/ 是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang, Feng, Lai与Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。……由于这个里程碑式的发现,MD5CRK项目将在随后48小时内结束”。
     对此,http://www.readyresponse.org主页专门转载了该报道http://www.aspenleaf.com/distributed/distrib-recent.html和几个其它网站也进行了报道。
     权威网站相继发表评论或者报告这一重大研究成果
     经过统计,在论文发布两周之内,已经有近400个网站发布、引用和评论了这一成果。国内的许多新闻网站也以“演算法安全加密功能露出破绽 密码学界一片哗然”为题报道了这一密码学界的重大事件。(报导见http://www.technewsworld.com/perl/board/mboard.pl?board=lnitalkback&thread=895&id=896&display=1&tview=expanded&mview=flat,该消息在各新闻网站上多次转载。)
    
     东方神韵  MD5终结者来自中国
     MD5破解工作的主要成员王小云教授是一个瘦弱、矜持的女子,厚厚的镜片透射出双眸中数学的灵光。她于1990年在山东大学师从著名数学家潘承洞教授攻读数论与密码学专业博士,在潘先生、于秀源、展涛等多位著名教授的悉心指导下,她成功将数论知识应用到密码学中,取得了很多突出成果,先后获得863项目资助和国家自然科学基金项目资助,并且获得部级科技进步奖一项,撰写论文二十多篇。王小云教授从上世纪90年代末开始进行HASH函数的研究,她所带领的于红波、王美琴、孙秋梅、冯骐等组成的密码研究小组,同中科院冯登国教授,上海交大来学嘉等知名学者密切协作,经过长期坚持不懈的努力,找到了破解HASH函数的关键技术,成功的破解了MD5和其它几个HASH函数。
     近年来她的工作得到了山东大学和数学院领导的大力支持,特别投资建设了信息安全实验室。山东大学校长展涛教授高度重视王小云教授突出的科研成果。 2004年6月山东大学领导听取王小云教授的工作介绍后,展涛校长亲自签发邀请函邀请国内知名信息安全专家参加2004年7月在威海举办的“山东大学信息安全研究学术研讨会”,数学院院长刘建亚教授组织和主持了会议,会上王小云教授公布了MD5等算法的一系列研究成果,专家们对她的研究成果给予了充分的肯定,对其坚持不懈的科研态度大加赞扬。一位院士说,她的研究水平绝对不比国际上的差。这位院士的结论在时隔一个月之后的国际密码会上得到了验证,国外专家如此强烈的反响表明,我们的工作可以说不但不比国际上的差,而且是在破解HASH函数方面已领先一步。加拿大CertainKey公司早前宣布将给予发现MD5算法第一个碰撞人员一定的奖励,CertainKey的初衷是利用并行计算机通过生日攻击来寻找碰撞,而王小云教授等的攻击相对生日攻击需要更少的计算时间。
    
     数字认证 你的未来不是梦
     由于MD5的破译,引发了关于MD5产品是否还能够使用的大辩论。在麻省理工大学Jeffrey I. Schiller教授主持的个人论坛上,许多密码学家在标题为“Bad day at the hash function factory”的辩论中发表了具有价值的意见(http://jis.mit.edu/pipermail/saag/2004q3/000913.html)。这次国际密码学会议的总主席Jimes Hughes发表评论说“我相信这(破解MD5)是真的,并且如果碰撞存在,HMAC也就不再是安全的了,…… 我认为我们应该抛开MD5了。” Hughes建议,程序设计人员最好开始舍弃MD5。他说:“既然现在这种算法的弱点已暴露出来,在有效的攻击发动之前,现在是撤离的时机。”
     同样,在普林斯顿大学教授Edwards Felton的个人网站(http://www.freedom-to-tinker.com/archives/000664.html)上,也有类似的评论。他说:“留给我们的是什么呢?MD5已经受了重伤;它的应用就要淘汰。SHA-1仍然活着,但也不会很长,必须立即更换SHA-1,但是选用什么样的算法,这需要在密码研究人员达到共识。”
     密码学家Markku-Juhani称“这是HASH函数分析领域激动人心的时刻。(http://www.tcs.hut.fi/~mjos/md5/)”
     而著名计算机公司SUN的LINUIX专家Val Henson则说:“以前我们说"SHA-1可以放心用,其他的不是不安全就是未知", 现在我们只能这么总结了:"SHA-1不安全,其他的都完了"。
     针对王小云教授等破译的以MD5为代表的Hash函数算法的报告,美国国家技术与标准局(NIST)于2004年8月24日发表专门评论,评论的主要内容为:“在最近的国际密码学会议(Crypto 2004)上,研究人员宣布他们发现了破解数种HASH算法的方法,其中包括MD4,MD5,HAVAL-128,RIPEMD还有 SHA-0。分析表明,于1994年替代SHA-0成为联邦信息处理标准的SHA-1的减弱条件的变种算法能够被破解;但完整的SHA-1并没有被破解,也没有找到SHA-1的碰撞。研究结果说明SHA-1的安全性暂时没有问题,但随着技术的发展,技术与标准局计划在2010年之前逐步淘汰SHA-1,换用其他更长更安全的算法(如SHA-224、SHA-256、SHA-384和SHA-512)来替代。”
     详细评论见:http://csrc.nist.gov/hash_standards_comments.pdf
     2004年8月28日,十届全国人大常委会第十一次会议表决通过了电子签名法。这部法律规定,可靠的电子签名与手写签名或者盖章具有同等的法律效力。电子签名法的通过,标志着我国首部“真正意义上的信息化法律”已正式诞生,将于2005年4月1日起施行。专家认为,这部法律将对我国电子商务、电子政务的发展起到极其重要的促进作用。王小云教授的发现无异于发现了信息化天空的一个惊人黑洞。我们期待着王小云教授和她的团队能够成就“女娲补天”的壮举,为人类的信息化之路保驾护航。
posted @ 2004-09-18 18:30 大力 阅读(324) 评论(0)  编辑

本文就是给过分相信,ms asp.net 验证控件的,和 js 验证的朋友的一个忠告!请不要用本方法去黑人。

ASp.net 的全部客户端验证控制都是放在一个:

%SystemDrive%\Inetpub\wwwroot\aspnet_client\system_web\1_1_4322

目录下的叫 WebUIValidation.js 的js 里最后的 11_1_4322目录是版本号不同的 .NET 环境这个也不同.

 IE 下载文件的机制是 , 如果服务器文件没有改变就不会重新下载,也就是说如果在缓存通过某种方法修改文件而且大小没有改变的话就可以破解开 js 文件的客户端限制,应为asp.NET 的这个 WebUIValidation.js 是不会经常更新的(根本就不更新)

 

 1、到你的 ie 缓存目录 [Internet属性\常规\设置按钮] 可以看到

 2、把里面的一个叫 Content.IE5 的目录下的全部目录清除

 3、访问你要测试的aspx页(上面一定要有验证控件的那种)

 4、看到网页后好了 可以在 Content.IE5 搜索 WebUIValidation[1].js(一般都叫这个名字)

 5、拿什么打开都行、找 function ValidatorCommonOnSubmit() 函数
 改
 event.returnValue = !Page_BlockSubmit;
 成
 event.returnValue = true;;;;;;;;;;;;;;
 大小不变就行 (-:

 6、保存在打开刚才那个测试页,点一下提交。

 


 呵呵验证的文本已经出来了但是仍然提交到了服务器看 ie 下面的进度条就会看出来,你花了半天写的“正则表达式”在短短几十秒就 over 了,哭吧。如果你在服务端没有验证的化就很容易将非法数据保存到服务器。

 个人以为 ms 的验证控件,就是为了验证用户数据节省用户的时间(MS 也没说这东西安全是吧)但却很容易给初学者一个安全的假想、因为现在有很多用 asp.net 的朋友根部一点不懂 js 确切的说还有可能不懂html.
 
 呵呵这也许就是 Microsoft Visual Studio .NET 强大的功能带来的负面影响吧。

 本隐患对老鸟是不会有什么的,反正我个人是不相信 js 脚本验证数据的(包括你自己写的),在客户端验证本来也不可能安全无论如何也要在服务端验证一下 或 将验证控件的  EnableClientScript 属性改为 false。也多写不了多少代码。

  测试环境 :Win2000,  Microsoft ? .NET Framework 1.1 版


 

posted @ 2004-09-14 09:30 大力 阅读(327) 评论(0)  编辑