仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 858|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET编程:封装的一个asp.net考证码类

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:19:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。第一个反应是考证码的这些属性是不是能够设置(也就是说是封装成一个类,然后以表露私有属性和办法的体例来利用的,仍是在间接在一样平常处置程序中完成了考证码的天生到输入),了局对照惋惜,是后者......内里的算法感到挺不错,最少关于我这类对算法几近是不懂的人来讲是如许,因而想到往封装一下她然后无耻地归入本人的类库中往^^
old原文件以下:点击下载

起首剖析一下这份代码中的不敷(本人以为的):
1、面向历程式的编程,假如要修正考证码的属性,比方修正字体的巨细、背景色彩等细节的器材,必要往一样平常处置程序中找到相干的代码,修正之。不外这份代码对照好,把天生考证码字符串和天生图片用分歧的办法分隔,很简单找到要修正的中央。
2、假如我想把这个功效使用到其他中央,比方winform程序中,那末这份代码没办以一个组件(一个dll)情势被复用,而是被复制粘贴然后修正...
3、没有发明考证码天生以后有存起来(--!)

固然,所谓的不敷是绝对而言的,就是偶然间来思索然后渐渐计划一个考证码类的话一定能作出一个对照不错的类出来的,但假如是在做项目而且项目很告急的话,如许的代码实际上是对照给力的,那些所谓的面向工具计划形式代码解耦啥的都是浮云~~~

接上去是我对这份代码的修正,起首断定本人要甚么样的效果,就是说封装起来后我但愿如何来利用他。起首我但愿在利用的时分只必要new一个考证码实例(必要的话能够对考证码的各个属性能够恣意设置),然后能够挪用这个实例的某些办法分离以字符串、流、位图工具、byte数组的情势猎取到这个考证码(申明,这个考证码类不包含把考证码存进高低文的功效,团体以为天生考证码和把考证码存到高低文是两种分歧的功效,没需要把这功效做到考证码类中往)。如许的话在一样平常处置程序中代码就变得非常复杂了,起首只需new出一个考证码,然后挪用办法以字符串的情势猎取到这个考证码,然后存到高低午中,至于存在Session中大概Cookie中就依照必要来了,考证码类不论这些的;然后是挪用别的一个办法以byte数组的情势猎取到这个考证码,如许经由过程context.Response.BinaryWrite()办法就能够输入图片了,也就是说一样平常处置程序中只要三句代码。挪用的代码大抵以下:
复制代码代码以下:
///<summary>
///猎取考证码(一样平常处置程序出口函数)
///</summary>
///<paramname="context">以后高低文</param>
publicvoidProcessRequest(HttpContextcontext)
{
//创立考证码
ValidateCodevalidateCode=newValidateCode();
//猎取考证码(字符串),写进Session
context.Session["SomeValidateCode"]=validateCode.GetString();
//输入考证码(图片)
context.Response.BinaryWrite(validateCode.GetByteArray());
}

这里附上考证类的源码(VS2010),内里供应的属性其实不周全,别的图片的输入以BMP的格局输入,比本来的那份代码输入的要明晰良多,必定水平上对功效举行封装但纷歧定封装得很好,供交换进修用:点击下载new

PS:记得刚出来事情的时分代码写得很差(比如今差),一样平常拿到一份代码都是间接用,历来没有想过是不是要把代码举行修正大概封装,当时候被我的徒弟教训了一次印象很深入。团体感到实在用他人的代码没甚么欠好的,一来他人用过最少证实代码的可用性,别的智商无限,有些器材本人想破头皮也没有他人想的好,可是用他人的代码必定不要自觉地拿了就用,最好依据本人的实践情形举行需要的修正大概封装,哪怕是复杂的隔一层也好。固然了,仍是那句话,假如项目告急的话如许做分明是华侈工夫的,总之就是不要不思索,拿了就用,最少看把关头的代码大概代码的全体布局弄分明。

剧本之家间接都给打包了。下面是old文件夹,上面的是new文件夹的内容。下载地点/201012/yuanma/yanzhengma.rar对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。
透明 该用户已被删除
沙发
发表于 2015-1-19 08:43:19 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
只想知道 该用户已被删除
板凳
发表于 2015-1-27 19:30:40 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
地板
发表于 2015-2-5 11:53:46 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
活着的死人 该用户已被删除
5#
发表于 2015-2-11 16:55:58 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-2 17:26:15 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
莫相离 该用户已被删除
7#
 楼主| 发表于 2015-3-11 04:53:30 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
老尸 该用户已被删除
8#
发表于 2015-3-17 21:08:21 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-25 02:38:19 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 06:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表