999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Restful WebService的分布式應用開發研究

2018-02-27 13:29:44龍軍
電腦知識與技術 2018年35期

龍軍

摘要:該文在分析分布式異構系統及面向服務架構基礎上,對WebService和Restful WebService進行比較,研究基于PHP+Apache的分布式系統構架,最后從數據庫操作、Restful WebService的制作、HTML5前端、Android客戶端等方面進行系統的研究和模型設計。

關鍵詞:分布式; PHP; WebService; Restful WebService

中圖分類號:TP311? ? ? 文獻標識碼:A? ? ? 文章編號:1009-3044(2018)35-0087-03

隨著計算機軟硬件及網絡技術的發展,軟件系統規模、應用領域、實現功能不斷擴大,基于資源共享、高可用和并行處理的分布式異構系統成為解決復雜應用的有力工具。

1 分布式異構系統(DHS)及面向服務架構(SOA)概述

分布式系統是基于網絡具有高內聚性和透明性的軟件系統,異構系統由不同硬件設備、操作系統、應用軟件、數據等構成,通過消息中間件在不同應用間提供統一運行的框架和接口,實現跨平臺數據傳輸,共同完成應用任務,并通過動態增加或減少業務端,使業務系統具有良好的動態負載伸縮能力。

面向服務架構以基于XML/SOAP/Web Service/SCA/SDO/UDDI標準、可重用數據、業務服務組件為基礎,圍繞業務流程,對業務邏輯進行高度抽象的架構模型和軟件開發方式,將異構平臺上不同應用的功能組件封裝成有良好定義、與平臺無關、標準、可拼接拆卸、可復用的服務,形成松散耦合的軟件系統。功能為獨立服務,通過如REST、SOAP等遠程通信協議,借助中間件來實現SOA需求。

2 WebService和Restful WebService的比較

WebService是跨編程語言及操作系統平臺的遠程調用技術,為網絡應用開發和使用提供統一的編程模型,通常被定義為一組模塊化API供外部使用,有基于WSDL、UDDI的簡單對象訪問協議(SOAP)方式和REST方式兩種。

SOAP協議方式的消息通過增加特定HTTP消息頭統一內容格式,用XML格式封裝數據,用HTTP協議進行傳輸,用XSD定義標準的數據類型,將所有使用的數據類型均轉換為XSD類型。WSDL用XML描述WebService及其函數、參數和返回值,保存在Web服務器上,通過URL訪問,用UDDI發現WebService。

REST是一面向資源的架構風格,是一組架構約束條件和原則,滿足約束條件和原則的程序就是RESTful。REST專門針對網絡應用設計和開發,降低開發復雜性,提高系統可伸縮性,將網絡上所有事物都抽象成有唯一標識的資源。REST所有操作均無狀態,遵循CRUD原則,只需創建POST、獲取GET、更新PUT和刪除DELETE四種行為就可完成相關操作和處理,通過統一簡短的資源標識符(URI)來識別和定位資源,并通過HTTP規范資源操作。

3 基于PHP的分布式系統構架設計

PHP是開源跨平臺的服務器端嵌入式腳本語言,已發展成完整的面向對象程序設計語言,語法簡單、強大的數據庫支持、在服務器端執行、會將用戶常訪問的程序駐留內存、效率高,得到廣泛應用。

本模型基于PHP+Apache+MySql,用PHP的類完成數據增刪改查等操作,用SOAP WebService和Restful WebService對前端請求進行合法判斷,調用類進行數據處理,返回JSON格式數據給前端,前端為Web應用、移動端的Native App和Web App應用,在本模型中原生程序基于Android、Web App用HTML5。

4 數據庫操作類

PHP數據對象PDO擴展定義了輕量級的接口訪問數據庫,提供了一數據訪問的抽象,對所有數據庫均可用相同的函數/方法來操作。在類的構造方法__construct()中設置服務器地址、數據庫名以及登錄名和密碼。創建連接數據庫函數conn()連接服務器并選擇數據庫:

$link=new PDO("mysql:host=$hostname;dbname=$db_name", $username,$password);

通過傳入sql語句,完成表的增刪改函數zcg($sql):$this→link→exec($sql)。

[傳入sql語句查詢一條記錄 傳入sql語句查詢符合條件的多條記錄 $result=$this->link->query($sql);

if($row=$result->fetch_object()){

$a=array('id'=>$row->Id,'yhm'=>$row->yhm,'mm'=>$row->mm);

$json=json_encode($a);

}else

$json='{"id":"0"}}'; $result=$this->link->query($sql);

$num=$result->num_rows;

$a=array();

while($row=$result->fetch_object()){

$b=array('id'=>$row->Id,'yhm'=>$row->yhm,'mm'=>$row->mm);

$a[$i]=json_encode($b);

$i=$i+1;} ]

5 Restful WebService

1) RESTful 基礎類:新建一個RESTful基類,用于處理響應請求的HTTP狀態碼。

[private $httpVersion = "HTTP/1.1";

public function setHttpHeaders($contentType, $statusCode){

$statusMessage = $this -> getHttpStatusMessage($statusCode);

header($this->httpVersion. " ". $statusCode ." ". $statusMessage);

header("Content-Type:". $contentType);}

public function getHttpStatusMessage($statusCode){

$hs = array(100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK',...);

return ($hs[$statusCode]) ? $hs[$statusCode] : $status[500];} ]

2) RESTful WebService處理類:新建一個RESTful基類的子類,根據接收到的Content-Type,將Request類返回的數據轉換為對應的格式,加上header后輸出HTTP 狀態碼及數據。

[多條記錄getYhbRows($kw) 一條記錄getYhbRow($id) $yhb = new yhb();

$sql="select * from yhb where yhm like ‘%”+$key+”% order by Id desc";

$rawData = $yhb->getRows($sql);

if(empty($rawData)) {

$sCode = 404;

$rawData = array('error' => '無記錄!');

} else? $sCode = 200;

$rcType = $_SERVER['HTTP_ACCEPT'];

$this ->setHttpHeaders($rcType, $sCode);

echo $rawData; $yhb = new yhb();

$sql="select * from yhb where id="+$id;

$rawData = $yhb->getRow($sql);

if(empty($rawData)) {

$sCode = 404;

$rawData = array('error' => '無記錄!');

} else

$sCode = 200;

$rcType= $_SERVER['HTTP_ACCEPT'];

$this ->setHttpHeaders($rcType, $sCode);

echo $rawData; ]

3) RESTful WebService控制器:包含一數據操作的Request類,接收到URL的數據后,根據請求URL的GET、POST、PUT、PATCH、DELETE方式對數據進行相應的增刪改查操作,并返回操作后的結果。要注意的是在PHP文件開始時允許跨域。

[header("Access-Control-Allow-Origin:*");

$method=$_SERVER['REQUEST_METHOD'];

$view = "";

if(isset($_GET["view"]))? $view = $_GET["view"];

$yhbHandler = new YHBHandler();

if($view=="all") $yhbHandler ->getYhbRows();

else if($view=="single") $yhbHandler ->getYhbRow($_GET["id"]); ]

4) RESTful Services URI映射:設置一直觀簡短的資源地址,在配置文件htaccess中設置相應的Rewrite規則實現URL重寫(rewrite)與重定向(redirect)。

[# 開啟 rewrite 功能

Options +FollowSymlinks

RewriteEngine on

# 重寫規則

RewriteRule ^list/$? ?YhbController.php?view=all [nc,qsa]

RewriteRule ^read/([0-9]+)/$? ?YhbController.php?view=single&id=$1 [nc,qsa] ]

6 基于HTML5的Web端和移動端

Web應用及移動端的Web App通過jQuery的post、get方法進行數據處理及交互。

[GET方式 POST方式 $.get("網址/read/"+$("#id").val()+"/",

function(data){

json=JSON.parse(data);

$("#xs").html("id=" + json.id + "<br>用戶名=" + json.yhm + "<br>密碼=" + json.mm);

},"json"); $.post("網址/list/",{kw:$("#kw").val()},

function(data){

var a1=JSON.parse(data);

if(a1.length>0){var str="";

for(var i=0;i<a1.length;i++){

var a=JSON.parse(a1[i]);

str+="id:"+a.id+",用戶名:"+a.yhm+",密碼:"+a.mm+"<br>";}

$("#xs").html(str);}},"json"); ]

7 Android端原生應用

在Android中可用HttpPost和HttpGet封裝post請求和get請求,用HttpClient的excute()發送post請求并返回服務器響應數據。用HttpResponse的getAllHeaders()、getHeaders(String name)等獲取服務器的響應頭,用getEntity()獲取包裝有服務器響應內容的HttpEntity對象,程序通過該對象獲取服務器的響應內容。

[GET方式 POST方式 String urls="網址/read/"+id+"/";

HttpClient hc=new DefaultHttpClient(); String urls="網址/list/";

HttpPost hp=new HttpPost(urls);

List<NameValuePair> p=new ArrayList<NameValuePair>(); HttpGet hg=new HttpGet(urls);

HttpResponse hr=hc.execute(hg);

HttpEntity he=hr.getEntity();

r=EntityUtils.toString(he,"utf-8"); p.add(new BasicNameValuePair("kw",e.getText().toString()));

hp.setEntity(new UrlEncodedFormEntity(par,"utf-8"));

HttpClient hc=new DefaultHttpClient();

HttpResponse hr=hc.execute(hp);

HttpEntity he=hr.getEntity();

r=jtos(EntityUtils.toString(he,"utf-8")); ]

在模型應用間采用JSON格式數據進行傳輸,JSON是輕量級的數據交換語言,JSON和XML均有相同的數據可讀性和豐富的解析手段,JSON相較XML數據體積小、與JavaScript交互更方便、速度快,但JSON的數據描述性差。

RESTful架構層次分明、結構清晰,輕量級JSON格式在數據交換中易訪問、可擴展,能輕易實現多種數據、多種服務的聚合,提高了軟件系統的開發效率,基于PHP的分布式應用系統開發應用面將越來越廣。

參考文獻:

[1] 王非. RESTful Web Services在信息系統中的應用[J]. 計算機系統應用,2013(22).

[2] 萬為清. WebService技術在分布式開發中的應用與實現[J]. 電腦編程技巧與維護,2017(18).

[3] 徐曉琴. 基于WebService技術的SAP接口實現[J]. 電腦知識與技術,2018(14).

[4] 張琛. 分布式軟件系統交互行為建模、驗證與測試[J]. 計算機研究與發展,2015(52).

[5] 黃博怡. Web Services技術手段在異構系統集成中的應用實踐[J]. 現代工業經濟和信息化,2017(9).

[通聯編輯:梁書]

主站蜘蛛池模板: 亚洲天堂2014| 麻豆国产精品一二三在线观看| 人妻丝袜无码视频| 99国产精品一区二区| 曰AV在线无码| 国产成年女人特黄特色毛片免| 欧美一级在线看| 在线亚洲精品福利网址导航| 日韩精品无码免费专网站| 亚洲成人网在线观看| 国产美女免费| 毛片大全免费观看| 亚洲第一黄片大全| 久久视精品| 久久99热这里只有精品免费看| 国产v精品成人免费视频71pao| 国产亚洲视频播放9000| 狠狠亚洲婷婷综合色香| 亚洲天堂在线免费| 综合色天天| 亚洲a级毛片| 黄色片中文字幕| 欧美一级爱操视频| 亚洲欧洲日产国码无码av喷潮| 动漫精品中文字幕无码| 国产男人天堂| 91免费国产高清观看| 美女国产在线| 欧美不卡视频一区发布| 91蜜芽尤物福利在线观看| 亚洲美女一区| 中国一级特黄视频| 国产福利拍拍拍| AⅤ色综合久久天堂AV色综合| 亚洲中文字幕无码爆乳| 99re66精品视频在线观看| 中国国语毛片免费观看视频| 中文字幕2区| 在线亚洲小视频| 欧美亚洲国产精品第一页| 日本高清免费一本在线观看 | 91精品国产一区自在线拍| 97在线碰| 婷婷五月在线视频| 久久综合九色综合97网| 性69交片免费看| 久久福利片| 午夜日b视频| 制服丝袜在线视频香蕉| 国内熟女少妇一线天| 精品91在线| 亚洲男人的天堂久久精品| 国产一区二区精品福利| 免费A级毛片无码免费视频| 超碰91免费人妻| 精品久久蜜桃| 亚洲va在线∨a天堂va欧美va| 亚洲国产成人在线| 国产一区二区三区视频| 亚洲无码高清免费视频亚洲| 亚洲精品无码AⅤ片青青在线观看| 高潮毛片无遮挡高清视频播放| 亚洲综合极品香蕉久久网| 国产一区在线观看无码| 国产91视频观看| 亚洲美女操| 欧美一区日韩一区中文字幕页| 久久毛片免费基地| 日韩毛片基地| 国产女人综合久久精品视| 午夜激情婷婷| 色综合久久久久8天国| 狼友av永久网站免费观看| a毛片免费看| 东京热一区二区三区无码视频| 亚洲中文字幕在线精品一区| 亚洲天堂网在线播放| 99青青青精品视频在线| 成人在线第一页| 本亚洲精品网站| 一级毛片免费的| 91视频免费观看网站|