用ASP构建音乐服务器的方法


  音乐服务器(Music Server)是指一个提供音乐在线服务的服务器,它包括高端提供门户服务的网站、Web数据库和低端的操作平台、硬件设施 。当前,在Internet和Intranet上有不少这样的站点,特殊是在一些高速宽带的局域网中(如校园网),音乐服务器给上网的朋友提供了休闲娱乐的好去处,同时也给网站带来了较高的 拜访率 。

   

  ----像 其余站点一样,音乐服务器包括网站和硬件两个 部分 。硬件性能和服务器效率是成正比的, 因此如何构建网站才是一个音乐服务器的 要害 。从当前来看,网站 根本有两 品种型:一种是运行在Unix / Linux环境下,采纳Perl / C / Php / Java 等作CGI编程语言;一种是运行在Win NT Server 平台上,采纳ASP / WinCGI 作 后盾语言 。前者运行效率高,但 构造复杂, 比较 合适大型站点;后者编程难度 绝对较低,而且采纳ODBC驱动接口,数据库衔接容易,特殊 合适作音乐服务器 。

  ----一个 根本的音乐服务器包括音乐在线观赏、音乐排行榜、音乐主题检索和音乐下载等四个 部分 。下面将主要从技术角度来 探讨如何实现以上 性能 。

  音乐主题数据库的规划
  ----音乐主题数据库是Web站点存储所需音乐 材料的仓库,它的规划在很大程度上影响了整个网站的 构造和效率 。数据库中 可以 径自建成一张表单,也 可以以主键和外键的 模式建成多张表单 。本例中为 注明上的 便捷,建成如下单表框架: (music.mdb)

  
  音乐在线观赏
  ----在线观赏是指客户端利用播放器播放服务器端的音乐文件 。其原理是当客户端向服务器提交音乐选单后,服务器生成相应的.m3u文件,并将该文件通过Http 协定下行至客户端;客户端将被引发调用相应的播放器执行该文件,从而实现了音乐在线观赏 性能 。当前 支撑.m3u文件的播放器有Winamp、RealPlayer G2、 Musicmatch等 。当这些播放器软件被正确安装在客户端时,就 可以自动播放.m3u文件 。所以解决问题的 要害在于 后盾如何生成.m3u文件并下行到客户端 。以下利用ASP中内置的FileSystem组件给出一种解决 方案,并给出相应程序 。
  <%
  dim choose,path,mydb,myset,SQL,fs,mp3
  ‘##### 获得list.htm表单 当选中的歌曲项
  对应的id号,并赋给字串变量choose #####
  choose=“("
  for i=3 to request.form.count
  choose=choose+request.form(i)+“,"
  next
  choose=left(choose,len(choose)-1)+“)"
  ‘##### 推断choose变量,假如不包括任何id号,
   注明list.htm中没有选中任何歌曲,终止程序#####
  if choose=“()" then
  response.redirect(“list.htm")
  response.end
  end if
  ‘#####设置文件路径,需求把temp目录的权限设为
  对internet匿名消费者 存在read & write 权限 #####
  path=“E:\inetpub\wwwroot\temp\"
  ‘##### 缔造文件对象 #####
  Set fs = CreateObject(“Scripting.FileSystemObject")
  Set mp3 = fs.CreateTextFile(path+“listen.m3u", True)
  ‘##### 缔造数据库对象#####
  set mydb=server.createobject(“adodb.connection")
  mydb.open “music"
  ‘##### 检索数据库, 获得歌曲信息 #####
  SQL=“select mp3name,url from "&dbname&
  “where id in "&choose
  set myset=tdb.execute(SQL)
  do while not myset.eof
  ‘##### 生成点播歌曲文件列表 #####
  mp3.Write(“http://"+myset(“url")+chr(10))
  myset.movenext
  loop
  ‘##### 更新数据库中的当天点播次数和
  总共点播次数 #####
  SQL=“update music set click=click+1,
  this=this+1 where id in "&choose
  mydb.execute(SQL)
  ‘##### 取缔对象 #####
  set myset=nothing
  mydb.close
  set mydb=nothing
  mp3.close
  set mp3=nothing
  ‘##### 将该文件下载给消费者#####
  response.redirect(“listen.m3u")
  response.end
  %>

  ---- 留神:利用这种 步骤时,要操纵.m3u文件Http头的内容 。在Winnt中可利用IIS设置.m3u文件类型的Mine内容 。具体操作如下:启动IIS —> 选中音乐服务器所在的Web站点 —> 点击“属性” 按钮 —> 在浮现的属性选项卡中点击“Http 题目”卡 —> 点击“文件类型”按钮 —> 点击“新增类型”按钮 —> 在“相应的 扩大名”中填入“.m3u”,在“内容类型”中填入“audio/mpegurl” —> 而后一路确定即可 。

  音乐排行榜
  ----音乐排行榜是音乐服务器不可 缺乏的一项内容,其主要性不亚于一个站点的Pageview 。它 可以向歌迷即时提供信息、 疏导观赏、动态地反映潮流趋向 。

  在众多的音乐服务器中,排行榜也是竟相 革故鼎新的地方, 存在很高的点击率 。普通说来,排行榜包括总共点播次数、当天点播次数、总共下载次数等内容 。具体的实现 步骤 比较 容易 。在单表中 可以利用如下SQL语句:select * from music order by total_click  。若是多表,则 可以利用带join子句的联合 查问SQL语句 。假如要限定 查问记录数,可采纳count() 集中函数 。如在本例中,假如要 查问当天点播次数前20名的歌曲,可采纳如下语句:select top 20 * from music order by total_click desc  。排行榜的 性能主要取决于主题数据库的规划如何,你 可以依据需求增删字段,以实现相应 性能(如添加进榜 工夫、歌手 材料、名次 变迁等等),所 波及的SQL语句也不会过于复杂 。总之,排行榜是体现一个音乐网站特点所在, 可以 自由 施展 。
   

  音乐主题检索
  ----提到检索,众多人 立即联想到Yahoo、Soho等 驰名站点,而且颇有奥秘之感 。其实,查找引擎在数据库中并 非难事,由于数据库内置的数据引擎已经提供了很好的 根底 。查找效率的 高下取决于数据库的性能和SQL语句的效率 。在前台, 可以提供一系列的检索 名目和条件选项 。在 后盾,则依据前台提交的表单,生成相应的 查问语句在数据库中执行,并将 查问 后果返回 。 比方在前台提交的表单为:检索 名目=“歌手姓名”,内容=“张学友”,匹配条件=“全字匹配”,则 后盾生成的SQL 语句为:select * from music where singer=‘张学友' order by edition,id asc,这样就 可以检索出张学友的全部歌曲信息,并按专集分类返回 。又如前台要 查问的歌手姓名为“齐秦”,且歌曲名称带有“雨”字的全部歌曲(即要求含糊匹配),则 后盾生成的SQL语句为: select * from music where singer =‘齐秦' and mp3name like ‘%雨%' order by id asc ,将返回“冬雨”、“太阳雨”、“无情的雨无情的你”等等 。 惟独 使用适当的技巧和灵便的 SQL语句,就 可以让你的主题检索 施展得 酣畅淋漓 。
  音乐下载 性能
  ----提供音乐下载 性能,同样是音乐服务器的一个 根本 性能,特殊是对远程消费者,将喜欢的歌曲下载后 威力观赏 。

  普通有两种 模式提供下载,一种是直接通过Http和阅读器下载,另一种是将曲库开发为Ftp目录,通过ftp 协定下载 。本例中采纳前一种 模式,而且在数据库中对下载次数进行跟踪记录 。有些站点还依据需求对歌曲进行压缩加密,将密码提供应正式消费者,也是一条可取之道 。本例中程序如下:
  <%
  ‘##### 获得歌曲 标记号id #####
  id=request(“id")
  set tdb=server.createobject(“adodb.connection")
  tdb.open “music"
  SQL=“select mp3url from music where id ="&id
  set tset=tdb.execute(SQL)
  if tset.eof then
  response.end
  else
  ‘##### 更新数据库中歌曲的下载次数 #####
  SQL=“update music set total_down=total_down
  +1 where id ="&id
  tdb.execute(SQL)
  downfile=tset(“url")
  tdb.close
  set tset=nothing
  set tdb=nothing
  end if
  if downfile=“" or isnull(downfile) then response.end
  downfile=“http://"+downfile
  ‘##### 下载相应歌曲 #####
  response.redirect(downfile)
  response.end
  %>  
  ----以上步骤就构建了一个 根本的音乐服务器 。固然,一个 完全的音乐服务器还 可以包括歌手信息、歌迷论坛、聊天室、投票站、娱乐新闻网等等 性能,都 可以用ASP逐个实现 。本文限于篇幅,不再 详尽 探讨 。 惟独前台页面采纳独特的 格调设计和完善的JavaScript程序操纵, 后盾编程 使用灵便的SQL语句和 壮大的ASP组件,加之规划周到的Web数据库和 丰硕的创意,就能构建一个 圆满的音乐服务器 。感兴趣的朋友 不妨试试看,你会制造一个 奇观的!