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

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

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

[Global.asax]

<%@ Application Language="C#"%><script runat="server">protectedvoidApplication_BeginRequest(objectsender, EventArgs e) {//记录开始时间this.Context.Items["page_request_starttime"]=DateTime.Now;
    }
protectedvoidApplication_EndRequest(objectsender, EventArgs e) { //最大用时,单位毫秒,根据需要指定多慢的页面需要记录constintmaxTimeUse=2000;stringurl=HttpContext.Current.Request.Url.ToString();//页面处理用时inttimeUse=(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) { //当前站点标识stringsite="site001";stringaddress=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)asSystem.Net.HttpWebRequest;
    client.Timeout
=2000;
    client.ReadWriteTimeout
=2000;
    client.BeginGetResponse(
null,null);
}

然后在 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

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

  1. ar 微信小程序_小程序可以实现AR效果了 微信还为开发者提供了基础能力支持

    [TechWeb]7月7日消息,据微信官方发布的消息,小程序可实现AR效果了,包括AR试穿.AR逛展等各种体验.同时,首个小程序AR动态试妆的美妆品牌小程序也正式落地,品牌商户和服务商也可以通过能力的 ...

  2. 免费超大量邮件发送服务,Kewail提供SMTP和API支持

    一般来说网站注册.论坛消息.新闻推送.广告宣传等都会有发送邮件服务,用kewail平台发送邮件,可以保证邮件到达率,同时适合超大量的邮件发送服务. Kewail是专业级别的邮件发送服务,能够满足企业或 ...

  3. linux 下的 service 和systemctl 服务管理方式

    linux 下的 service  和systemctl 服务管理方式 man service 得到:执行一个system V 风格的启动脚本 service - run a System V ini ...

  4. Spring Cloud Alibaba基础教程:几种服务消费方式(RestTemplate、WebClient、Feign)

    热门:Spring Cloud Greenwich.RELEASE 正式发布!一个非常有看头的版本! 通过<Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现&g ...

  5. Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)

    通过<Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现>一文的学习,我们已经学会如何使用Nacos来实现服务的注册与发现,同时也介绍如何通过LoadBal ...

  6. 详细了解 Linkerd 2.10 基础功能,一起步入 Service Mesh 微服务架构时代

    Linkerd 提供了许多功能,如:自动 mTLS.自动代理注入.分布式追踪.故障注入.高可用性.HTTP/2 和 gRPC 代理.负载均衡.多集群通信.重试和超时.遥测和监控.流量拆分(金丝雀.蓝/ ...

  7. 跨境早报| 亚马逊FBA推配送新服务!Shopee全面开放巴西站点广告功能

    跨境电商科技大会阵容曝光 3月18日-20日,由商务部外贸发展事务局等单位主办的中国跨境电商交易会将在中国福州海峡国际会展中心正式启幕.届时,紫鸟浏览器将在3月19日分会场主办跨境电商科技大会. 据悉 ...

  8. 3D Robotics转型新动作,将为亚特兰大机场提供站点扫描服务

    3D Robotics与亚特兰大Hartsfield-Jackson国际机场达成合作,为机场提供勘测服务. 对无人机有所了解的人应该不会不知道3D Robotics这家公司.这家曾经北美最大的消费级无 ...

  9. laravel Notifynder 以简单的方式提供了强大的消息通知管理功能

    1.简介 Notifynder 以简单的方式提供了强大的消息通知管理功能:其提供的完整API可用于对消息通知的各种处理,比如存储.检索以及组织处理成百上千条通知的代码库.有了Notifynder,你可 ...

最新文章

  1. ATS名词术语(待续)
  2. 32位 shell.efi x86_Linux 的 32 位内核自 Meltdown 以来一直有问题
  3. 登陆xp系统,无法显示桌面
  4. RabbitMQ(三) 集群配置
  5. 使用ifconfig取出网卡eth0的ip地址
  6. 怎样在计算机中创建d盘,我在电脑D盘内新建了一个文件夹,怎么才能给 – 手机爱问...
  7. Oracle 甩手 Java EE,Eclipse 基金会成新东家
  8. 关于互联网大厂裁员,引发企业危机处理与个人危机处理的思考
  9. c#练习——简单的文字编辑器
  10. 图像处理之直方图匹配
  11. excel跨多个表格求和_收藏学习!一个Excel函数搞定进销存报表,你还在花钱买软件?...
  12. Cursor的关闭问题
  13. html的nofollow标签,nofollow标签有什么用,网站怎么添加nofollow
  14. Excise_day05_Array
  15. JavaScript replace() 方法转换时间数据中的“-”和“/”
  16. HDLM命令dlnkmgr详解之三__view
  17. 电脑显示器的相关设置与常见故障排除方法
  18. 语音助手——多轮会话(理论概念篇)
  19. Redis 6.0删除节点
  20. pom 备注_POMGH-25POMGH-25

热门文章

  1. iOS程序员眼中的客户端免登陆(数据迁移已更新)
  2. python 回溯法 子集树模板 系列 —— 5、取物搭配问题
  3. sidhu眼中的CoordinatorLayout.Behavior(二)
  4. PHPCMS V9 框架代码分析(入口程序)
  5. cocos2d笔记——CCNode与CCAction
  6. C#调用WebService出现“基础连接已经关闭:接收时发生错误”错误
  7. 小论Java类变量的隐私泄露
  8. Linux实现最常用的磁盘阵列--RAID5
  9. bootsrap的font awesome的各种图标,包括动画图标
  10. 5月22日阿里云网络变更公告