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