还是关于静态还是实例的问题
public class ComUtils
{
public static string GetCookieStr(string s)//获得cookie值
{
HttpCookie c = HttpContext.Current.Request.Cookies[s];
return c == null ? "" : c.Value;
}
public static string GetMd5(string s)//获得md5密文
{
MD5 md5 = new MD5();//实例
return string.IsNullOrEmpty(s) ? "" : md5.GetMD5(s);
}
public static string GetReferrer//获得UrlReferrer
{
get
{
Uri Uri = HttpContext.Current.Request.UrlReferrer;
return Uri == null ? "" : Uri.Host.ToString();
}
}
public static string GetUrlTokenDecode(string s)//获得UrlTokenDecode
{
try
{
return string.IsNullOrEmpty(s) ? "" : Encoding.Default.GetString(HttpServerUtility.UrlTokenDecode(s));
}
catch { log4net.Error("GetTokenDecode, s=" + s); return ""; }
}
public static string GetIPAddress()
{
string s = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(s))
{
s = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (string.IsNullOrEmpty(s))
{
s = HttpContext.Current.Request.UserHostAddress;
}
if (string.IsNullOrEmpty(s))
{
return "";
}
return s;
}
}
这些方法,使用static合适不,看了论坛上的帖子,说是没有用到方法外的适合,可是这些都有用到,就担心这样在大请求量只下会因为内存的变动引起数据错误,会不会这样啊 --------------------编程问答-------------------- 可以使用,没有问题。你可以做个测试嘛。 --------------------编程问答-------------------- 没问题就好。。。一直以为调用了其他方法在大并发下就会出问题 --------------------编程问答-------------------- 问题不大,可以使用 --------------------编程问答--------------------
public static string GetMd5(string s)//获得md5密文
{
MD5 md5 = new MD5();//实例
return string.IsNullOrEmpty(s) ? "" : md5.GetMD5(s);
}
就这个方法而言,不仅没问题,而且是线程安全的。
因为它用到的MD5是在方法内才new出来的,
对多线程来说,每个线程都自己用自己new出来的那一个,
没有共享就没有冲突。
--------------------编程问答--------------------
并发量大要怎么测试? --------------------编程问答--------------------
这和并发有什么关系?
你用的所有资源全是独占的,根本不会引起锁。
既然你类里所有方法都是静态的,你这个类也应该加上static
这样你的静态方法就可以改成扩展方法
比如
public static string GetMd5(this string s)
你其他地方调用的时候只要"password".GetMd5();就可以了 --------------------编程问答-------------------- 个人觉得看这个类的作用,如果这是个功能类,和别的类也没有聚合关系,那么就可以用 静态类 静态方法。
--------------------编程问答--------------------
class 要不要static ,这个好像也都一样的吧 --------------------编程问答--------------------
public static string GetMd5(string s)//获得md5密文
{
MD5 md5 = new MD5();//实例
return string.IsNullOrEmpty(s) ? "" : md5.GetMD5(s);
}
就这个方法而言,不仅没问题,而且是线程安全的。
因为它用到的MD5是在方法内才new出来的,
对多线程来说,每个线程都自己用自己new出来的那一个,
没有共享就没有冲突。
其它方法有什么说法吗 --------------------编程问答--------------------
public static string GetMd5(string s)//获得md5密文
{
MD5 md5 = new MD5();//实例
return string.IsNullOrEmpty(s) ? "" : md5.GetMD5(s);
}
就这个方法而言,不仅没问题,而且是线程安全的。
因为它用到的MD5是在方法内才new出来的,
对多线程来说,每个线程都自己用自己new出来的那一个,
没有共享就没有冲突。
其它方法有什么说法吗
其它方法使用了HttpContext,我个人没用过,所以不确认是否线程安全
补充:.NET技术 , ASP.NET