PHP, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, RPC рдФрд░ рдЕрдиреНрдп рдбрд░рд╛рд╡рдиреЗ рд╢рдмреНрдж

рд╣рдо рд╕рднреА рдпрд╣рд╛рдВ рд╕реНрдорд╛рд░реНрдЯ, рд╢рд┐рдХреНрд╖рд┐рдд, рд╕реБрдВрджрд░ рдФрд░ рдЕрдиреБрднрд╡реА рд╣реИрдВред рдФрд░ рдЖрдЬ, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓рдЧрднрдЧ рд╣рд░ рдХреЛрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдкреАрдПрдЪрдкреА рдХреЗ рдмреАрдЪ рдЗрд╕ рдпрд╛ рдЙрд╕ рддрд░рд╣ рдХреЗ рдЖрд░рдкреАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдПрдкреАрдЖрдИ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рдЕрдкрдиреА рдмреИрд╕рд╛рдЦреА рдФрд░ рдкреНрд░реЙрдк рдХрд╛ рднреА рд╡рд┐рдХрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реВрдВред рд╕рдЪ рд╣реИ, рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рддрд┐рд░реЛрдз рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛рдпрд╛, рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЖрд▓реЗрдЦ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ PHP рдХреЗ рд▓рд┐рдП XML \ JSON RPC рдХреЗ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред



рдкреГрд╖реНрдарднреВрдорд┐ рдРрд╕реА рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдбреЗрдЯрд╛ DBMS рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡реЗрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдкрд╕рдВрдж рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдирд╣реАрдВ рдереА - рд╕реНрдорд╛рд░реНрдЯ рдЬреИрд╕реЗ рд░реЗрдбреА-рдореЗрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ PHP рдХреНрд╡рд┐рдХ-рдХреЛрдбрд┐рдВрдЧ, рдпрд╛ рдПрдорд╡реАрд╕реАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд▓рдЧрднрдЧ рдЙрд╕реА рд╕рдордп, рдореИрдВрдиреЗ рдПрдХреНрд╕рдЯреАрдЬреЗрдПрд╕ (рдЙрд░реНрдл рд╕реЗрдиреНрдЪрд╛) рдФрд░ рдХреНрдпреВрдУрдХреНрд╕рдбреВ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдЖрдкрдХреЛ рдердХрд╛рдК рдПрдЪрдЯреАрдПрдордПрд▓ рд▓реЗрдЖрдЙрдЯ, рдПрдЪрдЯреАрдПрдордПрд▓ / рдПрдХреНрд╕рдПрдордПрд▓ рдкреАрдврд╝реА, рдПрдХреНрд╕рдПрд╕рдПрд▓рдЯреА рд░реВрдкрд╛рдВрддрд░рдг, рдФрд░ рдХрдИ рдЕрдиреНрдп "рдбрд░рд╛рд╡рдиреЗ" рдмрд┐рдирд╛ рдкреВрд░реНрдг рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред ┬╗MVC рдФрд░ PHP bydcode рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреАрдЬреЗрдВред рдЗрд╕рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛ рдЧрдИ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдореЙрдбрд▓ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдореЛрдЯрд╛ рдЧреНрд░рд╛рд╣рдХ рд╣реИ, рдФрд░ рдПрдорд╡реАрд╕реА рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреЛ рд╣реБрдЖ, рдЕрдВрдд рдореЗрдВ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд▓реНрдк qooxoo рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ - рдпрд╣ рдПрдХ GNU рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╣реИ рдФрд░, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕рдХрд╛ рдХреЛрдб рдЕрднреА рднреА OJ рдФрд░ FP рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ extJS рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдШреЛрд╖рдгрд╛рддреНрдордХ JSON рд╢реИрд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд░реАрдм рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рд▓реЗрдХрд┐рди рдЖрд░рдкреАрд╕реА рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЯрд┐рдВрдХрд░ рдерд╛ред



рдореИрдВ рдХреБрдЫ рд╣рд▓реНрдХрд╛, рд╕реНрд╡рддрдВрддреНрд░, рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп, рд╕рд░рд▓ рдФрд░ рдЖрдзрд╛ рдХрд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ code.google.com/p/json-xml-rpc рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ PHP рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде RPC рдХрд╛ рдПрдХ рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬреЛ XML рдФрд░ JSON рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓, рдЬреЛ рдмрд╛рдж рдореЗрдВ рдорд╣рддреНрд╡рд╣реАрди рдирд╣реАрдВ рдереЗред рдЕрдЧрд▓рд╛ рдХрджрдо рдЖрд░рдкреАрд╕реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдерд╛, рд╕рд╛рде рд╣реА рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рдЕрднрд┐рдЧрдо рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХреА рдкреНрд░рдгрд╛рд▓реА рднреА рдереАред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред So.



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдУрдУрдкреА рд╕реНрдХреВрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, PHP рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрднреА-рдХрднреА рдЦреБрдж рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ OOP рдкрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рди рдХреЗрд╡рд▓ рд╕рдВрднрд╡ рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрд╡рд╢реНрдпрдХ рднреА рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд╛рдо рдХреЗ рдРрд╕реЗ рдкрд╣рд▓реБрдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╕рддреНрд░, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЙрд╕рдХреА рднреВрдорд┐рдХрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдЖрд░рдкреАрд╕реА рдкреНрд░реЙрдХреНрд╕рд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдЬреЛ рди рдХреЗрд╡рд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ PHP рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рдзрд┐ рдХреЙрд▓ рддрдХ рдЗрди рд╡рд░реНрдЧреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВред



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ PHP рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд╛рд░реНрдп рдФрд░ рдХреЛрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рд╣реИ:
class Test {

public function mul ($param1, $param2) {

return $param1 * $param2;

}

}




* This source code was highlighted with Source Code Highlighter .




рд╣рдо рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╕рдЯреАрдХ рдПрдХ рд╣реА рд╡рд░реНрдЧ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
var test = new Test();

var result = test.foo(1,2);



* This source code was highlighted with Source Code Highlighter .




рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЖрдЗрдП рдЗрд╕реЗ рд╢рд╛рд▓реАрдирддрд╛ aip / Test.php рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде:
include '../base/IRPCProxy.inc' ;



class Test extends IRPCProxy {

public function mul ($param1, $param2) {

return $param1 * $param2;

}

}



IRPCProxy::populate( new Test());



* This source code was highlighted with Source Code Highlighter .




рдФрд░ рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ (рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛ рд╣рдореЗрдВ рдЗрд╕реЗ test.html рдХрд╣рддреЗ рд╣реИрдВ):
var test = new rpc.ServiceProxy( 'api/Test.php' , { asynchronous: false });

var result = test.mul (19, 7);



* This source code was highlighted with Source Code Highlighter .




рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, PHP рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╛ JavaScript рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ PHP рдореЗрдВ IRPCProxy рд╕реЗ рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ "рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ" рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рджреВрд░рд╕реНрде рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рджрд┐рдЦрддрд╛ рд╣реИред



рдЕрдм рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рд▓рд┐рдПред RPC рдкреНрд░рдгрд╛рд▓реА рдХреЛ рди рддреЛ рд╕рддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рди рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рди рд╣реА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЙрдирдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрд╣ рд╕рдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рд╡рд░реНрдЧреЛрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕рдВрд╕реНрдерд╛рдПрдВ: рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрдм PHP рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ RPC рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣рд░ рдмрд╛рд░ рдЙрддреНрдкрдиреНрди рдФрд░ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рддреНрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдХреЛрдб рдХреЛ рд╕рддреНрд░ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд▓рд╛рднрджрд╛рдпрдХ рд╣реЛрдЧрд╛, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдФрд░ рд╕рддреНрд░ рдХреЛрдб рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА, рдКрдкрд░ рд▓рд┐рдЦрд╛ рдХреЛрдб рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдЖрдк рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЖрд▓рд╕реА рд╣реЛрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╣реА рд▓реЙрдЧрд┐рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдФрд░ рднреВрдорд┐рдХрд╛ рдмрджрд▓рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ (рдлрд╝рд╛рдЗрд▓ рдирд┐рд╣рд┐рдд / TestUserfc):
/**

* RPC user implementation

* @author alexander.voronin@gmail.com

*/

class TestUser extends IRPCUser {

/**

* @see IRPCUser::authorize()

*/

public function authorize ( $login, $password ) {

if ( $login == "test" ) {

$ this ->login = $login;

$ this ->role = "admin" ;

return true ;

} else {

IRPCProxy::logText( "Authorization failed for user '$login' - invalid login" );

return false ;

}

}

};



* This source code was highlighted with Source Code Highlighter .




рдЖрдЧреЗ рд╣рдореЗрдВ рдПрдХ рд╕рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЛ рднреНрд░рдорд┐рдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рд╕рддреНрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╕рд░реНрдЧ "рдкрд░реАрдХреНрд╖рдг" (рдлрд╝рд╛рдЗрд▓ рдирд┐рд╣рд┐рдд / TestSession.inc) рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
require_once '../base/IRPCSession.inc' ;



/**

* RPC session implementation

* @author alexander.voronin@gmail.com

*/

class TestSession extends IRPCSession {

/**

* Reload CTOR and create own session namespace

*/

function __construct () {

parent::__construct( "test" );

}

};



* This source code was highlighted with Source Code Highlighter .




рдФрд░ рдЕрдВрдд рдореЗрдВ, рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрд╡рдпрдВ "рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХрд┐ рд╣рдо рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдЕрдкрдиреА (рдирд┐рд╣рд┐рдд / RPCTestProxy.inc рдлрд╝рд╛рдЗрд▓):
// base

require_once '../base/IRPCProxy.inc' ;

// implementations

require_once 'TestSession.inc' ;

require_once 'TestUser.inc' ;



/**

* RPC proxy implementation

* @author alexander.voronin@gmail.com

*/

class TestProxy extends IRPCProxy {

/**

* @see IRPCProxy::createSession()

* @return TestSession

*/

public function createSession() {

return new TestSession();

}

/**

* @see IRPCProxy::createUser()

* @return TestUser

*/

public function createUser() {

return new TestUser();

}

}



* This source code was highlighted with Source Code Highlighter .




рдЕрдм рд╣рдо PHP рдореЗрдВ рд╣рдорд╛рд░реЗ RPC рдХреЛрдб рдореЗрдВ рднреВрдорд┐рдХрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рдЕрдиреБрд░реЛрдз рдкрд░ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХреЛрдб рд╕рддреНрд░ рдбреЗрдЯрд╛ рдореЗрдВ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреИрд╢реНрдб рдХреЛрдб рдХреА рдХреБрдВрдЬреА рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рддреНрд░ рдЙрдкрд╕рд░реНрдЧ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдкрддрд╛ рдХреЛрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЖрдк рдХреИрд╢ рдХреЛ рдХреЗрд╡рд▓ рд╕рддреНрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдпрд╛ рдХреИрд╢реНрдб рдХреЛрдб "рд╕реАрдзреЗ" рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдХреЗ рд░реАрд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЛрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдкрдардиреАрдп рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдзрд┐рдХрд╛рд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдПрдкреАрдЖрдИ / рдЯреЗрд╕реНрдЯ. рдПрдлрдкреА рдлрд╛рдЗрд▓):
<?php



include '../impl/RPCTestProxy.inc' ;



class Test extends RPCTestProxy {

function haveAccess ( $method ) {

switch ( $ this ->getUser()->getRole()) {

case "anonymous" :

switch ( $method ) {

case "mul" :

case "getRole" :

case "sessionLogin" :

return true ;

default :

return false ;

}

case "admin" :

return true ;

default :

return false ;

}

}



public function mul ($param1, $param2) {

return $param1 * $param2;

}



public function getRole () {

return $ this ->getUser()->getRole();

}



public function sessionLogin ($login) {

if ( $ this ->authorize($login, "" )) {

return true ;

} else {

return false ;

}

}



public function sessionLogout () {

$ this ->logout();

}



public function forAdmins () {

return "hello admin" ;

}

}



IRPCProxy::populate( new Test());



?>




* This source code was highlighted with Source Code Highlighter .




рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдмрд╕ рдЙрдирдХреЗ рдирд╛рдо рд╕реЗ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╡рд░реНрддрдорд╛рди рднреВрдорд┐рдХрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рд╣рдордиреЗ sessionLogin рдкрджреНрдзрддрд┐ рдХреЛ рднреА рдЬреЛрдбрд╝рд╛, рдЬреЛ рд╣рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рд╕реЗрд╢рдирд▓реЙрдЧрдЖрдЙрдЯ рдХреЗ рдмрд┐рдирд╛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рддреНрд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ - рд╕рдм рдХреБрдЫ рдмрд╕ рд╡рд╣рд╛рдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдлрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдКрдкрд░ рд╕рд╣рдордд рдереЗ, рднреВрдорд┐рдХрд╛ рдмрджрд▓ рджреЗрдЧрд╛ред рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдПред рдЕрдм рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:
// simple log

function log ( msg ) {

document .write( 'LOG: ' + msg + '\n' );

}

var start = new Date();



// RPC init

var test = new rpc.ServiceProxy( 'api/Test.php' , { asynchronous: false });



log( 'Test calls: ' + test.system.listMethods());

log( 'Role: ' + test.getRole());



var result = test.mul (19, 7);

log ( 'Test result: ' + result );



// try to login with invalid credentials

if ( !test.sessionLogin ( 'vasya' )) {

log ( 'Login failed!' );

} else {

log ( 'Login success!' );

}

// check role after login

log( 'Role: ' + test.getRole());



// now try to login with valid credentials

if ( !test.sessionLogin ( 'test' )) {

log ( 'Login failed!' );

} else {

log ( 'Login success!' );

}

// check role after login

log( 'Role: ' + test.getRole());



// must reinit RPC to get access to new methods

test = new rpc.ServiceProxy( 'api/Test.php' , { asynchronous: false });

log( 'Test calls: ' + test.system.listMethods());

log( 'Admin test: ' + test.forAdmins());



// logout now

log ( 'Logout now...' );

test.sessionLogout();

// check role after login

log( 'Role: ' + test.getRole());



// check timing

var stop = new Date();

var testTime = stop.getTime() - start.getTime ();

log ( 'Test time: ' + testTime + 'ms' );



* This source code was highlighted with Source Code Highlighter .




рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЛ рдмрд╛рд░ рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдмрджрд▓рддрд╛ рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдкреАрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдбреЗрдЯрд╛ рд╡рд╛рд▓рд╛ рд╕рддреНрд░ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рдХреЛ рдЕрдирд╛рдо рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдРрд╕реЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣реИ:



LOG: Test calls: mul,getRole,sessionLogin,system.setJSONDateFormat,system.setDBResultIndexType

LOG: Role: anonymous

LOG: Test result: 133

LOG: Login failed!

LOG: Role: anonymous

LOG: Login success!

LOG: Role: admin

LOG: Test calls: mul,getRole,sessionLogin,sessionLogout,forAdmins,system.setJSONDateFormat,system.setDBResultIndexType

LOG: Admin test: hello admin

LOG: Logout now...

LOG: Role: anonymous

LOG: Test time: 212ms








рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ HTML рд▓реЗрдЖрдЙрдЯ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡реЗрдм рдкреНрд░рдгрд╛рд▓реА рдорд┐рд▓ рдЧрдИред рдореИрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХреЛрдб рдХреЛ рд╢реБрджреНрдз, рдмрд┐рдирд╛ рдкрдврд╝реЗ PHP рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЖрд░рдкреАрд╕реА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдкрдиреА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ, рдирд╛рд▓реЛрдВ рдФрд░ рддрд╛рдордЭрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдорд┐рдд рдХреНрдпреВрдУрдХреНрд╕рдбреВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдорд╡реАрд╕реА рд╕рджреА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рднрдЧрд╡рд╛рди рдХрд╛ рд╢реБрдХреНрд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ!



рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореИрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЬрд╝рд░реВрд░ - RPC рдзреАрдореА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЖрд░рдкреАрд╕реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрд░рдкреАрд╕реА рдХреЙрд▓ рдХреЗ рд╕рдордп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлреНрд░реАрдЬрд╝ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдб рд╕реНрд╡рдпрдВ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдПрдХ рджрд░реНрдЬрди рдЖрд░рдкреАрд╕реА рдХреЙрд▓ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рд╡рд┐рдзрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреНрдпрд╛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред



RPC рд░реИрдкрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдбрд┐рдкреЙрдЬрд╝рд┐рдЯрд╛рдЗрд▓реНрд╕ . com / files / xsnid5wg9 рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдХреГрдкрдпрд╛ рд▓реЗрдЦрдХ рдХреЛ рджреЗрдЦреЗрдВ рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдХрд╣реАрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж



рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛, рд╕реБрдВрджрд░ рдФрд░ рд╕реНрдерд┐рд░ рдХреЛрдб!



All Articles