موضوع مقاله: مدل کلاینت-سرور | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مدل کلاینت-سرور | مقدمه: کارخواه و کارساز معمولاً‌ از طریق شبکه با هم در ارتباط هستند؛‌ گرچه ممکن است هر دو روی یک افزاره نیز باشند. | ## بخش 1: مدل کلاینت-سرور | یک برنامه کاربردی کارخواه-کارساز تحت شبکه رایانه‌ای برنامه‌ای است که یک کارخواه را که توسط یک رابط کاربری برنامه شناسایی می‌شود، به یک سرور یا سامانهٔ پایگاه داده متصل می‌کند. هنگامی که یک کارخواه مستقیماً به یک سیستم پایگاه داده، یا یک سرور یکپارچه متصل می‌گردد، معماری برنامه، معماری دولایه‌ای است. یک معماری کارخواه-کارساز یک معماری شبکه‌ای است که در آن هر رایانه یا پردازش روی شبکه رایانه‌ای یا یک کارساز است، یا یک کارخواه. سرورها معمولاً رایانه‌های پرقدرت، یا پردازش‌هایی هستند که مختص انجام کار خاصی مانند مدیریت دیسک گردان‌ها (سرور پرونده‌ای)، چاپگرها، مدیریت ترافیک شبکه (سرور شبکه‌ای) (network server)، می‌باشند. کارخواهها، ایستگاه‌های کاری یا رایانه‌های شخصی هستند که کاربران بر روی آن‌ها برنامه‌های کاربردی را اجرا می‌نمایند. این معماری از سایر معماری‌ها در این نکته متمایز است که می‌تواند با استفاده از لایه‌ها ساختاردهی مطمئنی از سیستم به وجود آورد. در سال‌های اخیر استفاده از یک کارخواه کوچک (thin client) که حاوی منطق کاری نیست، و تنها عناصر رابط کاربری جهت اتصال به یک کارساز کاربردی که منطق کاری روی آن پیاده‌سازی شده باب شده‌است، که به صورت تراگذاری، با یک کارساز پایگاه داده، که اطلاعات بروی آن به صورت خام نگهداری و توسط برنامه کاربردی مورد استفاده قرار می‌گیرد. در کل، معماری‌های n-لایه می‌توانند از تعدادی خدمات مشخص، که شامل روابط تراگذاری بین کارسازهای کاربردی که از پیاده‌سازی منطق کاری متفاوتی نیز استفاده کرده باشند، استفاده کند. نوع دیگری از معماری شبکه‌ای به نام معماری همتا-به-همتا شناخته می‌شود، زیرا هر گره وظایف یکسانی دارد. هر دو نوع معماری‌های کارخواه-کارساز یا همکار-به-همکار به‌طور گسترده‌ای کاربر دارند، و هرکدام مزیت‌ها و معایب خاص خودشان را دارند. نقش سرویس دهنده- سرویس گیرنده مشخصه «سرویس گیرنده-سرویس دهنده» رابطه همکاری بین بخش‌های مختلف را در یک برنامه را توصیف می‌کند. مولفهٔ سرویس دهنده سرور یک عملکرد یا سرویس را به یک یا تعداد زیادی مشتری ارائه می‌دهد، که درخواست‌های چنین سرویس‌هایی را شروع می‌کنند. به عنوان مثال، یک وب سرور، صفحات وب و یک سرویس‌دهنده فایل به پرونده‌های رایانه ای سرویس می‌دهد. یک منبع مشترک ممکن است هر یک از نرم‌افزارها و اجزای الکترونیکی رایانه سرور باشد، از برنامه‌ها و داده‌ها گرفته تا پردازنده‌ها و دستگاه‌های ذخیره‌سازی. اینکه کامپیوتر یک کلاینت باشد، یک سرور یا هر دو، با توجه به ماهیت برنامه ای که به توابع سرویس نیاز دارد، تعیین می‌شود. به عنوان مثال، یک کامپیوتر می‌تواند همزمان وب سرور و نرم‌افزار سرور پرونده را اجرا کند تا داده‌های مختلف را به مشتریانی که درخواست‌های مختلفی می‌کنند. | ## بخش 2: مدل کلاینت-سرور | نرم‌افزار سرویس گیرنده همچنین می‌تواند با نرم‌افزار سرور در همان رایانه ارتباط برقرار کند. ارتباط بین سرورها، مانند همگام سازی داده‌ها، گاهی ارتباط بین سرور یا سرور به سرور نامیده می‌شود. مشتری فقط باید پاسخ را براساس پروتکل معروف برنامه درک کند، یعنی محتوا و قالب بندی داده‌ها برای سرویس درخواستی. سرویس گیرنده‌ها و سرورها پیام‌های خود را با الگوی پیام پاسخ درخواست پاسخ می‌دهند. برای برقراری ارتباط، رایانه‌ها باید زبان مشترکی داشته باشند، و آنها باید از قوانینی پیروی کنند تا کلاینت و سرور بدانند که چه انتظاری دارند. پروتکل لایه برنامه الگوهای اساسی را تعریف می‌کند برای رسمی کردن تبادل داده‌ها حتی بیشتر، سرور ممکن است یک رابط برنامه‌نویسی برنامه (API) را پیاده‌سازی کند. با محدود کردن ارتباطات به یک قالب محتوای خاص، تجزیه را تسهیل می‌کند با انتزاع دسترسی، تبادل داده بین پلتفرمی را تسهیل می‌کند. یک سرور ممکن است در مدت زمان کوتاهی از بسیاری از سرویس گیرنده‌های متقاضی درخواست دریافت کند. یک رایانه در هر لحظه فقط می‌تواند تعداد محدودی کار را انجام دهد و با تکیه بر یک سیستم زمان‌بندی، درخواست‌های ورودی از مشتریان را برای اولویت بندی آنها در اولویت قرار می‌دهد. مثالهای مرتبط هنگامی که مشتری بانکی با مرورگر وب (مشتری) به خدمات بانکی آنلاین دسترسی پیدا می‌کند، مشتری درخواستی را از وب سرور بانک آغاز می‌کند. اعتبار ورود مشتری ممکن است در یک پایگاه داده ذخیره شود و وب سرور به عنوان مشتری به سرور پایگاه داده دسترسی پیدا کند یک سرور برنامه با استفاده از منطق تجاری بانک داده‌های برگشتی را تفسیر می‌کند و خروجی را به وب سرور ارائه می‌دهد و سرانجام سرور وب نتیجه را برای نمایش به مرورگر وب مشتری برمی‌گرداند. در هر مرحله از این توالی تبادل پیام مشتری-سرور، رایانه ای یک درخواست را پردازش می‌کند و داده را برمی‌گرداند. وقتی همه درخواست‌ها برآورده می‌شوند، توالی کامل می‌شود و مرورگر وب داده‌ها را به مشتری. این مثال الگوی طراحی قابل استفاده برای مدل مشتری-سرور را نشان می‌دهد: تفکیک نگرانی‌ها. تاریخچه شکل اولیه معماری کلاینت سرور ورود شغل از راه دور است، حداقل با OS / 360 (اعلام شده در سال ۱۹۶۴)، جایی که درخواست اجرای یک شغل بود و پاسخ خروجی بود. دانشمندان کامپیوتر در حال ساخت مدل مشتری - سرور در دهه ۱۹۶۰ و ۱۹۷۰، در ساخت ARPANET (در مؤسسه تحقیقاتی استنفورد) از اصطلاحات میزبان سرور (یا میزبان سرویس دهنده) و میزبان کاربر (یا با استفاده از میزبان) استفاده کردند و اینها ظاهر می‌شوند در اسناد اولیه RFC 5 و RFC 4. | ## بخش 3: مدل کلاینت-سرور | هدف این زبان پذیرش دستورها از یک رایانه (میزبان کاربر) بود، که گزارش‌ها وضعیت را به عنوان رمزگذار کردن دستورها در بسته‌های شبکه به کاربر بازمی‌گرداند. یک رایانه دیگر با قابلیت DEL، میزبان سرور، بسته‌ها را دریافت کرده، رمزگشایی کرده و داده‌های قالب بندی شده را به میزبان کاربر بازمی‌گرداند. سرور-پذیرنده، میزبان پذیرنده میزبان مشتری و میزبان سرور کاملاً متفاوت از کلاینت و سرور است. در حالی که کلمات سرور و کلاینت ممکن است به کامپیوتر یا به یک برنامه رایانه ای، میزبان سرور و کاربر اشاره داشته باشند - میزبان همیشه به رایانه‌ها مراجعه می‌کند. میزبان یک رایانه چند منظوره و چند منظوره است؛ کلاینت‌ها و سرورها فقط برنامه‌هایی هستند که روی میزبان اجرا می‌شوند. استفاده اولیه از کلمه مشتری در «جداسازی داده‌ها از عملکرد در سیستم پرونده توزیع شده»، مقاله ۱۹۷۸ توسط دانشمندان کامپیوتر Xerox PARC هوارد استورگیس، جیمز میچل و جی اسرائیل وجود دارد. نویسندگان مراقب هستند که این اصطلاح را برای خوانندگان تعریف کنند، و توضیح دهد که آنها از آن برای تشخیص بین کاربر و گره شبکه کاربر (سرویس گیرنده) استفاده می‌کنند. هرچه محاسبات بیشتر از میزبان‌های کلاینت به رایانه‌های مرکزی بارگیری شود، میزبان‌های مشتری نیز می‌توانند ساده‌تر باشند. گره بدون دیسک حتی سیستم عامل خود را از شبکه بارگیری می‌کند و یک ترمینال رایانه ای فاقد سیستم عامل است؛ این فقط یک رابط ورودی / خروجی به سرور است. با کاهش قیمت رایانه‌ها و افزایش قدرت آنها از دهه ۱۹۸۰ به اواخر دهه ۱۹۹۰، بسیاری از سازمانها محاسبات را از سرورهای متمرکز مانند رایانه‌های اصلی و مینی کامپیوترها به مشتریهای چربی منتقل کردند. در طول دهه ۲۰۰۰، برنامه‌های وب به اندازه کافی بالغ شدند تا بتوانند با نرم‌افزارهای کاربردی رقیب برای یک معماری معماری خاص رقابت کنند. در مدل سرویس گیرنده - سرور، سرور اغلب به گونه ای طراحی شده‌است که به عنوان یک سیستم متمرکز عمل می‌کند که به بسیاری از سرویس گیرندگان سرویس می‌دهد. توان محاسباتی، حافظه و نیازهای ذخیره‌سازی سرور باید متناسب با حجم کار مورد انتظار مقیاس بندی شود. سیستم‌های تعادل بار و خرابی که معمولاً برای مقیاس گذاری سرور فراتر از یک ماشین فیزیکی استفاده می‌شود. هر توازن بار بین دستگاه‌های سرویس گیرنده و سرورهای باطن قرار می‌گیرد، درخواست‌های ورودی را به هر سرور موجود که قادر به انجام آنها باشد دریافت و سپس توزیع می‌کند. برخلاف مشتری در مشتری - سرور یا مشتری - شبکه صف-مشتری، همتایان به‌طور مستقیم با یکدیگر ارتباط برقرار می‌کنند. | ## جمع‌بندی | هر دو سرور سرویس گیرنده و سرویس دهنده به عنوان زیر مجموعه سیستم‌های توزیع شده نظیر به نظیر در نظر گرفته می‌شوند.