mssql远程应用程序VS基于web的应用程序
我有一个客户端请求开发销售点系统(POS)。 但大多数POS系统都使用基于桌面的应用程序。
客户端请求所有分支机构不需要数据库安装,并直接连接到HQ服务器的分支机构。
这种要求适用于基于Web的应用程序,
但如果我使用基于桌面的应用程序,VB.NET开发,并远程访问MS SQL数据库。
我会面对什么问题?它是稳定的吗?mssql远程应用程序VS基于web的应用程序
不打扰关闭服务器业务,
我只是想知道检索基于Web和基于桌面的(远程访问DB)庞大的数据时,检索数据的任何分化的速度?
服务器带宽: DEDICATED 100MB上传和下载
晴......如果你使用远程应用程序,也有很多的配置做,可能会出现麻烦,当涉及到的各类操作系统有一定的用户可以使用,例如MAC PC或任何苹果产品。
访问这些网站:site1和site2欲了解更多信息。 基于Web的应用程序比基于桌面的应用程序更方便,但如果您尝试制作基于桌面的应用程序并且仅与数据库有关,则可以使用VB.Net
和POSTGRESQL
作为不直接连接到VB的数据库,而是使用Web基于数据库。我不知道如何调用这个,但尝试有一个Web应用程序,为您的数据呈现JSON格式并从您的VB代码调用它。确切的过程是使用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
部署到Heroku
和VB
效果很好打电话。
使用这种方法的唯一问题是当你有缓慢的互联网连接,这对你一定没有问题。
我只是想知道什么时候检索基于Web和基于桌面的远程访问数据库(远程访问数据库)检索数据的速度任何区别?
如果这你的意思是,“有一个桌面应用程序,并从数据库中访问大量数据时,Web应用程序之间的任何速度差异,” 简单的答案很可能是,没有。您的数据库设计和代码效率更可能会影响您的事务处理性能,而不是通过不同平台进行访问时可能忽略不计的体系结构差异。
假设您的所有PoS客户端都将运行在同一个平台上(无论是Web还是桌面),您只会设计一种进入数据库的方法。因此,您不必设计复杂的系统来支持各种客户端,而是可以将支持集中在单一访问方案上。您可以花费大量时间和精力使数据库和代码尽可能高效和可靠。
确实存在一些证据支持基于Web的访问总体上会比较慢,您当然应该考虑这一点。例如,看看this question,其中Wim ten Brink表示“通过Web服务连接总是会慢一点”,其他用户提出了“桌面”策略。不过,考虑到这是非常经验性的证据,这些答案不一定适用于远程访问数据库,只是不同的方案。
但是,您还必须权衡方法与纯粹性能视图之间的其他成本/收益。正如上面提到的问题所提到的,例如,基于Web的应用程序可以以其他方式受益,例如更快的客户端更新过程以及更高的(固有的)安全性。无数的优先事项中的哪一个是重要的,对你的项目有多重要,完全取决于你(以及大多数情况下,你的客户),但我建议根据单一的性能指标做出决定单独(特别是因为如果没有在特定情况下测试每个测试的影响,您无法准确评估影响)可能会有点狭隘。
最后,我将花一点时间重新强调我想在my comment earlier中所做的一点:如果没有备份解决方案,失去连接性(并因此失去功能),速度是毫无意义的一点。你的客户可能认为他们不想要备份数据库,但我保证当最小的错误导致他们失去销售时他们会改变主意。
其他资源
- This question有几个为什么一个Web应用程序可能会工作更好地为您很好的答案,因为必须将数据库远程托管(重要的是,Web应用程序的本地托管到数据库)。
- Here is a question有一些真正可靠的答案争论网络与桌面,虽然不是专门关于数据库访问。
出于性能考虑,Web应用程序可以为您提供与桌面应用程序相同的性能,如果您使用具有优化前端的Web API等高度优化的服务。 实施POS作为Web应用程序的主要问题是客户必须始终在线工作,这是不能保证的。 因此,我认为最好的方法是创建封装所有业务逻辑并从Desktop应用程序使用此服务的WCF/Web API服务。是 功能这种架构如下:
- 你将不得不在服务中的所有业务逻辑,所以,如果您对服务未来变化的所有客户端,你将无法重新安装应用程序。
- 您的业务逻辑和数据库结构将不会与客户端应用程序一起分发。
- 您可以使用Sync Framework本地存储数据的情况下,到服务器的连接发生故障
- 您将有应用比在网络上更多的控制扔东西使应用程序更实用,性能更好的多窗口的事件。
注意:远程访问数据库对于您的性能而言完全适用。但是,您需要在每次小改动时在所有客户端上部署桌面应用程序。从安全角度来看,不建议在所有客户端添加数据库模式和连接信息。
根据我的经验(在高容量的PoS设置中),依靠远程服务器进行数据库连接可能会成为一个非常头疼的问题。任何连接问题(配置错误,无法访问互联网)都会导致销售完全停止。至少,您需要建立一个终端“离线”工作的能力,但即使如此,您还是可以完成信用卡交易,等等?如果您不得不依赖远程设备,请使用镜像远程设备的本地“备份服务器”,然后在可用时进行同步。这个问题太宽泛,不能简明回答。 –
@JustinRyan不关心不要连接,因为网络连接不成问题。我关心的问题是“我只想知道何时检索基于Web和基于桌面的大型数据(远程访问数据库)检索数据的速度是否有区别?” ,会不会变得很慢? –
@JustinRyan因为客户不希望支付更多的实施离线模式,但我可以肯定,他的服务器网络连接不是问题。这个项目是否可行? –