如何从WCF服务中调用Silverlight方法

本文关键字:调用 Silverlight 方法 服务 WCF | 更新日期: 2023-09-27 18:10:32

我是Silverlight和WCF的新手。我创建了一个简单的Silverlight应用程序,在等待一秒钟后,我将显示带有列表对象集合数据的警报消息框。

我已经使用WCF连接到数据库。但我首先在集合列表中添加所有数据库数据,然后将列表对象发送给silverlight, silverlight正在迭代。

在List集合中插入数据时连接到数据库的WCF服务代码:

public List<int> GetData()
        {
            List<int> list = new List<int>();
            using (SqlConnection connection = new SqlConnection())
            {
                connection.ConnectionString =
                    System.Configuration.ConfigurationManager.ConnectionStrings["sqlConnection"].ToString();
                using (SqlCommand command = connection.CreateCommand())
                {
                    command.CommandType = CommandType.Text;
                    command.CommandText = "Select * from insertItem";
                    connection.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            list.Add(reader.GetInt32(1));
                        }
                    }
                }
            }
            return list;
        }

Silverlight代码从WCF服务访问列表类,并在等待一秒钟后在消息框中显示它:

Service1Client client = new Service1Client();
           client.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(DisplayResults);
           client.GetDataAsync(1);
 private void DisplayResults(object sender, GetDataCompletedEventArgs e)
        {
            timer.Stop();
            ObservableCollection<int> list = e.Result;
            foreach (int i in list)
            {
                HtmlPage.Window.Alert(i.ToString());
                Thread.Sleep(1000);
            }
        }

谁能告诉我如何从WCF服务直接显示数据到silverlight,而无需等待首先将所有数据放在列表类集合中,然后显示它?还有什么更好的办法吗?

如何从WCF服务中调用Silverlight方法

我不确定你是否在问你所做的是否是最佳实践。是的,您需要首先从数据库中收集数据,以便能够通过web服务将其发送给调用者。你做到了,这很好。也许你可以使用一些映射器,但由于这部分工作,你应该没问题。为什么要改变它?有什么问题吗?它慢吗?一定是有什么不同,也许是你试图发送的数据太多了?尝试添加一些约束,只检索前15个条目,并在用户浏览结果时继续请求更多条目。

如果你担心向列表中添加内容需要很长时间,不要担心,这可能不是问题,而是请求的数据大小。

要显示数据,只需添加一个功能控件并将数据源设置为列表。完成了!

这里是一个演练,这里是一篇文章,涵盖了你的silverlight导师no . 1, ScottGu自己的主题。应该可以帮助你入门。

如果你真的想改变你访问数据的方式,你不妨看看Silverlight的RIA服务,尽管它被认为是一种高级技术。

如果这对你没有帮助,你可能需要完善你的问题。那么,你认为你目前的设计需要改变什么呢?什么事情没有达到预期的效果?

编辑:在你回答了我的评论之后,我认为你可以通过实现双工服务来实现你想要做的事情。

本节介绍如何创建可与Silverlight客户端通信的双工WCF (Windows Communication Foundation)服务。双工服务维护一个到Silverlight客户端的回调通道,该通道允许服务调用客户端。双工服务有许多应用程序,例如,用于即时消息传递的聊天服务器或向客户端发送通知的监视服务。此示例提供了一个服务,该服务允许客户按名称订购指定数量的产品。它模拟处理订单,然后用订单状态回调客户端。