asp.net 一般处理程序小优化
使用asp.net mvc习惯了,最近项目中又开始使用asp.net,有大量的ajax方法调用,之前有两种方法来处理:
- Switch case :方法少还行,如果很多,就太蛋疼了,而且方法堆在一块,也不美观
- 匿名方法:方法复用不好,vs代码也不便于折叠
最近研究了一下用反射方法来做,把类中所有公开方法都通过反射找出存到字典中,调用时匹配字典中的key,看是否有此方法。
以下是我写的方法,这种方法我总结有以下优点:
- 不用大量写大量判断语句,简洁
- 方法可以复用
- 可以集中处理一些事情,如调用前监控,处理;异常处理;...
- 如果有不同实现,可以调用不同的接口(虚方法)的实现(我这里为了省事,没有用接口)
但是我不知道这样写,会不会有性能损耗,是否还有优化的地方,欢迎大家指点。
public class NewServices : IHttpHandler
{
private static readonly IDictionary<string, MethodInfo> Services = new Dictionary<string, MethodInfo>(StringComparer.OrdinalIgnoreCase); public void ProcessRequest(HttpContext context)
{
var action = context.Request["action"];
MethodInfo method;
if (action.IsNotNullAndWhiteSpace() && Services.TryGetValue(action, out method))
{
try
{
method.Invoke(new NewServicesApi(context), null);
}
catch (Exception ex)
{
context.WriteJson(new JsonResultInfo().SetError(ex.Message));
}
}
else
{
context.WriteJson(new JsonResultInfo().SetError("{0}方法不存在!".FormatWith(action)));
}
} static NewServices()
{
Services.Clear();
var methods = typeof(NewServicesApi).GetMethods(BindingFlags.Public | BindingFlags.Instance);
foreach (var m in methods)
{
Services.Add(m.Name, m);
}
}
public bool IsReusable { get { return false; } }
} internal class NewServicesApi
{
private HttpContext context;
private HttpRequest Request;
private HttpResponse Response;
public NewServicesApi(HttpContext context)
{
this.context = context;
Request = context.Request;
Response = context.Response;
}
public void Test()
{
Response.Write("test");
}
}
asp.net 一般处理程序小优化的更多相关文章
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- 【原创】构建高性能ASP.NET站点之二 优化HTTP请求(前端)
原文:[原创]构建高性能ASP.NET站点之二 优化HTTP请求(前端) 构建高性能ASP.NET站点之二 优化HTTP请求(前端) 前言: 这段时间比较的忙,文章写不是很勤,希望大家谅解. 上一篇文 ...
- ASP.NET 性能监控工具和优化技巧
转载自:http://blog.haoitsoft.com/index.php/archives/657 ASP.NET 性能监控工具和优化技巧 发表回复 为了阐明准确甄别性能问题的重要性,下面列举了 ...
- ASP.NET MVC 3 网站优化总结(三)Specify Vary: Accept-Encoding header
继续进行 ASP.NET MVC 3 网站优化工作,使用 Google Page 检测发现提示 You should Specify Vary: Accept-Encoding header,The ...
- ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩
网站开启 Gzip 压缩的好处相信很多人都已经清楚,这样做可以提高网站的性能.那么为什么很多网站没有开启 Gzip 压缩功能呢?原因有4点:防病毒软件.浏览器 bug.网站代理和服务器未配置. 使用 ...
- ASP.NET MVC 3 网站优化总结(六)压缩 HTML
压缩 html 可以去除代码中无用的空格等,这样可提高网站的加载速度并节省带宽.今天就让我们看看在 ASP.NET MVC 3 怎么实现 html 压缩,我们可通过实现 ActionFilter 来完 ...
- asp.net 实现“九连环”小游戏
asp.net 实现"九连环"小游戏 wildcatsky(原作) public Class ChinaRing1 Inherits System.Web.UI.Page #Re ...
- SPFA 小优化*2
/* bzoj 2763 SPFA小优化 循环队列+SLF 顺面改掉自己之前手打qeueu的坏毛病*/ #include<iostream> #include<cstring> ...
- 缓存 Array.length 是老生常谈的小优化
问题 缓存 Array.length 是老生常谈的小优化. // 不缓存 for (var i = 0; i < arr.length; i++) { ... } // 缓存 var len = ...
随机推荐
- data pump(数据泵)
先给出oracle给出的一个定义: “Oracle Data Pump technology enables very high-speed movement of data and metadata ...
- c++程序内存泄露检測工具
功能: 用于检測c++程序的内存泄露. 原理: 事实上非常easy,就是通过函数的重载机制,捕获应用程序的new, new[] , delete , delete[], malloc,calloc,f ...
- Android Develop【转】
[Android Develop] Android实现伸缩弹力分布菜单效果 摘要: 本文介绍下在Android中实现伸缩弹力分布菜单效果.关于这种菜单效果在IPhone中比较常见,效果比较酷.那么 ...
- UIImageView图片视图的基本概念和使用方法
IOS学习笔记(十)之UIImageView图片视图的基本概念和使用方法(博客地址: http://blog.csdn.net/developer_jiangqq ) Author:hmjiangqq ...
- hdu 4873 ZCC Loves Intersection(大数+概率)
pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...
- golang printf
1: 打印包括字段在内的实例的完整信息 同 %+V fmt.Printf("Hello world! %v","hufeng") 输出:Hello world ...
- Linux新手笔记 源 安装chromium
centos6.4 32 一.软件源目录/etc/yum.repos.d把新的软件源文件copy到这即可.二.安装chromiumwget http://people.centos.org/hughe ...
- 使用iscroll4可能会遇到的问题(转:记录)
1.在iscroll4的滚动容器范围内,点击input框.select等表单元素时没有响应这个问题原因在于iscroll需要一直监听用户的touch操作,以便灵敏的做出对应效果,所以它把其余的默认事件 ...
- 0527 python 基础01
折行的处理 \>>> print "hi \... hello Lucy!"hi hello Lucy! 自然字符串,字符串加上r或R前缀指定>>&g ...
- ForeignKey.on_delete
当由一个 ForeignKey 引用的对象被删除,默认情况下,Django模拟SQL的 ON DELETE CASCADE 来删除对象的 ForeignKey 关系.这样可以覆盖指定的 on_dele ...