成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用PyAmf來實現(xiàn)Flex與Django的通信

開發(fā) 后端
本文向大家介紹一下如何使用PyAmf來實現(xiàn)Flex與Django的通信,PyAmf本質(zhì)上跟AmfPHP是雷同的。都是通過對AMF協(xié)議協(xié)議的支持來實現(xiàn)對Flash的交互過程。

在學(xué)習(xí)Flex的過程中,你可能會遇到使用PyAmf來實現(xiàn)Flex與Django的通信方面的問題,這里和大家分享一下,相信本文介紹一定會讓你有所收獲。

使用PyAmf來實現(xiàn)Flex與Django的通信

三年前,用過AmfPHP與Flash/Flex Remoting做過交互,最近接觸Python,公司項目用的Flex做前端,所以接觸了PyAmf。PyAmf本質(zhì)上跟AmfPHP是雷同的。都是通過對AMF協(xié)議(ActionScriptMessageFormat)協(xié)議的支持來實現(xiàn)對Flash的交互過程。

一、首先,簡單的介紹一下AMF協(xié)議格式。

AMF是Adobe獨家開發(fā)出來的通信協(xié)議,它采用二進(jìn)制壓縮,序列化、反序列化、傳輸數(shù)據(jù),從而為Flash播放器與Flash
Remoting網(wǎng)關(guān)通信提供了一種輕量級的、高效能的通信方式。AMF最大的特色在于可直接將Flash內(nèi)置對象,例如Object,Array,
Date,XML,傳回服務(wù)器端,并且在服務(wù)器端自動進(jìn)行解析成適當(dāng)?shù)膶ο螅@就減輕了開發(fā)人員繁復(fù)工作,同時也更省了開發(fā)時間。它采用二進(jìn)制編碼,可以高度壓縮數(shù)
據(jù),因此非常適合用來傳遞大量的資料。數(shù)據(jù)量越大,F(xiàn)lashRemoting的傳輸效能就越高,遠(yuǎn)遠(yuǎn)超過Web
Service以及使用純文本的傳輸方式的XML。

AMF協(xié)議是基于Http協(xié)議的,它的處理過程大致如下:
1、從客戶端獲取Http請求(Request)流。
2、對流進(jìn)行反序列化(Deserialize),得到服務(wù)器端程序能夠識別的數(shù)據(jù),并建立響應(yīng)(Response)消息。
3、找到相應(yīng)的遠(yuǎn)程服務(wù)
4、調(diào)用服務(wù)器端方法,對流進(jìn)行各種處理得到返回值。
5、序列化響應(yīng)流
6、將序列化響應(yīng)流發(fā)送Http響應(yīng)給客戶端。

二、安裝配置PyAmf和Django

PyAmf目前的穩(wěn)定版本是0.3,去官方網(wǎng)站下載壓縮包,解壓文件,執(zhí)行pythonsetup.pyinstall即可完成安裝。
至于Django的安裝配置,我前面的文章已經(jīng)講過了,詳細(xì)請參閱http://www.kokkowon.cn/archives/33。

下面我們來開發(fā)具體的實際應(yīng)用。首先簡單介紹下pyAMF.django的處理機(jī)制。
Pyamf通過pyamf.remoting.gateway.django模塊來實現(xiàn)與django
Request、Response相對應(yīng)處理機(jī)制。其中pyamf.remoting.gateway.django.DjangoGateway類是整
個處理流程的主干。我們僅僅需要在django中建立一個DjangoGateway的實例,這個實例通過urlmap對應(yīng)到響應(yīng)的處理函數(shù),將把從底層
傳遞過來的Request解碼,并映射到響應(yīng)的Python對象,然后執(zhí)行注冊的RPC方法,返回一個Response,然后采用AMF協(xié)議格式將
Response編碼,返回給django,django通過它本身的相關(guān)機(jī)制,將這個Response以http響應(yīng)的方式返回給客戶端。

1)創(chuàng)建DjangoGateway

首先創(chuàng)建Django項目,然后創(chuàng)建一個應(yīng)用程序,我這里還叫做app應(yīng)用,
django-admin.pystartprojectfortest
pythonmanage.pystartappapp
我前面的文章已經(jīng)講過了,詳細(xì)請參閱http://www.kokkowon.cn/archives/33。

定義數(shù)據(jù)庫模型:
app/models.py用于定義我們的數(shù)據(jù)庫模型,將其修改如下:

"""
數(shù)據(jù)庫模型

  1. @see:U{Djangohomepage(external)<http://djangoproject.com>}  
  2. @author:U{kokkowon<kokko313@gmail.com>}  
  3. @since:0.1.0  
  4. """  
  5. fromdjango.dbimportmodels  
  6. importdatetime  
  7.  
  8. #MysqlText類型  
  9. classMysqlTextField(models.Field):  
  10. defdb_type(self):  
  11. return'text'  
  12.  
  13. classFavorite:  
  14. TYPE_CHOICES=(  
  15. ('url','網(wǎng)址'),  
  16. ('music','音頻'),  
  17. ('video','視頻'),  
  18. )  
  19. type=models.CharField('類型',max_length=30,db_index=True,choices=TYPE_CHOICES)  
  20. title=models.CharField('標(biāo)題',max_length=250)  
  21. body=models.CharField('內(nèi)容',default='',max_length=255)  
  22. general=MysqlTextField('描述',default='',blank=True)  
  23. created=models.DateTimeField('添加時間',default=datetime.datetime.now,blank=True)  
  24.  
  25. def__unicode__(self):  
  26. returnself.title  
  27.  
  28. classUserFavorite(Favorite,models.Model):  
  29. user_id=models.CharField('用戶ID',max_length=250,db_index=True)  
  30. type=Favorite.type  
  31. title=Favorite.title  
  32. body=Favorite.body  
  33. general=Favorite.general  
  34. created=Favorite.created  
  35.  
  36. classMeta:  
  37. db_table='user_favorites' 
  38. verbose_name='用戶收藏夾' 
  39. verbose_name_plural='用戶收藏夾列表' 
  40.  

以上定義了一個叫做user_favorites的表。關(guān)于Django里面model的定義說明請查看這里:http://docs.djangoproject.com/en/dev/

2)測試PyAmf
在fortest目錄下,新建c.py

  1. frompyamf.remoting.clientimportRemotingService  
  2. importsys  
  3.  
  4. gateway=RemotingService('http://localhost:8000/app/gateway/')  
  5. adduserfavorite_service=gateway.getService('adduserfavorite')  
  6. edituserfavorite_service=gateway.getService('edituserfavorite')  
  7. userfavorite_service=gateway.getService('userfavorite')  
  8.  
  9. """  
  10. #添加用戶收藏  
  11. """  
  12. rs=adduserfavorite_service('kokko','網(wǎng)址','163','http://www.163.com')  
  13. printrs['id']  
  14. print"----------------------------"  
  15. #編輯用戶收藏  
  16. rs=edituserfavorite_service(2,'wwq','視頻','sohu','http://www.sohu.com')  
  17. printrs  
  18. print"----------------------------"  
  19. #用戶收藏列表  
  20. rs=userfavorite_service('user_id','kokko')  
  21. for_iteminrs:  
  22. print_item.title+''+_item.type+''+_item.user_id+''+_item.body  
  23. print"----------------------------"  
  24. sys.exit(0)  
  25.  

運行服務(wù)器:manage.pyrunserver
運行測試程序:pythonc.py將顯示響應(yīng)結(jié)果,如下圖示例:

 


證明測試完全通過,F(xiàn)lex端可以使用相關(guān)接口和服務(wù)器進(jìn)行通訊了。由于時間關(guān)系,我這里不再給出Flash端的實例,等有時間再行補(bǔ)上。

【編輯推薦】

  1. Flex4beta的Spark布局特性解析
  2. FlexBuilder4十大新特性閃亮登場
  3. Flex module用法指南
  4. Flex4Beta引入新元素功能更強(qiáng)大
  5. FlexBuilder開發(fā)方法及特點解析 

 

責(zé)任編輯:佚名 來源: ej38.com
相關(guān)推薦

2010-07-27 15:36:15

Flex swf

2017-12-19 15:24:21

DjangoPythonOracle

2010-08-06 16:07:55

Flex通信

2010-08-06 15:35:06

Flex服務(wù)器

2010-08-10 13:28:21

Flex代碼格式化

2010-08-11 13:28:46

Flex行為

2017-12-07 14:40:05

前端FlexCSS

2011-03-16 09:05:29

iptablesNAT

2010-07-29 14:27:52

FlexWeb

2010-08-06 09:24:44

FlexFlash

2010-08-12 13:34:13

Flex驗證組件

2021-11-16 10:45:35

WebSocketWebShellLinux

2019-12-26 09:28:34

TCPPython通信

2010-08-05 13:14:16

Flex布局

2010-08-09 15:52:28

2010-08-13 10:01:46

Flex樣式定義

2023-11-17 09:35:58

2010-08-05 09:54:56

Flex特效

2010-08-06 16:15:57

Flex通信

2009-06-26 10:37:32

樹的匯總
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产高清视频 | 欧洲成人免费视频 | 国产午夜精品一区二区三区嫩草 | 国产精品日本一区二区在线播放 | 欧美乱操| 欧美亚洲视频在线观看 | 日韩中文欧美 | 一区二区在线不卡 | 中文在线播放 | 精品国产精品国产偷麻豆 | 精品国产一区二区三区久久影院 | 日本三级做a全过程在线观看 | 在线日韩中文字幕 | 日本黄色片免费在线观看 | 99国产精品99久久久久久粉嫩 | 中文字幕二区 | 亚洲精品一区二区在线 | 成人免费视频网站在线看 | 久久国产免费 | 色视频网站在线观看 | 日韩影院一区 | 97超级碰碰 | 中文字幕亚洲一区 | 成人精品一区二区三区四区 | 电影午夜精品一区二区三区 | 亚洲精品欧美 | 久久一及片 | 国产日韩一区二区三免费高清 | 日韩视频高清 | 波霸ol一区二区 | 亚洲欧美日韩精品久久亚洲区 | 国产视频一区二区在线观看 | 欧美不卡视频 | 做a视频 | 久久久久久91香蕉国产 | 亚洲一区二区成人 | 午夜影院操 | 成人精品免费 | 日韩毛片免费看 | 日本午夜精品 | 欧美激情综合 |