编写WebService如此简单 - lua/python/c++

基于starcore编写webservice,非常简单,不需要了解WSDL的细节,starcore仅为一共享库,很容易嵌入到其它应用中。

可以采用starcore支持的脚本语言,目前为python,lua和c++;语法风格一致。

 

lua的例子,仅需9行有效代码

require "libstarcore"
Service=libstarcore._InitSimple("WebServiceCallServer","123",0,3040)
AtomicClass = Service:_CreateAtomicObjectSimple("TestItem","TestClass","","");
--定义函数原型
Service:_CreateAtomicFunctionSimple(AtomicClass,"GetNumber","VS_INT32 GetNumber(VS_INT32 Para);","");
--创建对象
a = Service.TestClass:_New("TestObject")
--设置为WebService对象
a._WebServiceFlag=true

function Service.TestClass:GetNumber(a)
    return a+1
end

 

python的例子,仅需9行有效代码

import starpy
Service=starpy._InitSimple("WebServiceCallServer","123",0,3040)
AtomicClass,ErrorInfo = Service._CreateAtomicObjectSimple("TestItem","TestClass","","");
#--定义函数原型
Service._CreateAtomicFunctionSimple(AtomicClass,"GetNumber","VS_INT32 GetNumber(VS_INT32 Para);","");
#--创建对象
a = Service.TestClass._New("TestObject")
#--设置为WebService对象
a._WebServiceFlag=True

def Service_TestClass_GetNumber(self,a) :
    return a+1
Service.TestClass.GetNumber = Service_TestClass_GetNumber

C++的例子,也非常简单

#include "vsopenapi.h"

static VS_INT32 GetNumber(void *Object,VS_INT32 Para)
{
    printf( "Remote Call Number [%d]/n ",Para);
 return Para + 1;
}

//----------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
 VS_CORESIMPLECONTEXT Context;
 class ClassOfSRPInterface *SRPInterface;
 void *AtomicClass,*GetNumber_AtomicFunction,*Object;
 VS_UUID ClassID;
 VS_CHAR *ErrorInfo;

 SRPInterface = VSCore_InitSimple(&Context,"WebServiceCallServer","123",0,3040,NULL,NULL,NULL);
 AtomicClass = SRPInterface ->CreateAtomicObjectSimple("TestItem","TestClass",NULL,NULL,&ErrorInfo);
 GetNumber_AtomicFunction = SRPInterface ->CreateAtomicFunctionSimple(AtomicClass,"GetNumber","VS_INT32 GetNumber(VS_INT32 Para);",NULL,NULL);
 SRPInterface -> SetAtomicFunction(GetNumber_AtomicFunction,(void *)GetNumber);

 SRPInterface ->GetAtomicID(AtomicClass,&ClassID);
 Object = SRPInterface ->MallocObjectL(&ClassID,0,NULL);
 SRPInterface ->SetName(Object,"TestObject");
 SRPInterface ->SetWebServiceFlag(Object,VS_TRUE);

 VSCore_RunSimple(&Context,NULL);
 VSCore_TermSimple(&Context);
 return 0;
}

 

通过IE访问,http://127.0.0.1:3040/wsdl,和获取上述web服务的wsdl描述文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值