ASP面向对象编程探讨及比较
ASP面向对象编程的与比较:面向对象的之路从RAINMAN_NET的Blog启程
ASP是Microsoft推出的动态网页编程技术,即便在如今的技术洪流中,由于其结合ADO对数据库的便捷访问、结合XML、COM/ActiveX等技术实现服务器多层结构的功能,它依然保持着生命力,并在持续发展。虽然ASP.Net在架构上完全不同于ASP,但其许多内建对象是基于ASP进行扩展的。
作为早期的版本,ASP提供的面向对象接口相对较弱。ASP的实现语言分为VBScript和JavaScript/JScript。在VBScript中,我们可以使用Class关键字来声明一个自定义类。相比之下,JavaScript更为独特,它用一个函数来“声明”类,然后通过this.prototype定义属性,this.func定义方法。本文主要基于VBScript展开讨论。
VBScript中的类声明简洁明了,通过Class name和End Class的语句结构,我们可以在其中声明公有或私有的成员,包括函数、成员和属性。值得一提的是,VBScript中的属性实现得益于微软的get和set方法,这一理念在COM中出现,并在.Net中得以沿用。对于程序员而言,这种实现方式比Java的getProp()、setProp()要直观方便得多。
将VBScript中的类与PHP4(甚至与的PHP5相比)进行比较,各有千秋。VBScript的类保持了VB的不完全面向对象的特性,仅实现了基本的构造/析构函数、成员函数、变量、属性等,构造函数甚至不能带参数。PHP4则实现了继承、函数重载等类的重要性质,开始向完全面向对象迈进,为实现多态打下基础。但二者均未实现类的静态(static)成员等功能。尽管可以通过其他方式达到类似的效果,但从真正的面向对象思想来看,这都是不彻底的。
在日常使用中,你可以使用VBScript的自定义类来封装一些操作,但不要期望它像C++/Java/.Net那样完全支持面向对象的思想。尽管如此,VBScript默认参数或变量是引用的好风格仍然值得称赞。这种风格使得即使是对类型不敏感的Script语言,也能达到C/C++里指针/引用同样的功效,完成许多复杂任务。
例如,通过简单的VBScript代码,我们可以定义一个列表(List)的节点类ListNode。这个类只有几个Public的属性和一个Private的初始化子程序。尽管看起来简单,但它展示了VBScript如何通过使用引用达到某些功能。而在使用上,通过Set语句对对象进行赋值,就像Java中的赋值一样,都是获得一个引用。这一点比PHP4中的对象赋值方式要方便许多。需要注意的是在PHP中创建新对象时如果不加特殊说明默认是拷贝构造函数的调用创建了新的对象实例;若需要引用则需要特别指定使用引用符号&或自定义对象序列化等操作。至于PHP的新版本PHP5并没有改变这种做法或者说对于这个问题没有明确给出解决方案或建议实践方式。总的来说ASP技术虽然有其局限性但在实际使用中依然有其独特的价值和生命力同时也有着广泛的应用场景和需求空间特别是对于一些中小型项目而言是一个值得考虑的选择。在ASP(Active Server Pages)中,Session对象确实可以用来存储对象,包括基本变量、数组以及自动化对象等。当涉及到储存自定义类的对象时,开发者可能会遇到一些挑战。以SEO优化的代码为例,该代码试图在一个用户会话中仅保留一个ListNode类的对象实例。
在用户首次访问特定网页时,代码创建一个ListNode对象并将其存储在Session("node")中。后续访问时,由于Session("node")已经存在,因此不会创建新的对象,而是从Session中检索已保存的对象。理论上,这应该能够正常运行并输出预期结果(例如数字“100”)。
ASP在实际运行中却报错,提示“Object doesn't support this property or method”。这一错误可能是由于VBScript的类型转换机制相对较弱所致。在VBScript中,没有显式的强制类型转换功能,这使得Session中存储的自定义类对象在提取时可能无法正确转换为ListNode类型。
由于ASP页面每次加载时都会重新和执行代码,包括自定义类的定义。即使之前在Session中存储了该类的一个对象实例,但在下一次页面加载时,该类会被视为新定义的类,导致无法识别Session中的对象。
相比之下,PHP的运行环境在处理此类情况时可能更为灵活。在PHP中,由于类型系统的不同,存储和检索自定义类对象的机制可能与ASP有所不同。
为了避免这类问题,开发者在ASP中尽量避免使用Session或Application来存储自定义类的对象。如果需要实现类似的功能,可以考虑使用COM(Component Object Model)来编写类,并通过Server.CreateObject方法在VBScript中创建对象实例。这样,即使在不同的页面加载之间,也能保持对象实例的持久性,并实现预期的功能。
理解ASP和VBScript的特性和限制对于开发者来说至关重要。通过深入理解和合理利用这些工具的特性,可以更加有效地进行开发并避免潜在的问题。
网络安全培训
- ASP面向对象编程探讨及比较
- vue实现绑定事件的方法实例代码详解
- JavaScript实现SHA-1加密算法的方法
- AngularJS模块详解及示例代码
- js读取并解析JSON类型数据的方法
- 简单谈谈Javascript中类型的判断
- 基于vue2.0实现仿百度前端分页效果附实现代码
- 网站防止被刷票的一些思路与方法
- 集合类Array List HashTable实例操作练习
- ASP中实现定时发送邮件的代码分享
- 原生js实现针对Dom节点的CRUD操作示例
- vue服务端渲染操作简单入门实例分析
- 如何在CentOS中安装PHP7.4的方法步骤
- asp.net 细说文件读写操作(读写锁)
- 东之伊甸主题曲
- PHP迭代器的内部执行过程详解