موضوع مقاله: سامانه پنجره اکس | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سامانه پنجره اکس | مقدمه: این سیستم یک لایه انتزاع سخت‌افزاری ایجاد می‌کند یعنی سایر نرم‌افزارها از مجموعه‌ای از دستورهای عمومی استفاده می‌کنند که استقلال از سخت‌افزار و امکان استفاده مجدد از برنامه‌ها را بر روی هر رایانه‌ای که X را پیاده‌سازی کرده باشد، موجب می‌گردد. | ## بخش 1: سامانه پنجره اکس | اکس، تنها ساختار پایه یا ابتدایی واسط گرافیکی کاربر را فراهم می‌کند: نمایش و حرکت پنجره‌ها روی صفحه و برقراری ارتباط از طریق کیبرد و ماوس. بنابر این، شکلی که اکس می‌تواند به خود بگیرد شدیداً وابسته به برنامه‌های دیگر است. اکس بخشی از سیستم‌عامل نیست بلکه به عنوان یک برنامه و در لایه‌ای بالاتر از خود سیستم‌عامل اجرا می‌شود. برخلاف پروتکل‌های پنجره قبلی، اکس کاملاً برای کار در شبکه رایانه‌ای طراحی شده‌است. به عبارت دیگر، ارتباط اکس با صفحه نمایش به جای ارتباط مستقیم، ارتباطی مبتنی بر شبکه است. در اکس، شبکه شفاف است: جایی که برنامه اجرا می‌شود می‌تواند با جایی که دیده می‌شود تفاوت داشته باشد. سرور اکس برنامه‌ایست که بر روی رایانه‌ای که دارای نمایشگر و کیبورد است نصب می‌شود. سرور اکس درخواست‌ها را از کلاینت‌ها دریافت کرده، پس از پردازش، آنها را بر روی صفحه نمایش (یا دیگر دستگاه‌های خروجی) رسم می‌کند. همچنین سرور اکس اطلاعات را از ماوس و کیبورد و دیگر دستگاه‌های ورودی دریافت کرده، آنها را برای کلاینت‌ها ارسال می‌کند. | ## بخش 2: سامانه پنجره اکس | یک کلاینت درخواست‌هایی مانند «لطفاً پنجره‌ای با مختصات X و Y را در صفحه نمایش رسم کنید» را برای سرور اکس ارسال می‌کند. به عنوان مثالی دیگر، سرور اکس اطلاعات را از ماوس دریافت کرده و سپس پیام‌هایی مانند «کاربر در درحال حرکت دادن ماوس در مختصات X و Y است» را برای کلاینت‌ها ارسال می‌کند. ارتباط بین کلاینت‌ها و سرور اکس از طریق پروتکل‌های شبکه صورت می‌گیرد؛ بنابراین این دو برنامه می‌توانند بر روی کامپیوترهای مختلف، حتی با سیستم‌عامل‌های مختلف نصب شوند. X Window یک سیستم مستقل از معماری برای رابط‌های کاربری گرافیکی و دستگاه‌های ورودی پیشرفته بر روی شبکه است که امکان اشتراک‌گذاری توان محاسباتی یک رایانه اشتراک‌زمانی را از طریق برنامه‌های کلاینت فراهم می‌سازد. هر کاربر با استفاده از یک پایانه تحت شبکه قابلیت تعامل با نمایشگر را از طریق هر گونه دستگاه ورودی کاربری دارد. با توجه به پشتیبانی عمومی از نرم‌افزارهای X در سیستم‌عامل‌های یونیکس، لینوکس و مکینتاش، معمولاً از X برای اجرای نرم‌افزارهای کلاینت بر روی رایانه‌های شخصی استفاده می‌گردد، حتی در صورتی که نیاز به اشتراک زمانی نباشد. X امکان پنجره‌سازی برای نمایشگرهای رایانه و مدیریت کیبرد، اعمال کنترل دستگاه‌های اشاره‌گر و صفحات لمسی را فراهم می‌کند. این سیستم در توزیع استاندارد خود یک راه‌حل تعامل و نمایش کامل اما ساده است که یک مجموعه ابزار استاندارد و پشته پروتکل برای ساختن رابط‌های کاربر گرافیکی در سیستم‌های مشابه یونیکس و OpenVMS را فراهم می‌کند و در عین حال امروزه در بسیاری از سیستم‌عاملهای مدرن نیز شبیه‌سازی شده‌است. همانند ترسیم و جابجایی پنجره‌ها بر روی صفحه نمایش، و تعامل با ماوس، صفحه کلید یا صفحه لمسی. | ## بخش 3: سامانه پنجره اکس | اکس اجبار نمی‌کند که رابط کاربری باید وجود داشته باشد، برنامه‌هایی تحت عنوان مدیر پنجره وجود دارند که این کار را انجام می‌دهند. استفاده از مدیر پنجره اجباری نیست و برنامه‌ها می‌توانند به شکل مستقیم از از قابلیت‌های گرافیکی اکس و بدون رابط کاربری استفاده کنند. برخلاف پروتکل‌های نمایشی اولیه، اکس به جای کار بر روی دستگاه‌های نمایشی پیوسته و جدایی‌ناپذیر، به‌طور خاص برای استفاده بر روی اتصالات شبکه طراحی شده‌است. اکس به شکل شبکه-شفاف است: ماشینی که یک برنامه کاربردی (کلاینت اکس) بر روی آن اجرا می‌شود، می‌تواند از ماشینی که سرور اکس بر روی آن اجرا می‌شود متفاوت باشد و این دو برنامه می‌توانند هر کدام روی ماشین‌های مختلفی با سیستم‌عامل‌های مختلف اجرا شوند. اصول اولیه در ۱۹۸۴، باب شیفلر و جیم گتیس اصول اولیه اکس را به این صورت تدوین کرند: هیچ قابلیت جدیدی اضافه نکنید مگر اینکه برنامه‌نویسی بدون آن قابلیت نتواند برنامه واقعی‌اش را تمام کند. اهمیت تصمیم‌گیری در این مورد که برنامه چه چیزی قرار نیست باشد، همانقدر مهم است که برنامه چه چیزی قرار است باشد. نکته مهم این است که برنامه قابل توسعه باشد تا بعدها بتوان با حفظ سازگاری، آن را پیش برد. تنها چیزی که از تعمیم دادن بر مبنای یک مثال بدتر است، تعمیم دادن بدون وجود حتی یک مثال است. | ## جمع‌بندی | اگر می‌توانید ۹۰٪ خواسته‌ها را با ۱۰ درصد کار جواب دهید، از راه حل ساده‌تر استفاده کنید.