簡體   English   中英

在delphi中編寫Client-Server應用程序

[英]Client-Server application writing in delphi

在delphi下編寫客戶端 - 服務器應用程序的最佳方法是什么? 我知道有一種DataSnap技術,但它不是專業版。 您有任何可以分享的經驗嗎?

這是一個相當廣泛的問題,因為它可能取決於您的數據庫決策。

DataSnap真正允許N-Tier解決方案,如果您正在尋找客戶服務器,您可以在專業版中獲得所需的大部分內容,具體取決於數據庫選擇。

對於Client Server:

客戶端服務器體系結構是客戶端直接與服務器通信的時間。

有幾個框架可用,它們都遵循相同的模式。

數據庫連接 - >查詢 - >(可選提供程序 - > TClientDataset) - > TDataSource - >可視化控制

DBX

  • TSqlConnection - 連接到數據庫
  • TSqlQuery - 查詢DB生成單向數據集
  • TSqlStoredProc - 針對DB執行存儲過程

ADO

  • TAdoConnection - 連接數據庫
  • TAdoQuery - 查詢DB生成雙向數據集

通用組件

  • TClientDataSet - 在內存數據集中是雙向的
  • TDatasetProvider - 獲取其他數據集並將數據綁定到TClientDataset
  • TDataSource - 將數據集綁定到數據感知的可視控件

根據數據庫選擇,還有其他幾種選擇。

但是,您似乎在問N-Tier(中層)類型的解決方案

對於N層

N層體系結構是客戶端與中間層通信,然后與服務器通信。 它被稱為N-Tier,因為您可以選擇使用多個中間層或應用程序服務器。

商業選擇(需要額外支付的額外費用)

我個人不知道任何免費或開源選項,雖然我懷疑有些存在。

兩種選擇:

  • DIY(自己動手)。 使用Indy和/或ICS互聯網組件自己編寫通信層和協議。 很多艱苦的工作,需要大量的測試才能做到正確。
  • 使用現成的框架,例如kbmMW: http ://components4developers.com/或RemObjects: http//www.remobjects.com/兩者都不是免費的,但是非常值得你支付的錢,即使只按開發時間衡量/你有多余的成本。

您可以使用WST是一個免費的開源工具包,用於Web服務的消費和創建,支持SOAP和XmlRPC以及JsonRPC(JsonRPC支持僅適用於FPC)。 它與Delphi兼容。 更好地從svn檢查,因為0.5版本實際上是過時的。

使用Delphi Professional,可以編寫簡單的(沒有WS- *標准,沒有Soap 1.2服務器)SOAP客戶端和服務器應用程序。

在許多情況下,Soap在跨平台/跨語言集成,標准化,按合同設計和成熟的實施指南,最佳實踐和模式方面提供了優勢。

對於Soap,有很多(和免費)工具,如SoapUI和IDE編輯器,用於Web服務描述語言(WSDL)文檔,如NetBeans。

看看我們的開源客戶端/服務器ORM

它是多層兼容的,您可以在客戶端和服務器級別使用ORM。 ORM隨處可用,JSON是為客戶端/服務器傳輸選擇的格式。

您可以將應用程序作為本地應用程序啟動,然后只需更改用於訪問數據的類類型,它就會成為通過命名管道,HTTP / 1.1或GDI消息進行通信的客戶端/服務器應用程序。

它被設計為在服務器端使用SQLite3作為一個小而有效的數據庫引擎,但您可以在沒有SQlite3的情況下使用ORM。 如果您願意,可以使用純Delphi內存引擎。

該框架嘗試從下到上實現N層架構 即將推出的1.13版本將具有強大的過濾和驗證機制 ,非常適合N-Tier架構。 有一些用戶界面單元,具有完整報告(和pdf生成),能夠使用數據的ORM布局從代碼創建大部分用戶界面。

它基於RESTful范例,通過JSON從客戶端訪問數據。 如果RESTful方法不夠,就像DataSnap一樣,有一種簡單的方法來實現客戶端/服務器服務

它是Unicode就緒(在所有內部級別使用UTF-8),並適用於IDE的每個版本,從Delphi 6到XE(甚至是Starter版本)。

幾個月前,我停止使用這種架構(n層,2層)實現基於Delphis和特定數據庫技術的新項目。 我相信這些架構不是未來的教授。 我現在使用的建築是一個雙碼頭。 服務器是普通的HTTP服務器。 它作為app server *工作,並可選擇提供Web客戶端。 在德爾福開發客戶更難,但值得。 由於特定工具不能作為數據庫連接提供的工具,我使用indy從HTTP服務器發送和接收數據。 我做一個GET請求來獲取數據,然后解析它以在GUI上顯示它。 然后POST請求更新或插入新數據。 HTTP服務器處理所有業務邏輯:-)

除了作為未來的教授之外,這種架構更便宜且與平台無關。 如果您對其進行分析,這與大多數移動應用程序使用的架構相同。 因此,如果您計划將來編寫移動客戶端,請考慮使用腳本語言(Python,PHP,Ruby等)開發應用服務器。

這是我的建議。 不要忘記:偉大的事情需要偉大的承諾!

  • App Server是一種服務,它為您的應用程序(瘦客戶端)提供獲取和發送數據的接口。 它還控制着業務邏輯。 您的應用程序不關心DB或控制記錄關系和數據約束。 這一切都是由應用服務器透明完成的。

對於通用客戶端 - 服務器通信,您可以使用我們的輕量級MsgConnect產品。 這是一個跨平台的MOM(面向消息的中間件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM