3

我有一個客戶端請求開發銷售點系統(POS)。 但大多數POS系統都使用基於桌面的應用程序。
客戶端請求所有分支機構不需要數據庫安裝,並直接連接到HQ服務器的分支機構。
這種要求適用於基於Web的應用程序,
但如果我使用基於桌面的應用程序,VB.NET開發,並遠程訪問MS SQL數據庫。
我會面對什麼問題?它是穩定的嗎?mssql遠程應用程序VS基於web的應用程序

不打擾關閉服務器業務,
我只是想知道檢索基於Web和基於桌面的(遠程訪問DB)龐大的數據時,檢索數據的任何分化的速度?

服務器帶寬: DEDICATED 100MB上傳和下載

+0

根據我的經驗(在高容量的PoS設置中),依靠遠程服務器進行數據庫連接可能會成爲一個非常頭疼的問題。任何連接問題(配置錯誤,無法訪問互聯網)都會導致銷售完全停止。至少,您需要建立一個終端「離線」工作的能力,但即使如此,您還是可以完成信用卡交易,等等?如果您不得不依賴遠程設備,請使用鏡像遠程設備的本地「備份服務器」,然後在可用時進行同步。這個問題太寬泛,不能簡明回答。 –

+0

@JustinRyan不關心不要連接,因爲網絡連接不成問題。我關心的問題是「我只想知道何時檢索基於Web和基於桌面的大型數據(遠程訪問數據庫)檢索數據的速度是否有區別?」 ,會不會變得很慢? –

+0

@JustinRyan因爲客戶不希望支付更多的實施離線模式,但我可以肯定,他的服務器網絡連接不是問題。這個項目是否可行? –

回答

1

晴......如果你使用遠程應用程序,也有很多的配置做,可能會出現麻煩,當涉及到的各類操作系統有一定的用戶可以使用,例如MAC PC或任何蘋果產品。

訪問這些網站:site1site2欲瞭解更多信息。 基於Web的應用程序比基於桌面的應用程序更方便,但如果您嘗試製作基於桌面的應用程序並且僅與數據庫有關,則可以使用VB.NetPOSTGRESQL作爲不直接連接到VB的數據庫,而是使用Web基於數據庫。我不知道如何調用這個,但嘗試有一個Web應用程序,爲您的數據呈現JSON格式並從您的VB代碼調用它。確切的過程是使用GETPOST方法。

您可以將模塊下使用此代碼...:

Public globalLink As String = "https://samplesite.com/" 
Public Sub Save(ByVal link As String, ByVal data As String) 
    request = WebRequest.Create(link) 
    request.Credentials = CredentialCache.DefaultCredentials 


    request.Method = "POST" 
    request.ContentType = "application/x-www-form-urlencoded" 
    postData = String.Format(data) 
    request.ContentLength = postData.Length 
    byteArray = Encoding.ASCII.GetBytes(postData) 
    request.ContentLength = byteArray.Length 
    dataStream = request.GetRequestStream() 
    dataStream.Write(byteArray, 0, byteArray.Length) 
    dataStream.Close() 

    response = request.GetResponse() 
    dataStream = response.GetResponseStream() 
    reader = New StreamReader(dataStream) 
    webRep = (CType(response, HttpWebResponse).StatusDescription) 


    dataStream = response.GetResponseStream() 
    reader = New StreamReader(dataStream) 

    reader.Close() 
    response.Close() 
End Sub 

link是字面上的聯繫和data是發送的參數。參數看起來像這樣在保存...

www.samplesite.com/POSdata?id=01&field1=sampledata&field2=sampledata2 

我在做這樣的過程中,我用Ruby on Rails部署到HerokuVB效果很好打電話。

使用這種方法的唯一問題是當你有緩慢的互聯網連接,這對你一定沒有問題。

0

我只是想知道什麼時候檢索基於Web和基於桌面的遠程訪問數據庫(遠程訪問數據庫)檢索數據的速度任何區別?

如果這你的意思是,「有一個桌面應用程序,並從數據庫中訪問大量數據時,Web應用程序之間的任何速度差異,」 簡單的答案很可能是,沒有。您的數據庫設計和代碼效率更可能會影響您的事務處理性能,而不是通過不同平臺進行訪問時可能忽略不計的體系結構差異。

假設您的所有PoS客戶端都將運行在同一個平臺上(無論是Web還是桌面),您只會設計一種進入數據庫的方法。因此,您不必設計複雜的系統來支持各種客戶端,而是可以將支持集中在單一訪問方案上。您可以花費大量時間和精力使數據庫和代碼儘可能高效和可靠。

確實存在一些證據支持基於Web的訪問總體上會比較慢,您當然應該考慮這一點。例如,看看this question,其中Wim ten Brink表示「通過Web服務連接總是會慢一點」,其他用戶提出了「桌面」策略。不過,考慮到這是非常經驗性的證據,這些答案不一定適用於遠程訪問數據庫,只是不同的方案。

但是,您還必須權衡方法與純粹性能視圖之間的其他成本/收益。正如上面提到的問題所提到的,例如,基於Web的應用程序可以以其他方式受益,例如更快的客戶端更新過程以及更高的(固有的)安全性。無數的優先事項中的哪一個是重要的,對你的項目有多重要,完全取決於你(以及大多數情況下,你的客戶),但我建議根據單一的性能指標做出決定單獨(特別是因爲如果沒有在特定情況下測試每個測試的影響,您無法準確評估影響)可能會有點狹隘。

最後,我將花一點時間重新強調我想在my comment earlier中所做的一點:如果沒有備份解決方案,失去連接性(並因此失去功能),速度是毫無意義的一點。你的客戶可能認爲他們不想要備份數據庫,但我保證當最小的錯誤導致他們失去銷售時他們會改變主意。

其他資源

  • This question有幾個爲什麼一個Web應用程序可能會工作更好地爲您很好的答案,因爲必須將數據庫遠程託管(重要的是,Web應用程序的本地託管到數據庫)。
  • Here is a question有一些真正可靠的答案爭論網絡與桌面,雖然不是專門關於數據庫訪問。
0

出於性能考慮,Web應用程序可以爲您提供與桌面應用程序相同的性能,如果您使用具有優化前端的Web API等高度優化的服務。 實施POS作爲Web應用程序的主要問題是客戶必須始終在線工作,這是不能保證的。 因此,我認爲最好的方法是創建封裝所有業務邏輯並從Desktop應用程序使用此服務的WCF/Web API服務。是 功能這種架構如下:

  1. 你將不得不在服務中的所有業務邏輯,所以,如果您對服務未來變化的所有客戶端,你將無法重新安裝應用程序。
  2. 您的業務邏輯和數據庫結構將不會與客戶端應用程序一起分發。
  3. 您可以使用Sync Framework本地存儲數據的情況下,到服務器的連接發生故障
  4. 您將有應用比在網絡上更多的控制扔東西使應用程序更實用,性能更好的多窗口的事件。

注意:遠程訪問數據庫對於您的性能而言完全適用。但是,您需要在每次小改動時在所有客戶端上部署桌面應用程序。從安全角度來看,不建議在所有客戶端添加數據庫模式和連接信息。

相關問題