【问题标题】:mssql remote application VS web based applicationmssql 远程应用程序 VS 基于 Web 的应用程序
【发布时间】:2015-07-25 23:35:45
【问题描述】:

我有一个客户要求开发销售点系统 (POS)。 但大多数 POS 系统都使用基于桌面的应用程序。
客户端请求所有分支机构不需要安装数据库,分支机构直接连接总部服务器。
这种要求适用于基于 Web 的应用程序,
但如果我使用基于桌面的应用程序、VB.NET 进行开发,以及远程访问 MS SQL 数据库。
我会面临什么问题?稳定吗?

不要打扰服务器关闭业务,
我只想知道何时检索基于 Web 和基于桌面(远程访问数据库)的大量数据,检索数据的速度有什么区别? p>

服务器带宽: 专用 100MB 上传和下载

【问题讨论】:

  • 根据我的经验(在高容量 PoS 设置中),依赖远程服务器进行数据库连接可能会变得非常头疼。任何连接问题(配置错误、无法访问 Internet)都会导致销售完全停止。至少,您需要建立终端“离线”工作的能力,但即便如此,您能否完成信用卡交易等?如果您必须依赖远程,请拥有一个本地“备份服务器”来镜像您的远程,然后在可用时同步。这个问题太宽泛,无法简明扼要地回答。
  • @JustinRyan 不要在意连接,因为网络连接不是问题。我关心的问题是“我只想知道何时检索基于 Web 和基于桌面(远程访问 DB)的大量数据,检索数据的速度有何不同?” ,会不会变得很慢?
  • @JustinRyan 因为客户不想为实现离线模式支付更多费用,但我可以确定他的服务器网络连接没有问题。这个项目可行吗?

标签: sql-server vb.net web-applications desktop-application remote-access


【解决方案1】:

大多数情况下...如果您使用远程应用程序,则需要进行大量配置,并且当涉及到某个用户将使用的操作系统类型(例如 MAC PC 或任何苹果产品)时,可能会出现问题。

访问这些网站:site1site2 了解更多信息。 基于 Web 的应用程序比基于桌面的应用程序更方便,但如果您尝试制作基于桌面的应用程序并且只有数据库有问题,您可以使用 VB.NetPOSTGRESQL 作为不直接连接到您的 VB 的数据库。有一个基于网络的数据库。我不确切知道如何调用它,但尝试使用一个为您的数据呈现 json 格式的 Web 应用程序并从您的 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 部署到Heroku 并从VB 调用,效果很好。

使用此方法的唯一问题是当您的互联网连接速度较慢时,这对您来说绝对没有问题。

【讨论】:

    【解决方案2】:

    我只想知道何时检索基于 Web 和基于桌面(远程访问数据库)的海量数据,检索数据的速度有何不同?

    如果您的意思是“从数据库访问大量数据时,桌面应用程序和 Web 应用程序之间的速度是否存在差异,”很可能是简短的回答是,没有。您的数据库设计和代码效率对事务性能的影响远大于通过不同平台访问时(可能)微不足道的架构差异。

    假设您的所有 PoS 客户端都将在同一平台(Web 或桌面)上运行,您只需设计一种进入数据库的方法。因此,您不必设计复杂的系统来支持各种客户端,而是能够将支持集中在单一访问方案上。您可以将节省的时间和精力用于使您的数据库和代码尽可能高效和可靠。

    确实存在一些证据支持基于 Web 的访问通常会更慢,您当然应该考虑到这一点。看看this question,例如,Wim ten Brink 建议“通过 Web 服务连接总是会慢一点”,其他用户建议使用“桌面”策略。但请考虑,这是非常经验性的证据,这些答案不一定适用于远程访问数据库,只是不同的方案。

    但是,您还必须根据纯粹的性能视图权衡方法之间的其他成本/收益。如上述问题中所述,例如,基于 Web 的应用程序以其他方式受益,例如更快的客户端更新过程和更高的(固有)安全性。无数优先事项中的哪一个是重要的,以及它们对您的项目有多重要,完全取决于您(在大多数情况下,您的客户也是如此),但我建议根据单一性能指标做出决定单独(尤其是因为如果不在特定场景中进行测试就无法准确衡量影响)可能有点狭隘。

    最后,我将花一点时间再次强调我在my comment earlier 中试图提出的观点:如果您在没有备份解决方案的情况下失去连接​​(因此失去功能),速度绝对是一个没有实际意义的问题。您的客户可能认为他们不需要备份数据库,但我保证当最小的错误导致他们失去销售时,他们会改变主意。

    其他资源

    • This question 有几个很好的答案,说明为什么 Web 应用程序可能更适合您,因为您的数据库必须远程托管(重要的是,Web 应用程序在数据库本地托管)。
    • Here is a question 提供了一些关于 Web 与桌面的非常可靠的答案,尽管不是专门针对数据库访问。

    【讨论】:

      【解决方案3】:

      出于性能目的,如果您使用高度优化的服务(如 Web API)和优化的前端,Web 应用程序可以为您提供与桌面应用程序相同的性能。 将 POS 实现为 Web 应用程序的主要问题是客户端必须始终在线工作,这是无法保证的。 因此,我认为最好的方法是创建封装所有业务逻辑并从桌面应用程序使用此服务的 WCF/Web API 服务。 该架构的特点如下:

      1. 您将拥有服务中的所有业务逻辑,因此,如果您将来对服务进行更改,您将不会在所有客户端上重新安装应用程序。
      2. 您的业务逻辑和数据库结构不会随客户端应用程序分发。
      3. 您可以使用Sync Framework 在本地存储数据,以防与服务器的连接中断
      4. 与在 Web 上相比,您可以更好地控制应用程序,引发许多 Windows 事件,从而使应用程序更可用和性能更好。

      注意:远程访问数据库在性能方面非常适合您。但是,您需要在所有客户端上部署桌面应用程序,每次微小的更改。而且从安全的角度来看,不建议在所有客户端中添加数据库架构和连接信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        • 2022-07-01
        相关资源
        最近更新 更多