微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐