ASP网页编程之关于用SQL SERVER2000创建散布式网站系...
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!server|散布式比来闲来无事就对“散布式体系”做了一点小小的研讨,我以为这类手艺相称不错,大概良多伴侣都传闻过“散布式”这个观点,我对这类手艺的团体了解就是:散布式体系包含良多成员,它们之间资本是互相共享的,从年夜的方面看是配合担当处置义务,可是以个别为单元独自处置每一个小的义务,然后被一其中央处置单位将一切信息兼并的一个体系。这类手艺就是基于服务器真个一种手艺,我就依照我的了解来做了一个复杂的模子(做错的中央请人人指教J)上面我就来先容一下这个模子的机关和数据库计划成绩:
服务器A:担当数据库服务器同时又担当WEB服务器(平台WINSERVER2000,IIS5.0,SQLSERVER2000,IP地点为192.168.0.1)
服务器B,C,D:担当WEB服务器(平台WINSERVER2000,IIS5.0)
起首我们计划数据库的时分要思索的成绩就是这个体系的特征“散布”,即A,B,C,D四台服务器在实践使用中他们的地舆地位纷歧定是会合的,好比SOHU的服务器,遍及各地,可是我们每一个人看到的动静都是一样的,它也是一个较年夜的散布式网站体系,因为地区的差别形成服务器端工夫的差别,我们既要对用户准确的暗示当地的工夫,又要便利办理数据库,那末就要对进库的数占有一个一致的工夫编号,这个事情固然就只要在数据库中完成了,因而我计划了2个工夫的字段,一个WEB_TIME用来存储从WEB服务器传送过去的日期工夫,一个DATA_TIME用来存储数据进库时以后数据库服务器的体系日期工夫
如许就完成了主要的一部,(自己碰到的在A服务器增加数据时能够写进DATA_TIME,而没法在B,C,D服务器上写进DATA_TIME的缘故原由就在于忘了在该字段设置该字段不为空,呵呵,只需设置了不同意为空就ok了)然后将DATA_TIME默许值设置威getdate()如许在写进每条数据的时分就由SQL本人主动获得以后数据库服务器的体系工夫并写进,呵呵,如许就完成了工夫的一致成绩,然后我好比做一个注册体系再设置name和pass两个字段来存储用户的用户名和暗码,呵呵,完成了数据库的计划,接上去就是WEB程序了,
WEB程序部分:
1.毗连数据库(conn.asp)
关于A服务器来说,它自己既是数据库服务器又是WEB服务器,以是它毗连数据库的代码以下:
<%
setconn=server.createobject("ADODB.connection")
conn.open"PROVIDER=SQLOLEDB;DATASOURCE=localhost;UID=sa;PWD=;DATABASE=db"
%>
关于其他WEB服务器来说他们毗连的时远真个数据库服务器以是代码改成:
<%
setconn=server.createobject("ADODB.connection")
conn.open"PROVIDER=SQLOLEDB;DATASOURCE=192.168.0.1;UID=sa;PWD=;DATABASE=db"
%>
2.服务器义务分派办理思绪
这个页面的代码在B,C,D服务器基础上都是一样的了,对照特别的就是A服务器
不外这里另有一个服务器上岸选择的成绩,(我正在研讨中,呵呵,详细程序的完成做出来再告知人人),不外我的假想是如许的,我把服务器A设置为第连续接的服务器,就是一切会见这个站点的客户机起首都是会见A服务器,然后A服务器再对照B,C,D三个服务器的忙碌水平,有选择的将URL地点指向个中闲置的一台服务器,如许就不会呈现服务器之间包袱的义务不平衡,这里就有一个关于统计服务器忙碌水平,我的思绪是做一个在线统计程序,加在网站代码中,可是A,B,C,D的程序代码必需要带有该服务器的标识,然后将四台服务器的统计了局在服务器A数据库中会合,然后服务器A经由过程判别他们存进的统计数据来选择服务器(有乐趣的同道我们能够配合来研讨)
我们先在数据库创建一统计三台服务器在耳目数的数据表定名为count,设立字段NUM和SERVER_VAL和SERVER_URL分离代表在耳目数,和服务器名和服务器地点,而且增加进3台WEB服务器的基础信息NUM默许为0,和每台服务器名,和网址。
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
然后我们在每一个用户在选择服务器后从A服务器进进B,C,D个中的一台服务器时,入手下手实行对该服务器举行在耳目数统计,并将了局写进数据库服务器A,一样当一个用户离线时,也将在耳目数了局写进数据库服务器A,这里我接纳的是GLOBAL.ASA来举行统计(详细的统计办法列位能够依照您的思绪来,我在这里只是举一反三)
如许基础的道理就完成了,剩下的就是网站建立了,在这里我把一些基础代码写出,请人人指教:
主服务器(数据库服务器ASQLSERVER2000IIS5.0):
创建数据库db
db下建数据表message和count
1.message数据表有字段
id(编号,主键)int范例不同意为空
namechar范例
passchar范例
timdatetime范例不同意为空(设置默许值为getdate())用于一致办理进库纪录的工夫,该工夫以数据库服务器体系工夫为尺度
备注:该数据表用于调试各个服务器间合作处置用户和数据库服务器间会话的义务
并没有特别意义。
2.count数据表有字段
id(编号,主键)int范例不同意为空
numint范例
server_urlnchar范例纪录WEB服务器的ip地点
server_namenchar范例纪录WEB服务器的编号
备注:该数据表为各个WEB服务器在线统计了局,和服务器基础信息,用于主服务器判别各个WEB服务器的忙碌水平来对来访人数的和谐。
主服务器WEB程序部分:
conn.asp毗连数据库部分
<%
setconn=server.createobject("ADODB.connection")
conn.open"PROVIDER=SQLOLEDB;DATASOURCE=localhost;UID=sa;PWD=;DATABASE=db"
%>
close.asp封闭数据库程序
<%
rs.close
conn.close
setrs=nothing
setconn=nothing
%>
index.asp判别程序
<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>
<!--#includefile=conn.asp-->
<%
dimSERVER_URL
setrs=server.createobject("ADODB.recordset")
sql="select*fromcountorderbynumdesc"
rs.opensql,conn,1,3
ifnotrs.eofandnotrs.bofthen
RS.MOVELAST
SERVER_URL=RS("SERVER_URL")‘将闲置服务器IP付给改动量
Endif
%>
<!--#includefile=close.asp-->
<%
SERVER_URL="http://"&SERVER_URL‘转换成URL格局
response.Redirect(SERVER_URL)‘转置闲置服务器
%>
WEB服务器程序部分:(次要就是向主服务器反应以后该服务器在耳目数情形)
Conn.asp毗连数据库服务器程序
<%
setconn=server.createobject("ADODB.connection")
conn.open"PROVIDER=SQLOLEDB;DATASOURCE=192.168.0.1;UID=sa;PWD=;DATABASE=db"
%>
close.asp封闭数据库程序
<%
rs.close
conn.close
setrs=nothing
setconn=nothing
%>
GLOBAL.ASA程序
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>
subapplication_onstart
application.lock
application("count1")=0
application.unlock
endsub
subsession_onstart
application.lock
application("count1")=application("count1")+1
application.unlock
endsub
subsession_onend
application.lock
application("count1")=application("count1")-1
application.unlock
ends</p>缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 掌握asp的特性而且一定要知道为什么。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
页:
[1]