1.7.0版本

快速入门

创建你的第一个ZeroASP程序。

1.7.0版本

基础模块1

核心基础通用类等。

1.7.0版本

基础模块2

核心基础通用类等。

1.7.0版本

数据操作模块

具备多种数据库的数据解决方案。

1.7.0版本

请求获取模块

包括GET,POST,数据流等等客户端数据。

1.7.0版本

图片/文件上传模块

支持原生表单,AJAX和Flash组件上传。

1.7.0版本

时间模块

具备多种时间处理方法。

1.7.0版本

加密模块

支持多种加密解密解决方案。

1.7.0版本

数据/文本流模块

不仅适用于上传支持,还适用于远程请求支持。

1.7.0版本

远程请求模块

API请求核心功能。

1.7.0版本

JSON模块

读写JSON数据,减少手动拼接带来的错误。

1.7.0版本

XML模块

读取XML数据和生成XML数据等方法。

1.7.0版本

FSO模块

文件夹和文件操作的增删查改方法。

1.7.0版本

自定义模块

方便开发者整合自己的功能方法。

1.7.0版本

字典模块

更令人满意的处理关联数据的解决方法。

1.7.0版本

邮件模块

采用CDO组件发送,支持SSL协议。

1.7.0版本

MVC模块

符合经典ASP3.0编程为基础的MVC。

1.7.0版本

二维码模块

生成二维码,保存二维码,二维码图片转换。

1.7.0版本

图片验证码模块

生成图片验证码,支持标准格式。

1.7.0版本

Excel模块

采用Excel组件导入导出,支持标准格式。

1.7.0版本

条形码模块

生成条形码,支持标准格式。

1.7.0版本

阿里云模块

支持阿里短信发送,支付宝支付核心等。

1.7.0版本

微信模块

支持微信消息,微信支付核心等。

高并发解决方案

服务端承载性能一直都是备受关注的,那么作为ZeroASP的开发者,将如何编写高性能承载的代码呢?下面我们将为你提供ZeroASP高性能承载处理的核心代码。你可以免费将该模块使用于任何个人项目。但是不能去除模块信息。官方QQ群:199951855


演示代码说明

  • ZeroASP高性能承载处理的核心代码,演示短时间内接收1000请求的处理能力;

实例演示

1.无容错处理;

			<!--#include file="./ZeroASP/ZeroASP.asp"-->
			<%
			Dim Id,Text,CreatedAt,Line
			Id = Zasp.Time.Date(Now(),6) & Zasp.Base.RndN(1000,9999) '201610191212120000
			Text = "高并发测试"
			CreatedAt = Zasp.Time.Date(Now(),14) '2016-10-19 12:12:12
			'记录创建
			Line = Zasp.DB.ExeRows(Conn,"Insert Into [Test] (Id,Text,CreatedAt)Values(" & Id & ",'" & Text & "','" & CreatedAt & "')")
			Line = 0 '释放返回行数
			%>

经过测试:1000个请求仅仅处理了600个请求左右,命中率为65%;

尝试通过增加随机数,由Zasp.Base.RndN(1000,9999)改为Zasp.Base.RndN(100000,999999),依然无法达到100%命中率,为什么会出现这个情况呢?因为当高并发请求的时候,由于受到I/O读写速度影响,难免会出现写入过慢,导致未处理完当前请求又接收下一个请求的情况,所以不难看出问题不在于随机数,而在于I/O读写速度。那么应该怎么纠正这个错误呢?怎么去处理这个无法预知的错误的存在呢?下面将是ZeroASP高性能承载处理的核心代码。

2.有容错处理;

			<!--#include file="./ZeroASP/ZeroASP.asp"-->
			<%
			Dim Id,Text,CreatedAt,Line,I
			Id = Zasp.Time.Date(Now(),6) & Zasp.Base.RndN(1000,9999) '201610191212120000
			Text = "高并发测试"
			CreatedAt = Zasp.Time.Date(Now(),14) '2016-10-19 12:12:12
			'记录创建
			Line = Zasp.DB.ExeRows(Conn,"Insert Into [Test] (Id,Text,CreatedAt)Values(" & Id & ",'" & Text & "','" & CreatedAt & "')")
			If Line = 0 Or Line = "" Then '表示未成功处理,进行异常判断
				If Err.Number <> 0 Then '有异常
					Err.Clear '每次异常处理前清空已知错误
					For I = 1 To 5 '提供五次异常处理
						Id = Zasp.Time.Date(Now(),6) & Zasp.Base.RndN(1000,9999) '201610191212120000
						Line = Zasp.DB.ExeRows(Conn,"Insert Into [Test] (Id,Text,CreatedAt)Values(" & Id & ",'" & Text & "','" & CreatedAt & "')")
						If Err.Number <> 0 Then '有异常
							Err.Clear '每次异常处理前清空已知错误
						Else
							Exit For
						End If
					Next
				End If
			End If
			If Line = "" Then:Line = 0 '表示异常处理失败,返回0
			Line = 0 '释放返回行数
			%>

经过测试:1000个请求全部处理完成,命中率为100%;

那么为什么会完成全部的请求呢?原因是因为在创建记录的时候,由于高并发请求,会导致第一次创建记录出现无法创建的情况,那么这个时候已经出现异常错误了,如果不处理,理论上不会导致严重问题,但是对于一些稳定性高的系统中,这部分异常错误是需要我们去尝试修复的,所以我们通过捕抓错误来判断当前记录问题,然后重新尝试创建记录,用于修复错误。那么这里的五次尝试是固定的吗?并不是,这个可以根据你的项目实际情况进行调整,默认情况下我们推荐五次尝试即可。ZeroASP高性能承载处理的核心代码就此介绍完毕,更多性能问题欢迎加入官方QQ群:199951855,我们一同讨论。

完整实例演示(API强要求接口)

1.采用Application锁事件+BeginTrans数据事务+I/O读写容错;

			<!--#include file="./ZeroASP/ZeroASP.asp"-->
			<%
			'====================================
			'↓↓↓高并发处理机制↓↓↓
			'====================================
			If Application("Queue") <> "" Then
				Application("Queue") = ""
				Zasp.Echo("异常,请尝试重新请求")
				Zasp.Die()
			End If
			Application.Lock '队列锁
			Application("Queue") = Zasp.Base.GUID() '队列值
			'====================================
			'↑↑↑高并发处理机制↑↑↑
			'====================================

				'====================================
				'↓↓↓高并发处理机制↓↓↓
				'====================================
				Call Zasp.DB.Trans(Conn) : On Error Resume Next
				'====================================
				'↑↑↑高并发处理机制↑↑↑
				'====================================

				'====================================
				'↓↓↓高并发处理机制↓↓↓
				'====================================
				'使用超级执行方法进行I/O读写容错
				Call Zasp.DB.SuperExe(Conn,"Update [Test1] Set [Types]=1")
				Call Zasp.DB.SuperExe(Conn,"Update [Test2] Set [Types]=2")
				Call Zasp.DB.SuperExe(Conn,"Update [Test3] Set [Types]=3")
				'====================================
				'↑↑↑高并发处理机制↑↑↑
				'====================================

				'====================================
				'↓↓↓高并发处理机制↓↓↓
				'====================================
				Call Zasp.DB.ExeTrans(Conn)
				'====================================
				'↑↑↑高并发处理机制↑↑↑
				'====================================

			'====================================
			'↓↓↓高并发处理机制↓↓↓
			'====================================
			Application("Queue") = "" '队列值
			Application.Unlock
			'====================================
			'↑↑↑高并发处理机制↑↑↑
			'====================================
			%>

经过测试:1000个请求全部处理完成,命中率为100%;

测试硬件:Xeon(R) 2.5 GHz + 4G + SSD;

要点:Application使用服务器动态内存,BeginTrans使用数据库物理逻辑,I/O读写容错使用硬盘读写性能;

推荐使用在一些需要高可用性重复校验的接口使用该方法;


了解更多 »

了解更多 »