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).

[通聯編輯:梁書]

主站蜘蛛池模板: 欧美日韩在线观看一区二区三区| 国产精品欧美日本韩免费一区二区三区不卡| 亚洲精品成人7777在线观看| 四虎国产精品永久在线网址| 欧美日韩一区二区三| 性色生活片在线观看| 久久久精品无码一区二区三区| 午夜精品久久久久久久无码软件| 高清不卡毛片| 亚洲国产精品一区二区第一页免 | 毛片网站免费在线观看| 亚洲最黄视频| 高清精品美女在线播放| jizz国产视频| 欲色天天综合网| 亚洲人在线| 激情亚洲天堂| 国产成人三级| 日本人妻丰满熟妇区| 成人一区在线| 亚洲欧美日韩精品专区| 久久国产乱子| 精品无码视频在线观看| 少妇精品在线| 精品偷拍一区二区| 日韩欧美视频第一区在线观看| 欧美国产日韩在线播放| 99视频全部免费| 91小视频在线观看| 国产极品美女在线观看| 伊人网址在线| 亚洲精品桃花岛av在线| av大片在线无码免费| 狠狠色噜噜狠狠狠狠色综合久| 动漫精品中文字幕无码| 久久影院一区二区h| 国产精鲁鲁网在线视频| 国产一区二区免费播放| 欧美色99| 91久久偷偷做嫩草影院| 伊人激情久久综合中文字幕| 天天综合网在线| 国产91无码福利在线| 久久一级电影| 国产乱码精品一区二区三区中文| 精品国产网| 精品一区二区三区无码视频无码| 欧美成人午夜在线全部免费| 亚洲精品中文字幕午夜 | 免费av一区二区三区在线| 美女被操91视频| 成人午夜视频免费看欧美| 91精品国产91久无码网站| 五月婷婷丁香综合| 五月激情婷婷综合| 茄子视频毛片免费观看| Jizz国产色系免费| 国产爽歪歪免费视频在线观看 | 午夜毛片福利| 亚洲日本在线免费观看| 久久精品国产亚洲麻豆| 免费无遮挡AV| 亚洲色图综合在线| 欧美日本二区| 91小视频版在线观看www| 日韩中文无码av超清| 三区在线视频| 一本无码在线观看| 日韩第八页| 女人天堂av免费| 亚洲性日韩精品一区二区| 一级成人a毛片免费播放| 亚洲中字无码AV电影在线观看| 亚洲精品自产拍在线观看APP| 在线视频亚洲欧美| 国产成本人片免费a∨短片| 久久亚洲高清国产| 国产精品乱偷免费视频| 97久久精品人人做人人爽| 国产精品对白刺激| 国产sm重味一区二区三区| 国产精品19p|