2009年11月6日

          1.在ActionScript 中調(diào)用JavaScript

          Js 如下:
          1<script language="javaScript">
          2    function printBookInfo(title,price){
          3       alert("Book Title:"+title+ " is price at:"+price;
          4    }

          5
          6
          7</script>

          As如下:

           1if(ExternalInterface.available){
           2   var title:String = "Actionscript";
           3   var price:uint = 300;
           4   var result:String = ExternalInterface.call("printBookInfo",title,price);
           5   Alert.show(result);
           6
           7}
          else{
           8
           9    Alert.show("External interface is not vaailable")
          10}



          2,JavaScript 調(diào)用 ActionScript

          ActionScript中注冊(cè)調(diào)用方法

          ExternalInterface.addCallback("myFunction",sayHello);


          private sayHello(name:String):String
          {

            
          return "Helloo from AS,"+name;
          }


          JS:

           

          function thisMovie(movieName) {
          if (navigator.appName.indexOf("Microsoft"!= -1{
             
          return window[movieName]
          }
          else{
             
          return document[movieName]
          }

          }


           

          function callExternal() {
          thisMovie(
          "swfId").showAlert()
          }


           

          <script type="text/javascript">
               
          var f4=new SWFObject('test.swf', "swfId""400""300""8""#000",true);
               
          //new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);
               f4.addParam('allowScriptAccess','sameDomain');
               f4.addParam('wmode','transparent');
               f4.skipDetect
          ="false";
               f4.addParam('bgcolor','#c5d1f0');
               f4.write(
          "flvPlayerDivId");
              
          </script> 




















           

          posted @ 2010-11-24 18:47 shoppingbill 閱讀(221) | 評(píng)論 (0)編輯 收藏

          SOA的基礎(chǔ)技術(shù)實(shí)現(xiàn)方式中WebService占據(jù)了很重要的地位,通常我們提到WebService第一想法就是SOAP消息在各種傳輸協(xié)議上交互。近幾年REST的思想伴隨著SOA逐漸被大家接受,同時(shí)各大網(wǎng)站不斷開放API提供給開發(fā)者,也激起了REST風(fēng)格WebService的熱潮。

          SOAP

                 什么是SOAP,我想不用多說(shuō),google一把滿眼都是。其實(shí)SOAP最早是針對(duì)RPC的一種解決方案,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議,很輕量,同時(shí)作為應(yīng)用協(xié)議可以基于多種傳輸協(xié)議來(lái)傳遞消息(Http,SMTP等)。但是隨著SOAP作為WebService的廣泛應(yīng)用,不斷地增加附加的內(nèi)容,使得現(xiàn)在開發(fā)人員覺(jué)得SOAP很重,使用門檻很高。在SOAP后續(xù)的發(fā)展過(guò)程中,WS-*一系列協(xié)議的制定,增加了SOAP的成熟度,也給SOAP增加了負(fù)擔(dān)。

          REST

                 REST其實(shí)并不是什么協(xié)議也不是什么標(biāo)準(zhǔn),而是將Http協(xié)議的設(shè)計(jì)初衷作了詮釋,在Http協(xié)議被廣泛利用的今天,越來(lái)越多的是將其作為傳輸協(xié)議,而非原先設(shè)計(jì)者所考慮的應(yīng)用協(xié)議。SOAP類型的WebService就是最好的例子,SOAP消息完全就是將Http協(xié)議作為消息承載,以至于對(duì)于Http協(xié)議中的各種參數(shù)(例如編碼,錯(cuò)誤碼等)都置之不顧。其實(shí),最輕量級(jí)的應(yīng)用協(xié)議就是Http協(xié)議。Http協(xié)議所抽象的get,post,put,delete就好比數(shù)據(jù)庫(kù)中最基本的增刪改查,而互聯(lián)網(wǎng)上的各種資源就好比數(shù)據(jù)庫(kù)中的記錄(可能這么比喻不是很好),對(duì)于各種資源的操作最后總是能抽象成為這四種基本操作,在定義了定位資源的規(guī)則以后,對(duì)于資源的操作通過(guò)標(biāo)準(zhǔn)的Http協(xié)議就可以實(shí)現(xiàn),開發(fā)者也會(huì)受益于這種輕量級(jí)的協(xié)議。

              REST的思想歸結(jié)以下有如下幾個(gè)關(guān)鍵點(diǎn):

          1.面向資源的接口設(shè)計(jì)

          所有的接口設(shè)計(jì)都是針對(duì)資源來(lái)設(shè)計(jì)的,也就很類似于我們的面向?qū)ο蠛兔嫦蜻^(guò)程的設(shè)計(jì)區(qū)別,只不過(guò)現(xiàn)在將網(wǎng)絡(luò)上的操作實(shí)體都作為資源來(lái)看待,同時(shí)URI的設(shè)計(jì)也是體現(xiàn)了對(duì)于資源的定位設(shè)計(jì)。后面會(huì)提到有一些網(wǎng)站的API設(shè)計(jì)說(shuō)是REST設(shè)計(jì),其實(shí)是RPC-REST的混合體,并非是REST的思想。

                 2.抽象操作為基礎(chǔ)的CRUD

                 這點(diǎn)很簡(jiǎn)單,Http中的get,put,post,delete分別對(duì)應(yīng)了read,update,create,delete四種操作,如果僅僅是作為對(duì)于資源的操作,抽象成為這四種已經(jīng)足夠了,但是對(duì)于現(xiàn)在的一些復(fù)雜的業(yè)務(wù)服務(wù)接口設(shè)計(jì),可能這樣的抽象未必能夠滿足。其實(shí)這也在后面的幾個(gè)網(wǎng)站的API設(shè)計(jì)中暴露了這樣的問(wèn)題,如果要完全按照REST的思想來(lái)設(shè)計(jì),那么適用的環(huán)境將會(huì)有限制,而非放之四海皆準(zhǔn)的。      

                 3Http是應(yīng)用協(xié)議而非傳輸協(xié)議

                 這點(diǎn)在后面各大網(wǎng)站的API分析中有很明顯的體現(xiàn),其實(shí)有些網(wǎng)站已經(jīng)走到了SOAP的老路上,說(shuō)是REST的理念設(shè)計(jì),其實(shí)是作了一套私有的SOAP協(xié)議,因此稱之為REST風(fēng)格的自定義SOAP協(xié)議。

          4.無(wú)狀態(tài),自包含

          這點(diǎn)其實(shí)不僅僅是對(duì)于REST來(lái)說(shuō)的,作為接口設(shè)計(jì)都需要能夠做到這點(diǎn),也是作為可擴(kuò)展和高效性的最基本的保證,就算是使用SOAPWebService也是一樣。

          REST vs SOAP

          成熟度:

          SOAP雖然發(fā)展到現(xiàn)在已經(jīng)脫離了初衷,但是對(duì)于異構(gòu)環(huán)境服務(wù)發(fā)布和調(diào)用,以及廠商的支持都已經(jīng)達(dá)到了較為成熟的情況。不同平臺(tái),開發(fā)語(yǔ)言之間通過(guò)SOAP來(lái)交互的web service都能夠較好的互通(在部分復(fù)雜和特殊的參數(shù)和返回對(duì)象解析上,協(xié)議沒(méi)有作很細(xì)致的規(guī)定,導(dǎo)致還是需要作部分修正)

          REST國(guó)外很多大網(wǎng)站都發(fā)布了自己的開發(fā)API,很多都提供了SOAPREST兩種Web Service,根據(jù)調(diào)查部分網(wǎng)站的REST風(fēng)格的使用情況要高于SOAP。但是由于REST只是一種基于Http協(xié)議實(shí)現(xiàn)資源操作的思想,因此各個(gè)網(wǎng)站的REST實(shí)現(xiàn)都自有一套,在后面會(huì)講訴各個(gè)大網(wǎng)站的REST API的風(fēng)格。也正是因?yàn)檫@種各自實(shí)現(xiàn)的情況,在性能和可用性上會(huì)大大高于SOAP發(fā)布的web service,但統(tǒng)一通用方面遠(yuǎn)遠(yuǎn)不及SOAP。由于這些大網(wǎng)站的SP往往專注于此網(wǎng)站的API開發(fā),因此通用性要求不高。

          由于沒(méi)有類似于SOAP的權(quán)威性協(xié)議作為規(guī)范,REST實(shí)現(xiàn)的各種協(xié)議僅僅只能算是私有協(xié)議,當(dāng)然需要遵循REST的思想,但是這樣細(xì)節(jié)方面有太多沒(méi)有約束的地方。REST日后的發(fā)展所走向規(guī)范也會(huì)直接影響到這部分的設(shè)計(jì)是否能夠有很好的生命力。

          總的來(lái)說(shuō)SOAP在成熟度上優(yōu)于REST

          效率和易用性:

                 SOAP協(xié)議對(duì)于消息體和消息頭都有定義,同時(shí)消息頭的可擴(kuò)展性為各種互聯(lián)網(wǎng)的標(biāo)準(zhǔn)提供了擴(kuò)展的基礎(chǔ),WS-*系列就是較為成功的規(guī)范。但是也由于SOAP由于各種需求不斷擴(kuò)充其本身協(xié)議的內(nèi)容,導(dǎo)致在SOAP處理方面的性能有所下降。同時(shí)在易用性方面以及學(xué)習(xí)成本上也有所增加。

                 REST被人們的重視,其實(shí)很大一方面也是因?yàn)槠涓咝б约昂?jiǎn)潔易用的特性。這種高效一方面源于其面向資源接口設(shè)計(jì)以及操作抽象簡(jiǎn)化了開發(fā)者的不良設(shè)計(jì),同時(shí)也最大限度的利用了Http最初的應(yīng)用協(xié)議設(shè)計(jì)理念。同時(shí),在我看來(lái)REST還有一個(gè)很吸引開發(fā)者的就是能夠很好的融合當(dāng)前Web2.0的很多前端技術(shù)來(lái)提高開發(fā)效率。例如很多大型網(wǎng)站開放的REST風(fēng)格的API都會(huì)有多種返回形式,除了傳統(tǒng)的xml作為數(shù)據(jù)承載,還有(JSON,RSS,ATOM)等形式,這對(duì)很多網(wǎng)站前端開發(fā)人員來(lái)說(shuō)就能夠很好的mashup各種資源信息。

                 因此在效率和易用性上來(lái)說(shuō),REST更勝一籌。

          安全性:

                 這點(diǎn)其實(shí)可以放入到成熟度中,不過(guò)在當(dāng)前的互聯(lián)網(wǎng)應(yīng)用和平臺(tái)開發(fā)設(shè)計(jì)過(guò)程中,安全已經(jīng)被提到了很高的高度,特別是作為外部接口給第三方調(diào)用,安全性可能會(huì)高過(guò)業(yè)務(wù)邏輯本身。

                 SOAP在安全方面是通過(guò)使用XML-SecurityXML-Signature兩個(gè)規(guī)范組成了WS-Security來(lái)實(shí)現(xiàn)安全控制的,當(dāng)前已經(jīng)得到了各個(gè)廠商的支持,.net php java 都已經(jīng)對(duì)其有了很好的支持(雖然在一些細(xì)節(jié)上還是有不兼容的問(wèn)題,但是互通基本上是可以的)。

                 REST沒(méi)有任何規(guī)范對(duì)于安全方面作說(shuō)明,同時(shí)現(xiàn)在開放REST風(fēng)格API的網(wǎng)站主要分成兩種,一種是自定義了安全信息封裝在消息中(其實(shí)這和SOAP沒(méi)有什么區(qū)別),另外一種就是靠硬件SSL來(lái)保障,但是這只能夠保證點(diǎn)到點(diǎn)的安全,如果是需要多點(diǎn)傳輸?shù)脑?/span>SSL就無(wú)能為力了。安全這塊其實(shí)也是一個(gè)很大的問(wèn)題,今年在BEA峰會(huì)上看到有演示采用SAML2實(shí)現(xiàn)的網(wǎng)站間SSO,其實(shí)是直接采用了XML-SecurityXML-Signature,效率看起來(lái)也不是很高。未來(lái)REST規(guī)范化和通用化過(guò)程中的安全是否也會(huì)采用這兩種規(guī)范,是未知的,但是加入的越多,REST失去它高效性的優(yōu)勢(shì)越多。

          應(yīng)用設(shè)計(jì)與改造:

                 我們的系統(tǒng)要么就是已經(jīng)有了那些需要被發(fā)布出去的服務(wù),要么就是剛剛設(shè)計(jì)好的服務(wù),但是開發(fā)人員的傳統(tǒng)設(shè)計(jì)思想讓REST的形式被接受還需要一點(diǎn)時(shí)間。同時(shí)在資源型數(shù)據(jù)服務(wù)接口設(shè)計(jì)上來(lái)說(shuō)按照REST的思想來(lái)設(shè)計(jì)相對(duì)來(lái)說(shuō)要容易一些,而對(duì)于一些復(fù)雜的服務(wù)接口來(lái)說(shuō),可能強(qiáng)要去按照REST的風(fēng)格來(lái)設(shè)計(jì)會(huì)有些牽強(qiáng)。這一點(diǎn)其實(shí)可以看看各大網(wǎng)站的接口就可以知道,很多網(wǎng)站還要傳入function的名稱作為參數(shù),這就明顯已經(jīng)違背了REST本身的設(shè)計(jì)思路。

                 SOAP本身就是面向RPC來(lái)設(shè)計(jì)的,開發(fā)人員十分容易接受,所以不存在什么適應(yīng)的過(guò)程。

          總的來(lái)說(shuō),其實(shí)還是一個(gè)老觀念,適合的才是最好的

                 技術(shù)沒(méi)有好壞,只有是不是合適,一種好的技術(shù)和思想被誤用了,那么就會(huì)得到反效果。RESTSOAP各自都有自己的優(yōu)點(diǎn),同時(shí)如果在一些場(chǎng)景下如果去改造REST,其實(shí)就會(huì)走向SOAP(例如安全)。

                 REST對(duì)于資源型服務(wù)接口來(lái)說(shuō)很合適,同時(shí)特別適合對(duì)于效率要求很高,但是對(duì)于安全要求不高的場(chǎng)景。而SOAP的成熟性可以給需要提供給多開發(fā)語(yǔ)言的,對(duì)于安全性要求較高的接口設(shè)計(jì)帶來(lái)便利。所以我覺(jué)得純粹說(shuō)什么設(shè)計(jì)模式將會(huì)占據(jù)主導(dǎo)地位沒(méi)有什么意義,關(guān)鍵還是看應(yīng)用場(chǎng)景。

                 同時(shí)很重要一點(diǎn)就是不要扭曲了REST現(xiàn)在很多網(wǎng)站都跟風(fēng)去開發(fā)REST風(fēng)格的接口,其實(shí)都是在學(xué)其形,不知其心,最后弄得不倫不類,性能上不去,安全又保證不了,徒有一個(gè)看似象摸象樣的皮囊。SOA的基礎(chǔ)技術(shù)實(shí)現(xiàn)方式中WebService占據(jù)了很重要的地位,通常我們提到WebService第一想法就是SOAP消息在各種傳輸協(xié)議上交互。近幾年REST的思想伴隨著SOA逐漸被大家接受,同時(shí)各大網(wǎng)站不斷開放API提供給開發(fā)者,也激起了REST風(fēng)格WebService的熱潮。

          SOAP

                 什么是SOAP,我想不用多說(shuō),google一把滿眼都是。其實(shí)SOAP最早是針對(duì)RPC的一種解決方案,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議,很輕量,同時(shí)作為應(yīng)用協(xié)議可以基于多種傳輸協(xié)議來(lái)傳遞消息(Http,SMTP等)。但是隨著SOAP作為WebService的廣泛應(yīng)用,不斷地增加附加的內(nèi)容,使得現(xiàn)在開發(fā)人員覺(jué)得SOAP很重,使用門檻很高。在SOAP后續(xù)的發(fā)展過(guò)程中,WS-*一系列協(xié)議的制定,增加了SOAP的成熟度,也給SOAP增加了負(fù)擔(dān)。

          REST

                 REST其實(shí)并不是什么協(xié)議也不是什么標(biāo)準(zhǔn),而是將Http協(xié)議的設(shè)計(jì)初衷作了詮釋,在Http協(xié)議被廣泛利用的今天,越來(lái)越多的是將其作為傳輸協(xié)議,而非原先設(shè)計(jì)者所考慮的應(yīng)用協(xié)議。SOAP類型的WebService就是最好的例子,SOAP消息完全就是將Http協(xié)議作為消息承載,以至于對(duì)于Http協(xié)議中的各種參數(shù)(例如編碼,錯(cuò)誤碼等)都置之不顧。其實(shí),最輕量級(jí)的應(yīng)用協(xié)議就是Http協(xié)議。Http協(xié)議所抽象的get,post,put,delete就好比數(shù)據(jù)庫(kù)中最基本的增刪改查,而互聯(lián)網(wǎng)上的各種資源就好比數(shù)據(jù)庫(kù)中的記錄(可能這么比喻不是很好),對(duì)于各種資源的操作最后總是能抽象成為這四種基本操作,在定義了定位資源的規(guī)則以后,對(duì)于資源的操作通過(guò)標(biāo)準(zhǔn)的Http協(xié)議就可以實(shí)現(xiàn),開發(fā)者也會(huì)受益于這種輕量級(jí)的協(xié)議。

              REST的思想歸結(jié)以下有如下幾個(gè)關(guān)鍵點(diǎn):

          1.面向資源的接口設(shè)計(jì)

          所有的接口設(shè)計(jì)都是針對(duì)資源來(lái)設(shè)計(jì)的,也就很類似于我們的面向?qū)ο蠛兔嫦蜻^(guò)程的設(shè)計(jì)區(qū)別,只不過(guò)現(xiàn)在將網(wǎng)絡(luò)上的操作實(shí)體都作為資源來(lái)看待,同時(shí)URI的設(shè)計(jì)也是體現(xiàn)了對(duì)于資源的定位設(shè)計(jì)。后面會(huì)提到有一些網(wǎng)站的API設(shè)計(jì)說(shuō)是REST設(shè)計(jì),其實(shí)是RPC-REST的混合體,并非是REST的思想。

                 2.抽象操作為基礎(chǔ)的CRUD

                 這點(diǎn)很簡(jiǎn)單,Http中的get,put,post,delete分別對(duì)應(yīng)了read,update,create,delete四種操作,如果僅僅是作為對(duì)于資源的操作,抽象成為這四種已經(jīng)足夠了,但是對(duì)于現(xiàn)在的一些復(fù)雜的業(yè)務(wù)服務(wù)接口設(shè)計(jì),可能這樣的抽象未必能夠滿足。其實(shí)這也在后面的幾個(gè)網(wǎng)站的API設(shè)計(jì)中暴露了這樣的問(wèn)題,如果要完全按照REST的思想來(lái)設(shè)計(jì),那么適用的環(huán)境將會(huì)有限制,而非放之四海皆準(zhǔn)的。      

                 3Http是應(yīng)用協(xié)議而非傳輸協(xié)議

                 這點(diǎn)在后面各大網(wǎng)站的API分析中有很明顯的體現(xiàn),其實(shí)有些網(wǎng)站已經(jīng)走到了SOAP的老路上,說(shuō)是REST的理念設(shè)計(jì),其實(shí)是作了一套私有的SOAP協(xié)議,因此稱之為REST風(fēng)格的自定義SOAP協(xié)議。

          4.無(wú)狀態(tài),自包含

          這點(diǎn)其實(shí)不僅僅是對(duì)于REST來(lái)說(shuō)的,作為接口設(shè)計(jì)都需要能夠做到這點(diǎn),也是作為可擴(kuò)展和高效性的最基本的保證,就算是使用SOAPWebService也是一樣。

          REST vs SOAP

          成熟度:

          SOAP雖然發(fā)展到現(xiàn)在已經(jīng)脫離了初衷,但是對(duì)于異構(gòu)環(huán)境服務(wù)發(fā)布和調(diào)用,以及廠商的支持都已經(jīng)達(dá)到了較為成熟的情況。不同平臺(tái),開發(fā)語(yǔ)言之間通過(guò)SOAP來(lái)交互的web service都能夠較好的互通(在部分復(fù)雜和特殊的參數(shù)和返回對(duì)象解析上,協(xié)議沒(méi)有作很細(xì)致的規(guī)定,導(dǎo)致還是需要作部分修正)

          REST國(guó)外很多大網(wǎng)站都發(fā)布了自己的開發(fā)API,很多都提供了SOAPREST兩種Web Service,根據(jù)調(diào)查部分網(wǎng)站的REST風(fēng)格的使用情況要高于SOAP。但是由于REST只是一種基于Http協(xié)議實(shí)現(xiàn)資源操作的思想,因此各個(gè)網(wǎng)站的REST實(shí)現(xiàn)都自有一套,在后面會(huì)講訴各個(gè)大網(wǎng)站的REST API的風(fēng)格。也正是因?yàn)檫@種各自實(shí)現(xiàn)的情況,在性能和可用性上會(huì)大大高于SOAP發(fā)布的web service,但統(tǒng)一通用方面遠(yuǎn)遠(yuǎn)不及SOAP。由于這些大網(wǎng)站的SP往往專注于此網(wǎng)站的API開發(fā),因此通用性要求不高。

          由于沒(méi)有類似于SOAP的權(quán)威性協(xié)議作為規(guī)范,REST實(shí)現(xiàn)的各種協(xié)議僅僅只能算是私有協(xié)議,當(dāng)然需要遵循REST的思想,但是這樣細(xì)節(jié)方面有太多沒(méi)有約束的地方。REST日后的發(fā)展所走向規(guī)范也會(huì)直接影響到這部分的設(shè)計(jì)是否能夠有很好的生命力。

          總的來(lái)說(shuō)SOAP在成熟度上優(yōu)于REST

          效率和易用性:

                 SOAP協(xié)議對(duì)于消息體和消息頭都有定義,同時(shí)消息頭的可擴(kuò)展性為各種互聯(lián)網(wǎng)的標(biāo)準(zhǔn)提供了擴(kuò)展的基礎(chǔ),WS-*系列就是較為成功的規(guī)范。但是也由于SOAP由于各種需求不斷擴(kuò)充其本身協(xié)議的內(nèi)容,導(dǎo)致在SOAP處理方面的性能有所下降。同時(shí)在易用性方面以及學(xué)習(xí)成本上也有所增加。

                 REST被人們的重視,其實(shí)很大一方面也是因?yàn)槠涓咝б约昂?jiǎn)潔易用的特性。這種高效一方面源于其面向資源接口設(shè)計(jì)以及操作抽象簡(jiǎn)化了開發(fā)者的不良設(shè)計(jì),同時(shí)也最大限度的利用了Http最初的應(yīng)用協(xié)議設(shè)計(jì)理念。同時(shí),在我看來(lái)REST還有一個(gè)很吸引開發(fā)者的就是能夠很好的融合當(dāng)前Web2.0的很多前端技術(shù)來(lái)提高開發(fā)效率。例如很多大型網(wǎng)站開放的REST風(fēng)格的API都會(huì)有多種返回形式,除了傳統(tǒng)的xml作為數(shù)據(jù)承載,還有(JSON,RSS,ATOM)等形式,這對(duì)很多網(wǎng)站前端開發(fā)人員來(lái)說(shuō)就能夠很好的mashup各種資源信息。

                 因此在效率和易用性上來(lái)說(shuō),REST更勝一籌。

          安全性:

                 這點(diǎn)其實(shí)可以放入到成熟度中,不過(guò)在當(dāng)前的互聯(lián)網(wǎng)應(yīng)用和平臺(tái)開發(fā)設(shè)計(jì)過(guò)程中,安全已經(jīng)被提到了很高的高度,特別是作為外部接口給第三方調(diào)用,安全性可能會(huì)高過(guò)業(yè)務(wù)邏輯本身。

                 SOAP在安全方面是通過(guò)使用XML-SecurityXML-Signature兩個(gè)規(guī)范組成了WS-Security來(lái)實(shí)現(xiàn)安全控制的,當(dāng)前已經(jīng)得到了各個(gè)廠商的支持,.net php java 都已經(jīng)對(duì)其有了很好的支持(雖然在一些細(xì)節(jié)上還是有不兼容的問(wèn)題,但是互通基本上是可以的)。

                 REST沒(méi)有任何規(guī)范對(duì)于安全方面作說(shuō)明,同時(shí)現(xiàn)在開放REST風(fēng)格API的網(wǎng)站主要分成兩種,一種是自定義了安全信息封裝在消息中(其實(shí)這和SOAP沒(méi)有什么區(qū)別),另外一種就是靠硬件SSL來(lái)保障,但是這只能夠保證點(diǎn)到點(diǎn)的安全,如果是需要多點(diǎn)傳輸?shù)脑?/span>SSL就無(wú)能為力了。安全這塊其實(shí)也是一個(gè)很大的問(wèn)題,今年在BEA峰會(huì)上看到有演示采用SAML2實(shí)現(xiàn)的網(wǎng)站間SSO,其實(shí)是直接采用了XML-SecurityXML-Signature,效率看起來(lái)也不是很高。未來(lái)REST規(guī)范化和通用化過(guò)程中的安全是否也會(huì)采用這兩種規(guī)范,是未知的,但是加入的越多,REST失去它高效性的優(yōu)勢(shì)越多。

          應(yīng)用設(shè)計(jì)與改造:

                 我們的系統(tǒng)要么就是已經(jīng)有了那些需要被發(fā)布出去的服務(wù),要么就是剛剛設(shè)計(jì)好的服務(wù),但是開發(fā)人員的傳統(tǒng)設(shè)計(jì)思想讓REST的形式被接受還需要一點(diǎn)時(shí)間。同時(shí)在資源型數(shù)據(jù)服務(wù)接口設(shè)計(jì)上來(lái)說(shuō)按照REST的思想來(lái)設(shè)計(jì)相對(duì)來(lái)說(shuō)要容易一些,而對(duì)于一些復(fù)雜的服務(wù)接口來(lái)說(shuō),可能強(qiáng)要去按照REST的風(fēng)格來(lái)設(shè)計(jì)會(huì)有些牽強(qiáng)。這一點(diǎn)其實(shí)可以看看各大網(wǎng)站的接口就可以知道,很多網(wǎng)站還要傳入function的名稱作為參數(shù),這就明顯已經(jīng)違背了REST本身的設(shè)計(jì)思路。

                 SOAP本身就是面向RPC來(lái)設(shè)計(jì)的,開發(fā)人員十分容易接受,所以不存在什么適應(yīng)的過(guò)程。

          總的來(lái)說(shuō),其實(shí)還是一個(gè)老觀念,適合的才是最好的

                 技術(shù)沒(méi)有好壞,只有是不是合適,一種好的技術(shù)和思想被誤用了,那么就會(huì)得到反效果。RESTSOAP各自都有自己的優(yōu)點(diǎn),同時(shí)如果在一些場(chǎng)景下如果去改造REST,其實(shí)就會(huì)走向SOAP(例如安全)。

                 REST對(duì)于資源型服務(wù)接口來(lái)說(shuō)很合適,同時(shí)特別適合對(duì)于效率要求很高,但是對(duì)于安全要求不高的場(chǎng)景。而SOAP的成熟性可以給需要提供給多開發(fā)語(yǔ)言的,對(duì)于安全性要求較高的接口設(shè)計(jì)帶來(lái)便利。所以我覺(jué)得純粹說(shuō)什么設(shè)計(jì)模式將會(huì)占據(jù)主導(dǎo)地位沒(méi)有什么意義,關(guān)鍵還是看應(yīng)用場(chǎng)景。

                 同時(shí)很重要一點(diǎn)就是不要扭曲了REST現(xiàn)在很多網(wǎng)站都跟風(fēng)去開發(fā)REST風(fēng)格的接口,其實(shí)都是在學(xué)其形,不知其心,最后弄得不倫不類,性能上不去,安全又保證不了,徒有一個(gè)看似象摸象樣的皮囊。

          posted @ 2010-04-27 14:11 shoppingbill 閱讀(466) | 評(píng)論 (0)編輯 收藏

          /**
           * 
           
          */

          package com.download;

          import java.io.ByteArrayInputStream;
          import java.io.InputStream;
          import java.io.UnsupportedEncodingException;

          import org.apache.struts2.ServletActionContext;

          import com.opensymphony.xwork2.ActionSupport;

          /**
           * 
          @author billzhang
           *
           
          */

          public class DownloadFileAction extends ActionSupport {

              @Override
              
          public String execute() throws Exception {
                  
          return "success";
              }

              
              
          public InputStream getInputStream(){
                  
          //        return new ByteArrayInputStream("struts2文件下載".getBytes());
                  return ServletActionContext.
                                        getServletContext().getResourceAsStream(
          "/upload/sw01-1.swf");
              }

              
              
          public String getFileName() throws UnsupportedEncodingException
                  String fileName
          ="測(cè)試sw01-1.swf ";
                  
          return new String(fileName.getBytes(),"ISO8859-1");
              }

          }


          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
          >
          <struts>
              
          <package name="struts2" extends="struts-default">
                  
          <action name="downloadFile" class="com.download.DownloadFileAction">
                      
          <result name="success" type="stream">
                          
          <param name="contentType">application/octet-stream;charset=ISO8859-1</param>
                          
          <param name="contentDisposition">attachment;filename="${fileName}"</param>
                          
          <param name="inputName">inputStream</param>
                          
          <param name="bufferSize">4096</param>
                      
          </result>
                  
          </action>
              
          </package>
          </struts>    
          今天在公司寫同樣的代碼就是不能用迅雷下載。回到家再寫一遍,我電腦上的迅雷就是可以的。hoho郁悶。今天搞了一天。沒(méi)有結(jié)果。本人初步判斷應(yīng)該是公司電腦上的迅雷有問(wèn)題。安裝的時(shí)候就有些文件復(fù)制失敗。hoho。。。。無(wú)語(yǔ)咯。

          posted @ 2009-12-17 00:01 shoppingbill 閱讀(515) | 評(píng)論 (0)編輯 收藏

               摘要: 在Spring里Inversion of Control (Ioc)原理是用Dependency Injection(DI)設(shè)計(jì)模式實(shí)現(xiàn)的。讓我們通過(guò)幫助例子來(lái)理解DI。首先我們看一個(gè)java版本的例子,然后我們會(huì)添加spring的功能。QuizMater接口暴露popQuestion()方法。 1.QuizMaster.java 2.---------------- 3.package...  閱讀全文

          posted @ 2009-11-09 14:34 shoppingbill 閱讀(250) | 評(píng)論 (0)編輯 收藏

               摘要:   Spring IDE是一個(gè)Eclipse插件幫助開發(fā)Spring 應(yīng)用.首先我們先來(lái)看看怎么樣安裝Spring IDE,然后用Spring IDE創(chuàng)建我們一個(gè)Spring項(xiàng)目.我用的是Eclipse 3.4.1版本來(lái)演示它. 安裝Spring IDE,到Help -> Software Updates. 點(diǎn)擊'Add Site'按鈕,鍵入'http://sprin...  閱讀全文

          posted @ 2009-11-09 12:37 shoppingbill 閱讀(394) | 評(píng)論 (0)編輯 收藏

               摘要: Spring Validation Using Annotation 在這個(gè)例子中你會(huì)學(xué)到用spring annotation 驗(yàn)證。當(dāng)你用注解的controller類時(shí)。validate()方法不會(huì)自動(dòng)調(diào)用。 當(dāng)表單提交的時(shí)候onSubmit()方法會(huì)被調(diào)用.這里你需要首先調(diào)用UserValidator 的validate()方法,然后用has...  閱讀全文

          posted @ 2009-11-06 18:14 shoppingbill 閱讀(924) | 評(píng)論 (0)編輯 收藏


          posts - 6, comments - 0, trackbacks - 0, articles - 0

          Copyright © shoppingbill

          主站蜘蛛池模板: 大庆市| 浑源县| 景德镇市| 青州市| 天全县| 宜阳县| 马龙县| 忻州市| 库尔勒市| 绥化市| 潮安县| 关岭| 高青县| 贵德县| 中方县| 城口县| 二手房| 西峡县| 筠连县| 儋州市| 台东县| 迁安市| 泽州县| 同心县| 伊宁县| 金川县| 武宣县| 三台县| 龙岩市| 穆棱市| 图木舒克市| 无棣县| 河北区| 尖扎县| 郯城县| 霍城县| 扶沟县| 屯门区| 马鞍山市| 区。| 阿尔山市|