Dan*_*ain 18 c# sql web-services
对于同时具有Web和桌面客户端版本的应用程序:
Dar*_*rov 16
一般的经验法则如下:
Wim*_*ink 15
桌面客户端需要访问SQL Server的最佳实践是什么?
如果您使用的是本地SQL Server,则直接访问数据库.如果客户端必须在另一个系统上使用SQL数据库,则首选使用Web服务以获得额外的保护,并且具有应该能够处理多个用户的业务层的附加优势.
从应用程序连接到数据库与使用Web服务有什么好处?
通过Web服务连接总是会慢一点,对数据库的修改将更难以添加到整个系统.(基本上,这意味着您需要创建更新版本的Web服务,同时维护旧版Web服务以实现向后兼容性.)
哪一个提供更好的安全性?
使用Web服务往往是更安全的,但安全性往往是更多的是人不是软件问题的问题.但是,通过用户和数据库之间的Web服务,与数据库的连接更安全,因为用户无法直接访问它.(除了您通过Web服务提供的功能.)当客户端和数据库位于同一系统上时,这一点没有实际意义,因为用户可以获得完全访问权限.
什么类型的范围将要求一个与另一个(企业内部网与Web应用程序等)
Web服务更适用于客户端 - 服务器应用程序,用户不应直接访问数据库.否则,直接数据库连接只会提高性能.在创建Web服务时,首先编写一个通用(类)库,它将为Web服务提供功能.围绕此(业务)库创建Web服务,将重要方法暴露给外部世界.任何网站都可以直接调用此库而无需使用Web服务,但您始终可以选择让网站代码通过Web服务访问数据.即使您只使用本地数据库创建一个桌面应用程序,编写一个带有逻辑的业务库来访问数据库也是一件非常好的事情.您的客户可以直接或通过Web服务调用此业务库,具体取决于您的需求.
在平台上选择时是否还有其他必要的考虑因素?
主要是您愿意用来设置的硬件数量.如果您能够设置数据库服务器,为服务设置单独的Web服务,为您的网站设置第三个服务,使用十几个客户端系统,那么您可以选择最分层的版本,其中包括客户端和网站调用调用数据库的Web服务.但如果一切都需要在单个系统上运行,那么只需坚持使用应用程序和业务层/库.
但是,从单个用户的角度来看,添加图层会降低性能.但是,使用多个层可以提高整体性能,因为资源在多个用户之间得到更好的划分.
我会保持简单并尽量减少层数.层会降低性能,引入复杂性,并且需要在更多位置进行更改.
因此,如果应用程序和Sql Server之间的netwerk连接是打开的(通常是tcp端口1433),我将使用Sql连接.
小智 5
鉴于上下文,客户端访问数据库可能存在很大的安全问题。它需要授予用户对数据库的访问权限,或创建一个服务帐户。让用户直接访问数据库会带来风险。这两种方法都打开了利用桌面 dll 连接到应用程序上下文之外的数据库的大门(我多次看到有一个所有功能操作都使用的通用数据访问类的情况。当然,该组件会初始化所有连接信息基于反射的访问使得很容易获得受保护的或私有的方法,除非您声明安全权限)。
Web 服务公开功能操作,但不公开任何基于 SQL 的操作。这不仅更安全,而且还能将您的客户端从数据存储实现中抽象出来。
同样,这取决于您的背景。但在企业/ISV 领域,这通常是一个大禁忌。
| 归档时间: |
|
| 查看次数: |
14545 次 |
| 最近记录: |