Silverlight与Web服务器的交互

时间:2009-10-05 15:59:47

标签: .net asp.net silverlight

我之前从未使用过Silverlight,但我需要构建一个相当动态/交互的表单来填写。这使我在两种我没有太多经验的技术之间做出选择:JavaScript / jQuery或Silverlight。 (编辑:应用程序是内部的,我可以放心地假设Silverlight可用)

最后,我需要将一些数据提交回服务器。我知道在ASP.net中使用普通的HTTP表单我可以有一个Button和一个onClick事件 - 标准的东西。 JavaScript方法将包括一些DOM操作来动态添加/删除字段,但是当我点击按钮时,当前的DOM将被提供给我的ASP.net应用程序并且我正常处理。它仍然是一个普通的WebForms应用程序。

但是,如何与Silverlight进行交互?我可以在Silverlight应用程序中使用基本上POST HTTP表单的按钮吗?或者我会使用Web服务吗?如果Silverlight应用程序可以从服务器获取一些数据会很棒,所以我猜它是一个Web服务呢?

9 个答案:

答案 0 :(得分:2)

听起来好像您正在寻求使用Silverlight的Web服务。该框架相对强大且易于实施 - 一旦您深入了解它就可以让您的Web服务快速启动并运行。

http://silverlight.net/getstarted/

虽然你可以让你的Silverlight应用程序发布它周围的HTTP表单,但你需要确保这是你问题的正确实现路径。

答案 1 :(得分:2)

我不知道如何编写任何JQuery,但我知道Silverlight。我想说如果你想要的只是一个表单Silverlight会有点矫枉过正,你可能会用JQuery之类的东西做得更好。

但是,既然您了解C#,那么为了节省时间,最好选择更接近您所知道的东西。如果我要写它,我会选择Silverlight,ADO.Net实体模型和RIA服务。使用Silverlight Dataform可以非常快速地创建一个非常动态的表单,甚至可以通过简单的验证来保持数据的清洁。

对于布拉德艾布拉姆斯来说,

check here发布了这个帖子。

答案 2 :(得分:2)

如果您想通过点击按钮进行表单发布,可以通过Silverlight执行此操作。

在托管Silverlight控件的aspx页面中添加一个div,在我的示例中我称之为formDiv。变量formData是您创建的要发布的表单。

        var doc = HtmlPage.Document;
        var el = doc.GetElementById("formDiv");
        el.SetProperty("innerHTML", formData);
        try
        {
            el.Children[0].Invoke("submit");
        }
        catch (Exception)
        {
            throw new LogicException("Error launching post");
        }

答案 3 :(得分:2)

我建议您尝试使用Silverlight来了解该环境的强大程度。就个人而言,我认为jQuery很不错,但是如果你使用Silverlight,你会获得更加可控和丰富的环境。

  1. 假设您使用的是Visual Studio 2008下载Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1。这将使您能够在Visual Studio中创建Silverlight项目。您也可以使用Expression Blend来编写Silverlight应用程序,但只要您在没有可视化设计器的情况下编写XAML就可以了,从开发人员的角度来看,您可能会发现Visual Studio更加成熟。
  2. 如果您愿意,可以尝试Microsoft .NET RIA Services July 2009 Preview。它是一个非常强大的环境,使您的Silverlight应用程序能够与ASP.NET服务器上的数据模型无缝协作。特别是与LINQ to SQL和ADO.NET实体框架的良好集成。但是,如果您是Silverlight的新手,您可能会发现学习曲线有点陡峭。您必须加载查询操作才能异步执行它们。看看下载位置找到的Word文档,以便开始使用。
  3. 正如其他人所建议您可以在托管Silverlight控件的网页中隐藏HTML表单,然后使用Silverlight中的HtmlPage对象访问浏览器DOM以提交表单。
  4. 如果要在不使用.NET RIA Services或WCF等Web服务框架的情况下从Silverlight内部执行POST操作,则可以使用WebClientHttpWebRequest对象。 Silverlight 3有两个HTTP堆栈,默认是使用浏览器堆栈,确保在您的请求中使用浏览器cookie(例如表单身份验证cookie)。
  5. 您的表单具有复杂的交互逻辑,我强烈建议您查看MVVM模式。在Silverlight中,您可以创建一个包含表单所有相关数据的视图模型。相关数据不仅包括表单中字段的值,还包括有关启用哪些控件的信息,选择信息(如果适用)等等。然后将表单(视图)数据绑定到视图模型并实现{{1在视图模型中,如果不是免费的话,你会获得一个复杂的交互逻辑,至少以一种合理易于作为开发人员处理的方式。在.NET RIA Services中为您生成的部分客户端类是视图模型的特别好的候选者,这使得在该框架中应用MVVM模式变得非常简单。

答案 4 :(得分:1)

是的,你可以在Silverlight应用程序中使用按钮,它将像ASP.net Form一样进入服务器。只有我们可以利用Silverlight的.net框架元素(虽然以有限的方式)。它是相同的模型。

答案 5 :(得分:1)

到目前为止,我无法相信每个人都支持你的Silverlight建议。请改用jquery!您可以创建一个非常动态的表单,并保证您可以通过各种平台访问用户。我是一名Web开发人员,我没有安装Silverlight运行时。我强烈建议使用jQuery!

答案 6 :(得分:1)

Silverlight是一个功能强大的工具,但根据所需的动态级别,阻力最小的路径可能只是创建一个ASP.NET页面并使用jQuery使其更具动态性。

如果你使用jQuery,你将学习Javascript和jQuery库。如果您使用Silverlight,您将学习WPF,WCF以及它们与.NET服务器代码的交互。

如果您已经在ASP.NET中构建了站点,那么使用jQuery路由就是80%。如果你走Silverlight路线,我认为学习曲线会更陡峭。

如果你继续使用Silverlight选项,Tim Heuer有一些communicating from Silverlight to Asp.net web services的例子。

答案 7 :(得分:1)

鉴于您的项目是内部的,并且鉴于您可以确保Silverlight已安装,并且鉴于您的所有选择都可以提供您想要的内容,那么答案似乎是偏好或痒(您个人想要玩的)。 / p>

您没有给出项目截止日期。使用Silverlight,如果你想要一个RIA设计师般的结果,你很可能需要Blend(如果你有权访问就没有提到),那么你将不得不花费一些时间来学习如何使用混合(多少努力取决于你的RIA需要多少)。

我看到它崩溃了:

Webservices:如果你刚刚开始新手,你应该使用RIA或WCF,除非你有充足的理由使用网络服务(比如它已经存在,你别无选择,等等)。

WCF:替换网络服务,但是,您经常需要自己构建大量的管道。

RIA:旨在为Silverlight实施数据服务(预计将来会扩展到包括ASPX)。 RIA Services还没有进入测试阶段。您应该记住,可能会有重大变化,并且在您解决这些变化对您的公司造成过度影响之前,应用程序是否会无法运行?

您在没有说明理由的情况下遗漏了ASPX。这可能是你对动态的看法与许多不同。我不得不怀疑ASPX和AJAX(假设你甚至需要AJAX)不能最好地解决你的问题。

jQuery当然可以完成这项任务,所以球就在你的球场上。你有多少时间,想要学习什么,你真正想要/需要的动态是什么?

解决这一步中的其他一些问题。 Silverlight学习不一定非常陡峭。如果您没有学习动画,那么Blend IDE可能是最耗时的部分。事实上,如果你主要使用VS代码,那么Blend将主要用于布局。对于简单的RIA,您甚至可以跳过Blend(但我不会建议这样做)。

最后,您可能会考虑制定一些规范(行为/设计/数据库),然后询问人们会使用什么。

答案 8 :(得分:1)

简而言之,它通过Silverlight WCF客户端实现使用Web服务,Silverlight提供了一些访问Web服务的方法。

  1. 以下是添加简单Silverlight-Enabled WCF service to your website

  2. 的快速操作方法
  3. comparison to plain ASMX services

  4. “Hot”新内容为.net RIA services,此处为tutorial您还应该查看Brad Abram's blog,他有很多关于它的信息。

    < / LI>

    silverlight.net视频也很棒,有几个例子。