2011-04-22 63 views
3

我目前正在研究几个选项来创建一个新的应用程序,该应用程序可以由多个用户在封闭的Intranet中使用浏览器进行访问。为什么你需要webservices从Silverlight访问数据库?

我曾考虑过使用Silverlight的用户友好性和WPF设计,以便将来用户习惯的富客户端非常接近。

该项目(当然)需要访问内部网中的数据库,因此我浏览了互联网以了解如何处理数据访问。我很惊讶地看到,您显然使用网络服务与数据交互,如this SO post哪些点this tutorial(许多使用Web服务的方法之一)中提到的。

已经在内部网中创建了各种与数据库交互的富客户端,我很惊讶被迫使用Web服务。

确实,我确实了解web服务的优点;它提供的安全性以及通常在软件体系结构中创建良好DAL的所有其他功能。然而,我不明白为什么你不能简单地创建(例如)一个包含Linq to SQL类的库,并使用这个库作为silverlight项目的参考,直接访问数据,就像使用传统富客户端应用程序一样。据我所知,通过这样做,您将访问数据存储在应用程序的连接字符串中,但我看不出为什么它不适用于Silverlight客户端。

UPDATE

于是,两个问题:

  1. 我们究竟通过Web服务来访问数据?
  2. 如果是这样,为什么它不同于传统的富客户端方法?
  3. Silverlight 5能让我做这样的事吗?
+1

我不认为有客户端直接访问数据库是非常可取的,你必须在客户端代码中包含数据库凭证,这是一个安全噩梦。另外.net框架中的许多数据访问方法需要安装额外的驱动程序/客户端,这将是另一个痛苦。你用什么框架直接从客户端访问数据库? – 2011-04-22 23:01:34

回答

10

不过,我不明白为什么你不能简单地创建(例如)包含LINQ to SQL类图书馆和直接使用这个库作为参考的Silverlight项目来访问数据,你可以使用经典的富客户端应用程序。

与WPF不同,Silverlight不使用或访问完整的.NET Framework。它在自己的,受限的CLR和框架下运行。

在决定要包含什么以及要省略什么时,决定将所有数据访问组件都遗留在Silverlight之外。这确实使得不可能像上面提到的那样直接创建“使用SQL的库”。

通过使用WebServices(或WCF,它确实是首选方法),您只需要能够创建和访问Silverlight支持的服务引用。

+0

我还看到Silverlight 5包含了许多添加到silverlight框架的新功能,你知道数据是否可以包含在内吗? – SRKX 2011-04-22 22:43:49

+3

@JSmaga:我不相信。它甚至不在.NET客户端配置文件中,它比SL要大得多......使用WCF服务(或WCF RIA服务)确实是首选的方式。 Silverlight不打算直接用作数据使用者。 – 2011-04-22 22:53:58

+0

来自@Reed Copsey的伟大答案,你也必须认识到Silverlight已经被设计成一个非常“瘦”的客户端类型的应用框架,所以你应该做所有你的数据库和业务层逻辑远离你的用户界面。或者你将有更大的XAP文件下载到客户机上。再次伟大的原创帖子@Reed。 +1 – 2011-04-23 02:47:28

0

Silverlight在客户端工作站上运行,而数据库驻留在某个服务器上。托管数据库的各方必须有各种各样的安全问题才能直接访问客户端软件。使用类似Web服务的机制将数据库从客户端软件中隐藏起来。

同样,使用Web服务作为数据访问方法意味着silverlight不需要知道数据库是如何工作的,因此您的数据可以在sql server,oracle,mysql甚至是平面文件中,而且它没有任何区别Silverlight客户端。这确实是一个聪明的做法。

+1

他在内部网上使用它。安全性应该由AD/Kerberos处理,这样就不会成为问题。在互联网上,Web服务很有意义。在内联网上,它们意义不大,但仍然有价值。 – 2011-04-22 23:14:03

+0

但是,使用Web服务抽象出数据库技术仍然适用。 – Jeremy 2011-04-22 23:15:52

+0

我同意安全问题,但正如@Mystere Man所说,我在内部网上,因此这里没有问题。数据库抽象是由Linq To SQL完成的我认为,因为我可以从SQL Server,SQL Compact,Excel创建datacontext,而且我认为更多,所以只要我使用相同的接口,它是不是也没有问题? – SRKX 2011-04-22 23:39:10

相关问题