Remote Procedure Call Protocol

 

سلام

امروز در مورد پروتکل RPC مطالبی را خدمت شما دوستان عزیز ارائه خواهم کرد .

Remote Procedure Call که به اختصار آنرا RPC می نامیم در واقع پروتکلی است که به کاربر اجازه میدهد برنامه را از میزبان اجرا کند .

پروتکل RPC اطلاعاتی که بین کامپیوترهای کلاینت و سرور شرپوینت رد و بدل میشود را کنترل میکند .

نکته
: پروتکل ارتباطات ( Communications Protocol ) لایه ای است در بالای
پروتکل HTTP که مرورگرها برای انجام فعل و انفعال با وب سرور از آن
استفاده میکنند .

پروتکل RPC چگونه کار میکند ؟

این پروتکل با
استفاده از HTTP Post Request ، متدها ( که همان درخواست های کاربر میباشد
) را به شرپوینت سرویس ارسال میکند ، این درخواست ها ( Requests ) ، این
اجازه را به کاربر میدهد تا بتواند درخواست یک سند را بدهد ، یک وظیفه را
به روز کند ،یک سند را در مخزن اسناد آپلود کند ، یک آیتم را ویرایش کند و

مقادیری که بازگشت
داده میشوند شامل اطلاعاتی در مورد درخواست کاربر میباشند که در قالب یک
فرم HTML به کلاینت تحویل داده میشود ، پس پروتکل RPC از دو بخش تشکیل
میشود ، بخش اول متدهایی ( Methods ) است که شامل درخواست های کاربر
میباشد و بخش دوم مقادیر بازگشتی ( Returns Value ) که نتایج درخواست را
به کاربر نمایش میدهد.

حال که متوجه شدیم این پروتکل چیست میخواهیم یک مثال عملی را در اینجا بیان کنیم تا بیشتر با قابلیت های این پروتکل آشنا شویم .

دریافت اطلاعات لیست ها با استفاده از RPC Protocol

در این مثال برنامه ای خواهیم نوشت که اطلاعات لیستها را با استفاده از این پروتکل به ما نشان میدهد .

برنامه ما شامل ۳
تکست باکس میباشد که اولی آدرس سایت که همان آدرس سرویس endpoint ما
میباشد را از کاربر دریافت میکند ، تکست باکس دوم Request ما را دریافت و
تکست باکس سوم پاسخی است که از سرور دریافت میکنیم :

کد زیر به شما نشان میدهد که چطور یک درخواست بر روی آدرس مورد نظر ایجاد و سپس پاسخ مورد نظر را دریافت کنیم :

HttpWebRequest objRequest = (HttpWebRequest)HttpWebRequest.Create(txtSiteUrl.Text);

objRequest.Method = WebRequestMethods.Http.Post;

objRequest.Credentials = CredentialCache.DefaultCredentials;

objRequest.Headers.Add("X-Vermeer-Content-Type", "application/x-www-form-urlencoded");

objRequest.ContentType = "application/x-www-form-urlencoded";

StreamWriter sw = new StreamWriter(objRequest.GetRequestStream());

sw.Write(txtRequest.Text);

sw.Close();

HttpWebResponse objResponse = objRequest.GetResponse() as HttpWebResponse;

StreamReader sr = new StreamReader(objResponse.GetResponseStream());

txtResponse.Text = sr.ReadToEnd();

sr.Close();

objResponse.Close();

همانطور که ملاحظه
میکنید با استفاده از کلاسهای HttpWebRequest و HttpWebResponse اطلاعات
مورد نظر را از سرور دریافت و در داخل تکست باکس سوم نمایش میدهیم .

در این مثال ما از متد List Documents استفاده میکنیم که شامل پارامترهای زیر میباشد :

method=list documents:server_extension_version

&service_name=/&listHiddenDocs=(true|false)&listExplorerDocs=

(true|false)

[&platform=client_os]&initialURL=url&listRecurse=(true|false)

&listLinkInfo=(true|false)&listFolders=(true|false)&listFiles=

(true|false)

&listIncludeParent=(true|false)&listDerived=(true|false)&listBorders= (true|false)

پس از اجرای
برنامه ما متد List Documents را در قسمت Request وارد میکنیم ، همچنین
آدرس سرویس را و نتیجه کار را میتوانید در شکل زیر ملاحظه نمایید :

همانطور که می بینید نتیجه در قالب HTML برگشت داده میشود .

از این پروتکل
استفاده های بسیار زیادی میشود ، به ویژه در کار با برنامه های کلاینت /
سرور ، شما میتوانید با این پروتکل با سرعت بسیار زیادی اطلاعات را دریافت
یا ارسال کنید ، به طور مثال با استفاده از متد Put شما میتوانید در هر
ثانیه اقدام به ارسال چندین فایل کنید که در بسیاری از پروژه ها بسیار
کاربردی است .

کدهای مربوط به مطلب امروز را میتوانید از اینجا دریافت کنید .

همچنین لیست کامل متدهای پروتکل RPC  را از اینجا میتوانید مشاهده نمایید.

موفق و پیروز باشید .

 

پاسخ دهید