مقدمه
در دنیای فناوری اطلاعات، بسیاری از برنامهها و سیستمهایی که ما هر روز از آنها استفاده میکنیم، بر اساس معماری کلاینت-سرور ساخته شدهاند. اما این معماری چیست و چرا اهمیت دارد؟ در این مقاله به بررسی مفهوم معماری کلاینت-سرور، اجزای اصلی آن، مزایا و معایب آن، و آینده این معماری میپردازیم.
معرفی معماری کلاینت-سرور
معماری کلاینت-سرور یکی از مدلهای رایج برای توسعه سیستمهای نرمافزاری است که در آن، یک یا چند کلاینت (کاربر) به سرور (مرکز داده) متصل میشوند تا از منابع و سرویسها استفاده کنند.
تاریخچه معماری کلاینت-سرور
این معماری در دهه 1980 معرفی شد و به سرعت به عنوان یک راهکار اصلی برای ارتباط سیستمهای کامپیوتری مورد استفاده قرار گرفت. قبل از آن، معماریهای متمرکز بزرگتری مانند مینفریمها (Mainframes) رایج بودند.
تعریف معماری کلاینت-سرور
به زبان ساده، کلاینت دستگاه یا نرمافزاری است که درخواستهایی را به سرور ارسال میکند و سرور، دستگاهی است که این درخواستها را پردازش کرده و پاسخ میدهد.
اجزای اصلی در معماری کلاینت-سرور
برای درک بهتر این معماری، باید با اجزای کلیدی آن آشنا شویم.
کلاینت چیست؟
کلاینت به هر دستگاه یا نرمافزاری گفته میشود که از سرور درخواست سرویس یا اطلاعات میکند. این دستگاهها میتوانند رایانههای شخصی، تلفنهای همراه یا هر دستگاه دیگری باشند.
سرور چیست؟
سرور سیستمی است که برای پردازش درخواستها و ارائه سرویس به کلاینتها طراحی شده است. سرورها معمولا دارای منابع قدرتمندتری نسبت به کلاینتها هستند.
نحوه تعامل کلاینت و سرور
در این معماری، کلاینتها با ارسال درخواستهای HTTP یا دیگر پروتکلها به سرور، اطلاعات مورد نیاز خود را دریافت میکنند.
انواع معماری کلاینت-سرور
معماری کلاینت-سرور دارای مدلهای مختلفی است که بسته به نیاز سیستم، میتواند ساده یا پیچیده باشد.
معماری دو لایه
در این مدل، تنها دو بخش وجود دارد: کلاینت و سرور. این سادهترین نوع معماری کلاینت-سرور است.
معماری سه لایه
در این نوع معماری، علاوه بر کلاینت و سرور، یک لایه میانی (مانند پایگاه داده) نیز وجود دارد که دادهها را مدیریت میکند.
معماری چندلایه
این معماری شامل چندین لایه مختلف است که هر کدام وظیفه خاصی دارند، مانند لایه ارائه، لایه منطق تجاری، و لایه دادهها.
نحوه عملکرد معماری کلاینت-سرور
فرآیند اصلی در این معماری ارسال و دریافت اطلاعات بین کلاینت و سرور است.
مراحل درخواست و پاسخ
ابتدا کلاینت درخواست خود را به سرور ارسال میکند. سرور پس از پردازش این درخواست، پاسخ مناسب را به کلاینت برمیگرداند.
ارتباط همزمان کلاینتها با سرور
در این معماری، سرور میتواند همزمان به چندین کلاینت سرویس دهد که این موضوع به بهبود عملکرد سیستمها کمک میکند.
مزایای معماری کلاینت-سرور
این معماری به دلایل مختلفی بسیار محبوب است.
مقیاسپذیری
یکی از مزایای مهم معماری کلاینت-سرور، قابلیت مقیاسپذیری بالای آن است؛ یعنی سیستم میتواند به راحتی تعداد زیادی کلاینت را مدیریت کند.
امنیت بهتر
با متمرکز بودن دادهها در سرور، امکان مدیریت بهتر و امنتر اطلاعات فراهم میشود.
مدیریت متمرکز
سرورها به طور متمرکز مدیریت میشوند و این کار باعث میشود تا بهروزرسانیها و نگهداری سیستمها سادهتر شود.
معایب معماری کلاینت-سرور
البته این معماری بدون چالش نیست و معایبی نیز دارد.
هزینه بالا برای سرورها
برای پیادهسازی یک سرور قوی و پایدار، هزینههای بالایی نیاز است.
نیاز به مدیریت پیچیده
مدیریت سرورها، به خصوص در سیستمهای بزرگ، به تیمهای متخصص و منابع گسترده نیاز دارد.
وابستگی به سرور مرکزی
در صورت خرابی سرور، کلاینتها قادر به استفاده از خدمات نخواهند بود.
موارد کاربرد معماری کلاینت-سرور
معماری کلاینت-سرور در بسیاری از سیستمها و برنامهها به کار گرفته میشود.
وبسایتهای اینترنتی
بسیاری از وبسایتها از این معماری استفاده میکنند تا درخواستهای کاربران را پردازش کنند.
برنامههای بانکی
برنامههای بانکی با استفاده از معماری کلاینت-سرور، امنیت و سرعت بالایی در پردازش تراکنشها ارائه میدهند.
اپلیکیشنهای سازمانی
در بسیاری از سازمانها از این معماری برای مدیریت دادهها و منابع استفاده میشود.
تفاوت معماری کلاینت-سرور با معماری همتا به همتا (P2P)
معماری کلاینت-سرور با معماری همتا به همتا تفاوتهای زیادی دارد.
تعریف معماری همتا به همتا
در معماری همتا به همتا، هر دستگاه هم میتواند به عنوان کلاینت و هم به عنوان سرور عمل کند.
مقایسه کلی
در معماری کلاینت-سرور، تمرکز بر یک سرور مرکزی است، اما در P2P، تمامی دستگاهها به طور مستقل عمل میکنند.
فناوریهای استفاده شده در معماری کلاینت-سرور
معماری کلاینت-سرور به عنوان یکی از مهمترین مدلهای توسعه نرمافزارها و سیستمهای کامپیوتری، از فناوریهای مختلفی بهره میگیرد. این فناوریها به بهبود کارایی، امنیت، مقیاسپذیری و مدیریت سیستمها کمک میکنند. در این بخش به معرفی و بررسی فناوریهای اصلی مورد استفاده در معماری کلاینت-سرور میپردازیم:
۱. پروتکلهای شبکه (TCP/IP)
پروتکلهای شبکه، به ویژه TCP/IP (Transmission Control Protocol/Internet Protocol)، ستون فقرات ارتباطات بین کلاینت و سرور هستند. این پروتکلها نحوه انتقال دادهها را در شبکه مشخص میکنند. TCP تضمین میکند که دادهها به درستی و بدون از دست رفتن به مقصد برسند، در حالی که IP آدرسدهی و مسیریابی بستههای داده را انجام میدهد.
۲. HTTP و HTTPS
HTTP (Hypertext Transfer Protocol) یکی از پرکاربردترین پروتکلها در معماری کلاینت-سرور است که برای انتقال دادهها و ارتباطات بین مرورگرها (کلاینتها) و وبسرورها استفاده میشود. نسخه امنتر این پروتکل، HTTPS، از SSL/TLS برای رمزنگاری ارتباطات استفاده میکند و امنیت بیشتری را فراهم میسازد. این پروتکلها به عنوان پایه ارتباطات وبی عمل میکنند.
۳. پایگاههای داده (Databases)
در معماری کلاینت-سرور، سرورها معمولاً به پایگاههای داده متصل هستند تا اطلاعات مورد نیاز کلاینتها را ذخیره و مدیریت کنند. پایگاههای داده رابطهای (Relational Databases) مانند MySQL، PostgreSQL، و Oracle و همچنین پایگاههای داده NoSQL مانند MongoDB و Cassandra نقش حیاتی در ذخیرهسازی و بازیابی دادهها دارند.
۴. APIها و وبسرویسها
APIها (Application Programming Interfaces) به کلاینتها امکان میدهند تا با سرورها و سیستمهای دیگر ارتباط برقرار کنند. APIها به صورت رابطی بین کلاینتها و سرور عمل کرده و دادهها و خدمات مورد نیاز کلاینتها را ارائه میدهند. وبسرویسها مانند REST و SOAP نیز در معماری کلاینت-سرور برای تبادل داده بین سیستمها استفاده میشوند.
۵. میکروسرویسها (Microservices)
میکروسرویسها یکی از جدیدترین و پرکاربردترین فناوریهای مورد استفاده در معماری کلاینت-سرور هستند. این فناوری به سرور اجازه میدهد که وظایف مختلف را به صورت مستقل و در سرویسهای جداگانه مدیریت کند. هر میکروسرویس به صورت جداگانه قابل توسعه و بهروزرسانی است، که باعث افزایش انعطافپذیری و مقیاسپذیری سیستم میشود.
۶. فناوریهای کلود (Cloud Computing)
استفاده از فناوریهای ابری یکی از مهمترین تحولاتی است که در معماری کلاینت-سرور رخ داده است. سیستمهای مبتنی بر ابر (Cloud-Based Systems) به سرورها اجازه میدهند تا به صورت توزیعشده و مقیاسپذیر به کلاینتها سرویس دهند. خدمات ابری مانند AWS، Microsoft Azure و Google Cloud به توسعهدهندگان این امکان را میدهند تا بدون نیاز به زیرساختهای فیزیکی، سیستمهای کلاینت-سرور قدرتمند ایجاد کنند.
۷. فناوریهای مجازیسازی (Virtualization)
مجازیسازی یکی دیگر از فناوریهای کلیدی در معماری کلاینت-سرور است. با استفاده از این فناوری، سرورها میتوانند چندین ماشین مجازی (VM) را به صورت همزمان مدیریت کنند، که هر یک از این ماشینهای مجازی میتوانند به عنوان یک سرور مستقل عمل کنند. این امر باعث بهبود استفاده از منابع سرور و کاهش هزینهها میشود.
۸. فایروالها و سیستمهای امنیتی
فایروالها (Firewalls) و سیستمهای امنیتی مختلفی در معماری کلاینت-سرور برای حفاظت از سرورها و دادههای حساس استفاده میشوند. این سیستمها مانع از دسترسی غیرمجاز به سرورها میشوند و امنیت کلی سیستم را افزایش میدهند. همچنین از فناوریهای رمزنگاری مانند SSL/TLS برای ایمنسازی ارتباطات استفاده میشود.
۹. Load Balancers
در معماری کلاینت-سرور، Load Balancers یا توزیعکنندههای بار نقش مهمی در مدیریت ترافیک شبکه ایفا میکنند. این فناوری به سرورها اجازه میدهد تا درخواستهای کلاینتها را به طور متعادل بین سرورهای مختلف تقسیم کنند و از بار زیاد روی یک سرور جلوگیری کنند. Load Balancers باعث افزایش قابلیت اطمینان و کارایی سیستمهای کلاینت-سرور میشوند.
۱۰. CDN (شبکههای توزیع محتوا)
CDNها (Content Delivery Networks) به کلاینتها کمک میکنند تا دادهها و محتواهای مورد نیاز خود را از نزدیکترین سرورهای موجود دریافت کنند. این فناوری باعث کاهش تأخیر در بارگذاری صفحات وب و بهبود تجربه کاربری میشود.
۱۱. پروتکلهای امنیتی (SSL/TLS)
پروتکلهای امنیتی مانند SSL (Secure Sockets Layer) و TLS (Transport Layer Security) به ایمنسازی ارتباطات بین کلاینت و سرور کمک میکنند. این پروتکلها اطلاعات حساس کاربران را رمزنگاری کرده و از حملات سایبری مانند حملات Man-in-the-Middle جلوگیری میکنند.
۱۲. فناوریهای Edge Computing
Edge Computing یا پردازش لبهای به سرورها اجازه میدهد تا برخی از پردازشها را به نزدیکترین نقطه به کلاینت منتقل کنند. این امر به بهبود عملکرد سیستمهای کلاینت-سرور، کاهش تأخیر و افزایش سرعت پاسخدهی کمک میکند.
فناوریهای مورد استفاده در معماری کلاینت-سرور به مرور زمان تکامل یافتهاند تا بتوانند نیازهای رو به رشد کاربران و سیستمها را برآورده کنند. از پروتکلهای پایه شبکه گرفته تا فناوریهای مدرنی مانند میکروسرویسها و پردازش ابری، همگی به بهبود عملکرد و امنیت سیستمهای کلاینت-سرور کمک کردهاند. این فناوریها باعث افزایش کارایی، مقیاسپذیری و قابلیت مدیریت سیستمها شده و راهحلهایی نوین برای چالشهای پیچیده ارائه کردهاند.
چالشهای معماری کلاینت-سرور
معماری کلاینت-سرور به عنوان یکی از مدلهای محبوب و پرکاربرد در توسعه نرمافزار و سیستمهای کامپیوتری، مزایای زیادی از جمله مقیاسپذیری و انعطافپذیری دارد. با این حال، همانند هر معماری دیگری، این مدل نیز با چالشها و محدودیتهایی همراه است. در این بخش، به برخی از مهمترین چالشهای معماری کلاینت-سرور پرداخته میشود:
۱. بار زیاد روی سرور (Server Overload)
یکی از بزرگترین چالشها در معماری کلاینت-سرور، بار زیاد روی سرور است. در این مدل، سرور وظیفه اصلی پردازش درخواستها و ارائه دادهها به کلاینتها را بر عهده دارد. زمانی که تعداد کلاینتها زیاد میشود، حجم درخواستهای ارسالی به سرور افزایش یافته و ممکن است سرور نتواند به همه درخواستها به صورت همزمان پاسخ دهد. این مشکل میتواند به کندی در پاسخدهی سرور، از دست رفتن دادهها و کاهش کارایی سیستم منجر شود.
۲. مشکلات مقیاسپذیری (Scalability Issues)
مقیاسپذیری در معماری کلاینت-سرور چالشی مهم است. با افزایش تعداد کلاینتها، نیاز به منابع بیشتری برای پاسخدهی به درخواستها وجود دارد. اگر سرور نتواند به درستی مقیاسپذیر باشد، با افزایش بار و تعداد درخواستها ممکن است دچار اختلال شود. راهکارهایی مانند Load Balancing و استفاده از سرورهای اضافی میتوانند به بهبود مقیاسپذیری کمک کنند، اما این امر نیازمند منابع بیشتر و مدیریت پیچیدهتری است.
۳. نقطه شکست واحد (Single Point of Failure)
در معماری کلاینت-سرور، سرور به عنوان نقطه مرکزی پردازش و ارائه دادهها عمل میکند. این بدان معناست که اگر سرور دچار خرابی یا مشکل شود، کل سیستم تحت تأثیر قرار میگیرد و کلاینتها نمیتوانند به دادهها یا خدمات دسترسی پیدا کنند. این وضعیت به عنوان "نقطه شکست واحد" شناخته میشود و میتواند باعث کاهش دسترسپذیری سیستم و نارضایتی کاربران شود.
۴. امنیت و حفظ حریم خصوصی (Security and Privacy)
از آنجا که سرور در معماری کلاینت-سرور نقش اصلی در پردازش و ذخیرهسازی دادهها را دارد، حفظ امنیت دادهها یکی از چالشهای اصلی است. هرگونه نقص امنیتی در سرور میتواند منجر به دسترسی غیرمجاز به اطلاعات حساس کاربران شود. همچنین کلاینتها نیز ممکن است در معرض حملات سایبری مانند حملات Man-in-the-Middle یا DDoS قرار گیرند. از این رو، استفاده از پروتکلهای امنیتی مانند SSL/TLS و فایروالها ضروری است.
۵. هزینههای بالای نگهداری و مدیریت سرور (High Maintenance Costs)
نگهداری و مدیریت سرورها، به ویژه در سیستمهایی با تعداد زیادی کلاینت، میتواند هزینهبر باشد. این هزینهها شامل خرید سختافزار، نرمافزار، پهنای باند و همچنین تیمهای تخصصی برای مدیریت سرور و امنیت میشود. همچنین ارتقاء مداوم سیستمها و منابع برای مقابله با افزایش بار و ترافیک، هزینههای زیادی را به دنبال دارد.
۶. زمان تأخیر (Latency)
زمان تأخیر، یکی دیگر از چالشهای معماری کلاینت-سرور است. وقتی که کلاینتها از نقاط مختلف جغرافیایی به سرور دسترسی پیدا میکنند، فاصله جغرافیایی ممکن است باعث افزایش زمان تأخیر در انتقال دادهها شود. این امر به ویژه در سیستمهای حساس به زمان مانند بازیهای آنلاین یا برنامههای مالی تأثیر منفی دارد. استفاده از فناوریهای CDN (شبکههای توزیع محتوا) یا Edge Computing میتواند تا حدودی این چالش را کاهش دهد.
۷. مشکلات سازگاری (Compatibility Issues)
سازگاری بین کلاینت و سرور یکی از چالشهای رایج در این معماری است. سیستمهای کلاینت ممکن است از پلتفرمها و نرمافزارهای متفاوتی استفاده کنند که با سرور سازگار نباشند. برای مثال، مرورگرهای مختلف ممکن است به روشهای مختلفی با سرور ارتباط برقرار کنند. این مشکل میتواند به تفاوت در نحوه نمایش دادهها یا حتی عدم توانایی کلاینت در برقراری ارتباط با سرور منجر شود.
۸. مدیریت ترافیک (Traffic Management)
در مواقعی که ترافیک کلاینتها به صورت ناگهانی افزایش مییابد (مانند رویدادهای خاص یا حملات DDoS)، مدیریت ترافیک و توزیع مناسب درخواستها بین سرورها به چالش بزرگی تبدیل میشود. در چنین مواقعی، اگر سیستم به درستی مدیریت نشود، ممکن است منجر به کاهش عملکرد سیستم یا حتی از کار افتادن سرور شود.
۹. مشکلات پشتیبانی و نگهداری (Maintenance and Support Challenges)
به روز رسانی و نگهداری سرورها و کلاینتها نیز از چالشهای معماری کلاینت-سرور است. اگر سرورها به طور منظم بهروزرسانی نشوند، ممکن است مشکلات امنیتی و عملکردی در سیستم به وجود بیاید. همچنین مدیریت و نظارت مداوم بر سرورها نیازمند تخصص و منابع انسانی مناسب است که هزینههای پشتیبانی و نگهداری را افزایش میدهد.
۱۰. بهبود مقیاسپذیری افقی (Horizontal Scalability)
در برخی موارد، بهبود مقیاسپذیری سرورها از طریق افزودن سرورهای بیشتر (مقیاسپذیری افقی) به جای بهبود سختافزاری یک سرور (مقیاسپذیری عمودی) ضروری است. اما این روش نیازمند پیچیدگیهای بیشتری در مدیریت سیستمها و توزیع بار میشود. برای بهبود مقیاسپذیری افقی، نیاز به مدیریت Load Balancing و هماهنگی مناسب بین سرورها است.
آینده معماری کلاینت-سرور
معماری کلاینت-سرور همچنان به عنوان یکی از مدلهای اصلی برای توسعه سیستمهای نرمافزاری مورد استفاده قرار میگیرد، اما پیشرفتهای فناوری و تغییرات در نیازهای کاربران و سیستمها باعث شده است که این معماری نیز به مرور تکامل یابد. در ادامه به بررسی آینده معماری کلاینت-سرور و تاثیراتی که فناوریهای نوین بر آن خواهند داشت، میپردازیم:
۱. افزایش استفاده از معماریهای مبتنی بر میکروسرویسها
یکی از مهمترین تغییراتی که در آینده معماری کلاینت-سرور مشاهده خواهیم کرد، استفاده گستردهتر از میکروسرویسها است. میکروسرویسها به سرورها این امکان را میدهند تا وظایف را به بخشهای کوچکتر و مستقل تقسیم کنند. این امر باعث افزایش مقیاسپذیری، انعطافپذیری، و مدیریت بهتر سیستمها میشود. سیستمهایی که از میکروسرویسها بهره میبرند، میتوانند به راحتی به نیازهای جدید پاسخ دهند و بهبودهای مداوم در بخشهای خاص سیستم اعمال کنند.
۲. مهاجرت به زیرساختهای ابری (Cloud)
فناوری ابری (Cloud Computing) نقش بسیار مهمی در تکامل معماری کلاینت-سرور دارد. با انتقال سرویسها و سرورها به ابر، سازمانها میتوانند از منابع بهینهتری استفاده کنند و سیستمهای خود را با هزینههای کمتر و مقیاسپذیری بهتر مدیریت کنند. خدماتی مانند سرویسهای زیرساختی (IaaS) و پلتفرمی (PaaS) به برنامهنویسان و شرکتها این امکان را میدهند تا بدون نیاز به سختافزارهای محلی، سرورهای خود را در ابعاد بسیار بزرگتری مدیریت کنند.
۳. گرایش به سمت معماریهای غیرمتمرکز
با ظهور فناوریهایی مانند بلاکچین و شبکههای توزیعشده، برخی از سیستمها به سمت معماریهای غیرمتمرکز حرکت میکنند. این فناوریها به سیستمها این امکان را میدهند که بدون نیاز به سرور مرکزی عمل کنند و اطلاعات و منابع را به طور مستقیم بین کاربران به اشتراک بگذارند. اگرچه معماری کلاینت-سرور همچنان برای بسیاری از برنامهها مناسب است، اما در حوزههایی مانند مالی و امنیت، معماریهای غیرمتمرکز ممکن است جایگزین آن شوند.
۴. تاثیر اینترنت اشیا (IoT)
با افزایش استفاده از دستگاههای هوشمند و متصل به اینترنت (IoT)، سیستمهای کلاینت-سرور باید توانایی مدیریت و پردازش حجم بالایی از دادهها و تعاملات را داشته باشند. سرورها باید بتوانند به هزاران دستگاه متصل همزمان پاسخ دهند و دادهها را در زمان واقعی پردازش کنند. در این زمینه، استفاده از فناوریهای مانند Edge Computing که پردازش دادهها را به لبه شبکه منتقل میکنند، میتواند به بهبود کارایی معماری کلاینت-سرور کمک کند.
۵. امنیت و حفظ حریم خصوصی
با رشد تهدیدات امنیتی و اهمیت بیشتر حفظ حریم خصوصی کاربران، معماری کلاینت-سرور در آینده باید بتواند راهکارهای بهتری برای مدیریت امنیت دادهها ارائه دهد. استفاده از پروتکلهای امنیتی پیشرفتهتر، رمزنگاری دادهها در سطح کلاینت و سرور، و پیادهسازی سیستمهای پایش و تشخیص تهدیدات امنیتی از جمله مواردی هستند که در آینده اهمیت بیشتری خواهند یافت.
۶. هوش مصنوعی و یادگیری ماشین
هوش مصنوعی (AI) و یادگیری ماشین (ML) به طور فزایندهای در سیستمهای کلاینت-سرور وارد میشوند. با استفاده از الگوریتمهای پیشرفته یادگیری ماشین، سرورها میتوانند دادههای دریافتی از کلاینتها را تجزیه و تحلیل کنند و به صورت خودکار پاسخهای بهینهتری ارائه دهند. همچنین، هوش مصنوعی میتواند به سرورها کمک کند تا عملکرد سیستمها را بهبود بخشیده و ترافیک شبکه را بهتر مدیریت کنند.
۷. کاهش بار سرور با فناوریهای جدید
در آینده، معماری کلاینت-سرور به گونهای تکامل خواهد یافت که بخشی از پردازشهای سنگین به کلاینتها منتقل شود. با بهبود قدرت پردازشی دستگاههای کلاینت (مانند گوشیهای هوشمند و لپتاپها)، برخی از وظایف به کلاینتها محول میشود که این موضوع باعث کاهش بار سرور و افزایش کارایی سیستمها خواهد شد.
۸. پشتیبانی از پردازش بلادرنگ
با رشد نیاز به سیستمهایی که بتوانند به صورت بلادرنگ (Real-Time) عمل کنند، مانند برنامههای ویدئویی، بازیهای آنلاین، و سیستمهای مالی، معماری کلاینت-سرور باید به گونهای تغییر یابد که تاخیرها به حداقل برسد. استفاده از شبکههای تحویل محتوا (CDN) و فناوریهای جدیدی مانند 5G به این معماری کمک میکند تا تجربه بهتری به کاربران ارائه دهد.
آینده معماری کلاینت-سرور با ظهور فناوریهای نوین همچنان روشن است. با پیشرفتهای جدید در زمینههای میکروسرویسها، ابر، اینترنت اشیا، و هوش مصنوعی، این معماری بهینهتر و مقیاسپذیرتر خواهد شد و توانایی ارائه خدمات به تعداد بیشتری از کاربران و دستگاهها را خواهد داشت. همچنین، نیاز به امنیت بیشتر و حفظ حریم خصوصی کاربران باعث میشود که نوآوریهای امنیتی نقش مهمی در تکامل این معماری ایفا کنند.