Sql server SQL Server和客户端之间有什么联系?

Sql server SQL Server和客户端之间有什么联系?,sql-server,client-server,n-tier-architecture,Sql Server,Client Server,N Tier Architecture,这个问题是我在这里提出的前一个问题的更新版本 我不熟悉使用SQLServer作为关系数据库的客户机-服务器模型。我读到公众访问SQL Server是不安全的。如果直接访问数据库不是一种好的做法,那么应该在服务器和客户机之间放置什么样的层?请注意,我有一个作为客户端的桌面应用程序和一个向客户端提供数据的远程SQL Server数据库。客户端将输入用户名和密码以查看其数据。我听说过VPN、ISA、TMG、终端服务、代理服务器等术语。我需要一个快速、安全的n层体系结构 另外,我听说数据库前面有web服

这个问题是我在这里提出的前一个问题的更新版本

我不熟悉使用SQLServer作为关系数据库的客户机-服务器模型。我读到公众访问SQL Server是不安全的。如果直接访问数据库不是一种好的做法,那么应该在服务器和客户机之间放置什么样的层?请注意,我有一个作为客户端的桌面应用程序和一个向客户端提供数据的远程SQL Server数据库。客户端将输入用户名和密码以查看其数据。我听说过VPN、ISA、TMG、终端服务、代理服务器等术语。我需要一个快速、安全的n层体系结构


另外,我听说数据库前面有web服务。我可以使用WCF检索、更新、插入数据吗?就安全性和性能而言,这是一种好的方法吗?

对于智能客户端来说,web服务层作为用户客户端和服务器之间的一层非常常见。这允许:

  • 简单网络(仅限http)
  • 您有一个应用程序层,在其中放置验证等,而不会扰乱数据库
  • 您可以拥有与数据库无关的安全性
  • db可以作为更少的帐户(应用程序帐户)运行,从而允许更大的连接池
  • 你可以“扩展”应用层
  • 您可以在数据库上方缓存etc
  • 您可以拥有更丰富的应用程序层,比sql server提供的服务更多
  • 客户机有一个已知的API,但从来不知道db(这是一个实现细节)
你可以使用WCF与应用层对话,但你不应该考虑“插入”、“更新”等-你应该考虑对你的域模型有意义的操作-“CreateOrder”操作等。ADO.NET数据服务允许API更类似于你的“插入”等,但是,对于安全的服务,它不一定像您希望的那样受到控制


性能实际上是“我在运行什么查询?”和“我在传输多少数据?”的一个因素。只要您保持操作正常(即,不要通过网络获取整个“订单”数据来查找最近的订单日期),那么您就应该可以了。

当然,在使用WCF时,您不需要将自己限制为HTTP。如果您正在将.NET与.NET进行通信,则可以将TCP/IP用于两个系统之间防火墙中打开的特定端口号。您根本不需要打开端口80或443。谢谢各位。答案很好。我还有一个问题。如果我使用WCF,用户将使用WCF服务与计算机A对话,计算机A将使用SQL Server与计算机B对话。我说的对吗?@worlds-apart89-对。请注意,如果系统不大,应用层(计算机A)和SQL Server(计算机B)可以是同一台计算机,同时运行IIS(或其他WCF/comms服务器)和DB。@John-当然可能,但在大多数情况下http[s]非常简单,速度也非常快。如果存在带宽问题,则始终可以通过http使用二进制序列化程序和MTOM。现在,如果有人有一个可以集成到WCF的高性能二进制序列化程序,最好是免费的;psince安全性是这里的一个主要问题,我认为最好不要要求端口80和443打开。