mssql远程应用程序VS基于Web的应用程序

时间:2015-05-14 11:10:55

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

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

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

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

3 个答案:

答案 0 :(得分:1)

主要是......如果您使用远程应用程序,有很多配置要做,并且当涉及某个用户将使用的OS类型时会出现麻烦,例如MAC PC或任何苹果产品。

访问以下网站:site1site2了解详情。 基于Web的应用程序比基于桌面的应用程序更方便,但如果您尝试创建基于桌面的数据库并且只有数据库问题,则可以使用REDIS_URL_INTClass.forName("foo.bar.test.SomeTest"); 作为未直接连接的数据库而你的VB有一个基于Web的数据库。我不知道如何调用它,但尝试使用一个Web应用程序,为您的数据呈现json格式并从VB代码调用它。确切的过程是使用VB.NetPOSTGRESQL方法。

您可以在您的模块下使用此代码:

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中尝试提出的观点:如果您失去连接(因此功能),速度是一个绝对没有实际意义的点,没有备份解决方案。您的客户可能认为他们不想要备份数据库,但我保证当最小的错误导致他们失去销售时他们会改变主意。

其他资源

  • This question有一个很好的答案,说明为什么网络应用可能会更好地为您服务,因为您的数据库必须远程托管(重要的是,Web应用程序本地托管到数据库)。
  • Here is a question有一些非常可靠的答案,主张网络与桌面,但不是专门针对数据库访问。

答案 2 :(得分:0)

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

  1. 您将拥有该服务中的所有业务逻辑,因此,如果您将来对服务进行更改,则不会在所有客户端上重新安装应用程序。
  2. 您的业务逻辑和数据库结构不会随客户端应用程序一起分发。
  3. 如果与服务器的连接已关闭,您可以使用Sync Framework在本地存储数据
  4. 您将对应用程序进行更多控制,而不是在Web上抛出许多Windows事件,这些事件使应用程序更具可用性和更好的性能。
  5. 注意:远程访问数据库在性能方面非常适合您。但是,您需要在每次微小更改时在所有客户端上部署桌面应用程序。从安全角度来看,不建议在所有客户端中添加数据库架构和连接信息。