我有客户要求开发销售点系统(POS)。
但大多数POS系统都使用基于桌面的应用程序
客户端请求所有分支机构不需要数据库安装,并且分支机构直接连接到HQ服务器
这种要求适用于基于网络的应用,
但如果我使用基于桌面的应用程序,VB.NET进行开发,并远程访问MS SQL数据库
我会遇到什么问题?它稳定吗?
不要打扰服务器业务,
我只想知道何时检索基于Web和基于桌面(远程访问数据库)的大量数据检索数据的速度有何区别?
服务器带宽: 专用100MB上传和下载
答案 0 :(得分:1)
主要是......如果您使用远程应用程序,有很多配置要做,并且当涉及某个用户将使用的OS类型时会出现麻烦,例如MAC PC或任何苹果产品。
访问以下网站:site1和site2了解详情。
基于Web的应用程序比基于桌面的应用程序更方便,但如果您尝试创建基于桌面的数据库并且只有数据库问题,则可以使用REDIS_URL_INT
和Class.forName("foo.bar.test.SomeTest");
作为未直接连接的数据库而你的VB有一个基于Web的数据库。我不知道如何调用它,但尝试使用一个Web应用程序,为您的数据呈现json格式并从VB代码调用它。确切的过程是使用VB.Net
和POSTGRESQL
方法。
您可以在您的模块下使用此代码:
GET
POST
实际上是链接,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
拨打电话,效果很好。
使用此方法时唯一的问题是当您的网络连接速度较慢时,对您来说肯定没问题。
答案 1 :(得分:0)
我只是想知道何时检索基于Web和基于桌面(远程访问数据库)的大量数据检索数据的速度有何区别?
如果您的意思是,“在从数据库访问大量数据时桌面应用程序和Web应用程序之间的速度有任何差异,”可能是简短的回答是,没有。与通过不同平台访问之间的(可能)可忽略的架构差异相比,您的数据库设计和代码效率更有可能对事务的性能产生影响。
假设您的所有PoS客户端都将在同一平台(Web或桌面)上运行,您将只设计一种进入数据库的方法。因此,您无需设计复杂的系统来支持各种客户端,而是可以将支持集中在单一访问方案上。您可以节省时间和精力,使数据库和代码尽可能高效可靠。
确实存在一些证据支持基于Web的访问通常会变慢,您当然应该考虑到这一点。例如,请查看this question,其中Wim ten Brink表示“通过网络服务连接总是会慢一点”,而其他用户则提出了“桌面”策略。但是,请考虑这是非常经验的证据,这些答案不一定适用于远程访问数据库,只是不同的方案。
但是,您还必须权衡方法之间的其他成本/收益与纯粹的性能视图。如上述问题所述,例如,基于Web的应用程序以其他方式受益,例如更快速的客户端更新过程,以及更高(固有)的安全性。哪些无数优先级很重要,以及它们对您的项目有多重要,完全取决于您(以及大多数情况下,您的客户),但我建议根据单个性能指标做出决策单独(特别是因为你不能准确地衡量影响而不在特定场景中测试每一个)可能会有点狭隘。
最后,我将花一点时间再次强调我在my comment earlier中尝试提出的观点:如果您失去连接(因此功能),速度是一个绝对没有实际意义的点,没有备份解决方案。您的客户可能认为他们不想要备份数据库,但我保证当最小的错误导致他们失去销售时他们会改变主意。
其他资源
答案 2 :(得分:0)
出于性能目的,如果您使用具有优化前端的Web API等高度优化的服务,Web应用程序可以为您提供与桌面应用程序相同的性能。 将POS作为Web应用程序实现的主要问题是客户端必须始终在线工作,这是无法保证的。 所以,我认为最好的方法是创建WCF / Web API服务,封装所有业务逻辑并从Desktop应用程序中使用此服务。 该架构的特征如下:
注意:远程访问数据库在性能方面非常适合您。但是,您需要在每次微小更改时在所有客户端上部署桌面应用程序。从安全角度来看,不建议在所有客户端中添加数据库架构和连接信息。