RPC

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 45

Remote Procedure Call (RPC) Th tc gi hm t xa l mt k thut tin b cho qu trnh kt ni

t Client n Server s dng cc ng dng v dch v. RPC cho php client c th kt ni ti 1


dch v s dng dynamic port nm mt my tnh khc. Trong h thng mng my tnh hin nay c
rt nhiu dch v v ng dng s dng c ch kt ni RPC, v d qu trnh ng b ca cc Domain
Controller trong h thng Active Directory, hoc khi MS Outlook kt ni ti MS Exchange Server
Nhm mc ch tm hiu v RPC, trong bi vit ny, chng ti s gii thiu vi cc bn C ch hot
ng ca Remote Procedure Call (RPC)
I. Kin trc ca RPC:
RPC c thit k cung cp cho vic truyn ti thng tin gia client v server d dng hn, bo
mt hn, v thun tin hn cho vic ng b ha cc lun d liu. Cc hm cha trong RPC h tr
cho vic truy cp bt k chng trnh no i hi phng php giao tip t client n server. Hnh bn
di s cho chng ta thy kin trc ca RPC

Hnh 1: Kin trc Remote Procedure Call


II. Cc thnh phn ca RPC
Thnh phn

Miu t

Client or server
process

Chng trnh hoc dch v tr li t yu cu ca RPC

RPC stubs

Nhng h thng chng trnh con c dng bi client hoc server khi ng yu cu RPC.

Marshalling engine

Cung cp mt giao din chung gia RPC Client v RPC Server v c chia lm 2 loi:

NDR20 v NDR64. NDR20 c dng cho h tng 32 bits. Trong khi NDR64 c ti u
(NDR20 hoc

dng cho h tng 64 bits. Client v Server s thng lng nn chn NDR20 hay NRD64

NDR64)

giao tip vi nhau


Cung cp giao din cho RPC ti Clients hoc Servers. Thng thng, RPC Clients v
Servers s gi hm API (giao din lp trnh ng dng) khi to RPC v chun b cu trc
d liu s c s dng thc hin cuc gi RPC. Lp API s quyt nh nu yu cu

Runtime application

RPC n t marshalling engine hoc trc tip t client/server n my ch ni b hoc my

programming

ch t xa. Sau lp API s dn ng cho RPC n Connection RPC, Datagram RPC

interface (API)

hoc Local RPC Layers

Connection RPC

c s dng khi RPC yu cu giao thc kt ni. Lp ny s ch nh s dng giao thc kt

protocol engine

ni nu RPC c gi i hoc nhn c mt kt ni hng ti RPC

Datagram RPC

c s dng khi RPC yu cu giao thc phi kt ni. Lp ny s ch nh s dng giao thc

protocol engine

phi kt ni nu RPC c gi i hoc nhn c mt phi kt ni ti RPC

Local RPC protocol


engine

c s dng khi Server v Client t trong cng mt host.


c truy cp khi dch v RPC u tin c ti v. Cc thnh phn trong registry s ch
nh dy port IP v tn thit b ca cc card mng RPC c th kt hp chng li vi nhau.
Tr khi API p buc RPC phi dng, Registry s khng c s dng trong hot ng ca

Registry

RPC
Kernel32.dll l mt file th vin ng 32 bits c trong Windows NT. File ny chu trch nhim

Win32 APIs

qun ly b nh, cc hot ng vo ra ca h thng

(kernel32.dll,

Advapi32.dll l file nng cao ca Windows 32 da trn giao din lp trnh ng dng. File ny

advapi32.dll,

h tr v bo mt v gi cc registry

ntdll.dll)

Ntdll.dll l file dll qun l chc nng cc file h thng ca Windows NT

SSPI

Cung cp giao din bo mt cho RPC. File secur32.dll s thng lng cch dng cho vic

(secur32.dll)

chng thc v m ha nh: Kerberos, NTLM, hoc Secure Sockets Layer (SSL)
Rpcss.dll (Remote procedure call subsystem) ch yu cung cp c s h tng cho cc dch
v COM, nhng mt phn ca Rpcss.dll c dng cho EPM. RPC Server lin lc vi EPM

Endpoint Mapper

nhn nhng im kt thc ng v ng k nhng im ny vo c s d liu ca EPM.

(EPM)

Ri sau khi RPC Clients mun kt ni ti RPC Server, n s lin lc vi EPM nh EPM

(rpcss.dll)

phn gii nhng im kt thc..

Active Directory

Ch c s dng cho qu trnh x l RPC client khi giao din bo mt c th nh Kerberos


hoc Negotiate nh nh cung cp bo mt hoc khi Server dng NTLM nh nh cung cp
bo mt

Used in the RPC client process only when the security interface specifies Kerberos or
Negotiate as the security provider or when the server uses NTLM as the security provider.
Network stack

c s dng thng qua cc yu cu v tr li ca RPC gia Client v Server

Kernel

c s dng thng qua cc yu cu v tr li ca RPC gia Client v Server

III. Qu trnh x l v tng tc ca RPC


Cc thnh phn ca RPC s gip cho Clients x l d dng bng cch gi hm nm trn mt chng
trnh t xa. Client v Server c mt a ch khng gian ring; iu c ngha l mi ngun ti
nguyn b nh ca Client v Server cp pht cho d liu s c dng bi hm.

Hnh 2: Qu trnh x l ca RPC


Qu trnh x l ca RPC bt u t pha Client. ng dng t pha Client s gi Client stub thay v
client phi vit code trin khai cho hm . Cc stub s c bin son v lin kt vi cc ng dng
t pha client trong qu trnh pht trin. Thay v cha m code thc hin th tc gi hm t xa, cc
code ca stub s yu cu truy vn nhng tham s t a ch khng gian ca Client v sau chuyn
chng vo th vin chy thc ca client. Sau , th vin chy thc ca client s bin dch nhng
tham s cn thit vo nh dng chun NDR (Network Data Representation) chuyn giao cho
Server.
Tip theo stub ca Client s gi hm trong th vin chy thc ca Client (rpcrt4.dll) gi cc yu
cu v thng s ca n n server. Nu server c t trong cng 1 host vi client, th vin chy
thc c th s dng cc tnh nng ca Local RPC (LRPC) v thng qua cc yu cu ca RPC ti
Windows kernel cho vic truyn ti n server. Nu server c t mt host khc, th vin chy
thc s xc nh mt giao thc truyn ti thch hp v thng qua cc yu cu ca RPC n Network
Stack cho vic truyn ti n server. RPC c th dng cc c ch trao i khc (Interprocess
Communications IPC) nh: Name pipes v Winsock thc hin truyn ti n server.
Bng di y s lit k cc giao thc mng h tr RPC v cc loi RPC kt ni vi giao thc tng
ng c s dng
Protocol

RPC Type

Transmission Control Protocol (TCP)

Connectionoriented

Sequenced Packet Exchange (SPX)

Connectionoriented

Named Pipe

Connectionoriented

HTTP

Connectionoriented

User Datagram Protocol (UDP)

Connectionless

Cluster Datagram Protocol (CDP)

Connectionless

Khi Server nhn c yu cu ca RPC(t pha client trong ni b hoc client t xa), cc hm trong
th vin chy thc RPC ca Server chp nhn cc yu cu v gi hm x l Server Stub. Server stub
s truy vn cc tham s t network buffer v chn 1 trong 2 loi NDR20 hoc NDR64 (trong NDR
Marshalling Engines), sau chuyn i chng t nh dng truyn ti mng sang nh dng theo
yu cu bi my ch. Sau cc th tc t xa s c chy, c kh nng xut ra cc tham s v tr
v gi tr. Khi cc th tc t xa hon tt, mt chui cc bc tng t s tr v d liu cho Client
Cc th tc t xa tr d liu ca n v cho Server Stub, chn 1 trong 2 loi NDR20 hoc NDR64
(trong NDR Marshalling Engines), chuyn i nhng tham s c xut ra thnh nh dng truyn ti
mng n client v tr chng vo th vic chy thc RPC ca Server. Sau th vin chy thc RPC
ca Server s truyn ti d liu n my tnh ca Client bng LRPC hoc qua network.
Client hon tt cc th tc bng cch chp nhn d liu qua mng v tr d liu v gi hm. Th
vin chy thc RPC ca Client nhn c th tc t xa tr v gi tr, chuyn i gi tr t NDR 20
hoc NDR64 v nh dng c dng bi Client, v tr chng v client stub.
i vi Microsoft Windows, th vin chy thc c chia lm 2 phn:
1. Import Library: lin kt vi cc ng dng
2. Th vin chy thc RPC( RPC Runtime Library): c trin khai nh l DLL
IV. Cc Ports dng cho RPC
Cc chng trnh RPC Server thng thng dng nhng port ng ( trnh gy xung t vi cc
chng trnh v cc giao thc c ng k trong dy Well-known TCP Ports). Bng di y s
lit k cc port dng cho RPC
Service Name

UDP

TCP

HTTP

80, 443, 593

80, 443, 593

Named Pipes

445

445

RPC Endpoint Mapper

135

135

RPC Server Programs

<Dynamically assigned>

<Dynamically assigned>

V. Mt v d minh ha cho c ch RPC


Cui tun, bn ang mun t hai v xem b phim Love Stories cng bn gi ti rp chiu phim
Galaxy, nhng bn ang khng bit phi t trc s gh no c c tm nhn hp l nht, bn
phi gii quyt vn ny nh th no? n gin, bn ch cn thc hin nh sau:
1. Bn (client) gi in thoi ti phng v ca Galaxy (server) vi s in thoi 135 (RPC
Endpoint Mapper)
2. Bn yu cu nhn vin phng v Galaxy (server) cho bn bit s gh (RPC Server
Programs) c tm nhn hp l nht, v d s gh D1 v D2 (dynamic port assigned)
3. V bn quyt nh chn s gh D1 v D2 cng thng thc b phim yu thch cng bn
gi.

Li gi th tc xa (RPC- Remote Procedure Call)


Gii thiu
Li gi th tc xa l mt c ch cho php mt chng trnh c th gi thc thi mt th tc (hay hm) trn mt my tnh
khc. Trong chng trnh lc ny, tn ti hai loi th tc: th tc cc b v th tc xa.

Th tc cc b l th tc c nh ngha, ci t v thc thi ti my ca chng trnh.

Th tc xa l th tc c nh ngha, ci t v thc thi trn mt my tnh khc.

C php gia li gi th tc cc b v xa th ging nhau. Tuy nhin, khi mt th tc xa c gi n, mt thnh


phn ca chng trnh gi l Stub s chuyn hng kch hot mt th tc tng ng nm trn mt my tnh khc
vi my ca chng trnh gi. i vi ngi lp trnh, vic gi th tc xa v th tc cc b th ging nhau v mt c
php. y chnh l c ch cho php n gin ha vic xy dng cc ng dng Client-Server. Trong h thng RPC,
Server chnh l my tnh cung cp cc th tc xa cho php cc chng trnh trn cc my tnh khc gi thc hin.
Client chnh l cc chng trnh c th gi cc th tc xa trong qu trnh tnh ton ca mnh.
Mt Client c th gi th tc xa ca nhiu hn mt my tnh. Nh vy s thc thi ca chng trnh Client lc ny
khng cn gi gn trn mt my tnh ca Client m n tri rng trn nhiu my tnh khc nhau. y chnh l m hnh
ca ng dng phn tn (Distributed Application).

Kin trc ca chng trnh Client-Server ci t theo c ch li gi th tc xa


Mt ng dng Client-Server theo c ch RPC c xy dng gm c su phn nh s di y:

in trc chng trnh kiu RPC

Phn Client l mt qu trnh ngi dng, ni khi to mt li gi th tc t xa. Mi li gi th tc xa trn phn Client
s kch hot mt th tc cc b tng ng nm trong phn Stub ca Client.
Phn ClientStub cung cp mt b cc hm cc b m phn Client c th gi. Mi mt hm ca ClientStub i din cho
mt hm xa c ci t v thc thi trn Server.
Mi khi mt hm no ca ClientStub c gi bi Client, ClientStub s ng gi mt thng ip m t v th tc
xa tng ng m Client mun thc thi cng vi cc tham s nu c. Sau n s nh h thng RPCRuntime cc b
gi thng ip ny n phn Server Stub ca Server.
Phn RPCRuntime qun l vic truyn thng ip thng qua mng gia my Client v my Server. N m nhn vic
truyn li, bo nhn, chn ng gi tin v m ha thng tin.
RPCRuntime trn my Client nhn thng ip yu cu t ClientStub, gi n cho RPCRuntime trn my Server bng
lnh send(). Sau gi lnh wait() ch kt qu tr v t Server.
Khi nhn c thng tip t RPCRuntime ca Client gi sang, RPCRuntime bn pha server chuyn thng ip ln
phn ServerStub.
ServerStub m thng ip ra xem, xc nh hm xa m Client mun thc hin cng vi cc tham s ca n.
ServerStub gi mt th tc tng ng nm trn phn Server.
Khi nhn c yu cu ca ServerStub, Server cho thc thi th tc c yu cu v gi kt qu thc thi c cho
ServerStub.
ServerStub ng gi kt qu thc trong mt gi tin tr li, chuyn cho phn RPCRuntime cc b n gi sang
RPCRuntime ca Client .
RPCRuntime bn pha Client chuyn gi tin tr li nhn c cho phn ClientStub. ClientStub m thng ip cha kt
qu thc thi v cho Client ti v tr pht ra li gi th tc xa.
Trong cc thnh phn trn, RPCRuntime c cung cp bi h thng. ClientStub v ServerStub c th to ra th cng
(phi lp trnh) hay c th to ra bng cc cng c cung cp bi h thng.
C ch RPC c h tr bi hu ht cc h iu hnh mng cng nh cc ngn ng lp trnh.

WordPress s dng xmlrpc lm web service mc nh cho h thng m ngun


wordpress ca n. Xmlrpc l mt ci t RPC (Remote Procedure Call) trn nn giao
thc HTTP, s dng xml m ha v trao i d liu. XML-RPC l mt giao thc s

dng trong dch v web soap c s dng rng ri trong nhiu ngn ng lp trnh nh
java, android,..php,..
Cc gi/namespace c s dng vi wordpress xml-rpc l: Blogger API, metaWeblog
API, Movable Type API, Pingback API.

XML-RPC l g?
Nu bn khng bit khi nim RPC th c cc bi vit sau y.
Trang ch XML-RPC: http://www.xmlrpc.com
XML-RPC cho ngi mi nhp mn:
http://davenet.scripting.com/1998/07/14/xmlRpcForNewbies

Vy RPC l g?
RPC l li gi th tc (hay gi l hm), chc cc bn lm quen vi vic to v gi
hm. Khi mt on trng trnh c vit lp i lp li chng ta nhm chng vo mt
hm hay th tc v gi hm vi cc tham s thch hp. Cc th tc hoc hm bn c
th:

chung trong 1 file ngun cng vi chng trnh chnh

trong 1 file ngun khc v c include vo file ngun chnh khi cn,

c bin dch sn v trong 1 th vin hoc unit cc chng trnh khc


ca bn (cng c vit bng 1 ngn ng) s dng,

c bin dch sn trong file DLL cc chng trnh (c vit bng cc


ngn ng khc nhau) s dng.

im chung vi tt c cc phng thc trn l cc hm cn gi u nm trn cng 1


my tnh vi ni gi chng. Tuy nhin ni gi v hm cn gi c th c tch ri nhau
ra: khc file, ni gi khc ngn ng.
RPC Remote Procedure Call dch ra l li gi hm xa, nh tng trn hm cn
gi v ni gi hm gi y c th nm 2 my tnh khc nhau, server v mt my
tnh c kt ni qua internet.

Mt s web service s dng giao thc RPC


RPC l nn tng ca lp trnh phn tn (distributed programming). Cc giao thc xy
dng trn RPC xut hin t rt lu v c th tr nn quen thuc vi bn m bn
khng ti. V d:

CORBA: CORBA l mt trong nhng giao thc c s dng kh ph bin pht


trin cc ng dng phn tn (distributed) hng i tng (object-oriented). Bn s hay
gp CORBA trong cc chng trnh a tng vi qui m x nghip (multi-tier enterprise
application). Cc a ch tham kho hu ch v CORBA l trang ch ca OMG (Object
Management Group) v OMG CORBA.
DCOM: Nu bn l tn ca Microsoft th chc hn l bn khng xa l g vi thut ng
ny. DCOM l c p tr ca Micrsoft i vi CORBA. Bn c th gh thm trang ch
ca DCOM tm hiu thm chi tit.
SOAP: Rt c th bn nghe nhiu n SOAP trong thi gian gn y. SOAP cng l
mt ci t RPC trn HTTP. Bn c th tm hiu thm v SOAP trang ch ca SOAP.
XML-RPC kh n gin so vi CORBA, DCOM v SOAP. Hn th, XML-RPC hot ng
kh tt v ci
t n gin vi cc ngn ng lp trnh ph bin hin nay nh PHP, Perl, PythonV vy
XML-RPC l mt la chn kh thng minh cho nhng d n web c quy m nh.
V d nhin, XML-RPC vn c th c ci t vi cc ngn ng lp trnh desktop nh
C/C++, Java, v thm ch vi Microsoft .NET
ng dng XML-RPC trong wordpress

V XML-RPC l web server do c 2 phn: XML-RPC server v XML-RPC client.


V c bn, client s dng XML m ha tham s, v gi XML vo XML-RPC server,
dng gi hm t xa v tr v cho XML-RPC client vi ni dung XML c m
ha.

Kch hot XML-RPC trong wordpress


Tnh nng XML-RPC trong wordpress b n mc nh, kch hot xmlrpc ln bn truy
cp: Settings->Writing->remote publishing. Nu option ny cha c bt bn ci plugin
Control XML-RPC publishing
Truy cp li Settings->Write->Remote publishing with XML-RPC v chn vo Enabled
->nhn Save changes. Ok tnh nng xmlrpc c kch hot v sn sng s dng.
a ch rpc (endpoint) cho website wordpress ca bn l:
http://yourwordpress/xmlrpc.php

a ch XML-RPC l:
http://yourwordpress/xmlrpc.php?rsd

Test kt ni xmlrpc bng lnh curl. Cch lm vic ny ging giao thc xmpp. Thc thi
cng vic thng qua vic truyn ti on xml ln server bng phng thc POST, v

y l nguyn l khi gi hm. Trong v d sau y gi ni dung xml cha thng tin gi
hm vo xmlrpc wordpress server.
curl -d "<?xml version='1.0' encoding='iso-8859-1'?
><methodCall><methodName>system.listMethods</methodName><params/></methodCall>"
"http://localhost/wordpress/xmlrpc.php"

Trong v d trn, gi xml n xmlrpc server c ni dung:


<?xml version='1.0' encoding='iso-8859-1'>
<methodCall>
<methodName>system.listMethods</methodName>
<params/>
</methodCall>

Th methodName xc nh tn phng thc thuc namespace system. WordPress


xmlrpc cung cp sn cc namespace:
system,demo,pingback,mt,metaWeblog,blogger,wp
Tham s c s dng trong hm, xc nh bi th params ,
hm listMethods khng c i s do cung cp th trng
<params/>

.
Ch :

nu bn test trn localhost, th s dng ly tn domain l localhost thay v s


dng IP: 127.0.0.1

Gp li curl is not recognized as an internal or external


command. Li ny cha ci th vin curl, xem ci th vin
curl

Kt qu:

Hm Kt qu tr v danh sch cch hm c s dng.


WordPress XMLRPC Server

ng k hm xmlrpc mi
Wordpress xmlrpc api c filter xmlrpc_methods gip bn to phng thc ring.
ng k hm rpc vi on code sau, copy vo theme functions.php

add_filter( 'xmlrpc_methods', 'add_xml_rpc_methods' );


function add_xml_rpc_methods( $methods ) {
$methods['frs.helloWorld'] = 'hello_world';

//Where frs.helloWorld is the XML-RPC

method name, and hello_world is the callback, namespace 'frs' for any you want.
return $methods;
}

v d trn, chng ta ng k hm helloWorld thuc namespace mi frs , v khai


bo li gi hm callback hello_world cho hm helloWorld .
Phn nh ngha hm callback. Xem v d mu:
function hello_world($params){
global $wp_xmlrpc_server;
$arg1

= $params[1];

return "Hello ".$wp_xmlrpc_server->escape( $arg1 );


}

*Ch : Hm cn tr v gi tr, gi tr ny s c ly khi gi hm. Khng s dng


echo,print xut chui ra mn hnh.

Xa hm rpc
Tng t nh cch to hm, s dng xmlrpc_methods xa cc hm khng mong
mun. Thm vo functions.php
function mynamespace_remove_xmlrpc_methods( $methods ) {
unset( $methods['demo.addTwoNumbers'] );
unset( $methods['frs.helloWorld'] );
return $methods;
}
add_filter( 'xmlrpc_methods', 'mynamespace_remove_xmlrpc_methods');

XMLRPC Client

To lp s l gi hm t XMLRPC Server. To
lp XMLRPC_Client vi ni dung sau:
/*create XML-RPC PHP client*/
class XMLRPC_Client {

private $url;

function __construct( $url ) {


$this->url = $url;
}

/**

* Call the XML-RPC method named $method and return the results, or die trying!
*
* @param string $method XML-RPC method name
* @param mixed ... optional variable list of parameters to pass to XML-RPC call
*
* @return array result of XML-RPC call
*/
public function call() {

// get arguments
$params = func_get_args();
$method = array_shift( $params );

$post = xmlrpc_encode_request( $method, $params );

$ch = curl_init();

// set URL and other appropriate options


curl_setopt( $ch, CURLOPT_URL,

$this->url );

curl_setopt( $ch, CURLOPT_POST,


curl_setopt( $ch, CURLOPT_POSTFIELDS,

true );
$post );

curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

// issue the request


$response = curl_exec( $ch );
$response_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
$curl_errorno = curl_errno( $ch );
$curl_error = curl_error( $ch );
curl_close( $ch );

// check for curl errors


if ( $curl_errorno != 0 ) {
die( "Curl ERROR: {$curl_errorno} - {$curl_error}n" );
}

// check for server errors


if ( $response_code != 200 ) {
die( "ERROR: non-200 response from server: {$response_code} - {$response}n" );
}

return xmlrpc_decode( $response );


}
}

Gi hm rpc
Kt ni ti XMLRPC Server s dng class XMLRPC_Client . To instance ca
class XMLRPC_Client v gi hm rpc trn XMLRPC Server bi phng thc call .
//call method
$client = new XMLRPC_Client( "http://127.0.0.1:81/wordpress/xmlrpc.php" );
$available_methods = $client->call( 'system.listMethods' );
print_r( $available_methods );

Li ch ca XMLRPC l bn c th gi nhiu hm trn mt kt ni XMPRPC, nh y


chng ta c th gi tip hm demo.sayHello .
$test= $client->call( 'demo.sayHello' );
print_r($test);

Xy dng hm RPC

Ly gi tr tham s truyn vo hm
function hello_world( $params ) {
global $wp_xmlrpc_server;
$blog_id = (int) $params[0]; // tham s u tin khng c s dng, tham s ny tr v id ca blog
wordpress (built in XML-RPC actions)
//tham s 1
$username = $params[1];
$password = $params[2];

//tham s 2

$args

//tham s 3

= $params[3];

Truyn tng tng cc tham s vo phng thc $client->call .


$client->call( 'frs.helloWorld', 1, 'xmlrpc-user', 'xmlrpc-pass', array( 'name' => 'Justin' ) );

Nh vy $params[1] c gi tr xmlrpc-user, $params[2] = xmlrpc-pass


v $params[3] l mng cn li.
Escape gi tr tham s chui.
$params[1]=$wp_xmlrpc_server->escape( $params[1] );

S l li
Mt v d v cch s l li trong hm rpc, on code ny kim tra ngi dng nu
khng c quyn chnh sa bi vit, th xut li 403 km theo tin nhn.
function hello_world( $params ) {
...
// check for edit_posts capability (requires contributor role)
// (obviously not required for this simple example, but just for demonstration purposes)
if ( ! current_user_can( 'edit_posts' ) )

return new IXR_Error( 403, __( 'You are not allowed access to details about orders.' ) );
...
}

V d khc s l li 500 (thiu tham s).


function hello_world( $params ) {
...
$args = $params[3]; //gi s tham s ny l mng
// required parameter
if ( ! isset( $args['name'] ) ) return new IXR_Error( 500, __( "Missing parameter 'name'" ) );
...
}

V d:
$client->call( 'frs.helloWorld', 1, 'xx', 'yy', array( 'age' => '23' ) );

V d trn truyn thiu tham s name vo hm helloWorld , ->gp li 500.

To phin lm vic ca user (verify credentials)


WordPress RPC API c i tng global $wp_xmlrpc_server gip hm s dng
kt ni vo h thng wordpress api. ng nhp ti khon user vi phng thc login .
function hello_world( $params ) {
global $wp_xmlrpc_server;
...
$username = $params[1];
$password = $params[2];
// verify credentials
if ( ! $wp_xmlrpc_server->login( $username, $password ) ) {
return $wp_xmlrpc_server->error;
}
...
}

Cc tin nhn li trong qu trnh s dng wordpress api c lu ti


bin $wp_xmlrpc_server->error .
V d gi hm wp.getCommentCount m comments ca user. Nh vy chng ta
cn s dng phin lm vic ca user.
//requires a WordPress username and password to execute
$client = new XMLRPC_Client( "http://localhost/wordpress/xmlrpc.php" );
$comment_count = $client->call( 'wp.getCommentCount', 1, 'user1', '123456' );
print_r( $comment_count );

Gi hm RPC khc t mt hm RPC


Thc thi action xmlrpc_call vi tn hm cn gi. Bng cch ny cho php gi hm
rpc trong hm rpc, khng cn gi thm mt phng thc $client->call . iu ny
rt hu ch v i khi bn cn gi hm trc khi s l n 1 lnh tip theo.
function hello_world( $params ) {
...
do_action( 'xmlrpc_call', 'system.listMethods' );
...
}

Cc bn c th ti code mu WP XML-RPC Demo Plugin file nh km.


Chc bn thnh cng.

RPC (Remote Procedure Call)


|
Tin hc
Gi th tc t xa Gi th tc l cch thc cho cc th tc chy trn mt my tnh giao tip vi cc my
khc. Trong mt my tnh ring r, cc th tc chy trn cng mt vng nh, v vic gi hm tng i d
thc hin. Gi th tc gia hai my tnh thng qua kt ni truyn thng no gi l gi hm t xa, hoc
RPC. RPC xut hin ln u trn cc my tnh ca Sun Microsystems v Hewlett-Packard chy trn h
iu hnh UNIX. Cc ng dng my khch / my phc v dng RPC nh mt c ch truyn thng lin h
thng, nh hnh R-12. G s, bn ngh rng mt ng dng thuc m hnh my khch / my phc v nh
mt chng trnh c phn chia, my phc v chy phn truy xut d liu bi v n lu tr d liu v
my khch chy phn hin th d liu bi v n giao tip vi ngi dng. Theo s sp xp ny, RPC c
xem nh l thnh phn kt hp li cc phn phn chia ca chng trnh trn mng. RPC thung c gi
l k thut coupling (ghp). RPC c khuynh hng hot ng trong thi gian thc v chng trnh gi
thng i n khi nhn c tr li t chng trnh c gi. V kha cnh ny, th RPC chy ng b.
RPC c i hi trong cc ng dng m cc th tc khng c tip tc ti khi n nhn c thng tin
cn thit t h thng xa. Mt bin tu l s dng hot ng a lung trong my gi th tc n c th
tip tc vi cc hot ng khc trong khi ch i tr li t my c gi. Hnh R-12 Gi th tc t xa Mt
trong cc vn khi s dng RPC trong mi trng khng ng l cc thit b khc nhau biu din d liu
theo cch khc nhau. RPC trnh vn ny bng cch thm vo cc cuc gi thng tin m t cch biu
din d liu ca my gi. Khi cuc gi c nhn, my nhn chuyn i d liu nu hai my biu din d
liu khc nhau. Cc k thut messaging middleware, ORB (object request broker) nh CORBA, v nhng
cng ngh nh IIOP l nhng k thut truyn thng lin tin trnh (interprocess) khc. Xem nhng mc
c lit k sau y bit thm chi tit. T mc lin quan Client / Server Computing; Component
Software Technology; CORBA (Common Object Request Broker Architecture); DCOM (Distributed
Component Object Model); Distributed Applications; Distributed Computer Networks; Distributed Database;
Distributed Object Computing; IIOP (Internet Inter-ORB Protocol); Middleware and Messaging; v ORB

(Object Request Broker) Thng tin trn Internet Introduction to


RPChttp://nemo.ncsl.nist.gov/nistir/5277/node1.html IETF ONC Remote Procedure Call (oncrpc)
charter http://www.ietf.org/html.chartes/oncrpc-charter.html IETF RPC Version
2 http://www.internic.net/rfc/rfc1831.txt

Mc d khng phi chun chnh thc, nhng XML-PRC c s dng kh rng ri. Ti sao vy,
l v n n gin v r rng ngay t khi a ra. Bn d dng nhn ra iu ny khi so snh 1500 t
m t cho chun XML-PRC vi 11000 t m t cho chun SOAP. V iu ng quan tm nht l
XML-PRC c h tr rt tt trong PHP, bn cng c th ci t trn bt c ngn ng no m bn
mun.
Chi tit so snh hai chun ny bn c th c bi bo XML-RPC vs. SOAP. Tm li, SOAP c a
ra vi nh b p thiu st trong chun XML-RPC, a ra c ch mc chuyn nghip thc s
cho vic trao i d liu gia cc h thng. V d phn pht mng nhiu chiu th s dng
chun SOAP s n gin hn rt nhiu so vi dng chun XML-PRC, nhng s khng c g sai nu
bn s dng chun XML-PRC. c bit XML-PRC l chun n nh, trong khi chun SOAP c
th phi tri qua vic nh ngha li trong tng lai.
Bn c bn khon v vn : Bn u t hc chun XML-PRC trong khi h thng m bn kt ni
n li s dng chun SOAP. Bn ng lo lng vn ny, bi v bn c th d dng chuyn
mtrequest theo chun SOAP sang request theo chun XML-PRC bng cch s
dng XSLT (XSL Transformations).
n y bn s t ra cu hi: Vy XML-PRC s hot ng th no? Thc s th bn c th s dng
n m khng cn bit nhiu v chun ny. Nu bn mun tm hiu k hn bn c th cXML-RPC
for Newbies. y chng ti ni nhanh cch m XML-PRC lm vic v sau chuyn sang vn
lm th no s dng c n.
* C ch hot ng ca chun XML-PRC
Hai thnh phn chnh trong thng ip (message) XML-PRC l phng thc (methods)
vtham s (parameters). Phng thc tng ng vi hm m bn nh ngha trong PHP,
trong khi tham s tng ng vi cc bin m bn truyn vo hm ny. Tham s c th c
nhiu kiu khc nhau nh kiu xu, kiu s nguyn, kiu mng, cng tng t nh cc kiu bin
m bn s dng trong PHP. Thm vo , XML-PRC nh ngha cc th khc s dng cho vic
iu khin li nhng bn c th b qua bi trong hu ht cc trng hp bn khng cn lo lng v
chng.
Mt cuc i thoi (conversation) s dng giao thc XML-PRC bt u bng
mt request tXML-PRC Client, request cha mt phng thc v mt s tham s cn thit cho
phng thc.Response tr li vi cc tham s cha d liu c yu cu. Qu trnh x l ging
nh mt hm m bn nh ngha trong PHP, bn gi hm v truyn tham s cho chng, sau
hm tr li mt vi bin yu cu.
Di y l mt v d request ca Client m pha server thy c:

POST
User-Agent:
Host:
Content-type:
Content-length:
<?xml
<methodCall>
<params>

/xmlrpcInterface
Sitepoint

XML-RPC

HTTP/1.0
Client

1.0

xmlrpc.sitepoint.com
text/xml
195
version="1.0"?>
<methodName>forums.getNumTodaysThreads</methodName>

<param><value><string>PHP

Development</string></value></param>

</params>
</methodCall>
Cn y l response t server m client thy c:

HTTP/1.1

200

OK

Connection:

close

Content-Length:
content-Type:
Date:
Wed,

Server:

148
Jul

Sitepoint

<?xml

28

1999

XML-RPC

15

04

text/xml
GMT

Server

1.0
version="1.0"?>

<methodResponse>
<params>
<param>
<value><int>42</int></value>
</param>
</params>
</methodResponse>
y ch l mt v d n gin, gi mt tham s ti mt phng thc, v ly v mt tham s. XMLPRC cung cp nhiu hn th, n cho php bn truyn ln server vi d liu phc tp (nh mng)
v nhn v response chi tit cha tt c d liu c sp xp.
Bn rng, RPC trong XML-RPC l vit tt ca t Remote Procedure Call. Pha client
s gi mt hm (hay phng thc) trn my ch. Nh vy XML-RPC l mt chun XML s dng
trao i d liu bng cch s dng li gi hm t xa Remote Procedure Call.
XML-PRC nm trong lp ng gi (packaging layer) m Kevin m t trong bi Web Services
Demystified.
* Mt s d n m ngun m xy dng theo chun XML-PRC
Chng ta xem mt s d n m ngun m h tr bn lp trnh sinh ra cc request v response
theo chun XML-PRC (Xem chi tit ti http://www.xmlrpc.com/directory/1568/implementations).
y chng ta nh gi trn hai mc tiu chnh: Mt bao lu ci t v s dng v h tr PHP
mc no.
+ XMLRPC-EPI (Xem http://xmlrpc-epi.sourceforge.net)
XMLRPC-EPI ban u c pht trin ring cho trang epinions, v n thnh cng ti mc m
hin ti n cung cp cho PHP nhng hm XML-PRC c bn (hm a ra da trn kinh nghim). Bn
thn XMLRPC-EPI c vit bng C++ v vy vic ci t n khng phi l d dng nu bn
khng c quyn root.
Bn cnh , XMLRPC-EPI ch h tr thao tc vi request v response theo chun XML-PRC m
khng gi v nhn cc request ca chnh n.
+ eZ xmlrpc (Xem http://developer.ez.no/article/static/53/)
c pht trin bi Brd Farstad, y l lp XML-PRC s dng trong ezPublish nhn cc
request t desktop client. Lp c thit k rt tt, ti liu y v r rng
(http://zez.org/article/articleview/47/).
Nhng c vn kh ln l yu cu s dng xml parser phi h tr sn cho PHP. M mc nh
ci PHP chun th th vin ny khng h tr.

+ Fase 4 XML-RPC
Xem http://www.fase4.com/xmlrpc/
+ phpRPC (Xem http://sourceforge.net/projects/phprpc/)
c pht trin bi Useful Inc, h tr y chun XML-PRC v h tr debug rt tt. Ti liu
tt v c nhiu v d (http://www.zend.com/zend/tut/tut-xml-rpc-client.php). Nhng lp ny
khng phi l m hnh l tng cho nhng ngi mi m ch tt vi nhng nh pht trin PHP c
kinh nghim.
+ Keith Devens' XML-RPC Client/Server (Xem http://www.keithdevens.com/software/xmlrpc/)
Bn vo trang ch bn s thy rng rt d bt u. M rt n gin vi cc hm PHP ch
cninclude trc tip vo script ca bn. XML-PRC Client/Server ch lm vic vi kiu d liu m
chng a ra. iu ny c ngha l XML-RPC Client kim tra cn thn d liu nhn v, nhng
bn ca ch lo lng khi s dng cc bin PHP ch khng phi cc tham s XML-RPC.
Ti liu cho th vin ny rt tt. V vy chng ta s s dng th vin ny xy dng Web
Service u tin cho mnh.
* ng dng Web Service u tin vi th vin XML-RPC Client/Server ca Keith Devens
No, chng ta bt u xy dng mt Web Service public cc tin t trang web ca bn theo
dng RSS Feed.
Chng ta nh ngha hai phng thc XML-RPC s dng:
- "news.getNewsList": Cung cp mt danh sch cc tin.
- "news.viewNewsItem": Hin th tng tin n l dng y .
S c mt phng thc mc nh "method_not_found" trong trng hp c nhng rc ri. Mi
phng thc s tng ng mt hm tng ng vi mt hm m chng ta nh ngha trong PHP.
y chng ti s dng PHP 4.1.0 hoc mi hn, v truy cp ti CSDL MySQL (v3.23+).
+ Chun b
- Ti m ngun ca bi ny (Download m ngun) (Trong b m ngun ny c th
vinkd_xmlrpc.php)
- Bn gii nn b m ngun trn ln th mc Web Server, khi ton b m ngun trong th
mc kd_xmlrpc v trong th mc c tp kd_xmlrpc.php chnh l th vin m chng ta
dng. Cc tp khc m chng ta ni sau u c trong th mc ny.
- To CSDL tn l "webservice_demo", to mt bng trong CSDL bng truy vn: CREATE
TABLE kd_xmlrpc_news (news_id mediumint(9) NOT NULL auto_increment, title varchar(255)
default NULL, short_desc text, full_desc text, author varchar(100) default NULL, date datetime NOT
NULL default '0000-00-00 00:00:00', PRIMARY KEY (news_id)) TYPE=MyISAM COMMENT='XML RPC
News';
- Thm vo mt s d liu cho bng.
+ XML-RPC Server
Chng ta to XML-RPC Server, v lu n vo tp server.php:

<?php
/*

server.php

/*

Variables

$dbserver=
$db

for

"localhost";

$dbuser

$dbpassword

"root";
=

/*

Connect

$link

accessing

//

"webservice_demo";
//
"";

Hostname
//
//

to

MySQL

of

Name

MySQL

of

user

your

@mysql_connect

server

MySQL

with

database

access
for

to

MySQL

MySQL

($dbserver,

*/

MySQL

your

Password
the

if
echo

*/

server

$dbuser,

"Unable

to

user
*/

$dbpassword);

(!
(

$db

$link){
connect

to

db"

);

exit();
}
/*

Select

the

database

if

(!mysql_select_db

($db,

*/

$link)

exit

();

}
/*

Include

Keiths

xml-rpc

library

*/

include("kd_xmlrpc.php");
/*

Include

file

that

defines

all

the

xml-rpc

"methods"

*/

include("web_service_api.php");
/*

Now

client

use

the

XMLRPC_parse

connects

and

$xmlrpc_request
/*

From

the

"What

turn

PHP

variables

would

Get

news

the

into

you

like

lets

parameters
Tell

me

the

if

response

from

PHP

what

xml-rpc

variables

method

name

do

for

to

with

which

that

one

method
you

e.g

"So

want.

=
check

data

*/

ie.

server

asks

you?"

*/

XMLRPC_getMethodName($xmlrpc_request);

associated

me

POST
normal

get

item.

Error

take

XMLRPC_parse($GLOBALS['HTTP_RAW_POST_DATA']);
generated,

$params
/*

to

it

$methodName
/*

function

you

want

What's

to

the

view

id#?"

a
*/

XMLRPC_getParams($xmlrpc_request);

method

was

used

to

that

doesn't

the

exist,

return

the

error

client

*/

if(!isset($xmlrpc_methods[$methodName])){
$xmlrpc_methods['method_not_found']($methodName);
/*

Otherwise,

note

the

let's

run

the

functions

response

PHP

function

themselves

return

to

corresponding
the

the

correct

to

that

method

formatted

xml-rpc

client

*/

}else{
/*

Call

the

method

notice

$params[0]

documentation

not

just

$params

as

states.

$xmlrpc_methods[$methodName]($params[0]);
}
?>
Chng ta s ni qua, tp server.php thc hin:
- Kt ni ti MySQL ly d liu
- Include tp kd_xmlrpc.php chng ta c th s dng cc hm ca Keith.
- Include web_service_api.php, tp m chng ta nh ngha cc phng thc XML-PRC.

the
*/

- S dng XMLRPC_Parse ly thng tin t bin $GLOBALS['HTTP_RAW_POST_DATA'] (Cha


request ca XML-PRC Client) v chuyn t XML sang cc bin PHP.
- Chng ta xc nh phng thc XML-RPC s c gi bng cch s dng
hmXMLRPC_getMethodName(). Chng ti mun cng XML-RPC server c kh nng thc hin
nhiu hn mt tc v, y chng ti xc nh thng qua request hin ti (V
d "news.getNewsList"hoc "news.viewNewsItem").
- Tip n kim tra cc tham s c gi trong request, tham s xc nh id ca tin
- Cui cng n kim tra xem phng thc c tn ti hay khng, nu mi th okie th phng thc
s c thc hin c yu cu. Nu khng tm thy phng thc th phng
thcmethod_not_found.
Cc hm XML-RPC c bit m chng ti s dng:
- XMLRPC_parse(): Hm ny ly XML v chuyn n thnh cc bin PHP. Thc t XML c chuyn
thnh mt form m PHP c th lm vic c. XML y khng cn phi theo chun XML-PRC m
c th on XML bt k u c th chuyn thnh cc bin PHP.
- XMLRPC_getMethodName(): Xc nh phng thc c s dng, n xc nh hm no c gi.
- XMLRPC_getParams(): Ly tham s XML-RPC v chuyn thnh cc bin PHP.
+ Phng thc (The Methods)
Chng ta nh ngha cc hm PHP tng ng vi phng thc XML-RPC, v lu chng trong
tpweb_service_api.php:

<?php
/*
/*

web_service_api.php
Define

an

array

to

name

the

PHP

xmlrpc

*/

methods

and

their

corresponding

functions

*/

array();

$xmlrpc_methods
$xmlrpc_methods['news.getNewsList']

news_getNewsList;

$xmlrpc_methods['news.viewNewsItem']

news_viewNewsItem;

$xmlrpc_methods['method_not_found']
/*

Now

useful

which

function

can

for

=
converting

then

MySQL

XMLRPC_method_not_found;
datetime

be

to

used

UNIX

timestamp

with

the

XMLRPC_convert_timestamp_to_iso8601($timestamp)
This

is

It

function.

not

comes

method!

from: http://www.zend.com/codex.php?id=176&single=1 */

function

mysql_datetime_to_timestamp($dt)

$yr=strval(substr($dt,0,4));
$mo=strval(substr($dt,5,2));
$da=strval(substr($dt,8,2));
$hr=strval(substr($dt,11,2));
$mi=strval(substr($dt,14,2));
$se=strval(substr($dt,17,2));
return

mktime($hr,$mi,$se,$mo,$da,$yr);

}
/*

Function

Allows

for

ordering

listing
by

news

column

items,
name

corresponding
and

result

to

the

limit

news.getNewsList
of

up

to

20

method
rows

*/

function
/*

news_getNewsList

Define

an

array

$order_fields
/*

check

if

(
=

we'll

accept

$query_info['order']

has

value

to

BY

"

ORDER

"author",

BY

in

variable

*/
&&

value

$order_fields
",

date

DESC

";

else

$order

"ORDER

*/
);

acceptable

$order

$query_info['order']

query

"title"
an

the

our

$query_info['order']

$query_info['order'],

"ORDER

to

correct

ISSET

in_array
$order

see

the

names

$query_info=0

array

to

assign

if

column

Now

and

of

BY

date

DESC

";

}
/*

Now

check

items

we

if

ISSET

$limit

for

want

returned,

$query_info['limit']
and

assign

$query_info['limit']
"LIMIT

to

0,

the

&&

"

specify

the

correct

number
value

$query_info['limit']

of

to

$limit

<

$query_info['limit']

news

20

)
"

else

$limit

*/
{
";
{

"LIMIT

0,

";

}
/*

Now

$query

build

"SELECT

$sql

FROM

the
kd_xmlrpc_news

mysql_query

if

/*

"

*/

$order

$limit;

$query

$sql

$news_items
while

query

);

$result

Extract

the

array();

mysql_fetch_array

variables

we

$news_item['news_id']

want

$sql
from

$news_item['date']

)
the

row

*/

$result['news_id'];

XMLRPC_convert_timestamp_to_iso8601(

mysql_datetime_to_timestamp(

$result['date']

);
$news_item['title']

$result['title'];

$news_item['short_desc']

$result['short_desc'];

$news_item['author']

$result['author'];

/*

Add

to

the

$news_items[]

$news_items

array

*/
$news_item;

}
/*
then

Convert

the

$news_items

respond

array
with

to

set
the

of

XML-RPC
XML.

parameters
*/

XMLRPC_response(XMLRPC_prepare($news_items),
}
/*

else
If

there

was

XMLRPC_error("1",
.

KD_XMLRPC_USERAGENT);

an

error,

respond

"news_getNewsList()

mysql_error()

"\nQuery

{
with

error:

was:

"

an

error

Unable

message

to

$query,

read

*/

news:"

KD_XMLRPC_USERAGENT);

}
}
/*

Function

for

viewing

full

news

news.viewNewsItem
function
/*
$query

the

"SELECT

$sql

/*

FROM

to

$news_id

fetch

kd_xmlrpc_news

the

WHERE

mysql_query

$result

the

variables

Extract

to

the
*/

query

if

corresponding

method

news_viewNewsItem
Define

item

news

news_id

'"

mysql_fetch_array
for

sending

$news_item['news_id']

item

*/

$news_id

"'";

$query
(

$sql

in

our

);

server

response

$news_item['date']

*/

$result['news_id'];

XMLRPC_convert_timestamp_to_iso8601(

mysql_datetime_to_timestamp(

$result['date']

);

$news_item['title']

$result['title'];

$news_item['full_desc']

$result['full_desc'];

$news_item['author']

$result['author'];

/*

Respond

to

the

client

with

the

news

XMLRPC_response(XMLRPC_prepare($news_item),
}
/*

item

*/

KD_XMLRPC_USERAGENT);

else
If

there

was

XMLRPC_error("1",

an

error,

respond

"news_viewNewsItem()

{
with
error:

fault

Unable

code
to

mysql_error(),

instead
read

*/

news:"

KD_XMLRPC_USERAGENT);

}
}
/*

Function

for

when

the

request

function

method

name

doesn't

exist

*/

XMLRPC_method_not_found($methodName){

XMLRPC_error("2",

"The

was

",

method
not

you

requested,
found.",

"

$methodName

KD_XMLRPC_USERAGENT);

}
?>
Tp thc hin:
- u tin chng ta nh ngha mt mng PHP $xmlrpc_methods, mng ny cha danh sch cc

phng thc XML-RPC v cc hm PHP chay phng thc ny.


- Hm mysql_datetime_to_timestamp() l hm tin ch (khng lin quan n XML-RPC) s dng
chuyn nh dng ngy thng trong MySQL thnh nh dng trong PHP.
- Chng ta nh ngha hm news_getNewsList() truy vn ti bng kd_xmlrpc_news. Hm
ny truy cp ti mng $query_info, n tng ng vi cc tham s m XML-PRC Client gi.
- Hm news_viewNewsItem() ly thng tin y tin t CSDL, chp nhn ch mt tham
s$new_id tng ng vi id ca tin.
- Hm cui cng XMLRPC_method_not_found(), hm mc nh sinh ra mt response khi client
yu cu thc hin mt phng thc khng tn ti.
Hm XML-PRC c bit m chng ti s dng:
- XMLRPC_convert_timestamp_to_iso8601(): XML-PRC c nh dng xc nh gi date v time.
Hm ny chuyn timestamp trong PHP thnh nh dng ng XML-RPC.
- XMLRPC_prepare(): Hm ny thit lp cc bin PHP v chuyn n thnh cc tham s XML-RPC.
N xc nh kiu ca bin c s dng v to ng dng XML-PRC ra. y cng l mt trong
nhng c im m on m ca Keith Devens rt thn thin cho vic s dng.
- XMLRPC_response(): Hm ny c s dng tr li kt qu cho client thng qua request. N
c hai gi tr:
XML-RPC data: To bi hm XMLRPC_prepare()
Hoc l tn ca server hay useragent v d nh KD_XMLRPC_USERAGENT.
- XMLRPC_error(): Sinh ra mt XML-RPC response s dng th hin th li c nh ngha.
Nu mun bn c th tp m li ring cho server ca bn, n s rt hu dng khi debug server.
Nh vy chng ta nh ngha c cc hm v c mt mng chuyn chng phng thc
XML-PRC. XML-RPC server sn sng chy. hon thin chng ta s xy dng mt client n
gin truy cp ti cc tin.
+ XML-RPC Client
Vi mc ch lm v d, chng ti lu script ca client vo cng th mc vi server. Bn c th
n ln server khc nhng bn phi m bo chc chn rng n c quyn truy cp ti
tpkd_xmlrpc.php cha th vin cc hm m ta cn dng. Sau y l ni dung ca
tp"client.php":

<?php
/*

client.php

/*

Include

the

include
/*

library

(
Define

*/

"kd_xmlrpc.php"

variables

to

find

$site

the

rpc

);

server

script

$location
/*

*/

function
$date

"localhost";

Function

to

"/kd_xmlrpc/server.php";

give

us

convert_date
=

nice

date

$date

XMLRPC_convert_iso8601_to_timestamp
return

back
(

date

*/

"D

$date
$date

*/
H:i:s",

);
);

}
?>
<!doctype
<html>
<head>

html

public

"-//W3C//DTD

HTML

4.0

Transitional//EN">

<title>

KD

XML

<meta

RPC

News

Client

name="Generator"

<meta

content="EditPlus">

name="Author"

<meta

content="HarryF">

name="Keywords"

<meta

name="Description"

</title>

content="XML

content="Gets

news

RPC">

form

server.php">

</head>
<body>
<?php
/*

If

user

if
/*

is

ISSET

$success

the

XML

the

viewing

is

single

(fail)

to

the

POST

correct

item,

$_GET['news_id']

server

succeeded

script,

).

calling

parameters

list($success,

news

the

using

$response)

to

this

XMLPRC_request
method

{
preforms

and

sending

XMLRPC_prepare
=

*/

*/

XMLRPC_request(

$site,
$location,
'news.viewNewsItem',
array(XMLRPC_prepare($_GET['news_id']),
'HarryFsXMLRPCClient')
);
/*

If

all

went

well,

if

show

the

article

*/

($success)

?>
<table

align="center"

width="600">

<tr
<th

valign="top">
colspan="2"><b><?php

echo

$response['title']

);?></b></th>

</tr>
<tr

valign="top">

<th><?php
<th><?php

echo
echo

$response['author']

convert_date

);?></th>

$response['date']

);?></th>

</tr>
<tr

valign="top">

<td

colspan="2">

<?php

echo

nl2br

$response['full_desc']

);?>

</th>
</tr>
</table>
<?php
/*

Else

display

}
echo

the

error

*/

else
(

"<p>Error:

"

nl2br

{
(

$response['faultString']

);

}
}
/*

else
Define

the

parameters

to

pass

to

the

XML-RPC

$query_info['limit']

as

PHP

array

$query_info['order']
/*

method

10;

XMLRPC_prepare

works

on

an

*/

"author";

array

and

converts

it

to

XML-RPC

parameters

*/

list($success,

$response)

XMLRPC_request(

$site,
$location,
'news.getNewsList',
array(XMLRPC_prepare($query_info),
'HarryFsXMLRPCClient')
);
/*

On

success,

display

the

if

as

HTML

table

*/

($success)

echo

"<table

align=\"center\"

$count
while

list

width=\"600\">\n"

);

=
(

list

$key,

$val

0;
each

$response

?>
<tr

valign="top">

<td

colspan="2">

<a

href="<?php

echo

echo

$_SERVER['PHP_SELF']

);?>?news_id=<?php

$response[$count]['news_id']

);

?>">
<?php

echo

$response[$count]['title']

);

?>

</a>
</td>
</tr>
<tr

valign="top">

<td

colspan="2">

<?php

echo

$response[$count]['short_desc']

);

?>

</td>
</tr>
<tr

valign="top">

<td>
<?php

echo

$response[$count]['author']

);

?>

</td>
<td>
<?php
</td>
</tr>

echo

convert_date

$response[$count]['date']

);

?>

<?php
$count++;
}
echo

"</table>\n"

/*

Or

error

}
echo

);
*/

else
(

"<p>Error:

"

nl2br

{
(

$response['faultString']

);

}
}
;?>
</body>
</html>
lit k danh sch tin, chng ta s dng phng thc news.getNewsList. Ch rng chng ta
thit lp $query_info['limit'] ti 10 (hin th ti a 10 tin) v $query_info['order'] c thit lp l
"author" (sp xp theo tn tc gi). y l cc tham s s c gi trong XML-RPC request ca
client. Khi hin th mt tin th $_GET['news_id'] xc nh id ca tin mun ly.
Cc hm XML-RPC c s dng:
- XMLRPC_prepare(): Ging nh s dng trong web_service_api.php.
- MLRPC_request(): Hm ny nhn 5 tham s v tr v mt mng.
$site: Tn min server.
$location: ng dn ti tp cha server script.
$methodName: Tn phng thc XML-RPC c gi
$params: Tham s cho phng thc
$user_agent: L ty chn, c th l bt k v d nh: HarryFsXMLRPCClient.
Mng tr v gm hai bin. Bin u tin l 0 nu li, l 1 nu thnh cng. Bin ny thng c
s dng check li. Bin th hai l mt mng nhiu chiu cha tt c d liu tr v.
- XMLRPC_convert_iso8601_to_timestamp: S dng trong hm convert_date(), chng ta s dng
hm c bit chuyn nh dng ngy t XML-RPC sang timestamp ca PHP.
By gi bn chy th a ch: http://localhost/kd_xmlrpc/client.php
+ nh gi
- S dng on m XML-RPC ca Keith Devens l cch d nht to Web Service cho chnh
bn, l ni tt nht bn tip cn vi Web Service. Vi v d trn bn c th nng cp lm sao
gip ngi dng bit c tin no l mi v c th h tr sp xp theo tc gi, theo tiu hay
theo ngy. Nu bn c k hoch ln lin quan ti Web Service bn c th s dng
lpphpxmlrpc ca Userland.
C ba vn chnh v security m chng ta phi quan tm. l:
+ Lm th no bn c th chng thc c XML-RPC Client: Trong mt vi trng hp bn cn tm
cch chng thc c site t xa. Hin ti bn c th c mt s cch:
- Bn kim tra remote site thng qua s dng a ch IP hoc tn host.
- Vi ngi dng t xa, bn c th s dng kim tra ngi dng da vo CSDL, yu cu username
v password trc khi cho php truy cp ti phng thc
- L tng nht l bn m ha kt ni gia Client/Server s dng SSL. Nhng khi bn phi s
dng cc hm Curl ca PHP gi v nhn d liu.
+ Lm th no iu khin c cc cuc tn cng t chi dch v (denial of service): iu g
s xy ra khi mt client lm lt server bng cc request v ngn cn server phn hi clien khc.

+ Lm th no m bn c th iu khin c ni m bn mun public API


Bn cng quan tm ti vn x l tc v mt cch trong sut vi ngi dng. iu g xy ra khi
client v server b mt kt ni trong mt cuc trao i s dng giao thc XML-PRC. C ch no
cho php gi li cc request v response, cc c ch hng i cho cc request v response. Bn
mun tm hiu k hn v vn ny, bn c th xem bi
bohttp://www.php.net/manual/en/ref.curl.php.
* S dng XML-RPC
Web Service theo ngha rng nht c th s dng kim tin cho nhng ngi s hu nhng d
liu c gi tr. Chng hn, nu bn truy cp ti t gi trao i tin t, bn c th phn pht mt b
chuyn i tin t cho cc Website khc. y chng ti a ra mt vi tng v chng c
thc hin:
+ Cung cp mt dng client khc gip cp nht website ca bn. XML-PRC cung cp:
- Cung cp mt giao tip gip cp nht website.
- Cho php chy client, client ny l mt ng dng Window chun
- Cp nht Website ng thi gian.
ez Systems thc s lm c iu ny, n cung cp mt client chy trn desktop cho h thng
qun l ni dung ezPublish.
+ Kim tra li chnh t trn Website vi XML-RPC Spell Checker ca Stuffed Dog.
+ Phn pht bng thng bng cch chy CSDL ca bn trn mt Web Server, v c nhiu server
cung cp giao din tng tc truy cp ti CSDL thng qua XML-PRC. Nhng game c s lng
ngi chi ln thng s dng cch ny nh Planetarion.
+ Cho php trang PHP ca bn c th giao tip vi site vit bng ngn ng khc nh CGI/PERL
hay ASP. N cng cho php bo gi li m c khi nng cp PHP
+ Bn s dng Google Search Gateway, cho php bn hin th trc tip kt qu tm kim trn
Website ca bn.
+ Ly tt c cc tin t trang News is Free bng cch s dng XML-RPC Server ca chnh trang
ny cung cp.
+ V bn c th lm c rt nhiu th na...

So snh triu gi phng thc cc b v triu gi t xa


+ Triu gi cc b lun tr v kt qu, trong khi triu gi t xa c th khng nhn c kt qu do ng mng
b li (tt nhin khi hm phi c nh ngha ng)
+ Khi gi cc b, tham s truyn cho hm c t trong b nh Stack, trong khi triu gi t xa tham s phi
c ng gi v chuyn qua mng
+ Vic truyn tham s, a ch, i tng l hon ton khc nhau.
VD: Khi truyn con tr cho my xa, trn my bn tn ti con tr, trong khi my xa (my thc thi hm) khng
tn ti con tr .

Nguyn Tn Thnh

Tm hiu v hai lp Stub v Skel


1. Stub:
+ ng vai tr trung gian giao tip vi server
+ Nhn yu cu t client, ng gi tham s, i tng, v chuyn ln cho server
+ Nhn kt qu t server, m gooi1 v tr kt qu cho client
+ Tn ti c hai pha client v server
+ Cn cung cp cho n mt interface
2.Skel
+ Tng tc vi stub trn client
+ Nhn li triu gi phng thc t xa, gi hm thc thi phng thc, v gi tr kt qu xung stub
* Lu : Trong phin bn java 2.0 v mi hn khng cn khi nim Skel, n c tch hp trong stub.

Dang Quang

Re: [uit-mmt3:2087] Re: n tp lp trnh mng

Thnh c th tm tt dm mnh "C ch truyn tham s trong RMI" v "RMI Registry trong mt ng dng RMI"
c khng?hix, phn ny kh nhai vi

Mn Thng

Rt cm n Thnh nhit tnh h tr mn LTM cho anh em! Mi ngi


vo y gp go nu cm chung cng lp trng Tn Thnh ca chng ta
no :")

Unice Lockon

c cn hc COBRA ko zy b con? nh ba hc RMI thy ni ko c thi corba do ltmang ch c 3 ch thi --> ba


COBRA mnh cp, hay l thy i bt cht zy :(

Cng Nguyn Tun

Re: [uit-mmt3:2091] Re: n tp lp trnh mng

MNH VIT VI DNG ANH EM XEM GP DM NH !


- chy RMI registry cn tm rmiregistry trong th mc
(bin\rmiregistry.exe) ca th mc ci t Java.

-ng k i tng vi RMI:


Chng ta phi xc nh c v tr ca i tng t xa, RMI cung
cp mt my ch chuyn qun l tn l RMI Registry thc hin
chc nng ny.
-Qu trnh ng k bao gm:
+To mt Object t mt i tng t xa:
ExampleServer e = New ExampleServer();
+Khai bo i tng ny c kh nng truy xut t xa:
UnicastRemoteObject.exportObject(e);
+ng k i tng ny vi rmiregistry:
Naming.bind("//localhost/exam",e);
Mun s dng UnicastRemoteObject, chng ta cn phi khao bo
import
java.rmi.server.*;
Chng ta s dng phng thc rebind() trnh li trong trng
hp ny tn ti trong RMI Registry, ngc li chng ta cng c
th s dng phng thc bind(). Chng ta ch cn chy on m
ny mt ln n khi no tin trnh ca RMI Registry cn hot
ng. Thng tin trong registry khng c lu tr xung vnh vin
( persitent ).

Nguyn Tn Thnh

Truyn tham s trong RMI


1.Truyn i tng theo tham tr

+ Cc kiu d liu c bn nh String, int,


Date
+ N c tun t ha (seializable) sn
+ Khi gi phng thc c tham s, tham s
c t ng ng gi v chuyn qua li gia
hai lp stub v skel
2. Truyn theo tham chiu
+ p dng cho i tng mi c nh ngha
+ i tng phi ng k vi rmi registry
+ i tng phi ci t lp Remote, v phi
c ci t tun t ha, tc l phi
implements Serializable
+ Tham chiu c thc hin truy vn qua rmi
registry
+ Tham chiu n i tng s c tr v
di dng kt qu ca phng thc
+ Phi bin dch thnh stub v skel

Nguyn Tn Thnh

Tm hiu v RMI Registry


+ Server phi ng k i tng c php gi t
xa cho rmi registry
+ Client mun giao tip vi i tng t xa phi
thng qua RMI registry truy tm tham chiu
n i tng
+ RMI registry c qun l bi JDNI
+++JDNI trn client cho php lin lc vi rmi
registry
+++JDNI trn server ng k i tng vi rmi
registry
+ M hnh lm vic (xem trong file)
Ti liu nh km (1)

mo hinh rmiregistry.PNG
14 KB Xem Ti xung

Nguyn Tn Thnh

Quy trnh lm vic ca RMI


+ Server ng k i tng vi rmi registry thng
qua hm Naming.bind(), server phi gi hm
RemoteObject.exportObject() thng bo cho
my o java nhn din s tn ti
+ Client truy tm i tng, v nhn kt qu tr
v tham chiu n i tng t pha rmi registry
+ Client da vo giao tip interface gi n
phng thc ca i tng
+ Khi c gi, li gi s chuyn sang stub, stub
x l ng gi cc tham s v gi cho skel
+ Skel trc tip yu cu i tng, thc thi i
tng v tr v kt qu cho my khch.
Ti liu nh km (1)

mo hinh rmi.PNG
13 KB Xem Ti xung

Nguyn Tn Thnh

Np stub t xa thng qua web server


(1)Server ng k i tng vi rmi registry, yu
cu rmi registry truy tm i stub thng qua web
server
(2)RMI registry nhn yu cu, truy tm stub trong
CLASSPATH nhng khng c, theo s ch dn ca
server n tm n web server ly stub v,
ng thi ghi nh li ng dn n web server
(3)Client yu cu rmi registry tr v tham chiu
i tng, nhng client cha c stub, rmi registry
cho n bit a ch webserver n ln download
stub v
(4)Client yu cu webserver cung cp stub
(5)Client s dng stub giao tip vi server
Ti liu nh km (1)

rmi va web.PNG
9 KB Xem Ti xung

Le Van Thuong

Re: [uit-mmt3:2106] Re: n tp lp trnh mng

1.

Hy phn bit TCP v UDP

TCP/IP l mt h cc giao thc c gi l h giao thc IP, bao gm bn tng. Cn nh


rng TCP/IP khng phi l mt giao thc m thc s l mt h cc giao thc, v bao
gm cc giao thc mc thp khc nh IP, TCP, v UDP. UDP nm tng giao vn, pha
trn giao thc IP. Tng giao vn cung cp kh nng truyn tin gia cc mng thng qua
cc gateway. N s dng cc a ch IP gi cc gi tin trn Internet hoc trn mng
thng qua cc trnh iu khin thit b khc nhau. TCP v UDP l mt phn ca h giao
thc TCP/IP; mi giao thc c nhng u v nhc im ring ca n.
Cc nhc im ca UDP:
So vi TCP, UDP c cc nhc im nh sau: ( y, ch trnh by nhc im
ca UDP, cng chnh l u im ca TCP. V vy, s khng trnh by thm
v u im ca TCP)
Thiu cc tn hiu bt tay. Trc khi gi mt on, UDP khng gi cc tn hiu bt tay
gia bn gi v bn nhn. V th pha gi khng c cch no bit datagram n ch
hay cha. Do vy, UDP khng m bo vic d liu n ch hay cha.
TCP s dng cc ch s phin (session ID) duy tr cc lin kt gia hai host. UDP
khng h tr bt k phin no do bn cht phi lin kt ca n.
tin cy. UDP khng m bo rng ch c mt bn sao d liu ti ch.
gi d liu ti cc h thng cui, UDP phn chia d liu thnh cc on nh. UDP
khng m bo rng cc on ny s n ch ng th t nh chng c to
ra ngun. Ngc li, TCP s dng cc s th t cng vi s hiu cng v cc gi
tin xc thc thng xuyn, iu ny m bo rng cc gi tin n ch ng th t
m n c to ra.
Bo mt. TCP c tnh bo mt cao hn UDP. Trong nhiu t chc, firewall v
router cm cc gi tin UDP, iu ny l v cc hacker thng s dng cc cng UDP.
Kim sot lung. UDP khng c kim sot lung; kt qu l, mt ng dng UDP
c thit k ti c th lm gim bng thng ca mng.
Cc u im ca UDP ( y, ch trnh by u im ca UDP, cng chnh
l nhc im ca TCP. V vy, s khng trnh by thm v nhc im ca
TCP)

Khng cn thit lp lin kt. UDP l giao thc phi lin


kt, v th khng cn phi thit lp lin kt. V UDP khng
s dng cc tn hiu handshaking, nn c th trnh c
thi gian tr. chnh l l do ti sao DNS thng s
dng giao thc UDP hn l TCP-DNS s chm hn rt
nhiu khi dng TCP.
-

Tc . UDP nhanh hn so vi TCP. Bi v iu ny,


nhiu ng dng thng c ci t trn giao thc UDP
hn so vi giao thc TCP.
-

H tr hnh trng (Topology). UDP h tr cc lin kt


1-1, 1-n, ngc li TCP ch h tr lin kt 1-1.
-

Kch thc header. UDP ch c 8 byte header cho mi


on, ngc li TCP cn cc header 20 byte, v vy s
dng bng thng t hn.
-

UDP khng c bt k khi nim no v lin kt gia hai host. Mt socket gi tt


c d liu ti mt cng hoc nhn tt c d liu t mt cng m khng cn quan
tm host no gi. Mt DatagramSocket c th gi d liu ti nhiu host c lp
hoc nhn d liu t nhiu host c lp. Socket khng dnh ring cho mt lin
kt c th th no c nh trong giao thc TCP. Cc socket TCP xem lin kt mng
nh l mt lung: ta gi v nhn d liu vi cc lung nhp v lung xut nhn
c t socket. UDP khng cho php iu ny; ta phi lm vic vi tng gi tin.
Tt c d liu c t trong datagram c gi i di dng mt gi tin. Gi tin
ny cng c th nhn c bi mt nhm hoc cng c th b mt. Mt gi tin
khng nht thit phi lin quan n gi tin tip theo. Cho trc hai gi tin, khng
c cch no bit c gi tin no c gi trc v gi tin no c gi sau.

Le Van Thuong

Re: [uit-mmt3:2106] Re: n tp lp trnh mng

1.

Hy phn bit class InetAdress v InetSocketAddress trong Java

InetAddress

Lp InetAddress c s dng biu


din cc a ch IP trong mt ng dng
mng s dng Java. Khng ging vi
cc lp khc, khng c cc constructor
cho lp InetAddress. Tuy nhin, lp
InetAddress c ba phng thc tnh tr
v cc i tng InetAddress
Cc phng thc trong lp InetAddress
public static InetAddress
InetAddress.getByName(String
hostname)
public static InetAddress[]
InetAddress.getAllByName(String
hostname)
public static InetAddress
InetAddress.getLocalHost()
Tt c cc phng thc ny u thc
hin kt ni ti server DNS cc b
bit c cc thng tin trong i tng
InetAddress.

Lp ny ng gi a ch ca mt
Socket (a ch IP + port). N c th
l mt cp (hostname + port) trong
trng hp mun kt ni ti
hostname.
N cung cp mt i tng khng
th thay i c s dng cho mt
socket to lin kt, kt ni hoc
tr v gi tr.
N cng c chc nng ca lp
InetAddress l gi gn a ch IP v phn
gii tn ngc (t tn sang IP-t IP

sang tn).
Bao gm cc constructor sau:
InetSocketAddress(InetAddress a
ddr, int port)
InetSocketAddress(int port)
InetSocketAddress(String hostna
me, int port)

Le Van Thuong

Re: [uit-mmt3:2106] Re: n tp lp trnh mng

Hy trnh by hiu bit ca anh/ch v RMI

Thng thng cc chng trnh ca chng ta c vit di dng th tc hoc hm v


vic cc hm gi ln nhau, truyn tham s hay kt qu cho nhau v ch xy ra my
cc b. K thut RMI (Remote Method Invoke) mang ngha triu gi phng thc t
xa l cch thc giao tip gia cc i tng trong Java c m lnh ci t nm trn
cc my khc nhau c th triu gi ln nhau.
Mt chng trnh RMI thng bao gm 2 chng trnh ring bit, mt my ch v my
khch. Mt chng trnh my ch in hnh to ra mt s i tng t xa, to cc tham
chiu n cc i tng ny v i cho my khch gi cc phng thc trn cc i
tng ny. Mt chng trnh my khch c c mt tham chiu t xa cho mt hoc
nhiu i tng t xa trn my ch v sau gi phng thc trn chng. RMI cung
cp c ch m theo my ch v cc my khch giao tip v truyn thng qua li ln
nhau.
Cc ng dng RMI cn phi:

Xc nh v tr i tng t xa: ng dng c th s dng cc c ch khc nhau


c c cc tham chiu n cc n i tng t xa. V d, mt ng dng c th ng
k cc i tng t xa ca mnh thng qua c quan ng k RMI registry.

Giao tip vi i tng t xa: Thng tin chi tit ca vic lin lc gia cc i tng
t xa c x l bi RMI.

Ti cc lp nh ngha (interface) ca cc i tng v my khch:

i tng trn my khc giao tip t xa vi cc i tng trn my ch, i


tng trn hai my khng gi nhau trc tip m thng qua lp trung gian. Lp
trung gian ny tn ti c hai my: my khch ( ni gi phng thc ca i tng
t xa) v my ch ( ni i tng thc hin c ci t thc thi m lnh ca
phng thc). Pha my khch lp trung gian ny c gi l stub (lp my), pha
my ch lp trung gian ny c gi l skeletion (lp ni).

Le Van Thuong

Re: [uit-mmt3:2106] Re: n tp lp trnh mng

1. Hy nu nhng im khc bit c bn gia c ch triu gi phng thc cc b v


triu gi phng thc t xa (RMI)

Triu gi hm cc b :

Trong lp trnh Java thng thng th tt c cc i tng to nn mt


chng trnh s nm trn cng mt my v trong cng mt tin trnh hay

trn

cng

mt

my

Java

(JVM).

Khi mt i tng gi mt phng thc trn mt i tng khc th i


tng gi phi bit a ch vng nh ca i tng b gi v c th ch thay
i b m chng trnh my bt u chy trong mt i tng mi.
a ch ca i tng c gi c lu tr trong ngn xp ca my, v th
khi phng thc c gi tr v gi tr th a ch trong ngn xp s c
np li vo trong b m chng trnh my v tip tc thc thi tr li trong
i tng gi. Dy cc bc trn l chung i vi tt c cc ngn ng lp
trnh v thc thi trong mt tin trnh n, trn cng mt my

Phng thc gi hm t xa:


o Vic gi phng thc ca i tng t xa lun phc tp hn gi phng
thc cc b.
o Cc i tng trn hai my khc nhau hot ng trn hai tin trnh khc
nhau nn vic tham chiu n bin a ch hon ton khc nhau.

o Li gi phng thc t xa phi thng qua mng v c th b ngt


ngang do mng gp s c.
Cc tham s truyn cho i tng xa phi c ng gi v truyn qua
mng n vi phng thc thc s.

Nguyn Tn Thnh

T to b ng k i tng rmi registry


+ Mc nh java cung cp cho chng ta rmi
registry l b ng k i tng, chy port
1099, lun lng nghe, v chp nhn nhiu kt ni
t pha server, v cho php ng k nhiu i
tng

+ C th t to b ng k cho ring mnh bng


hm
LocateRegistry.createRegistry(1000); //to b
ng k port 1000
+ Khuyt im: Ch ng k c 1 i tng,
mun ng k nhiu i tng th phi to b
ng k khc, port khc.

Le Van Thuong

Re: [uit-mmt3:2106] Re: n tp lp trnh mng


Dch thng bo sang Ting Vit

RMI - Difference between RPC and RMI - Jan 30, 2009 at 18:10 pm by Vidya Sagar

Explain the difference between RPC and RMI.


RMI:

The remote objects are accessed by the references

Implements object to object implementation among different java objects to implement distributed
communication model.
- RMI passes the objects as parameters to remote methods.
- RMI invokes the remote methods from the objects

RPC:

The process is through methods / functions

Proxy server is involved in processing the procedure calls

Calls a procedure remotely like invoking the methods

The remoteness is not exactly transparent to the client

RMI - Difference between RPC and RMI - Aug 16, 2009 at 13:10 pm by Amit Satpute

RPC can be used to invoke functions through a proxy functions.


RMI can used to invoke methods of an object.
Dch khng ra b b con:))

Le Van Thuong

Re: [uit-mmt3:2112] Re: n tp lp trnh mng

Khng cn to b ng k khc, dng k thut Factory Service, 1 i tng c th sn sinh ra nhiu i tng.
Khi th ch cn 1 port, ta c th sn sinh ra v sinh i tng, rt d trong ci t v qun l. Ai cn thng tin
v Factory Service, lin h mnh. Ci ny ch l tm hiu thm, khng c thi.
2011/1/7 ?inh Ch? Th?nh <tanthanh...@gmail.com>
- hin th ni dung trch dn -

------------------------------------------------------------------------L Vn Thng
Trng i hc Cng ngh Thng Tin
Khoa Mng my tnh v truyn thng
Lp MMT03
T: 0979150964

Y!M: ami90s
E-mail: ami...@gmail.com

Le Van Thuong

Re: [uit-mmt3:2112] Re: n tp lp trnh mng

Trong ti liu ting Anh c on " RPC (Remote Procedure Call) is the
predecessor of RMI (Remote Method Invocation)" dch l RPC l tin thn ca RMI. Mnh s dch thm. Gi mi
cm nhn, ting Anh quan trng n mc no. Hzaiii

Nguyn Tn Thnh

Re: [uit-mmt3:2106] Re: n tp lp trnh mng

Vi cu hi: trnh by hiu bit v RMI theo mnh cn phi tr li nhiu lm:
1. tng ca RMI
2. C ch hot ng
3. Lp stub and skel
4. B ng k rmi registry
5. Np lp stub t xa
6. Truyn tham tr v tham chiu

7. Cc k thut nng cao: to b ng k ring, to chng trnh sn xut i tng, vn tng la v RMI
Qu nhiu...gn nh ht RMI lun, v ngi ta hi mnh hiu bit v RMI!

Le Van Thuong

Re: [uit-mmt3:2118] Re: n tp lp trnh mng

Cn theo mnh ngh ch l nhng hiu bit bnh thng v RMI thi. Ch trong khun kh 1 cu, lm ht tt c
nhng hiu bit nh vy, phi lm mt bi bo co mi ht . Nn theo mnh, ch nu s lc thi. Chc vy .
:)
2011/1/7 ?inh Ch? Th?nh <tanthanh...@gmail.com>
Vi cu hi: trnh by hiu bit v RMI theo mnh cn phi tr li nhiu lm:
- hin th ni dung trch dn -

- hin th ni dung trch dn -

Nguyn Tn Thnh

Re: [uit-mmt3:2112] Re: n tp lp trnh mng

Gi bun ng qu, i ng y. Mai cc bn ln y n bi tip nhen. Mnh thy hnh thc n bi ny rt hiu
qu. Gi thay v nh spam by b nh Thm Hi th mnh chuyn sang spam c tri thc i, xem ai post c
nhiu kin thc ln y nht. Nh l va post mi v phi va tr li bi post ca bn mnh na !
Anh em tp trung t k lc 500 bi post t y n ti mai coi.
Cc bn trong nhm qun tr qun l ph nhen, ai post bi by, ni dung khng r rng, khng c du ting vit
th delete ht!

3 bi vit b xa.

Le Van Thuong

Re: [uit-mmt3:2124] Re: n tp lp trnh mng

, qun 1 chuyn. Thy ni l phi vit xc tch, khng qu 2 trang giy. Mnh vit di qu, cc bn lc bt
chnh i nha. Mnh cng lc y, v t ci hnh vo cho n "xc tch". Mi thy mi , liu cm m gp mm thi. :
(
2011/1/7 ?inh Ch? Th?nh <tanthanh...@gmail.com>
Th ng ri, ti khng c sch v no i cht c, trong lc lm vic thy th no ni th y !

------------------------------------------------------------------------L Vn Thng
Trng i hc Cng ngh Thng Tin
Khoa Mng my tnh v truyn thng
Lp MMT03
T: 0979150964
Y!M: ami90s
E-mail: ami...@gmail.com

Thang Nguyen

Re: [uit-mmt3:2124] Re: n tp lp trnh mng

L sao th Thng @@ 2 trang giy l 1 cu gm l thuyt + code h?

You might also like