ASP.net构建大型网站

                                           ASP.net构建大型网站

         记得很多朋友问过我如何构建一个大型的.net网站.这里值得讨论的问题是----多大 ,公司曾经需要我给他们做一个每天有1000万人次访问的门户网站.而我却一直都没有开始动手做...原因很简单,,做一个这样的网站,经费少于300万是不够的.因此需求分析和启动资金成为了规划开始的关键.

        那么避开这些不谈,,如果现在已经启动构建.什么才是一个大型网站需要考虑的呢?

        首先值得注意的问题是硬件,如果这么多人访问肯定是在全国各地,,那么在关键的网络通畅的位置放置服务器,和使用信道好的网络资源成为了必须的条件.这里想必电信服务商的介绍会比我要积极,所以在此不再赘述.然后,机器的配置也需要一个慎重的考虑,因为ISAPIThreadPool的大小跟机器的性能的关系是很密切的.这里也不多做介绍.

        其次,使用IIS7.0中新加入的特性,,或者使用C/C++编写一个DLL.控制IIS中的一个输入请求.使用非托管的扩展和筛选器也是一个不错的方法.不过在大多数情况下对服务器的改进不会很明显.尤其是微软将很多实用的功能放置在相对简单的操作界面下的情况下更是如此.那么对于关键的ISAPI模块,想必大家都会问,,如何配置才能发挥WEB服务器的最大效率呢?请大家注意到,HttpExtensionProc函数中的ISAPIThreadPool单元,里面有一段代码的意思大致是:则检查线程池中线程数是否小于最大允许数值(if ThreadCount < FMax then)如果大于等于,线程池不允许再增加,直接返回nil;如果小于,则建立一个新的TISAPIThread实例,并将之加入到线程池中.而操作系统一般会使用默认的最大值.因此我们只需要在IIS中将网站大概配置好,,并且不限制ThreadCount 的最大值,就可以了.

       准备工作做完了.大家如果觉得一头雾水,可以去详细了解一下CGI的历史和ISAPI的工作原理.那么下面进入到.net部分. 很多网站优化的方案将被再次提起.

  1. 一个服务中心使用多台服务器.因为分布式运算的算法和特性,决定了在一个服务中心使用多台机器分别进行相关的操作和运算,在最大带宽允许的范围内.使机器的效率最大化是一个非常不错的解决方案.尤其是微软推出.net remoting和wcf以后更是显得特别的使人愉快.
  2. 一个主网站服务器上使用最简捷的数据结构进行操作和运算,以及最大的虚拟内存,这样可以避免因算法上的问题而导致效率低下.并且因为CLR的垃圾回收机制的问题.而必须给机器配置较大的内存容量.
  3. 在数据库的构建上必须做出详细的规划,尽可能避免因访问的数据块过大而造成的资源浪费.数据库连接池的配置也应尽量做到最好.以下是一个Sqlclient配置的例子:
    SqlConnection   con    =     new    SqlConnection( " server=(local);database=&qapos; "     +    database    +     " &qapos;;uid=&qapos; "     +    uid    +     " &qapos;;pwd=&qapos; "     +    pwd    +     " &qapos;;Max   Pool   Size=100000;Min   Pool   Size=0;Connection   Lifetime=0;packet   size=32767;Connection   Reset=false;   async=true " ); 
  4. 页面缓存和Cache:页面缓存可以通过webconfig文件配置其缓存策略.通过轮询的方式决定哪些内容应该被缓存在客户端.而哪些内容可以被服务端更新掉.这样使得一个面的缓存更加灵活方便.让人们访问网站的时候轻松很多.而Cache相较与Application则更加灵活方便.正如.net之父所说的那样,伟大的思想并无伟大之处.只是我们付出得更多.我们甚至可以使用双缓存(Cache)的方法来使网站访问响应的速度提高一个数量级.
  5. 异步页面:我们知道一个http请求在服务端表现为一个线程.而当一个线程在处理一个需长时处理的代码的时候,客户端的用户可不能在这一端发呆.因此我们需要给页面设置成异步处理,来减少这种不愉快的用户体验.使用异步页面可以使得服务端的线程挂起转而操作下一个请求,在用户浏览的时候再执行上一个挂起的线程.这样既节省了多余的不必要的请求节约了服务端的资源,又使得用户体验更加愉快.真是一举两得,,尤其当访问人数多的时候更是如此.

      可见.net的性能已经是目前所有同类产品中的佼佼者了,呵呵.值得注意的是,人们往往分不清楚哪些部分应该注意得更多,而操作其他部分也许会带来副作用.那么只有使用更详细的软件规划计划,和完美的UML流程才能使得我们前面所做的工作不是白费力气.强大的大局观念是一个非常好的帮助,能使你的网站在处理各种情况时都经得住大流量的访问.好了,值得注意的大的方面我就总结了这么多.其他细节和编程习惯,以及数据库的操作规范等小的方面还是靠大家在实际编程中去注意.尽量使用数据库提供的功能去解决数据库端的问题,不失为一种明智的方法.小弟不才,因为水平有限请大家多多指出我的错误.本人的e-mail:lihongdian@163.com希望大家多多指教.

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
项目为一个小型的健康网站,内容上主要是对健康文章进行相信的分类,用户的参与等实际性功能 本项目包括3个模块,用户模块,后台管理员管理模块,前台显示模块。该项目使用的是asp.net开发环境,中间使用了c#后台编码,html前台显示,css前台排版,javascript前台脚本,jQuery以及jQuery-UI的使用,ajax的局部页面刷新技术,sqlserver数据库的数据存储以及查询更新。 各个文件夹的的作用:Account:用户模块;Admin:后台管理; App_Data:数据库存储;ClassLibrary:公用类模块; CSS:网站css样式模块;DAL:强类型DataSet模块; Home:网站前台模块;Image:网站图片存储模块; JS:前台JS脚本模块;MasterPage:母版页模块; Others:验证码生成文件以及用户自定义控件 项目采用的三层架构设计模式,将表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)很好的显示的表现出来,方便了开发人员的修改以及维护人员的维护,区分层次的目的即为了“高内聚,低耦合”的思想。 (1)、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。   (2)、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。   (3)、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。 项目不足:第一方面:由于时间的原因,我原来想做的图片浏览模块(模仿百度的图片浏览),首页热图后台编辑选取模块,其实热图后台管理我已经做了一部分了;第二个方面:是css样式在IE9,10上没有问题,但是在IE其他版本,Chrome浏览器上不能保证页面的规范性,有序性,所以我学习的路还是很长的啊。第三方面是:没有生成安装模块,其实这个东西不难做,但是没有时间了,悲剧啊。希望看到该项目的优秀的软件学习者将我没有做完的东西完善,谢谢了。 工程项目评估:其实该项目是我学习阶段做的,主要是将自己学习到的东西应用到自己的项目中,是自己学以致用,原来我学习到的东西不会用,不知道怎么用,不知道用到哪里,通过这个项目,加深了我的理解力,学习能力,编程能力。所以开发这个项目用了我课下业余时间一个月呢!好了,不说太多了,自己做点东西就是对你学习的东西的最好的检测,和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值