如此壮观的景色让我感受到大自然的伟大力量
不得不承认我们人类的渺小
但在这壮观之中又让我感受到了生活应有的恬静

无题

没有什么别的,就喜欢他给我一种向上的感觉

我们总是抱怨生活的压力太大,
工作,家庭,金钱,甚至爱情,
本来该是生活的快乐所在,
却变成了背上的枷锁.
习惯面无表情的生活,习惯让自己的心很硬很硬.
甚至忘记了这个世界上还有一种东西叫幸福.

后来有人告诉我:
其实,幸福很简单,
如果你不那么匆匆,
如果你用爱的目光,
如果你有足够的宽容,
幸福真的离我们很近.

第一张 母爱
如果整个世界都抛弃了你,至少还有母亲不会放弃你.
还记得儿时母亲的怀抱就是我最美的天堂

第二张 纯真
这样的笑,这样的幸福,只有孩子才有.

第三张 爱情
沉醉于爱情中的人是幸福的.
长长的人生之路,有你的陪伴,扶持,足够了

第四张,依旧是爱情
有人说爱情是一杯茶,时间一久就淡了.
我说爱情更像是一个煲,时间越长越有滋味

第五张 希望

第六张 分享

第七张 自然
看到这张照片,我有一种莫名的感动,想起小的时候淋雨的情景,和大自然如此的接近,烦恼不见了.
窗外正飘洒的细雨,有出去淋雨的冲动

第八张 野花
是的,幸福就是一朵野花,用自己的生命展示美丽,这就是幸福了

第九张 求知
这是一张老照片,初看的时候感觉心酸,逐渐的,发现了求知的力量,
破旧的教室,打满布丁的衣裳,却掩盖不了心中对知识的渴望,
比起那些一坐进教室就头疼的城里
孩子来讲,他就是幸福的.

第十张 孩子
他们是落入凡间的精灵,那笑是可以让人忘记烦恼的

第十一 美食
这是夏天最容易得到的幸福

第十二 睡眠
我必须承认自己已经很久没有享受过这样的幸福了,也许人长大了,牵挂多了,就再也得不到了

ASP实用函数

< %
'判断文件名是否合法
Function isFilename(aFilename)
Dim sErrorStr,iNameLength,i
isFilename=TRUE
sErrorStr=Array(“/”,”\”,”:”,”*”,”?”,”"”",”< ",">“,”|”)
iNameLength=Len(aFilename)
If iNameLength<1 Or iNameLength=null Then
isFilename=FALSE
Else
For i=0 To 8
If instr(aFilename,sErrorStr(i)) Then
isFilename=FALSE
End If
Next
End If
End Function

‘去掉字符串头尾的连续的回车和空格
function trimVBcrlf(str)
trimVBcrlf=rtrimVBcrlf(ltrimVBcrlf(str))
end function

‘去掉字符串开头的连续的回车和空格
function ltrimVBcrlf(str)
dim pos,isBlankChar
pos=1
isBlankChar=true
while isBlankChar
if mid(str,pos,1)=" " then
pos=pos+1
elseif mid(str,pos,2)=VBcrlf then
pos=pos+2
else
isBlankChar=false
end if
wend
ltrimVBcrlf=right(str,len(str)-pos+1)
end function

‘去掉字符串末尾的连续的回车和空格
function rtrimVBcrlf(str)
dim pos,isBlankChar
pos=len(str)
isBlankChar=true
while isBlankChar and pos>=2
if mid(str,pos,1)=" " then
pos=pos-1
elseif mid(str,pos-1,2)=VBcrlf then
pos=pos-2
else
isBlankChar=false
end if
wend
rtrimVBcrlf=rtrim(left(str,pos))
end function

‘判断Email是否有效,返回1表示正确
Function isEmail(aEmail)
Dim iLocat,v,iLength,i,checkletter
If instr(aEmail,"@") = 0 Or instr(aEmail,".") = 0 Then
isEmail=0
EXIT FUNCTION
End If
iLocat=instr(aEmail,"@")
If instr(iLocat,aEmail,".")=0 Or instr(iLocat+1,aEmail,"@")>0 Then
isEmail=0
EXIT FUNCTION
End If
If left(aEmail,1)="." Or right(aEmail,1)="." Or left(aEmail,1)="@" Or right(aEmail,1)="@" Then
isEmail=0
EXIT FUNCTION
End If
v="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-.@"
iLength=len(aEmail)
For i=1 To iLength
checkletter=mid(aEmail,i,1)
If instr(v,checkletter)=0 Then
isEmail=0
EXIT FUNCTION
End If
Next
isEmail=1
End Function

‘测试用:显示服务器信息
Sub showServer
Dim name
Response.write "

"
for each name in request.servervariables
Response.write "
"
Response.write "

"
Response.write "

"
Response.write "

"
next
Response.write "

"&name&" "&request.servervariables(name)&"

"
End Sub

‘测试用:显示Rs结果集以及字段名称
Sub showRs(rs)
Dim strTable,whatever
Response.write "


"
for each whatever in rs.fields
response.write "

"
next
strTable = "

" & whatever.name & "
"&rs.GetString(,," ","
"," ") &"

"
Response.Write(strTable)
End Sub

‘用HTML格式显示文本
Function txt2Html(str)
if isnull(str) then
txt2Html=""
exit Function
end if
str=Replace(str,chr(34),""")
str=Replace(str,"< ","<")
str=Replace(str,">",">")
str=Replace(str,chr(13)+chr(10),"
")
str=Replace(str,chr(9)," ")
str=Replace(str," "," ")
txt2Html=str
End Function

‘测试用:显示调试错误信息
Sub showError
Dim sErrMsg
sErrMsg=Err.Source&" "&Err.Description
Response.write "

"&sErrMsg&"
"
Err.clear
End Sub

‘显示文字计数器
Sub showCounter
Dim fs,outfile,filename,count
filename=server.mappath("count.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.fileExists(filename) Then
Set outfile=fs.openTextFile(filename,1)
count=outfile.readline
count=count+1
Response.write "

浏览人次:"&count&"
"
outfile.close
Set outfile=fs.CreateTextFile(filename)
outfile.writeline(count)
Else
Set outfile=fs.openTextFile(filename,8,TRUE)
count=0
outfile.writeline(count)
END IF
outfile.close
set fs=nothing
End Sub

Array()
 FUNCTION: 返回一个数组
 SYNTAX: Array(list)
 ARGUMENTS: 字符,数字均可
 EXAMPLE:

Dim myArray()
For i = 1 to 7
  Redim Preserve myArray(i)
  myArray(i) = WeekdayName(i)
Next

 RESULT: 建立了一个包含7个元素的数组myArray
myArray(“Sunday”,”Monday”, … … “Saturday”)
 
CInt()
 FUNCTION: 将一个表达式转化为数字类型
 SYNTAX: CInt(expression)
 ARGUMENTS: 任何有效的字符均可
 EXAMPLE:

f = "234"
response.write cINT(f) + 2

 RESULT: 236
转化字符”234″为数字”234″,如果字符串为空,则返回0值 
 
CreateObject()
 FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。
 SYNTAX: CreateObject(objName)
 ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字.
 EXAMPLE:

Set con = Server.CreateObject("ADODB.Connection")

 RESULT: 
 
CStr()
 FUNCTION: 转化一个表达式为字符串.
 SYNTAX: CStr(expression)
 ARGUMENTS: expression 是任何有效的表达式。
 EXAMPLE:
s = 3 + 2
response.write "The result is: " & cStr(s)

 RESULT: 转化数字“5”为字符“5”。
 
Date()
 FUNCTION: 返回当前系统日期.
 SYNTAX: Date()
 ARGUMENTS: None.
 EXAMPLE: =Date  
RESULT: 8/4/99
 
DateAdd()
 FUNCTION: 返回一个被改变了的日期。
 SYNTAX: DateAdd(timeinterval,number,date)
 ARGUMENTS: timeinterval is the time interval to add; number is amount of
time intervals to add; and date is the starting date.
 EXAMPLE:
currentDate = #8/4/99#
newDate = DateAdd("m",3,currentDate)
response.write newDate

currentDate = #12:34:45 PM#
newDate = DateAdd("h",3,currentDate)
response.write newDate

 RESULT: 11/4/99
3:34:45 PM

"m" = "month";
"d" = "day";

If currentDate is in time format then,
"h" = "hour";
"s" = "second";

 
DateDiff()
 FUNCTION: 返回两个日期之间的差值 。
 SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek ][,
firstweekofyear]])
 ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。
 EXAMPLE:
fromDate = #8/4/99#
toDate = #1/1/2000#
response.write "There are " & _
  DateDiff("d",fromDate,toDate) & _
  " days to millenium from 8/4/99."

 RESULT: 从8/4/99 到2000年还有 150 天.
 
Day()
 FUNCTION: 返回一个月的第几日 .
 SYNTAX: Day(date)
 ARGUMENTS: date 是任何有效的日期。 
 EXAMPLE: < %=Day(#8/4/99#)%>
 RESULT: 4
 
FormatCurrency()
 FUNCTION: 返回表达式,此表达式已被格式化为货币值 
 SYNTAX: FormatCurrency(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit]]]])
 ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是
计算机的区域设置; LeadingDigit 三态常数,指示是否显示小数值小数点前面的
零。 
 EXAMPLE: < %=FormatCurrency(34.3456)%>  RESULT: $34.35
 
FormatDateTime()
 FUNCTION: 返回表达式,此表达式已被格式化为日期或时间
 SYNTAX: FormatDateTime(Date, [, NamedFormat])
 ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用
vbGeneralDate.
 EXAMPLE: < %=FormatDateTime("08/4/99", vbLongDate)%>  RESULT: Wednesday, August 04, 1999
 
FormatNumber()
 FUNCTION: 返回表达式,此表达式已被格式化为数值.
 SYNTAX: FormatNumber(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit]]]])
 ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是
计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -
1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认
值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数
的数值。默认值为 -1,指示使用的是计算机的区域设置。.
 EXAMPLE: < %=FormatNumber(45.324567, 3)%>
 RESULT: 45.325
 
FormatPercent()
 FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以
100 )。 (%)
 SYNTAX: FormatPercent(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit]]]])
 ARGUMENTS: 同上.
 EXAMPLE: < %=FormatPercent(0.45267, 3)%>
 RESULT: 45.267%
 
Hour()
 FUNCTION: 以24时返回小时数.
 SYNTAX: Hour(time)
 ARGUMENTS: 
 EXAMPLE: < %=Hour(#4:45:34 PM#)%>
 RESULT: 16
(Hour has been converted to 24-hour system)
 
Instr()
 FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置.
 SYNTAX: Instr([start, ] strToBeSearched, strSearchFor [, compare])
 ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串 
strSearchFor要搜索的字符.compare比较方式(详细见ASP常数)
 EXAMPLE: < %
strText = "This is a test!!"
pos = Instr(strText, "a")
response.write pos
%>
 RESULT: 9
 
InstrRev()
 FUNCTION: 同上,只是从字符串的最后一个搜索起
 SYNTAX: InstrRev([start, ] strToBeSearched, strSearchFor [, compare])
 ARGUMENTS: 同上.
 EXAMPLE: < %
strText = "This is a test!!"
pos = InstrRev(strText, "s")
response.write pos
%>
 RESULT: 13

 
Int()
 FUNCTION: 返回数值类型,不四舍五入,注意取值是不大于它的整数。
 SYNTAX: Int(number)
 ARGUMENTS: 
 EXAMPLE: < %=INT(32.89)%>  < %=int(-3.33)%> RESULT: 32  -4
 
IsArray()
 FUNCTION: 判断一对象是否为数组,返回布尔值 .
 SYNTAX: IsArray(name)
 ARGUMENTS: 
 EXAMPLE: < %
strTest = "Test!"
response.write IsArray(strTest)
%>
 RESULT: False
 
IsDate()
 FUNCTION: 判断一对象是否为日期,返回布尔值
 SYNTAX: IsDate(expression)
 ARGUMENTS: expression is any valid expression.
 EXAMPLE: < %
strTest = "8/4/99"
response.write IsDate(strTest)
%>
 RESULT: True
 
IsEmpty()
 FUNCTION: 判断一对象是否初始化,返回布尔值.
 SYNTAX: IsEmpty(expression)
 ARGUMENTS: 
 EXAMPLE: < %
Dim i
response.write IsEmpty(i)
%>
 RESULT: True
 
IsNull()
 FUNCTION: 判断一对象是否为空,返回布尔值.
 SYNTAX: IsNull(expression)
 ARGUMENTS: 
 EXAMPLE: < %
Dim i
response.write IsNull(i)
%>
 RESULT: False
 
IsNumeric()
 FUNCTION: 判断一对象是否为数字,返回布尔值.
 SYNTAX: IsNumeric(expression)
 ARGUMENTS: 
 EXAMPLE: < %
i = "345"
response.write IsNumeric(i)
%>
 RESULT: True
就算数字加了引号,ASP还是认为它是数字。
 
IsObject()
 FUNCTION: 判断一对象是否为对象,返回布尔值.
 SYNTAX: IsObject(expression)
 ARGUMENTS: 
 EXAMPLE: < %
Set con = Server.CreateObject("ADODB.Connection")
response.write IsObject(con)
%>
 RESULT: True
 
LBound()
 FUNCTION: 返回指定数组维的最小可用下标.
 SYNTAX: Lbound(arrayname [, dimension])
 ARGUMENTS: ; dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2
表示第二维,以此类推。如果省略 dimension 参数,默认值为 1.
 EXAMPLE: < %
i = Array("Monday","Tuesday","Wednesday")
response.write LBound(i)
%>
 RESULT: 0
 
LCase()
 FUNCTION:  返回字符串的小写形式
 SYNTAX: Lcase(string)
 ARGUMENTS: string is any valid string expression.
 EXAMPLE: < %
strTest = "This is a test!"
response.write LCase(strTest)
%>
 RESULT: this is a test!
 
Left()
 FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符).
 SYNTAX: Left(string, length)
 ARGUMENTS: 
 EXAMPLE: < %
strTest = "This is a test!"
response.write Left(strTest, 3)
%>
 RESULT: Thi
 
Len()
 FUNCTION: 返回字符串的长度.
 SYNTAX: Len(string | varName)
 ARGUMENTS: 
 EXAMPLE: < %
strTest = "This is a test!"
response.write Len(strTest)
%>
 RESULT: 15
 
LTrim()
 FUNCTION: 去掉字符串左边的空格.
 SYNTAX: LTrim(string)
 ARGUMENTS: 
 EXAMPLE: < %
strTest = " This is a test!"
response.write LTrim(strTest)
%>
 RESULT: This is a test!
 
Mid()
 FUNCTION: 返回特定长度的字符串(从start开始,长度为length).
 SYNTAX: Mid(string, start [, length])
 ARGUMENTS: 
 EXAMPLE: < %
strTest = "This is a test! Today is Monday."
response.write Mid(strTest, 17, 5)
%>
 RESULT: Today
 
Minute()
 FUNCTION: 返回时间的分钏.
 SYNTAX: Minute(time)
 ARGUMENTS: 
 EXAMPLE: < %=Minute(#12:45:32 PM#)%>  RESULT: 45
 
Month()
 FUNCTION: 返回日期.
 SYNTAX: Month(date)
 ARGUMENTS: date is any valid date expression.
 EXAMPLE: < %=Month(#08/04/99#)%>  RESULT: 8
 
MonthName()
 FUNCTION: Returns a string identifying the specified month.
 SYNTAX: MonthName(month, [, Abb])
 ARGUMENTS: month is the numeric representation for a given month; Abb
(optional) is a boolean value used to display month abbreviation. True
will display the abbreviated month name and False (default) will not show
the abbreviation.
 EXAMPLE: < %=MonthName(Month(#08/04/99#))%>  RESULT: August
 
Now()
 FUNCTION: Returns the current system date and time.
 SYNTAX: Now()
 ARGUMENTS: None
 EXAMPLE: < %=Now%>  RESULT: 8/4/99 9:30:16 AM
 
Replace()
 FUNCTION: Returns a string in which a specified sub-string has been
replaced with another substring a specified number of times.
 SYNTAX: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start
][, count ][, compare]]])
 ARGUMENTS: strToBeSearched is a string expression containing a sub-
string to be replaced; strSearchFor is the string expression to search for
within strToBeSearched; strReplaceWith is the string expression to replace
sub-string strSearchFor; start (optional) is the numeric character
position to begin search; count (optional) is a value indicating the
comparision constant.
 EXAMPLE: < %
strTest = "This is an apple!"
response.write Replace(strTest, "apple", "orange")
%>
 RESULT: This is an orange!
 
Right()
 FUNCTION: 返回字符串右边第length个字符以前的字符(含第length个字符).
 SYNTAX: Right(string, length)
 ARGUMENTS: .
 EXAMPLE: < %
strTest = "This is an test!"
response.write Right(strTest, 3)
%>
 RESULT: st!
 
Rnd()
 FUNCTION: 产生一个随机数.
 SYNTAX: Rnd [ (number) ]
 ARGUMENTS: 
 EXAMPLE: < %
Randomize()
response.write RND()
%>
 RESULT: 任何一个在0 到 1 之间的数
 
Round()
 FUNCTION: 返回按指定位数进行四舍五入的数值.
 SYNTAX: Round(expression [, numRight])
 ARGUMENTS: numRight数字表明小数点右边有多少位进行四舍五入。如果省略,则
Round 函数返回整数.
 EXAMPLE: < %
i = 32.45678
response.write Round(i)
%>
 RESULT: 32
 
Rtrim()
 FUNCTION: 去掉字符串右边的字符串.
 SYNTAX: Rtrim(string)
 ARGUMENTS: 
 EXAMPLE: < %
strTest = "This is a test!! "
response.write RTrim(strTest)
%>
 RESULT: This is a test!!
 
Second()
 FUNCTION: 返回秒.
 SYNTAX: Second(time)
 ARGUMENTS: .
 EXAMPLE: < %=Second(#12:34:28 PM#)%>  RESULT: 28
 
StrReverse()
 FUNCTION: 反排一字符串
 SYNTAX: StrReverse(string)
 ARGUMENTS: 
 EXAMPLE: < %
strTest = "This is a test!!"
response.write StrReverse(strTest)
%>
 RESULT: !!tset a si sihT
 
Time()
 FUNCTION: 返回系统时间.
 SYNTAX: Time()
 ARGUMENTS: .
 EXAMPLE: < %=Time%>  RESULT: 9:58:28 AM
 
Trim()
 FUNCTION: 去掉字符串左右的空格.
 SYNTAX: Trim(string)
 ARGUMENTS: string is any valid string expression.
 EXAMPLE: < %
strTest = " This is a test!! "
response.write Trim(strTest)
%>
 RESULT: This is a test!!
 
UBound()
 FUNCTION: 返回指定数组维数的最大可用下标.
 SYNTAX: Ubound(arrayname [, dimension])
 ARGUMENTS: ; dimension (optional) 指定返回哪一维上界的整数。1 表示第一
维,2 表示第二维,以此类推。如果省略 dimension 参数,则默认值为 1.
 EXAMPLE: < %
i = Array("Monday","Tuesday","Wednesday")
response.write UBound(i)
%>
 RESULT: 2
 
UCase()
 FUNCTION: 返回字符串的大写形式.
 SYNTAX: UCase(string)
 ARGUMENTS: 
 EXAMPLE: < %
strTest = "This is a test!!"
response.write UCase(strTest)
%>
 RESULT: THIS IS A TEST!!
 
VarType()
 FUNCTION: 返回指示变量子类型的值
 SYNTAX: VarType(varName)
 ARGUMENTS: 
 EXAMPLE: < %
i = 3
response.write varType(i)
%>
 RESULT: 2(数字)详见”asp常数”
 
WeekDay()
 FUNCTION: 返回在一周的第几天.
 SYNTAX: WeekDay(date [, firstdayofweek])
 ARGUMENTS: .
 EXAMPLE: < %
d = #8/4/99#
response.write Weekday(d)
%>
 RESULT: 4(星期三)
 
WeekDayName()
 FUNCTION: 返回一周第几天的名字.
 SYNTAX: WeekDayName(weekday [, Abb ][, firstdayofweek]])
 ARGUMENTS: Abb可选。Boolean 值,指明是否缩写表示星期各天的名称。如果省
略, 默认值为 False,即不缩写星期各天的名称.firstdayofweek指明星期第一天的
数值
 EXAMPLE: < %
d = #8/4/99#
response.write WeekdayName(Weekday(d))
%>
 RESULT: Wednesday
 
Year()
 FUNCTION: 返回当前的年份.
 SYNTAX: Year(date)
 ARGUMENTS: 
 EXAMPLE: < %=Year(#8/4/99#)%>  RESULT: 1999

B/S结构

B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。

  B/S结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。前者的特点是安全、快捷、准确。后者则具有节省投资、跨地域广的优点。须视企业规模和地理分布确定。企业内部通过防火墙接入Internet,再整个网络采用TCP/IP协议。网络结构如图6所示:


C/S 与 B/S 区别:
  Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.
1.硬件环境不同:
  C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
  B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2.对安全要求不同
  C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
  B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群.
3.对程序架构不同
  C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
  B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
4.软件重用不同
  C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
  B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
5.系统维护不同
系统维护是软件生存周期中,开销大, ——-重要
  C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
  B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
6.处理问题不同
  C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
  B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
7.用户接口不同
  C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
  B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
8.信息流不同
  C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
  B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心