需求定义:
        公司网站为联盟网站提供一段内嵌的广告代码,现需要进行广告展示次数|点击次数|到达次数的统计。
实现方案:
1。统计实现方式 
 有两种:
    1).分析日志文件的方式:
 对Web服务器生成的日志文件进行分析,这种日志文件有时是原始的文件,有时是由第三方统计机构在服务器端加入的模块生成的。这种方式的优点是可以定制自己格式的日志文件,采用加密算法和压缩日志文件的技术,以保证日志文件的真实性和可靠性,并且降低传递日志文件所产生的网络流量,适用于第三方机构进行网站访问量的认证度量工作。当然这种方式也有自己的不足之处,包括难以做到实时的统计分析,而且在服务器端的附加模块有可能降低Web服务器的性能。
 2). 另一种方式就是在希望进行统计的页面上嵌入一段统计的代码,这段代码引用了另一服务器上的资源,这个资源通常是由一个CGI程序(或其它类似的程序,我们采用ASP.NET程序)动态生成的,当访问者访问该页面时,将向此程序(或其它类似的程序)所在的那一台服务器发出请求,这样该页面被访问的信息及访问者的信息就会同时被那个CGI程序所记录。这种方式易于做到实时的统计分析,统计信息较为丰富,而且不会增加Web服务器端的负荷。但是这种方式容易被欺骗,也容易由于带宽等原因而造成统计信息收集的失败。这种方式由于易被欺骗而存在着不安全的因素。
 
 结论:考虑分析日志文件实现的复杂度和公司为联盟网站提供广告的表现形式为,提供一段广告代码,采用第二种统计方式,在内嵌的JS文件中隐形调用统计页面。

 2。内嵌统计的实现
 实现是提供一段广告代码,连接到我们自己的统计页面上,每次打开带有广告的页面,就执行了我们的统计页面,统计曝光次数。点击广告连接,连接到我们的统计页面上,统计点击次数。在到达的广告页调用统计页,统计达到次数。
 由于广告将在各大网站发布,每个网站的访问量也很大,这样同一时间访问我们统计页面的次数就更大。如果每次连接都连接一次数据库,进行一次入库操作的话,是否将导致服务器瘫痪。
 另一种办法就是利用单件模式做Cache,添加一个Cache,设置上移除的时间并设置从缓存中移除对象时所调用的委托。计数保存在application变量或cache中,然后一定时间内入库一次或计数达到一定数据量时入库一次,但是需要一个定时器(timer)长期运行。

 3。.NET单件模式
单件模式保证应用只有一个全局惟一的实例,并且提供一个访问它的全局访问点。
最简单的单件模式应用就是计数器。

 4。压力测试
 经实验,两种方案统计目的均可以实现,经了解目前在公司网站登记注册的会员约2000个。同一时间访问统计页面的机率很大。现采用RadView公司提供的免费压力测试工具WebLOAD进行同一时间访问的压力测试,分析结果寻求更好的解决方案。