从Silverlight客户端访问SQL数据库(没有web项目)

本文关键字:没有 web 项目 数据库 Silverlight 客户端 访问 SQL | 更新日期: 2023-09-27 18:16:08

我想为我的Silverlight客户端访问远程SQL数据库。我知道有多种方法可以做到这一点(实体框架模型,Linq到SQL),但所有这些都依赖于web项目中的某些东西(或者,至少,我读过的所有教程都是如此)。对我来说不寻常的是没有web项目,这当然阻止了我使用各种程序集。

我所拥有的唯一可能有用的东西是在IIS上运行的WCF服务,它将有更少的限制(我可以将其添加为我的SL项目中的服务参考)。但我甚至不确定这是否是解决这个问题的可行选择。

任何解决方案或建议都会很好。

谢谢。

Edit:谢谢你的建议,伙计们,但这里还有一点:我正在制作一个单独的XAP,它被加载到其他东西中(其他人的项目正在导入和加载XAP文件),所以我无法访问web组件。加载器本身将托管在一个网站(至少,我认为它将是)。

我已经设置了一个WCF服务,它目前托管在IIS中,所以我可以在这里创建一些东西。如何?看来我可以使用SQLMetal.exe生成ORM类,然后将代码导入WCF服务。这将允许服务调用远程数据库,并在c#类中返回数据。也许我会将这些数据类作为ServiceContracts并以这种方式传递数据。这里的问题是什么?说实话,我不太确定这是怎么回事。我的意思是,我从SL应用程序调用WCF服务,它做它的事情。然后,它必须联系SL应用程序(我不知道如何做那部分)并发送数据负载。这将是伟大的,如果有人有这方面的经验,并会提供一些建议。我知道这不是你应该怎么做的,但我已经抽到了最后一根稻草,所以我坚持了下来。

从Silverlight客户端访问SQL数据库(没有web项目)

好的,所以如果我理解正确,你使用Silverlight应用程序(XAP)从网络共享或其他东西本地启动?因为为什么你在使用Silverlight的时候没有一个web项目呢?(是否没有可用的服务器来承载它?)

但是好吧,在这种情况下,你可以从Silverlight访问WCF服务。然而,它也有一些局限性。例如,您只能使用对服务的异步调用,并且只能使用WCF basichttpbinding作为WCF服务的绑定。

见:http://msdn.microsoft.com/en-us/library/cc197959%28v=vs.95%29.aspx

首先,我建议您在这个项目中使用WPF而不是Silverlight。如果你不使用这个作为web客户端,那么WPF是一个更简单/更好的选择。

但如果这是不可能的:

你可以编写一个自托管的WCF服务,并在可访问的地方运行它。自托管将允许WCF连接在不需要IIS的情况下连接。在自托管程序中,您需要:

  1. 前端WCF定义
  2. 后台SQL数据库
  3. 根据客户端需要的智能程度,需要一个BusinessLogic层将数据从WCF转换为SQL。

Silverlight是沙箱的,所以它只能访问自己的Web应用程序。因此,您最好的选择是在您的web应用程序中包含一个WCF或ASMX web服务来处理数据库访问。

如果你不想在Web应用程序上运行沙盒UI,你不能使用Silverlight,而应该使用WebForms或Windows Presentation Foundation (WPF)。