1、性能测试中使用DLL处理客户端本地进行的复杂计算
在性能测试过程中,经常遇到这种情况:客户端与服务端交互的数据需要经过多重二次计算,如加密加压,解密解压等,以及其他一些需要在客户端本地进行的计算。
在使用lr进行性能测试过程中,当然也可以在脚本中编写处理过程,但总的来说不容易处理。
本文对以前的经验作了总结,方便参考。
2、编程实现
本文演示了一个简单的c++ dll程序的结构,可以不关注如何调用com的过程。如果想知道调用com的过程,可参考http://blog.csdn.net/ceo158/article/details/14003969,该文介绍了如何在c++中使用com。
一个最简单的dll程序,其实可以只包括一个头文件和一个源码文件。
下面的例子导出两个两个函数:
int EnStr(char* toEn,char encryptedStr[]);作用是加密字符串toEn,并将加密后的值encryptedStr返回。注意在函数实现里使用了strcpy(encryptedStr,(LPSTR)(LPCTSTR)strRET);,而非encryptedStr = (LPSTR)(LPCTSTR)strRET;,因为strRET的生命周期只是存在于该函数内,一旦返回,其值将被释放,所以外面调用该dll的客户程序得不到任何内容(空)。
int DeStr(char* toDe,char decryptedStr[]);的作用是解密,基本实现同上。
另外需要注意的是引入了两个新类型BSTR和_bstr_t,这都是与com通信相关的。他们可以和CString和char*转换。
1)头文件head.h
#include "stdafx.h"
#include "afx.h"
#include "windows.h"
#include "afxdisp.h"
#import "youcompath\EncryptCompressCS.tlb"
using namespace NAMESPACE;
//导出函数
extern "C"
{
//aes加密
_declspec(dllexport) int EnStr(char* toEn,char encryptedStr[]); //输入为toEn,输出为e