以服务的方式提供站点基础功能支持

本文探讨了如何通过服务化策略优化多个Web站点的监控功能,如执行慢的页面统计,通过创建公用服务站点避免重复建设,提高站点一致性与稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Web站点除了提供内容展示,业务逻辑处理外,还有很多看不到的操作,如:错误日志,后台管理,权限分配,访问统计等。如果只有一个站点,完全可以根据需要逐步添加,但实际的情况是往往有多个子站点,这时这些重复的功能就可以以服务的方式提供了。

举个例子,我们需要统计执行慢的页面列表,简单的做法是:
1 在Global.asax 的 BeginRequest, EndRequest事件中记录执行时间,如果超过某个值,如2秒,就记录到数据库。
2 在后台管理增加 slowpage_list.aspx 页面用于查看执行慢的页面列表。

基本实现还是蛮简单的,如:

[Global.asax]

<%@ Application Language="C#" %>
<script runat="server">
     
protected void Application_BeginRequest(object sender, EventArgs e) {
        
// 记录开始时间
        this.Context.Items["page_request_starttime"= DateTime.Now;
    }

    
protected void Application_EndRequest(object sender, EventArgs e) {
       
// 最大用时,单位毫秒,根据需要指定多慢的页面需要记录
        const int maxTimeUse = 2000;
        
string url = HttpContext.Current.Request.Url.ToString();

        
// 页面处理用时
        int timeUse = (int)(DateTime.Now - (DateTime)this.Context.Items["page_request_starttime"]).TotalMilliseconds;

        
// 如果执行时间超过最大用时
        if (timeUse > maxTimeUse) {
            
// 记录执行慢的页面
            AddSlowPage(url, timeUse);
        }
    }
</script>

以及:
[slowpage_list.aspx]

代码略 ......

这样做的缺点是,各个站点只能以拷贝的方式重用slow_page_list.aspx,以及还要重复数据库建表等。

改进的做法是:
增加一个 service.yousite.com 公用服务站点,各个子站点有执行慢的页面时,往这个公用服务站点提交。

if (timeUse > maxTimeUse) {
   
// 当前站点标识
    string site = "site001";
    
string address = string.Format("http://service.yousite.com/add_slowpage.ashx?site={0}&timeUse={1}&url={2}",
                                    site, timeUse, url);
    
    
// 指定超时时间,并用异步方式提交执行慢的页面地址
    System.Net.HttpWebRequest client = System.Net.WebRequest.Create(address) as System.Net.HttpWebRequest;
    client.Timeout 
= 2000;
    client.ReadWriteTimeout 
= 2000;
    client.BeginGetResponse(
nullnull);
}

然后在 service 站点,提供查看的页面,根据site参数来查看指定站点的slow page。
http://service.yousite.com/slowpage_list.aspx?site=site001

同时这个页面可以很方便的以iframe的方式嵌入到各个子站点的后台。

就像开发时,要DRY(Don't Repeat Yourself)避免重复代码一样,在规划站点时,也要避免重复的基础功能建设,这样的好处不光是减少工作量,也能够更好的保证整体站点的一致与稳定。

转载于:https://www.cnblogs.com/jiyang/archive/2011/05/12/2044304.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值