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

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

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

      封裝業務邏輯:從Web 到WP7的快速開發之道

        由于Windows Phone 7的開發技術之一是Silverlight,自然我們會想到,能否將silverlight開發的web程序快速遷移到wp7中,要想實現快速遷移,唯一的辦法是重用。目前大部分網站的開發都是三層架構,顯然UI層面肯定是無法重用的,因為桌面程序和移動應用的UI設計非常不同,能重用的就是業務邏輯層和Model層,這篇文章以一個簡單的在線相片瀏覽器程序為例,演示如何將業務邏輯層進行封裝供Web與WP7使用,以及需要注意的問題。

        一個在線照片瀏覽器的開發主要包括三個部分,第一部分是服務器端提供數據模塊,該模塊將照片的信息(比如Uri,照片說明等)以json或xml的格式返回給客戶端,這部分對于web應用和wp7應用都是一樣的,不需要改動。第二個部分是在客戶端的數據獲取模塊,主要是構建數據請求,異步接收數據,解析數據成客戶端需要的數據模型,這部分是我們封裝的重點。第三部分是將獲取的數據與照片瀏覽控件進行綁定,這部分需要在wp7上開發。

       

      首先我們定義簡單的數據模型,主要就是照片的Uri和說明文字,另外還有一個縮略圖的Uri:

      public class PhotoItem
      {

              public Uri ImageUri
              {
                  set { imageUri = value; }
              }

              public Uri ThumbImageUri { get; set; }

              /// <summary>
              /// Gets BitmapImage from imageUri.
              /// </summary>
              public BitmapImage ImageSource
              {
                  get { return new BitmapImage(imageUri); }
              }

              public string Description
              {
                  get { return description; }
                  set { description = value; }
              }
        }

       

      首先定義一個事件參數,用來傳遞請求下來的數據給客戶端頁面程序:

      public class RequestEventArgs : EventArgs
          {
              private bool _loadCompleted;
              private object _result;

              public object Result { get { return _result; } }
              public bool LoadCompleted { get { return _loadCompleted; } }

              public RequestEventArgs(bool loadCompleted, object result)
              {
                  this._loadCompleted = loadCompleted;
                  this._result = result;
              }
          }

      然后用一個PhotoAlbum類來封裝數據的獲取:

      public class PhotoAlbum
          {
              private List<PhotoItem> _photoes;
              private Uri _serverUri;

       

              public event EventHandler<RequestEventArgs> PhotoAlbumLoaded;

              public void LoadSchedulePhotoes(Uri baseUri)
              {
                  _serverUri = baseUri;

                  //將Http請求封裝在一個幫助類中,網上有很多這樣的封裝類
                  HttpHelper httpRequest = new HttpHelper();
                  httpRequest.CommunicationCompleted += ResponseHandler;
                  httpRequest.CommunicationFailed += RequestFailedHandle;
                  httpRequest.ExecuteGet(baseUri.AbsolutePath + "/Controller/action", false);    //這里指定Controller和action  

              }

              public void ResponseHandler(string json)
              {

                  //將Json轉換成我們需要的數據類型
                  List<PhotoItem> _photoes = JsonConvert.DeserializeObject<List<PhotoItem>>(json);
                  //拿到數據后激發事件
                  PhotoAlbumLoaded(this, new RequestEventArgs(true, _photoes));        

              }
              public void RequestFailedHandle(string json)
              {
                  //做錯誤處理
              }
          }

       

      有了上面的東西,在web和wp7程序上,我們只需要簡單的創建一個PhotoAlbum,然后綁定PhotoAlbumLoaded事件,在事件中將參數中的Result綁定到照片瀏覽控件上,然后調用LoadSchedulePhotoes(Uri baseUri)函數即可。

       

      需要注意的是為什么將baseUri作為參數而不直接封裝在類里面,我們知道在Web的silverlight程序,我們可以通過Browser獲取服務器的Uri,但是在WP7的應用程序,我們沒辦法這樣獲得服務器地址,如果在開發web程序中將服務器Uri封裝在業務邏輯類中,在WP7上就沒辦法直接用了。

      通過這個簡單的例子,主要想說明的是,在用Silverlight開發RIA應用的時候,我們應該盡量將業務邏輯和數據模型封裝成單獨的dll,并且要充分考慮平臺的不同,這樣能達到重用的目的,實現快速的應用遷移。

      posted on 2011-11-10 22:52  技術改變世界  閱讀(677)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 日韩精品人妻av一区二区三区| 欧美色欧美亚洲高清在线观看 | 韩国 日本 亚洲 国产 不卡| 插插射啊爱视频日a级| 午夜国产精品福利一二| 国产福利精品一区二区| 少妇高潮喷水惨叫久久久久电影 | 久草国产视频| 柠檬福利第一导航在线| 国产成人不卡无码免费视频| 精品人妻日韩中文字幕| 一区二区三区鲁丝不卡| 国产永久免费高清在线| 国产免费无遮挡吃奶视频| 熟女精品国产一区二区三区| 宅男久久精品国产亚洲av麻豆| 99精品热在线在线观看视| 一区二区三区综合在线视频 | 免费无码高潮流白浆视频| 久久婷婷五月综合色和啪| 国产精品白浆在线观看免费| 人人入人人爱| 久久精品国产亚洲av电影| 亚洲a∨国产av综合av下载| 久久一日本道色综合久久| 波多结野衣一区二区三区| 欧美喷水抽搐magnet| 峨眉山市| 一卡2卡三卡4卡免费网站| 日韩av一区二区三区不卡| 国内精品伊人久久久久影院对白| 国产日韩av二区三区| 91精品国产麻豆国产自产| 色猫咪av在线网址| 亚洲乱熟女一区二区三区| 2019亚洲午夜无码天堂| 亚洲国产片一区二区三区| 开心婷婷五月激情综合社区 | 宅男噜噜噜66在线观看| 国产一区二区不卡在线视频| 97色伦97色伦国产|