首页 > 软件开发 > pb怎么做web开发?

快速发布【软件开发】相关需求,专业顾问为您服务 快速发布

用此手机号发布,您还可以点击 更换

发布需求
请输入正确的手机号
请输入正确的验证码

您是不是要找:

  • 专家问诊,提供专业建议
  • 急速响应,体验省心
  • 根据需求灵活定制解决方案

pb怎么做web开发?

标签:pb做web开发 2017-8-18 作者:open_tq54_niwe

  说到pb开发web,一般是将pb发布成webservice,或者转成webform,两者都有很多限制,比如需要iis安装维护麻烦,调试困难,经常遇到莫名的错误,找不到资料,样式调整困难等问题。


  随着互联网技术的发展和APP的流行,WEB前端和APP开发,越来越流行。要为前端和APP提供服务需要开发web应用,如果能为熟悉的工具进行开发,可以大大节省开发时间,减少学习成本。SATRDA支持PB插件功能,通过插件,可以实现返回网页、json,上传下载文件,把业务逻辑放到服务器执行等功能。


  插件使用非常简单,配置完成后插件就可以以多线程高效执行了。


  配置插件


  将示例中的plugins文件夹拷备到satserver.exe相同目录。


  1.  修改plugins目录下config.cfg,


  如


  {


  "pbtest": {


  "Dir": "test",


  "Method":"Get;Post",


  "URL":"/pbtest/**",


  "Type": "pb",


  "DLL":"pbv**0.dll",


  "AppName":"plugin"


  }


  }


  参数说明:


  "Dir":"test" 表示插件的目录,所有插件都在plugins目录下面,这里值为”test”代表插件在plugins目录下的test目录


  "Method":"Get;Post" 表示http调用的方法,可以为Get,Post,Any,Put,Delete中的一个或多个,多个以;分隔


  "URL": "/pbtest/**" 表示响应以//ip:port/pbtest开头的url。这里"/pbtest/**"可以响应//127.0.0.1:5555/pbtest/test.go,也可以响应//127.0.0.1:5555/pbtest/tttt.go等。如果设置为"URL": "/pbtest/test.Go"则只响应//127.0.0.1:5555/pbtest/test.go


  "Type": "pb" 表示调用PB插件


  "DLL": "pbv**0.dll" 表示pb运行库的dll名称,这里是pb9的运行库,其它版本请自行设置。比如12.5运行库设置为"DLL": "pbvm125.dll"


  "AppName":"plugin" 表示pb的application的名称,一定要和创建的pb的名称对应起来


  2.     创建PB工程


  Pb工程和pbl创建和原来创建一样,Application的name需要和配置的AppName一样。创建一个Function名称为satrda_service,如图:


  当配置的url被调用时,会调用到该方法。


  satrda_service方法代码


  [csharp] view plain copy


  //处理Http请求


  //as_url


  blob lb_url,lb_ctrl,lb_body,lb_buf


  String ls_info,ls_value


  long i,ll_len


  //Sleep(10)


  ResponseHeaderSet(al_context,"Content-Type","text/html; charset=utf-8")


  lb_ctrl = blob("~t~t")


  lb_url = blob(ls_info)


  ls_value = space(255)


  RequestHeaderGet(al_context,"Accept-Encoding",ls_value,255)


  lb_url += blob(trim(ls_value)) + lb_ctrl


  //ls_value = space(255)


  //RequestFormValue(al_request,"name",ls_value,255)


  //lb_url += blob(trim(ls_value)) + lb_ctrl


  ResponseWrite(al_context,lb_url,len(lb_url))


  //读取提交的内容


  lb_buf = blob(space(1024))


  do


  ll_len = RequestRead(al_context,lb_buf,1024)


  if ll_len > 0 then


  lb_body += blobMid(lb_buf,1,ll_len)


  end if


  loop while ll_len <> -1


  ResponseWrite(al_context,lb_body,len(lb_body))


  浏览器调用结果:


  开发注意:


  1.对象的名称一定要是


  方法的名称一定要是satrda_service


  2.由于在不同的线程中,pb对象不支持跨线程访问,所以全局变量也会有多份,访问的全局变量可能是不同的对象,不要依赖全局变量存储公共信息。公共信息通过session或者数据库存储


  运行效率和资源消耗:


  大家肯定要关心,这样运行效率怎么样。我测试了一组数据,编写一个用例测试500个线程,每个执行20次,总共1W次Http请求服务端通过插件方式和原生golang的方式返回简单的hello world和http头


  pb插件代码


  [csharp] view plain copy


  ResponseHeaderSet(al_context,"Content-Type","text/html; charset=utf-8")


  lb_body = blob("hello world!")


  ResponseWrite(al_context,lb_body,len(lb_body))


  用pb编写的插件


  耗时:13.6718秒,平均每次1.367毫秒


  用golang原生返回


  耗时:13.3281秒, 平均每次1.332毫秒


  可以看出两者用时几乎相同,通过比较内存使用也几乎相同。


  上面就是小编为大家整理的关于pb做web开发的文章,希望对大家有帮助。在实际的操作过程中大家可以根据实际情况进行灵活的调整。了解更多咨询请关注猪八戒网。


最新文章推荐

软件开发暂无最新文章查看全部推荐文章>

推荐人才