<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一步一步學(xué)Silverlight 2系列(14):數(shù)據(jù)與通信之WCF

      概述

      Silverlight 2 Beta 1版本發(fā)布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, Ironpython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學(xué)Silverlight 2系列》文章將從Silverlight 2基礎(chǔ)知識、數(shù)據(jù)與通信、自定義控件、動畫、圖形圖像等幾個方面帶您快速進(jìn)入Silverlight 2開發(fā)。

      本文將簡單介紹在Silverlight 2中如何與WCF進(jìn)行通信。

      簡單示例

      在本示例中,我們將通過WCF來獲取一個最新隨筆的列表,在Silverlight中顯示出來,最終完后效果如下所示。

      TerryLee_Silverlight2_0065

      先定義一個數(shù)據(jù)契約:

      [DataContract]
      public class Post
      {
          public Post(int id,string title,string author)
          {
              this.Id = id;
              this.Title = title;
              this.Author = author;
          }
      
          [DataMember]
          public int Id { get; set; }
      
          [DataMember]
          public string Title { get; set; }
      
          [DataMember]
          public string Author { get; set; }
      }

      在Web項目中添加一個WCF Service文件,命名為Blog.svc

      TerryLee_Silverlight2_0063

      定義服務(wù)契約:

      [ServiceContract]
      public interface IBlog
      {
          [OperationContract]
          Post[] GetPosts();
      }

      實現(xiàn)服務(wù),這里可以是從數(shù)據(jù)庫或者其他數(shù)據(jù)源讀取,為了演示方便,我們直接初始化一個集合:

      public class Blog : IBlog
      {
          public Post[] GetPosts()
          {
              List<Post> posts = new List<Post>()
              {
                  new Post(1,"一步一步學(xué)Silverlight 2系列(13):數(shù)據(jù)與通信之WebRequest","TerryLee"),
                  new Post(2,"一步一步學(xué)Silverlight 2系列(12):數(shù)據(jù)與通信之WebClient","TerryLee"),
                  new Post(3,"一步一步學(xué)Silverlight 2系列(11):數(shù)據(jù)綁定","TerryLee"),
                  new Post(4,"一步一步學(xué)Silverlight 2系列(10):使用用戶控件","TerryLee"),
                  new Post(5,"一步一步學(xué)Silverlight 2系列(9):使用控件模板","TerryLee"),
                  new Post(6,"一步一步學(xué)Silverlight 2系列(8):使用樣式封裝控件觀感","TerryLee")
              };
      
              return posts.ToArray();
          }
      }

      修改Web.config中的服務(wù)配置,這里使用basicHttpBinding綁定,并且開啟httpGetEnabled,以便后面我們可以在瀏覽器中查看服務(wù):

      <system.serviceModel>
          <behaviors>
              <serviceBehaviors>
                  <behavior name="TerryLee.SilverlightDemo27Web.BlogBehavior">
                      <serviceMetadata httpGetEnabled="true" />
                      <serviceDebug includeExceptionDetailInFaults="false" />
                  </behavior>
              </serviceBehaviors>
          </behaviors>
          <services>
              <service behaviorConfiguration="TerryLee.SilverlightDemo27Web.BlogBehavior"
                  name="TerryLee.SilverlightDemo27Web.Blog">
                  <endpoint address="" binding="basicHttpBinding" contract="TerryLee.SilverlightDemo27Web.IBlog">
                  </endpoint>
              </service>
          </services>
      </system.serviceModel>

      設(shè)置一下Web應(yīng)用程序的端口號為固定端口52424,在瀏覽器中輸入http://localhost:52424/Blog.svc,看看服務(wù)是否正常:

      TerryLee_Silverlight2_0064

      好了,現(xiàn)在服務(wù)端我們就實現(xiàn)完成了。現(xiàn)在編寫界面展示部分,XAML如下:

      <Grid Background="#46461F">
          <Grid.RowDefinitions>
              <RowDefinition Height="40"></RowDefinition>
              <RowDefinition Height="*"></RowDefinition>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
              <ColumnDefinition></ColumnDefinition>
          </Grid.ColumnDefinitions>
          <Border Grid.Row="0" Grid.Column="0" CornerRadius="15"
                  Width="240" Height="36" Background="Orange"
                  Margin="20 0 0 0" HorizontalAlignment="Left">
              <TextBlock Text="最新隨筆" Foreground="White"
                         HorizontalAlignment="Left" VerticalAlignment="Center"
                         Margin="20 0 0 0"></TextBlock>
          </Border>
          <ListBox x:Name="Posts" Grid.Row="1" Margin="40 10 10 10">
              <ListBox.ItemTemplate>
                  <DataTemplate>
                      <StackPanel Orientation="Horizontal">
                          <TextBlock Text="{Binding Id}" Height="40" Foreground="Red"></TextBlock>
                          <TextBlock Text="{Binding Title}" Height="40"></TextBlock>
                          <TextBlock Text="{Binding Author}" Height="40" Foreground="Orange"></TextBlock>
                      </StackPanel>
                  </DataTemplate>
              </ListBox.ItemTemplate>
          </ListBox>
      </Grid>

      在Silverlight項目中添加服務(wù)引用,輸入地址http://localhost:52424/Blog.svc,輸入命名空間BlogService。

      TerryLee_Silverlight2_0066

      添加完成后,我們可以在對象瀏覽器中瀏覽一下生成的客戶端對象:

      TerryLee_Silverlight2_0067

      當(dāng)然大家也可以手工去編寫客戶端的代碼,請參考WCF的相關(guān)內(nèi)容,這里不再贅述。下面編寫調(diào)用服務(wù)并獲取數(shù)據(jù),這里仍然是采用異步模式,由于在WCF服務(wù)的配置中我們采取了BasicHttpBinding,客戶端也要采用BasicHttpBinding。我們需要注冊GetPostsCompleted事件處理方法,以便完成后回調(diào),同時調(diào)用GetPostsAsync()方法獲取數(shù)據(jù)。完整的代碼如下所示:

      public partial class Page : UserControl
      {
          public Page()
          {
              InitializeComponent();
          }
      
          private void UserControl_Loaded(object sender, RoutedEventArgs e)
          {
              Binding binding = new BasicHttpBinding();
              EndpointAddress endPoint = new EndpointAddress(
                      "http://localhost:52424/Blog.svc");
      
              BlogClient client = new BlogClient(binding, endPoint);
              client.GetPostsCompleted += new EventHandler<GetPostsCompletedEventArgs>(client_GetPostsCompleted);
              client.GetPostsAsync();
          }
      
          void client_GetPostsCompleted(object sender, GetPostsCompletedEventArgs e)
          {
              if (e.Error == null)
              {
                  Posts.ItemsSource = e.Result;
              }
          }
      }

      至此,一個完整的在Silverlight 2中調(diào)用WCF的示例就完成了,運行后效果如下:

      TerryLee_Silverlight2_0065 

      結(jié)束語

      本文簡單演示了在Silverlight 2中如何與WCF進(jìn)行通信,你可以從這里下載示例代碼。

      下一篇:一步一步學(xué)Silverlight 2系列(15):數(shù)據(jù)與通信之ASMX

      posted @ 2008-03-09 21:41  TerryLee  閱讀(34075)  評論(85)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品久综合蜜| 国产在线98福利播放视频| 国产精品自拍实拍在线看| 国产毛片基地| 亚洲av久久精品狠狠爱av| 亚洲精品乱码免费精品乱| 亚洲熟女乱色综合一区| 拉萨市| 国产成人一区二区免av| 一本色道久久综合熟妇人妻| 91密桃精品国产91久久| 国产精品亚洲二区在线播放| 97亚洲熟妇自偷自拍另类图片| 亚洲VA中文字幕无码久久不卡| 桓台县| √新版天堂资源在线资源 | 无码福利一区二区三区| 国产一区二区三区色噜噜| 亚洲国产成人久久精品不卡| 国产精品欧美一区二区三区不卡| 欧美日韩精品一区二区三区高清视频 | 久久九九久精品国产免费直播| 亚洲欧洲一区二区综合精品| 久久久久久亚洲精品a片成人| 亚洲精品成人老司机影视| 国产午夜福利视频合集| 性xxxx欧美老妇胖老太性多毛| 中年国产丰满熟女乱子正在播放| 久久精品国产福利亚洲av| 日本a在线播放| 亚洲国产欧美在线人成| 亚洲区一区二区三区精品| av无码精品一区二区乱子| 精品熟女少妇免费久久| 日韩av毛片福利国产福利| 国产精品久久久国产盗摄| 国产a在视频线精品视频下载| 国产精品污一区二区三区| 免费激情网址| 国产精品美女一区二区三| 亚洲中文字幕综合小综合|