我目前正在研究创建新应用的几个选项,可以通过封闭内联网中的多个用户使用浏览器进行访问。
我考虑过使用Silverlight,因为它的用户友好性和WPF设计非常接近未来用户习惯的富客户端。
项目(当然)也需要访问内部网内的数据库,因此我浏览了互联网以了解如何处理数据访问。我很惊讶地发现你显然 使用网络服务来与数据交互,如this SO post中提到的this tutorial点(使用web服务的许多方法之一)。
已经在Intranet中创建了各种与数据库交互的富客户端,我很惊讶被迫使用Web服务。
的确,我确实了解网络服务的优势;它提供的安全性,以及通常在软件架构中创建良好DAL的所有其他功能。但是,我不明白为什么你不能简单地创建(例如)包含Linq to SQL类的库,并使用这个库作为silverlight项目中的参考来直接访问数据,就像使用经典富客户端应用程序一样。我理解通过这样做,您将访问数据存储在应用程序的连接字符串中,但我不明白为什么它不适用于Silverlight客户端。
更新:
所以,有两个问题:
答案 0 :(得分:10)
但是,我不明白为什么你不能简单地创建(例如)一个包含Linq to SQL类的库,并使用这个库作为silverlight项目中的参考来直接访问数据,就像你可以使用经典丰富的客户申请。
Silverlight与WPF不同,它不使用或无法访问完整的.NET Framework。它在它自己的,受限制的CLR和框架下运行。
在决定要包含哪些内容以及省略什么时,决定所有数据访问组件都不在Silverlight中。这实际上使得无法直接创建如上所述的“使用SQL的库”。
通过使用WebServices(或WCF,这是首选方法),您只需要能够创建和访问Silverlight支持的服务引用。
答案 1 :(得分:0)
Silverlight在客户端工作站上运行,而数据库驻留在某个服务器上。托管数据库的一方的各种安全问题必须使其可以直接访问客户端软件。使用类似Web服务的机制可以使数据库远离客户端软件。
同样,使用Web服务作为数据访问方法意味着Silverlight不需要知道数据库是如何工作的,因此您的数据可以在sql server,oracle,mysql甚至是flat文件中,并且它没有任何区别。银光客户端。这真的是一种聪明的方式。