Rpc فراخوانی روش از راه دور چیست. تماس رویه از راه دور

هدف این مقاله بحث در مورد اصطلاحات است. مقاله در مورد چگونگی و چرایی نیست، بلکه صرفاً در مورد استفاده از اصطلاحات است. مقاله منعکس کننده نظر نویسنده است و تظاهر به علمی بودن ندارد.

مقدمه

اگر در زمینه برنامه نویسی کار می کنید سیستم های توزیع شدهیا در یکپارچه سازی سیستم ها، پس بیشتر مواردی که در اینجا ارائه می شود برای شما جدید نیست.

مشکل زمانی به وجود می آید که افرادی هستند که استفاده می کنند فن آوری های مختلفو زمانی که این افراد مکالمات فنی را شروع می کنند. در این مورد، سوء تفاهم های متقابل اغلب به دلیل اصطلاحات ایجاد می شود. در اینجا سعی خواهم کرد اصطلاحات مورد استفاده در زمینه های مختلف را گرد هم بیاورم.

اصطلاحات

هیچ اصطلاح و طبقه بندی مشخصی در این زمینه وجود ندارد. اصطلاحات استفاده شده در زیر بازتابی از مدل نویسنده است، یعنی کاملاً ذهنی است. هر گونه انتقاد و هر بحثی پذیرفته می شود.

من اصطلاحات را به سه حوزه تقسیم کرده ام: RPC (تماس از راه دور)، پیام رسانی و REST. این مناطق ریشه تاریخی دارند.

RPC

RPCفن آوری ها - قدیمی ترین فن آوری ها. برجسته ترین نمایندگان RPC عبارتند از - CORBAو DCOM.

در آن روزها، اتصال سیستم ها به صورت سریع و نسبتاً قابل اعتماد عمدتاً ضروری بود شبکه های محلی. ایده اصلی پشت RPC این بود که فراخوانی سیستم های راه دور را شبیه فراخوانی توابع در یک برنامه کند. تمام مکانیزم تماس های راه دور از برنامه نویس پنهان بود. حداقل سعی می کردند آن را پنهان کنند. برنامه نویسان در بسیاری از موارد مجبور شدند در سطح عمیق تری کار کنند، جایی که اصطلاحات مارشالینگ ظاهر شد. مارشال کردن) و unmarshalling(در روسی چگونه است؟)، که در اصل به معنای سریال سازی بود. فراخوانی‌های تابع عادی در فرآیندها در انتهای تماس گیرنده انجام می‌شوند پروکسی، و در سمت سیستمی که عملکرد را انجام می دهد، در دیسپچر. در حالت ایده آل، نه سیستم فراخوان و نه سیستم پردازش با پیچیدگی های انتقال داده بین سیستم ها سروکار نداشتند. همه این ظرافت ها در بسته نرم افزاری Proxy - Dispatcher متمرکز شده بودند که کد آن به طور خودکار تولید می شد.

بنابراین شما متوجه تفاوتی بین یک فراخوانی تابع محلی و یک فراخوانی تابع از راه دور نمی شوید، نباید متوجه شوید.
اکنون نوعی رنسانس RPC وجود دارد که برجسته ترین نمایندگان آن عبارتند از: Google ProtoBuf، Thrift، Avro.

پیام رسانی

با گذشت زمان، مشخص شد که تلاش برای محافظت از برنامه نویس از این واقعیت که تابع فراخوانی شده هنوز با تابع محلی متفاوت است، به نتیجه مطلوب منتهی نشد. جزئیات پیاده‌سازی و تفاوت‌های اساسی بین سیستم‌های توزیع‌شده بسیار زیاد بود که با استفاده از کد پروکسی تولید شده به‌طور خودکار قابل حل نبود. به تدریج درک شد که این واقعیت که سیستم ها توسط یک محیط غیر قابل اعتماد، کند و کم سرعت به هم متصل می شوند باید به صراحت در کد برنامه منعکس شود.

فن آوری ها ظاهر شده اند خدمات وب. شروع کردیم به صحبت کردن ABC: آدرس، الزام آور، قرارداد. کاملاً مشخص نیست که چرا قراردادها ظاهر شدند، که اساساً پاکت هایی برای استدلال های ورودی هستند. قراردادها اغلب به جای ساده کردن مدل کلی، آن را پیچیده می کنند. اما... مهم نیست.

اکنون برنامه نویس به صراحت ایجاد کرده است خدمات(خدمات) یا مشتری(مشتری) تماس با سرویس. این سرویس شامل یک مجموعه بود عملیات (عملیات) که هر کدام در ورودی دریافت کردند درخواست کنید(درخواست کنید) و صادر شد پاسخ دهید(پاسخ). مشتری به صراحت فرستاده شد(ارسال شد) درخواست، سرویس به صراحت دریافت کرد ( دریافت کنید) و به او پاسخ داد (فرستاد)، پاسخ را فرستاد. مشتری پاسخی دریافت کرد و تماس به پایان رسید.

درست مانند RPC، یک Proxy و Dispatcher در جایی در حال اجرا بود. و مانند قبل کد آنها به صورت خودکار تولید شد و برنامه نویس نیازی به درک آن نداشت. مگر اینکه کلاینت به طور صریح از کلاس های Proxy استفاده کند.

درخواست ها و پاسخ ها به صراحت به فرمتی تبدیل می شوند که برای انتقال از طریق سیم در نظر گرفته شده است. اغلب این یک آرایه بایتی است. تبدیل نامیده می شود سریال سازیو سریال زداییو گاهی اوقات در کد پروکسی پنهان می شود.
اوج پیام رسانی در پیدایش پارادایم ظاهر شد ESB (اتوبوس خدمات سازمانی). هیچ کس نمی تواند واقعاً بیان کند که چیست، اما همه قبول دارند که داده ها از طریق ESB به شکل پیام حرکت می کنند.

استراحت

در مبارزه مداوم با پیچیدگی کد، برنامه نویسان گام بعدی را برداشتند و ایجاد کردند استراحت.

اصل اصلی REST این است که عملیات تابع به شدت محدود شده و تنها مجموعه ای از عملیات باقی می ماند CRUD: ایجاد - خواندن - به‌روزرسانی - حذف. در این مدل، همه عملیات همیشه بر روی برخی از داده ها اعمال می شود. عملیات موجود در CRUD برای اکثر برنامه ها کافی است. از آنجایی که فناوری‌های REST در بیشتر موارد مستلزم استفاده از پروتکل HTTP هستند، دستورات CRUD در دستورات منعکس می‌شوند. HTTP (ارسال کنید - دریافت کنید - قرار دهید - حذف کنید) . دائماً گفته می شود که REST لزوماً به HTTP وابسته نیست. اما در عمل، انعکاس امضاهای عملیات بر روی دستورات HTTP به طور گسترده استفاده می شود. به عنوان مثال، فراخوانی تابع

EntityAddress ReadEntityAddress(string param1، string param2)

اینگونه بیان شده است:

GET: entityAddress?param1=value1¶m2=value2

نتیجه گیری

قبل از شروع بحث در مورد سیستم های توزیع شده یا یکپارچه سازی، در مورد اصطلاحات واضح باشید. اگر Proxy همیشه در زمینه های مختلف به معنای یکسان باشد، برای مثال درخواست در اصطلاحات RPC معنی کمی خواهد داشت و مارشال کردن باعث سردرگمی در هنگام بحث در مورد فناوری های REST می شود.

پس از راه اندازی مجدد کامپیوتر، سرویس شروع نشد. تماس رویه از راه دور (RPC)". خیلی به این سرویس بستگی دارد. در نتیجه، بازیابی سیستم کار نمی کند، محیط شبکه، صدا، Windows Installer، کنسول مدیریت (MMC) تقریباً کار نمی کند، در نوار وظیفه ظاهر نمی شود پنجره ها را باز کنو غیره و غیره تلاش برای شروع دستی منجر به خطا می شود " نمی توان...(RPC) در xxxComp شروع کرد. خطای 5: دسترسی ممنوع است"آنتی ویروس چیزی پیدا نکرد. دو روز حفاری و کامپیوتر دوباره زنده شد.

طبق توصیه مایکروسافت، اولین کاری که من سعی کردم پیدا کردن و حذف کلید رجیستری بود . من آن را نداشتم، شاید به دلیل برخی به روز رسانی های نصب شده.

بعد، تلاشی برای بازیابی پارامترهای سرویس در رجیستری. از آنجایی که regedit.exe فقط خواندن/حذف بود (عوارض جانبی دیگر)، امکان ایجاد تغییرات وجود نداشت. بله، نیازی به آنها نبود، زیرا ... همه چیز درست بود باید به این شکل باشد:

Windows Registry Editor نسخه 5.00 "Description"="نقشه بندی نقاط پایانی و سایر خدمات RPC را ارائه می دهد." "DisplayName"="تماس از راه دور (RPC)" "ErrorControl"=dword:00000001 "Group"="COM Infrastructure" "ImagePath"=hex(2):25,00,53,00,79,00,73, 00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ 74,00,25,00,5c,00,73,00,79,00,73,00 ,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\ 00,76,00,63,00,68,00,6f,00,73,00, 74,00,20,00,2d,00,6b,00,20,00,72,00,70,00,\ 63,00,73,00,73,00,00,00 "ObjectName"="NT AUTHORITY\\NetworkService" "Start"=dword:00000002 "Type"=dword:00000010 "FailureActions"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,\ 00,02,00,00,00,60,ea,00,00 "ServiceSidType"=dword:00000001 "ServiceDll"=hex(2):25.00 ,53 ,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\ 00,74,00,25,00,5c,00, 73, 00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\ 72,00,70,00,63,00,73,00 ,73,00,2e,00,64,00,6c,00,6c,00,00,00 "امنیت"=hex:01,00,14,80,a8,00,00,00,b4, 00, 00,00,14,00,00,00,30,00,00,00,02,\ 00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f ,00,01,01,00,00,00,00,00,01,00,00,\ 00,00,02,00,78,00,05,00,00,00,00,00, 14, 00,8d,00,02,00,01,01,00,00,00,00,00,\ 05,0b,00,00,00,00,00,18,00,ff,01,0f ,00 ,01,02,00,00,00,00,00,05,20,00,00,00,\ 20,02,00,00,00,00,18,00,8d,00,02, 00, 01,02,00,00,00,00,00,05,20,00,00,00,23,\ 02,00,00,00,00,14,00,9d,00,00,00,01 ,01,00,00,00,00,00,05,04,00,00,00,00,00,\ 18,00,9d,00,00,00,01,02,00,00, 00, 00,00,05,20,00,00,00,21,02,00,00,01,01,00,\ 00,00,00,00,05,12,00,00,00,01,01 ,00,00,00,00,00,05,12,00,00,00 "0"="Root\\LEGACY_RPCSS\\0000" "Count"=dword:00000001 "NextInstance"=dword:00000001

مقدار پارامتر شروع کنیدممکن است متفاوت باشد شما همچنان می توانید رجیستری را تغییر دهید، اما باید از آن بوت شوید فرمانده MS ERD.

من به سادگی مراحل بعدی را نقطه به نقطه شرح خواهم داد. ایده کلی این است که باید فایل ها را با فایل هایی جایگزین کنید که کار می کنند. آنها را می توان از دستگاه دیگری یا از دستگاه دیگری گرفت توزیع ویندوز(مثل من).

  • کنسول را راه اندازی کنید (شروع > اجرا: cmd)
  • cd z:\i386(توزیع ویندوز در آنجا)
  • explorer.ex_ %TEMP%\explorer.exe را گسترش دهید
  • svchost.ex_ %TEMP%\svchost.exe را گسترش دهید
  • راه اندازی Task Manager (Ctrl+Shift+Esc)
  • فرآیند exlporer.exe را متوقف کنید
  • %TEMP%\explorer.exe %SYSTEMROOT% /y را کپی کنید
  • همه چیز را متوقف کنید فرآیندهای svchost exe. توجه! پس از این، 60 ثانیه فرصت دارید تا دستگاه راه اندازی مجدد شود.
  • %TEMP%\svchost.exe %systemroot%\system32 /y را کپی کنید

این تظاهر نیز نتیجه ای نداشت. گزینه دیگر: اسکن تمام محافظت شده را اجرا کنید فایل های سیستمیبا جایگزینی نسخه های نادرست با نسخه های صحیح. در اجرای کنسول:

sfc /PURGECACHE- کش فایل ها را پاک کنید و بلافاصله فایل ها را بررسی کنید
sfc /SCANONCE- یک بار بررسی در بوت بعدی

کمکی نکرد. سپس یک حرکت کاملاً بی رحمانه بازگرداندن تنظیمات امنیتی است. دوباره در کنسول:

secedit /configure /cfg %windir%\repair\secsetup.inf /db secsetup.sdb /verbose

پس از راه اندازی مجدد، کامپیوتر شروع به کار کرد و خدمات اولیه شروع شد. یک مشکل جدید ظاهر شد (یا شاید از همان ابتدا وجود داشت): حداقل مدیریت دیسک و Windows Installer تحت حساب من شروع نشد. دسترسی رد شد. می توانید حقوق دسترسی به دیسک سیستم را از طریق کنسول به حالت "پیش فرض" بازگردانید:

secedit /configure /db %TEMP%\temp.mdb /Cfg %WINDIR%\inf\defltwk.inf /areas filestore

سپس باید حقوق هر حساب را به صورت دستی تعریف کنید. یا هر کدام راحت تر است، آنها را دوباره بسازید.

در مورد من، من به سادگی با استفاده از دسترسی به دیسک سیستم، حقوق یکسانی را به کل دیسک سیستم اختصاص دادم. من حساب دامنه خود را با حقوق کامل روی دیسک به استاندارد اضافه کردم. شاید از نقطه نظر امنیتی این اشتباه باشد، اما من وقت ندارم به هر دایرکتوری جداگانه بپردازم.

چه کار دیگری می شد کرد

در حالی که رایانه بیمار بود، این در رجیستری نبود:

"ActiveService"="RpcSs"

شاید اضافه کردن دستی به نحوی وضعیت را تغییر دهد.

تلاش برای شروع دستی سرویس، به عنوان مثال از طریق دستور " rcpss شروع خالص"به اشتباه به پایان رسید" خطای 5: دسترسی ممنوع است". من فرض می کنم دسترسی ممنوع است زیرا سرویس باید تحت حساب سیستم - "NT AUTHORITY" راه اندازی شود. پارامتر زیر در رجیستری وجود دارد:

"ObjectName"="NT AUTHORITY\\NetworkService"

من سعی می کنم اینجا حساب مدیریت را وارد کنم و دوباره سرویس را راه اندازی کنم. اما این تنها ایده ای است که به اجرا نرسید.

گزینه دیگر: از اکسپلویت KiTrap0D برای به دست آوردن یک کنسول با حقوق سیستم استفاده کنید. این اکسپلویت در مورد نوشته شده است. در واقع یک باینری. اما من به روز رسانی ویندوز دارم، بنابراین به نظر می رسد که این اکسپلویت دیگر کار نمی کند.

مواد مرتبط:

در سیستم عامل گنجانده شده است ویندوز هرتغییرات، که با نسخه XP شروع می شود، شامل یک جزء سرویس است که به عنوان RPC تعیین شده است. اکثر کاربران معمولی نمی دانند این چیست، حتی کمتر هیچ ایده ای برای این سرویس و نحوه عملکرد آن دارند. در این راستا، پیشنهاد می شود برخی از جنبه های اساسی مربوط به خود قطعه، اصول عملکرد و دامنه استفاده از آن، بدون توصیف اصطلاحات فنی غیر ضروری و پیچیده در نظر گرفته شود. اجازه دهید به طور جداگانه در مورد صحبت کنیم خطاهای احتمالیخدمات و روش هایی برای از بین بردن سریع آنها.

رویه های از راه دور (تماس های رویه از راه دور): چیست؟

ظاهراً بسیاری از کاربران بر اساس نام این مؤلفه خدمات، قبلاً به این نتیجه رسیده اند که چیست. در واقع، رویه‌های از راه دور (تماس‌های رویه از راه دور) زمانی که روی آن‌ها انجام نمی‌شوند، مستلزم برخی اقدامات هستند کامپیوتر محلی، اما از راه دور (اغلب روی سرور).

یعنی درخواست در یک ترمینال تولید می شود، سپس به ترمینال دیگر منتقل می شود و در آنجا اجرا می شود و پس از آن یک پاسخ (گزارش) در مورد اجرا به اولین کامپیوتر بازگردانده می شود. اما این فقط یک توضیح ابتدایی است. در واقع، همه چیز بسیار پیچیده تر است، زیرا پروتکل های انتقال داده (UDP، TCP، HTTP) و بسیاری از مکانیسم های دیگر باید در نظر گرفته شوند.

این سرویس برای چیست؟

علیرغم هدف اصلی آن، تماس از راه دور رویه های RPCممکن است استفاده نشود کامپیوترهای مختلف، اما در یک. به عنوان بیشترین مثال سادهمی توانید برخی از عملکردهای یک برنامه را از یک برنامه دیگر فراخوانی کنید. بسیاری از نوازندگانی که با استودیوهای مجازی و ترتیب‌دهنده‌ها کار می‌کنند، می‌دانند که هر کدام از این برنامه‌ها دارای ماژول ویرایش یا پردازش صدا هستند که همیشه نیازهای کاربر را برآورده نمی‌کند. و هر استودیویی به شما امکان می دهد هر برنامه خارجی دیگری را به جای آن متصل کنید.

برای مثال، در تنظیمات ترتیب‌دهنده FL Studio، می‌توانید برنامه دیگری (مثلا Adobe Audition) را که می‌خواهید ویرایش کنید، مشخص کنید. فایل های صوتی(نمونه ها) در محیط برنامه اصلی به صورت پیش فرض استفاده خواهند شد. در این حالت، اتصال Adobe Audition به FL Studio از طریق هاست های مجازی مانند VST، RTAS یا DX انجام نمی شود، بلکه مستقیماً از طریق استفاده از سرویس تماس رویه از راه دور انجام می شود. ناگفته نماند که این مثال تنها نیست، زیرا دامنه کاربرد مؤلفه توصیف شده بسیار گسترده تر است.

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

شکست فراخوانی روش از راه دور: دلیل آن چیست؟

متأسفانه به دلیل چنین تقاضایی، وقوع خرابی ها و خطاهای مرتبط با این سرویس یک اتفاق نسبتاً رایج است.

در نتیجه، نه تنها استفاده از خود جزء غیرممکن می شود. گاهی اوقات حتی نمی توانید به برخی از آنها دسترسی داشته باشید تنظیمات سیستمو ویندوز XP به طور کامل خراب می شود، پس از آن بازگرداندن آن به حالت عادی کار می تواند بسیار مشکل باشد. مشکل دیگر ابزار بازیابی آنلاین DISM است که با سیستم عامل ارائه می شود.

با نقض عملکرد آن است که ظاهر خطای 1726 همراه است که مستقیماً بر عملکرد اجزای سرویس RPC تأثیر می گذارد.

دلایل اصلی چنین خرابی هایی فراخوانی ابزارهای اسکن یا بازیابی سیستم در زمانی است که فرآیند DISM فعال است یا نمی تواند به درستی خاموش شود (به عنوان مثال، هنگامی که ابزارهای DISM و SFC به طور همزمان از دو کنسول فرمان شروع می شوند). هنگامی که سرویس به موازات سرویس اجزای RPC اجرا می شود. هنگامی که سرویس توسط نرم افزار آنتی ویروس مسدود می شود.

بنابراین، اگر با خرابی RPC در ویندوز 7 و بالاتر مواجه شدید، اولین کاری که باید انجام دهید این است که از DISM خارج شوید، رایانه خود را مجددا راه اندازی کنید و سرویس را دوباره راه اندازی کنید. اگر این کمکی نکرد، می توانید سعی کنید به حالت ایمن بروید و در طول فرآیند بازیابی آن را به طور کامل غیرفعال کنید. محافظت از آنتی ویروس. ما به طور جداگانه در مورد اقدامات اضافی صحبت خواهیم کرد که به تصحیح هرگونه خرابی در طول تماس روش از راه دور و در هر تغییری در ویندوز کمک می کند. در حال حاضر، بیایید به مسائل مربوط به غیرفعال کردن این مؤلفه سیستم نگاهی بیندازیم (افسوس، بسیاری از کاربرانی که اصل موضوع را نمی دانند سعی می کنند چنین کارهایی را انجام دهند).

آیا می توان سرویس RPC را غیرفعال کرد؟

بنابراین، بیایید ببینیم که غیرفعال کردن تماس‌های رویه از راه دور چقدر واقعی است. رویه های از راه دور، بر اساس توصیه های توسعه دهندگان، نباید تحت هیچ شرایطی غیرفعال شوند. این مهم است! در اصل، او به شما اجازه نمی دهد این کار را خودتان انجام دهید. البته راه‌حل‌هایی وجود دارد که شامل استفاده از موارد اضافی است نرم افزار، اما به دلایل واضح، نام چنین برنامه هایی ذکر نشده است، زیرا در صورت استفاده نادرست از آنها، کل سیستم می تواند غیرقابل استفاده شود.

پیامدهای غیرفعال کردن فرآیندهای RPC

حتی اگر کاربر بتواند به نحوی رویه های راه دور (تماس های رویه از راه دور) را غیرفعال کند، متأسفانه عواقب آن می تواند بسیار غیرقابل پیش بینی باشد. همانطور که قبلا ذکر شد، ویندوز XP ممکن است به طور کلی از کار بیفتد، و در یک سیستم عامل با رتبه بالاتر، ممکن است تعداد زیادی از خرابی های سیستم ظاهر شود که نمی توان آنها را حذف کرد، البته فقط به دلیل عدم دسترسی به تنظیمات بحرانی و تنظیمات ویندوز، و حتی در حالت امنیا هنگام شروع از رسانه قابل جابجایی. با این حال، تماس‌های رویه از راه دور در ویندوز 10 یا جدیدتر با شکست مواجه می‌شوند نسخه های قبلیسیستم عامل قابل تعمیر است. این روش ساده ترین نیست، بنابراین هنگام استفاده از آن باید بسیار مراقب باشید.

غیرفعال کردن مکان یاب دسترسی از راه دور

بنابراین، سرویس اصلی RPC را نمی توان غیرفعال کرد. اما شاید منطقی باشد که برخی از اجزای همراه آن را غیرفعال کنیم؟ بله، در واقع، اگر به بخش خدمات سیستم و اجزای آنها (services.msc) بروید، می توانید به اصطلاح RPC locator را در آنجا پیدا کنید.

اما می توان آن را بدون ترس از عواقب فاجعه بار غیرفعال کرد. پس از وارد شدن به ویرایش پارامترهای آن، باید عملکرد مؤلفه را متوقف کنید و نوع راه اندازی را غیرفعال کنید. برنامه هایی که می توانند از رویه های راه دور استفاده کنند به هر حال رویه های راه دور را فراخوانی می کنند (بدون کمک آن).

اگر بنا به دلایلی پارامترها را تنظیم کنیدکار نخواهد کرد، می توانید از ابزار نصب استفاده کنید دیسک ویندوز، هنگام بارگیری از آن، خط فرمان را فراخوانی کنید و موارد زیر را وارد کنید:

  • cd X:\i386 (X حرف درایو قابل جابجایی است).
  • گسترش explorer.ex_ %TEMP%\explorer.exe.
  • svchost.ex_ %TEMP%\svchost.exe را گسترش دهید.

پس از راه اندازی مجدد، "Task Manager" فراخوانی می شود و تکمیل می شود، سپس نسخه ترکیبی %TEMP%\explorer.exe %SYSTEMROOT% /y در خط فرمان نوشته می شود، پس از آن کاملاً تمام فرآیندهای svchost در پایان می یابند. "مدیر وظیفه". اکنون باید به ویژه مراقب باشید، زیرا پس از تکمیل فرآیندها، تنها در عرض شصت ثانیه باید زمان داشته باشید تا دستور کپی %TEMP%\svchost.exe %systemroot%\system32 /y را در کنسول فرمان وارد کنید.

اگر کاربر مثلاً در حالت عادی یا ایمن به رجیستری سیستم، در ویرایشگر (regedit) در شاخه HKCC باید پارامتر CSConfigFlags را پیدا کنید و مقدار صفر را به آن اختصاص دهید.

عیب یابی Crash 1726

در نهایت عیب یابی خطای 1726 نیز از طریق رجیستری انجام می شود. اما در این مورد، در شاخه HKLM باید دایرکتوری RpcSs را پیدا کنید و در سمت راست مقدار پارامتر Start را ویرایش کنید.

باید از چهار که معمولاً به صورت پیش‌فرض تنظیم می‌شود به دو تغییر داده شود و سپس سیستم را مجدداً راه‌اندازی کنید.

پس گفتار

در واقع، این تنها چیزی است که به فراخوانی رویه های از راه دور مربوط می شود. رویه های راه دور و اصول عملکرد این کامپوننت در یک نسخه توسعه یافته را می توان برای مدت طولانی شرح داد، اما تاکید در مطالب ارائه شده بر آشنایی کلی با سرویس و برخی روش های حذف خطاها و خرابی ها بود که می تواند باعث در سیستم کامپیوتری. کاربران عادی باید صبور باشند و بسیار مراقب باشند، زیرا یک عمل نادرست در رجیستری می تواند منجر به از کار افتادن کامل سیستم عامل شود.

لطفاً توجه داشته باشید که خرابی های این نوع را نمی توان با هیچ وسیله دیگری مانند برنامه های بهینه سازی و تنظیم کننده های پارامتر بدست آورد. سیستم عامل هاویندوز درست نیست با تمام آرزو خط فرمانو نه، علاوه بر این، تداخل در رجیستری در سطح کلیدهای ویرایش در چنین مواردی بسته های نرم افزاریارائه نشده است.

در فضای آدرس دیگری (معمولاً روشن است کامپیوترهای راه دور). به طور معمول، پیاده سازی فناوری RPC شامل دو جزء است: یک پروتکل شبکه برای ارتباط کلاینت-سرور و یک زبان سریال سازی شی (یا ساختارها برای RPC غیر شی). پیاده‌سازی‌های مختلف RPC معماری‌های بسیار متفاوتی دارند و در قابلیت‌هایشان متفاوت هستند: برخی معماری SOA را اجرا می‌کنند، برخی دیگر CORBA یا DCOM. در لایه انتقال، RPCها عمدتاً از پروتکل‌های TCP و UDP استفاده می‌کنند، با این حال، برخی از آنها بر روی HTTP ساخته شده‌اند (که معماری ISO/OSI را نقض می‌کند، زیرا HTTP ذاتا یک پروتکل انتقال نیست).

یوتیوب دایره المعارفی

    1 / 2

    تماس رویه از راه دور ناموفق بود. حل مشکل

    REST API در Yii2 قسمت 1. تئوری. XML-RPC، JSON-RPC، SOAP.

زیرنویس

پیاده سازی ها

فن آوری های زیادی وجود دارد که RPC را ارائه می دهد:

  • DCE/RPC - محیط محاسباتی توزیع شده / فراخوانی از راه دور (پروتکل باینری مبتنی بر پروتکل های حمل و نقل مختلف، از جمله TCP/IP و لوله های نامگذاری شده از پروتکل SMB/CIFS)
  • DCOM - جزء توزیع شده مدل شیمعروف به MSRPC Microsoft Remote Procedure Call یا "Network OLE" (یک پسوند شی گرا برای DCE RPC که به شما امکان می دهد ارجاعات را به اشیا ارسال کنید و روش های شی را از طریق چنین مراجعی فراخوانی کنید)
  • JSON-RPC - فراخوانی روش از راه دور نشانه گذاری شی جاوا اسکریپت (پروتکل متنی مبتنی بر HTTP) مشخصات را ببینید: RFC-4627
  • NET Remoting (پروتکل باینری مبتنی بر TCP، UDP، HTTP)
  • Java RMI - فراخوانی روش از راه دور جاوا - مشخصات را ببینید: http://java.sun.com/j2se/1.5.0/docs/guide/rmi/index.html
  • SOAP - پروتکل دسترسی به شیء ساده (پروتکل متنی مبتنی بر HTTP) مشخصات را ببینید: RFC-4227
  • Sun RPC (پروتکل باینری مبتنی بر TCP و UDP و XDR) RFC-1831 نام دوم ONC RPC RFC-1833
  • XML RPC (پروتکل متنی مبتنی بر HTTP) مشخصات را ببینید: RFC-3529

اصل

ایده فراخوانی رویه های از راه دور گسترش مکانیسم شناخته شده و قابل درک برای انتقال کنترل و داده در یک برنامه در حال اجرا بر روی یک ماشین برای انتقال کنترل و داده بر روی یک شبکه است. ابزارهای فراخوانی رویه از راه دور برای تسهیل سازماندهی محاسبات توزیع شده و ایجاد مشتری-سرور توزیع شده طراحی شده اند. سیستم های اطلاعاتی. بیشترین کارایی استفاده از RPC در برنامه هایی حاصل می شود که در آنها ارتباط تعاملی بین اجزای راه دور با زمان پاسخ سریع و مقدار نسبتاً کمی از داده های منتقل شده وجود دارد. چنین برنامه هایی RPC-oriented نامیده می شوند.

ویژگی های مشخصه فراخوانی رویه از راه دور عبارتند از:

  • عدم تقارن، یعنی یکی از طرفین تعامل، آغازگر است;
  • همزمانی، یعنی اجرای رویه فراخوانی از لحظه صدور درخواست به حالت تعلیق درآمده و تنها پس از بازگشت روال فراخوانی از سر گرفته می شود.

پیاده‌سازی تماس‌های راه دور بسیار پیچیده‌تر از اجرای تماس‌های رویه محلی است. ما می توانیم مشکلات و وظایف زیر را که باید در هنگام اجرای RPC حل شوند شناسایی کنیم:

  • از آنجایی که فرآیندهای فراخوانی و فراخوانی شده روی ماشین های مختلف اجرا می شوند، فضای آدرس متفاوتی دارند و این باعث ایجاد مشکلاتی در هنگام ارسال پارامترها و نتایج می شود، به خصوص اگر ماشین ها سیستم عامل های مختلفی را اجرا کنند یا معماری های متفاوتی داشته باشند (به عنوان مثال، کمی یا کمی اندیان). از آنجایی که RPC نمی تواند به حافظه مشترک تکیه کند، این بدان معنی است که پارامترهای RPC نباید حاوی نشانگرهایی به مکان های حافظه غیر پشته ای باشند و مقادیر پارامتر باید از یک رایانه به رایانه دیگر کپی شوند. برای کپی کردن پارامترهای رویه و نتایج اجرا در شبکه، آنها سریالی می شوند.
  • برخلاف تماس محلی، فراخوانی رویه از راه دور لزوماً از لایه انتقال استفاده می کند معماری شبکه(به عنوان مثال TCP)، با این حال این مورد از توسعه دهنده پنهان می ماند.
  • اجرای برنامه فراخوانی و رویه محلی فراخوانی شده روی یک ماشین در یک فرآیند واحد پیاده سازی می شود. اما اجرای RPC شامل حداقل دو فرآیند است - یکی در هر ماشین. اگر یکی از آنها از کار بیفتد، ممکن است شرایط زیر ایجاد شود: اگر رویه فراخوانی از کار بیفتد، رویه هایی که از راه دور نامیده می شوند "یتیم" می شوند، و اگر رویه های از راه دور از کار بیفتند، رویه های فراخوانی به "والدین یتیم" تبدیل می شوند، که بیهوده منتظر یک پاسخ از رویه های از راه دور
  • تعدادی از مشکلات مرتبط با ناهمگونی زبان‌های برنامه‌نویسی و محیط‌های عملیاتی وجود دارد: ساختارهای داده و ساختارهای فراخوانی رویه‌ای که در هر یک از زبان‌های برنامه‌نویسی پشتیبانی می‌شوند، در همه زبان‌های دیگر به یک شکل پشتیبانی نمی‌شوند. بنابراین، یک مشکل سازگاری وجود دارد که هنوز با معرفی یک استاندارد پذیرفته شده عمومی یا با اجرای چندین استاندارد رقیب در همه معماری ها و در همه زبان ها حل نشده است.

زیرسیستم ها

  • زیر سیستم حمل و نقل
- مدیریت ارتباطات خروجی و ورودی
  • - پشتیبانی از مفهوم "مرز پیام" برای پروتکل های حمل و نقل که مستقیماً از آن پشتیبانی نمی کنند (TCP).
  • - پشتیبانی از تحویل تضمین شده برای پروتکل های حمل و نقل که مستقیماً از آن پشتیبانی نمی کنند (UDP).
  • استخر نخ (فقط کاله). زمینه اجرای کدهای فراخوانی شده در شبکه را فراهم می کند.
  • مارشالینگ (همچنین "سریال سازی" نامیده می شود). بسته بندی پارامترهای فراخوانی در یک جریان بایت به روشی استاندارد که به معماری (به ویژه ترتیب بایت ها در یک کلمه) بستگی ندارد. به طور خاص، می‌تواند آرایه‌ها، رشته‌ها و ساختارهایی که توسط پارامترهای اشاره‌گر به آن‌ها اشاره می‌شوند را تحت تأثیر قرار دهد.

رمزگذاری بسته ها و اعمال امضای دیجیتال بر روی آنها.

هدف این مقاله بحث در مورد اصطلاحات است. مقاله در مورد چگونگی و چرایی نیست، بلکه صرفاً در مورد استفاده از اصطلاحات است. مقاله منعکس کننده نظر نویسنده است و تظاهر به علمی بودن ندارد.

مقدمه

اگر در زمینه برنامه نویسی کار می کنید سیستم های توزیع شدهیا در یکپارچه سازی سیستم ها، پس بیشتر مواردی که در اینجا ارائه می شود برای شما جدید نیست.

احراز هویت و مجوز. انتقال اطلاعات از طریق شبکه ای که فرد تماس را شناسایی می کند.

اصطلاحات

هیچ اصطلاح و طبقه بندی مشخصی در این زمینه وجود ندارد. اصطلاحات استفاده شده در زیر بازتابی از مدل نویسنده است، یعنی کاملاً ذهنی است. هر گونه انتقاد و هر بحثی پذیرفته می شود.

من اصطلاحات را به سه حوزه تقسیم کرده ام: RPC (تماس از راه دور)، پیام رسانی و REST. این مناطق ریشه تاریخی دارند.

RPC

RPCفن آوری ها - قدیمی ترین فن آوری ها. برجسته ترین نمایندگان RPC عبارتند از - CORBAو DCOM.

در آن روزها، اتصال سیستم ها از طریق شبکه های محلی سریع و نسبتاً قابل اعتماد عمدتاً ضروری بود. ایده اصلی پشت RPC این بود که فراخوانی سیستم های راه دور را شبیه فراخوانی توابع در یک برنامه کند. تمام مکانیزم تماس های راه دور از برنامه نویس پنهان بود. حداقل سعی می کردند آن را پنهان کنند. برنامه نویسان در بسیاری از موارد مجبور شدند در سطح عمیق تری کار کنند، جایی که اصطلاحات مارشالینگ ظاهر شد. مارشال کردن) و unmarshalling(در روسی چگونه است؟)، که در اصل به معنای سریال سازی بود. فراخوانی‌های تابع عادی در فرآیندها در انتهای تماس گیرنده انجام می‌شوند پروکسی، و در سمت سیستمی که عملکرد را انجام می دهد، در دیسپچر. در حالت ایده آل، نه سیستم فراخوان و نه سیستم پردازش با پیچیدگی های انتقال داده بین سیستم ها سروکار نداشتند. همه این ظرافت ها در بسته نرم افزاری Proxy - Dispatcher متمرکز شده بودند که کد آن به طور خودکار تولید می شد.

بنابراین شما متوجه تفاوتی بین یک فراخوانی تابع محلی و یک فراخوانی تابع از راه دور نمی شوید، نباید متوجه شوید.
اکنون نوعی رنسانس RPC وجود دارد که برجسته ترین نمایندگان آن عبارتند از: Google ProtoBuf، Thrift، Avro.

پیام رسانی

با گذشت زمان، مشخص شد که تلاش برای محافظت از برنامه نویس از این واقعیت که تابع فراخوانی شده هنوز با تابع محلی متفاوت است، به نتیجه مطلوب منتهی نشد. جزئیات پیاده‌سازی و تفاوت‌های اساسی بین سیستم‌های توزیع‌شده بسیار زیاد بود که با استفاده از کد پروکسی تولید شده به‌طور خودکار قابل حل نبود. به تدریج درک شد که این واقعیت که سیستم ها توسط یک محیط غیر قابل اعتماد، کند و کم سرعت به هم متصل می شوند باید به صراحت در کد برنامه منعکس شود.

فن آوری ها ظاهر شده اند خدمات وب. شروع کردیم به صحبت کردن ABC: آدرس، الزام آور، قرارداد. کاملاً مشخص نیست که چرا قراردادها ظاهر شدند، که اساساً پاکت هایی برای استدلال های ورودی هستند. قراردادها اغلب به جای ساده کردن مدل کلی، آن را پیچیده می کنند. اما... مهم نیست.

اکنون برنامه نویس به صراحت ایجاد کرده است خدمات(خدمات) یا مشتری(مشتری) تماس با سرویس. این سرویس شامل یک مجموعه بود عملیات (عملیات) که هر کدام در ورودی دریافت کردند درخواست کنید(درخواست کنید) و صادر شد پاسخ دهید(پاسخ). مشتری به صراحت فرستاده شد(ارسال شد) درخواست، سرویس به صراحت دریافت کرد ( دریافت کنید) و به او پاسخ داد (فرستاد)، پاسخ را فرستاد. مشتری پاسخی دریافت کرد و تماس به پایان رسید.

درست مانند RPC، یک Proxy و Dispatcher در جایی در حال اجرا بود. و مانند قبل کد آنها به صورت خودکار تولید شد و برنامه نویس نیازی به درک آن نداشت. مگر اینکه کلاینت به طور صریح از کلاس های Proxy استفاده کند.

درخواست ها و پاسخ ها به صراحت به فرمتی تبدیل می شوند که برای انتقال از طریق سیم در نظر گرفته شده است. اغلب این یک آرایه بایتی است. تبدیل نامیده می شود سریال سازیو سریال زداییو گاهی اوقات در کد پروکسی پنهان می شود.
اوج پیام رسانی در پیدایش پارادایم ظاهر شد ESB (اتوبوس خدمات سازمانی). هیچ کس نمی تواند واقعاً بیان کند که چیست، اما همه قبول دارند که داده ها از طریق ESB به شکل پیام حرکت می کنند.

استراحت

در مبارزه مداوم با پیچیدگی کد، برنامه نویسان گام بعدی را برداشتند و ایجاد کردند استراحت.

اصل اصلی REST این است که عملیات تابع به شدت محدود شده و تنها مجموعه ای از عملیات باقی می ماند CRUD: ایجاد - خواندن - به‌روزرسانی - حذف. در این مدل، همه عملیات همیشه بر روی برخی از داده ها اعمال می شود. عملیات موجود در CRUD برای اکثر برنامه ها کافی است. از آنجایی که فناوری‌های REST در بیشتر موارد مستلزم استفاده از پروتکل HTTP هستند، دستورات CRUD در دستورات منعکس می‌شوند. HTTP (ارسال کنید - دریافت کنید - قرار دهید - حذف کنید) . دائماً گفته می شود که REST لزوماً به HTTP وابسته نیست. اما در عمل، انعکاس امضاهای عملیات بر روی دستورات HTTP به طور گسترده استفاده می شود. به عنوان مثال، فراخوانی تابع

EntityAddress ReadEntityAddress(string param1، string param2)

اینگونه بیان شده است:

GET: entityAddress?param1=value1¶m2=value2

نتیجه گیری

قبل از شروع بحث در مورد سیستم های توزیع شده یا یکپارچه سازی، در مورد اصطلاحات واضح باشید. اگر Proxy همیشه در زمینه های مختلف به معنای یکسان باشد، برای مثال درخواست در اصطلاحات RPC معنی کمی خواهد داشت و مارشال کردن باعث سردرگمی در هنگام بحث در مورد فناوری های REST می شود.