pb11.net + webservice + iis6.0 for win2003server 三層系統架構規划

pb11.net + webservice + iis6.0 for win2003server 三層系統架構規划

中間層為輕量層

數據庫端處理方式不變

中間層方式及需求功能 n_webservice ,只作更新﹐獲取﹐傳輸數據功能
一,連接資料庫
  1.create transobject
  2.連接﹕nvo_connect
  3.斷開﹕nvo_disconnect

二,建立數據源datastore  
  1.createdastore (string syntax )
  1.單數據窗口   (已測試完成通過  )
  2.嵌套數據窗口 (未作測試) 

三,獲取數據
  1.多筆數據 retrievefromdastore (datastore ado_store,arg arg[])
  2.單筆數據 retrievefromsql     (select * from   )

四,更新數據 insert delete update
  1.新增與修改可以同一事務處理
  2.刪除單獨事務處理
  3.update(dastore,adwo_store[]) 
 
五,傳輸數據(與客戶端)
  1.取得數據﹕byte[] to blob ado_blob 
  2.返回數據: blob to byte[] 或xml

客戶端操作方式及需求功能﹕
一,客戶端建立代理 n_webservicepoxy
二,封裝中間層的操作到客戶端soapserver
   1.建立 createinstance  ﹐配置webserviceIIS站點 到 ini文件 加密
   2.封裝中間層更新﹐獲取﹐傳輸數據功能

三﹐單表可以完全采用 update()  語句請行資料更新
   1.insert
   2.update
   3.delete
四﹐多表操作方式﹕
   1.刪除 (只能具有刪除全部或部分資料﹐采用update()﹐刪除即為永久性刪除)
   2.新增 (略)
   3.修改 (修改狀態只能新增資料﹐修改非key的值﹐不能產生 delete 語句﹐不能自動將不符合條件的資料刪除)
   4.保存 (只針對修改保存)
   5.讀取(通過客戶端傳入中間層)
     5.1.單表 已測試通過
     5.2.多表  未測試
 
五﹐業務邏輯處理   
   1.Select * from  判斷資料合法性或抓取并顯示符合條件的資料 
   2.datastore 批量多筆數據處理  
六﹐程式分為在線與離線模式,建立程式狀態變量 
   1.在線
   2.離線
   3.提供動態連接功能


Blob與bype  大二進制轉換 
Blob lblb_1
Any a
byte lbyte_array[], lbyte_array2[]
// initialize array
lbyte_array[] = {1,10,100,200,255}
a = lbyte_array
lblb_1 = Blob(a)
lbyte_array2[] = GetByteArray(lblb_1)

@@客戶端 ==》中間層==》數據庫 
取得數據窗口更改資料 (從客戶端)
blob lblb_changes
long ll_rv
ll_rv = dw_employee.GetChanges(lblb_changes)
IF ll_rv = -1 THEN
        MessageBox("Error", "GetChanges call failed!")
ELSE
        iuo_employee.UpdateData(lblb_changes)
END IF

將資料更新到后端數據庫中(中間層更新dbserver) 
// Instance variable:datastore ids_datastore
// Function argument: blob ablb_data
long ll_rv
ids_datastore.SetChanges(ablb_data)
ll_rv = ids_datastore.Update()
IF ll_rv > 0 THEN
        COMMIT;
ELSE
        ROLLBACK;
END IF
RETURN ll_rv


@@數據庫層==>中間層==》客戶端 
GetStateStatus
從數據庫取值 
// Instance variables:
// datastore ids_datastore
// blob blb_data
long ll_rv
ids_datastore = create datastore
ids_datastore.dataobject = "d_emplist"
ids_datastore.SetTransObject (SQLCA)
ids_datastore.Retrieve()
ll_rv = ids_datastore.GetFullState(blb_data)
SetFullState
從中間層更新到客戶端
// Global variable:connection myconnect
// Instance variable: uo_employee iuo_employee
blob lblb_data
long ll_rv
myconnect.CreateInstance(iuo_employee)
iuo_employee.RetrieveData(lblb_data)
ll_rv = dw_empdata.SetFullState(lblb_data)
IF ll_rv = -1 THEN
        MessageBox("Error", "SetFullState failed!")
END IF

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值