Web服务之前,桌面应用程序如何与远程服务器通信?


11

我对桌面应用程序没有太多的经验,但是如果必须创建客户端服务器桌面应用程序,则可以通过Web服务来进行数据访问。我相信通过Web服务进行的数据访问可提供安全性-我不需要传递数据库服务器的用户名和密码等。

在使用Web服务之前,数据库应用程序是如何做到这一点的?是否已将所有重要的数据库信息传递到桌面应用程序的安装中?如果是这样,程序员如何管理安全性方面?还是程序员使用类似于Web服务的内容?


5
对于远程过程调用,有很多有趣的事情,例如DCOM(分布式COM),CORBA,Java RMI ...我从来没有完全理解它们,而通过HTTP请求一些数据是很有意义的。我想每天都使用网络浏览器可以使网络服务更容易理解:-)
marcus

3
@marcus:可能是因为HTTP内置了请求响应,而“套接字上的某些协议”导致每个人发明的轮子的形状略有不同。
史蒂夫·杰索普

Answers:


11

取决于您所谓的Web服务。

在WSDL和REST之前,仍然有HTTP,因此基本上您现在可以做的所有事情也可以以前完成。

缺乏一致性(这就是为什么首先创建WSDL和REST的原因),但是它提供了您正在谈论的相同级别的数据机密性和安全性。

实际上,您也可以避免使用HTTP:您可以草拟自己的协议,并使用自定义服务器和自定义客户端,这将打开该服务器的套接字并获取所需的数据(或发布数据)。在这里,您失去了HTTP的所有标准化好处,但又一次,您没有将访问数据库的权限授予客户端。


17

啊,当我们有木棍和石头的时候。

在使用Internet之前,我们有一种称为“客户端/服务器”架构和局域网的东西。如果您不打算与数英里外的服务器建立连接,则这些网络可以很好地完成大多数任务。如果愿意,您甚至可以建立驱动器号并使用与远程硬盘驱动器之类的文件服务器的连接。如果您几英里远的地方,则可以使用广域网来执行基本相同的操作,尽管速度较慢且费用较高。

到说话的廉价的方式远程是通过跨使用的设备称为调制解调器电话线的信息,如果你想拼凑一些地方两台计算机通过计算机应用彼此交谈,你做到了,你今天就以同样的方式:通过建立通信协议。这根本没有什么神奇的;双方只需要就所有字节的含义达成一致即可。

从Internet的早期开始,就有各种方法可以使机器跨Internet通信。Web服务只是本周的最新消息。


5
“这根本没有什么神奇的;双方只需要就所有字节的含义达成一致即可。” and endianness :)
hjk 2015年

2
@hjk,这很容易:不言而喻,little-endian显然优于所有其他选项:-)
Mark

3
我什至可以说互联网的定义要求机器之间必须有通讯方式。如果他们不能做到这一点,那不是互联网,那是一堆束缚宏大幻想的电缆。
史蒂夫·杰索普

2
@SteveJessop:您错了,“ 这是一系列电子管 ”。
Deduplicator

3

只是要先弄清楚一些概念...

我相信通过Web服务进行的数据访问可提供安全性-我不需要传递数据库服务器的用户名和密码等。

我认为您在上面的陈述中混淆了(1)传输层安全性(TLS)和(2)访问控制的概念...是否需要提供用户名和密码与是否提供Web服务无关通过(1)加密通道和(2)身份验证(例如API密钥)提供。

编写得非常糟糕的Web服务可能仍需要通过HTTP以纯文本格式发送密码。一个写得不好的人可能会通过HTTPS来做到这一点(安全,但是一旦被破坏,例如通过中间人攻击,就容易受到滥用)。在验证和权利控制得到验证之后,编写更好的Web服务应基于其他输入(例如会话ID)在内部处理数据库连接。

回到要点,@ marcus对您的问题的评论实质上就是它。安全方面的处理与“现代”技术没有什么不同,并且涉及诸如以下的实现问题:

  • 您的通信协议(从@RobertHarvey的答案中借来一点)是否支持加密数据的传输。
  • 在服务器和客户端之间中继的消息有效负载结构。
  • 服务器如何管理其数据库连接性(实际上与客户端隔离,请参见第一段)。

了解更多信息:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.