亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        《android 應(yīng)用開發(fā)》實驗課教學(xué)實例的設(shè)計與探討

        2012-12-31 00:00:00雷蘊陶燎亮
        考試周刊 2012年75期


          摘 要: 文章主要討論手機應(yīng)用開發(fā)實驗教學(xué)的案例設(shè)計, 旨在更充分深入地了解iOS開發(fā)和 android 應(yīng)用開發(fā)的不同之處。重視實驗教學(xué)和實踐過程,以學(xué)生為主體,培養(yǎng)其主動性、協(xié)作精神和創(chuàng)新能力,實實在在地提高實驗教學(xué)水平。本文介紹了Protocol Buffer技術(shù),并比較了Protocol Buffer和JSON,討論了兩種數(shù)據(jù)傳輸格式在網(wǎng)絡(luò)數(shù)據(jù)交換中的不同,通過實例說明如何使用Protocol Buffer代替JSON作為iOS應(yīng)用開發(fā)中數(shù)據(jù)傳輸格式。
          關(guān)鍵詞: Protocol Buffer JSON iOS
          隨著蘋果iOS系統(tǒng)為越來越多人所使用,iOS應(yīng)用開發(fā)也成為程序員所必須掌握的開發(fā)技術(shù)之一。在iOS應(yīng)用開發(fā)中,JSON作為網(wǎng)絡(luò)數(shù)據(jù)傳輸格式發(fā)揮了較大的作用,但JSON也有很大的局限性。本文通過比較Protocol Buffer和JSON,證明使用Protocol Buffer代替JSON作為iOS網(wǎng)絡(luò)數(shù)據(jù)傳輸中的數(shù)據(jù)格式的有效性,并以工程應(yīng)用為背景,進行了設(shè)計案例分析。
          一、ProtocolBuffer簡介
          Protocol Buffer是google 的一種數(shù)據(jù)交換的格式,它獨立于語言,獨立于平臺。Google 提供了三種語言的實現(xiàn):java、c++ 和 python,每一種實現(xiàn)都包含了相應(yīng)語言的編譯器及庫文件。與XML和JSON不同,它是一種二進制的格式,可以把它用于分布式應(yīng)用之間的數(shù)據(jù)通信或者異構(gòu)環(huán)境下的數(shù)據(jù)交換。作為一種效率和兼容性都很優(yōu)秀的二進制數(shù)據(jù)傳輸格式,可以用于諸如網(wǎng)絡(luò)傳輸、配置文件、數(shù)據(jù)存儲等諸多領(lǐng)域。
          二、JSON
          JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript的一個子集。JSON建構(gòu)有兩種結(jié)構(gòu):
         ?。ㄒ唬懊Q/值”對的集合,對于不同的語言中,它被理解為對象、記錄、結(jié)構(gòu)、字典、哈希表、有鍵列表或者關(guān)聯(lián)數(shù)組。
         ?。ǘ┲档挠行蛄斜?,可以將其理解為數(shù)組(array)。
          下面是一個JSON 格式的數(shù)據(jù)示例:
          {persons:[
          { "id":"1", "name": "sam", "email": "sam@123.com"},
          { "id":"2", "name":"mike", " email ":"mike@123.com"}
          ]};
          三、iOS應(yīng)用開發(fā)
          iOS是由蘋果公司開發(fā)的手持設(shè)備操作系統(tǒng),使用與iPhone/iPad等蘋果手持設(shè)備。
          iOS應(yīng)用(iOS APP)開發(fā)使用Objective-C作為開發(fā)語言,使用xcode作為主要開發(fā)環(huán)境。iOS應(yīng)用,開發(fā)完成通過審核后在蘋果商店(AppStore)公開發(fā)布。
          四、使用Protocol Buffer的優(yōu)勢
          Protocol Buffers把對象序列化為二進制格式,比JSON方式占用更少的網(wǎng)絡(luò)傳輸字節(jié)數(shù)。
          JSON需要服務(wù)端和客戶端分別自行實現(xiàn)序列化Serializer和反序列化Parser,以實現(xiàn)所需要傳輸對象的編碼和解析。例如當(dāng)前iOS客戶端都會有的大量JSON Parser代碼,也會有很多JSON解析開源的工程。而Protocol Buffer,服務(wù)端和客戶端則使用共同的Message定義文件(.proto)和Protocol Buffer編譯器,編譯出不同語言適用的源代碼文件,從而自動實現(xiàn)了Serializer及Parser,我們可以把代碼加入工程直接使用。就客戶端來講,相比自行實現(xiàn)解析字符串的JSON Parser,Protocol Buffer提供的針對二進制數(shù)據(jù)的Parser在執(zhí)行效率上要高很多,并且不用我們親自編寫實現(xiàn)代碼。
          五、Protocol Buffer使用方法,以C++為例
         ?。ㄒ唬┚帉?proto文件,作為Message聲明,服務(wù)端和客戶端共用。
          例如定義一個Person.proto
          message Person {
          required int32 id = 1;
          required string name = 2;
          optional string email = 3;
          }
         ?。ǘ┦褂肞rotocol Buffers編譯器Protoc,編譯.proto文件,生成java/c++/python代碼文件。
          IOS端可以使用的是C++代碼,以C++為例,命令行輸入:
          Protoc –cpp_out=./ Person.proto。
          在當(dāng)前目錄下生成Person.pb.h以及Person.pb.cc。
         ?。ㄈ┰诠こ汤锛尤肷傻腜erson.h和Person.cc,即可使用以下代碼實現(xiàn)讀寫。
          定義,使用,以及序列化:
          Person person;
          person.set_id(123);
          person.set_name("Bob");
          person.set_email("Bob@example.com");
          fstream out("person.pb", ios::out | ios::binary | ios::trunc);
          person.SerializeToOstream(&out);
          out.close();
          反序列化:
          Person person;
          fstream in("person.pb", ios::in | ios::binary);
          if (!person.ParseFromIstream(∈)) { cerr << "Failed to parse person.pb." << endl; exit(1);}
          六、Protocol Buffer在iOS開發(fā)中的應(yīng)用
          由于iOS開發(fā)主要使用Objective-C作為開發(fā)語言,需要與C++代碼做一些橋接工作,處理為HTTP request和response中適用的Objective-C的類NSData。
          序列化:
          - (NSData *)serializeToNSData:(Person *)person {
          std::string ps = person->SerializeAsString();
          return [NSData dataWithBytes:ps.c_str() length:ps.size()];
          }
          反序列化:
          - (Person *)parseFromNSData:(NSData *)data {
          char raw[[data length]];
          Person *p = new Person;
          [data getBytes:raw length:[data length]];
          p->ParseFromArray(raw, [data length]);
          return p;
          }
          七、結(jié)語
          隨著計算機技術(shù)的發(fā)展,近年來智能手機成為嵌入式系統(tǒng)中非?;钴S的領(lǐng)域,3G更是刺激了移動互聯(lián)網(wǎng)發(fā)展。Android 作為Google開發(fā)的開源手機操作系統(tǒng),具有良好的開放性,且發(fā)展?jié)摿θ找鏀U大。相比較iOS,有其獨有的發(fā)展優(yōu)勢。本文主要討論區(qū)別于Android應(yīng)用開發(fā)的iOS平臺。每個開發(fā)者,無論是開發(fā)iOS等移動操作系統(tǒng)的應(yīng)用,標準桌面應(yīng)用程序或Web應(yīng)用程序,都都越來越注意到了Protocol Buffer的簡單和便捷,將在各個方面得到更廣泛的應(yīng)用,為用戶提供更為友好、更為有效的體驗。本文旨在為學(xué)生設(shè)計一個基于ios的移動應(yīng)用的開發(fā)教學(xué)案例,培養(yǎng)學(xué)生更了解和掌握移動應(yīng)用開發(fā)的技術(shù)和能力。
          參考文獻:
          [1]Danny Goodman.iOS 4 SDK入門:給JavaScript程序員[M].東南大學(xué)出版社,2011.05.
          [2]胡雯.利用JSON實現(xiàn)Ajax中數(shù)據(jù)傳遞[J].科技信息,2009(15).
          [3]姜宇.JSON在電子政務(wù)信息系統(tǒng)數(shù)據(jù)交換中的研究與應(yīng)用[J].科技創(chuàng)新導(dǎo)報,2012(15).
          [4]王魁生,王曉波.利用JSON進行網(wǎng)站客戶端與服務(wù)器數(shù)據(jù)交互[J].軟件導(dǎo)刊,2010(3).
          項目號:201004Q
          項目名稱:浙江省實驗教學(xué)示范中心

        国产精品 亚洲 无码 在线| 一区二区三区日本高清| 性夜影院爽黄a爽在线看香蕉| 真实夫妻露脸自拍视频在线播放| 国产精品美女久久久久浪潮AVⅤ| 午夜丰满少妇性开放视频| 亚洲第一网站免费视频| 国产美女被遭强高潮露开双腿 | 国产农村乱辈无码| 无码国产精成人午夜视频一区二区| 久天啪天天久久99久孕妇| 欧美尺寸又黑又粗又长| 成午夜福利人试看120秒| 亚洲av黄片一区二区| 国产亚洲日韩一区二区三区| 久久国产加勒比精品无码| 日本刺激视频一区二区| 国产精品综合久久久久久久免费 | 少妇人妻在线无码天堂视频网| 我想看久久久一级黄片| 无码毛片高潮一级一免费| 国产三级精品三级在线观看 | 在线a人片免费观看国产| 亚洲午夜福利在线视频| 精品久久久久88久久久| 未满十八勿入av网免费| 一区二区三区中文字幕脱狱者| 国产精品高清视亚洲乱码有限公司| 免费国产黄网站在线观看可以下载 | 久久婷婷国产综合精品| 亚洲欧洲美洲无码精品va | 免费日本一区二区三区视频| 加勒比无码专区中文字幕| 男人的天堂中文字幕熟女人妻| 国产偷国产偷高清精品| 欧美日韩精品一区二区视频| 日韩女同一区二区三区久久| 在线国产视频精品视频| 中文字幕人妻丝袜美腿乱| 五月综合缴情婷婷六月| 中文字幕+乱码+中文字幕无忧|