![]() |
1
15
如果您使用的是本地SQL Server,那么直接访问数据库。如果客户机必须在另一个系统上使用SQL数据库,则最好使用Web服务来提供额外的保护,并且具有能够处理多个用户的业务层的额外优势。
通过Web服务连接总是会慢一点,对数据库的修改将更难添加到整个系统中。(基本上,这意味着您需要创建较新版本的Web服务,同时维护较旧的Web服务以实现向后兼容性。)
Web服务的使用往往更安全,尽管安全性通常是 人 问题比软件问题。但是,由于用户和数据库之间的Web服务,与数据库的连接更加安全,因为用户无法直接访问它。(除了您通过Web服务提供的功能)当客户端和数据库在同一个系统上时,这一点是没有意义的,因为这样用户就可以获得完全访问权。
Web服务更适合客户机-服务器应用程序,用户不应该直接访问数据库。否则,直接的数据库连接只会提高性能。 创建Web服务时,首先编写通用(类)库,该库将为Web服务提供功能。围绕这个(业务)库创建一个Web服务,向外界公开重要的方法。任何网站都可以在不使用Web服务的情况下直接调用此库,尽管您始终可以选择甚至让网站代码通过Web服务访问数据。 即使只是用本地数据库创建一个桌面应用程序,编写一个具有访问数据库逻辑的业务库也是一件很好的事情。根据您的需要,您的客户机可以直接或通过Web服务调用此业务库。
大部分只是你愿意用来设置的硬件数量。如果你能负担得起建立一个数据库服务器,一个单独的服务Web服务,第三个为你的网站,有十几个左右的客户机系统,那么你可以选择最分层的版本,在那里客户机和网站都会调用调用调用数据库的Web服务。但是,如果所有东西都需要在一个系统上运行,那么只需坚持应用程序和业务层/库。 但是,添加层会从单个用户的角度降低性能。但是,使用多个层可以提高整体性能,因为资源在多个用户中得到更好的分配。 |
![]() |
2
16
一般经验法则如下:
|
![]() |
3
7
我会保持简单,尽量减少层数。分层会降低性能,增加复杂性,并要求在更多位置进行更改。 因此,如果应用程序和SQL Server之间的netwerk连接是开放的(通常是TCP端口1433),那么我将使用SQL连接。 |
![]() |
4
3
如果您可以从桌面访问数据库,那么您应该这样做。 你有多种客户。这意味着应用程序应该有多个层。 这并不意味着你需要多个层次。 如果您的层必须通过防火墙传输数据,或者您具有多种技术,则可能需要多个层。 |
![]() |
5
3
考虑到上下文,客户机访问数据库可能存在一个很大的安全问题。它需要给用户访问数据库的权限,或者创建一个服务帐户。给用户直接访问数据库带来了风险。这两种方法都打开了利用桌面DLL连接到应用程序上下文之外的数据库的大门(我见过很多次这样的情况,即所有功能操作都使用一个公共的数据访问类)。当然,这个组件初始化所有连接信息。基于反射的访问使访问受保护或私有方法变得容易,除非您声明安全特权)。 Web服务公开不公开任何基于SQL的操作的功能操作。这不仅更安全,还将客户机从数据存储实现中抽象出来。 同样,这取决于你的背景。但在企业/ISV领域,这通常是一个很大的禁忌。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |