|
本帖最后由 chenyanhe 于 2016-4-13 09:47 编辑
一. 设计目的:
由于很多c#.net开发人员已积累了大量的组件或基于主业务开发了大量的应用,
现需要移动终端接入扩展原有的业务,因此需要UI层html5开发,中间层使用.net处理,
目前Wex5很好地解决了UI层的开发,同时使用Baas服务与UI通信,但现有Wex5的Baas服务
很难与开发者已有的.net组件集成,本文的开发目的就是接管Baas服务,同时允许开发者
自由编写中间层代码。
二 实现功能:
首先开发者在Wex5设计时需使用原有Baas.java+mySql,在调试或运行环境下时
调用.net的Baas服务,实际是接管了runtime下的baasserver,设计时不受影响;这样
就好像在设计UI时将mySql当作数据模型设计器,实际调试或运行时与它无关.真正的
数据是由本程序通过反射返回,只需返回的字段与数据模型相同。
三 实现方法:
需修改 model\UI2\system\lib\base\baas.js中的
BASE_URL : "/baas" 改为
BASE_URL : "http://localhost:2080/baas"
注意:修改完后需执行一次tools\dist\dist.bat重新封包(下同)
C#源码在附件中
四. 扩充错误返回
作用:当中间层Baas服务错误时,将C#的错误信息正常返回到UI
需修改 model\UI2\system\lib\base\baas.js中的
sendRequest : function(options) {
var self = this;
$.support.cors = true;
return $.ajax({
"type" : "post",
"async" : options.async ? options.async : false,
"dataType" : "json",
"contentType" : "application/json",
"url" : this.BASE_URL + options.url+"/"+options.action,
"data" : JSON.stringify(options.params),
"complete" : function(xhr) {
if (xhr.readyState == 4 && xhr.status == 200) {
if (xhr.responseJSON.errorno){
self.showError(xhr.responseJSON.errormsg);
}
else {
if (options.success) {
options.success.call(this, xhr.responseJSON, xhr);
}}
} else {
var msg = self.getErrorMsg(xhr);
if (options.error) {
options.error.call(this, msg, xhr);
} else {
self.showError(msg);
}
}
}
});
附件源码说明:基于vs2008 c#.net
解决方案BaasService包括3个项目
1.BaasSevivce
是.net的web服务,
主文件是ActionHandler.cs,注意修改Web.Config文件
test.cs及test.html是Ajax测试调用的用的
2.FireCloud.Baas
是baas服务的关键转换模块
Engine.cs 是根据传入的参数反射调用指定的.net模块
当在Wex5中创建的Baas服务是justep/demo时,Wex5传入的Baas参数为
baas/justep/demo/queryOrder,这时将反射调用baas.justep.dll下的
baas.justep.demo类的queryOrder方法,其它类同
3.baas.justep
是baas/justep/demo的queryOrder方法和saveOrder方法的示例,
开发者可以此为模型作功能扩展 |
|
|