• از مدل معماری مشتری-سرور استفاده شده است. معماری سرویس گیرنده-سرور

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

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

    ویژگی های کلیدی:

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

    عملکردهای اساسی برنامه بین مشتری و سرور به اشتراک گذاشته می شود.

    پشتیبانی کامل از چند کاربر

    تضمین یکپارچگی داده ها

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

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

    حفاظت ضعیف از داده ها در برابر هک، به ویژه از سوی کاربران بی پروا سیستم.

    پیچیدگی بالای مدیریت و پیکربندی ایستگاه های کاری کاربر سیستم.

    نیاز به استفاده از رایانه های شخصی قدرتمند در سایت های مشتری.

    پیچیدگی بالای توسعه سیستم به دلیل نیاز به پیاده سازی منطق تجاری و ارائه رابط کاربریدر یک برنامه

    به راحتی می توان متوجه شد که بسیاری از کاستی های معماری کلاسیک یا 2 لایه ای مشتری-سرور از استفاده از ایستگاه مشتری به عنوان یک مجری منطق تجاری IS ناشی می شود. بنابراین، یک گام آشکار در تکامل بیشتر معماری‌های IS، ایده یک "Tin Client" بود، یعنی تقسیم الگوریتم‌های پردازش داده به بخش‌های مربوط به عملکرد عملکردهای تجاری و مربوط به نمایش اطلاعات در یک انسان. -نمایندگی دوستانه در عین حال، تنها قسمت دوم بر روی ماشین کلاینت باقی می ماند که مربوط به بررسی اولیه و نمایش اطلاعات است و تمام قابلیت های واقعی سیستم را به قسمت سرور منتقل می کند.

    معماری انتقالی به سه لایه (2.5 لایه)

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

    همانطور که می بینید، چنین سازماندهی سیستم بسیار یادآور سازماندهی اولین سیستم های واحد است، با این تفاوت که مکان کاربر یک ترمینال (با صفحه سبز بدنام) نیست، بلکه کامپیوتر شخصی، که یک رابط کاربری گرافیکی ارائه می دهد، به عنوان مثال، در سال های اخیر، مرورگرهای استاندارد www اغلب به عنوان برنامه های مشتری استفاده می شوند. البته، چنین بازگشتی به سیستم‌های تقریباً واحد قبلاً در سطح فناوری متفاوتی رخ داده است. استفاده از DBMS با تمام مزایای آن اجباری شده است. برنامه ها برای بخش سرور عمدتاً به زبان های تخصصی با استفاده از مکانیسم رویه های ذخیره شده سرور پایگاه داده نوشته می شوند. بنابراین، در سطح یک سازمان منطقی، IS در معماری مشتری-سرور با یک کلاینت نازک به سه لایه تقسیم می شود - یک لایه داده، یک لایه عملکرد تجاری (رویه های ذخیره شده) و یک لایه ارائه. متأسفانه، معمولاً در چنین طرحی برای ساخت IS، نمی توان کل منطق تجاری یک برنامه کاربردی را در زبان های DBMS داخلی که برای این منظور در نظر گرفته نشده است، نوشت. بنابراین، اغلب بخشی از عملکردهای تجاری در بخش مشتری سیستم ها پیاده سازی می شود که ناگزیر از این امر "چاق می شود". تا حدودی به این دلیل و تا حدودی به این دلیل که این IC ها از نظر فیزیکی از دو جزء تشکیل شده اند، این معماری اغلب به عنوان معماری 2.5 لایه مشتری-سرور نامیده می شود.

    بر خلاف معماری 2 لایه، معماری 2.5 لایه معمولاً نیازی به کانال های ارتباطی پرسرعت بین بخش های مشتری و سرور سیستم ندارد، زیرا نتایج محاسبات آماده از طریق شبکه منتقل می شود - تقریباً تمام محاسبات در شبکه انجام می شود. سمت سرور. حفاظت از اطلاعات نیز به میزان قابل توجهی بهبود یافته است - به کاربران حق دسترسی به عملکردهای سیستم و عدم دسترسی به داده های آن و غیره داده می شود. با این حال، در کنار مزایای رویکرد واحد، معماری 2.5 نیز تمام معایب خود را اتخاذ می کند، مانند: مقیاس پذیری محدود، وابستگی به پلت فرم نرم افزاریاستفاده محدود از منابع محاسباتی شبکه. علاوه بر این، برنامه‌های بخش سرور سیستم به زبان‌های ساخته شده در DBMS برای توصیف رویه‌های ذخیره‌شده طراحی‌شده برای اعتبارسنجی داده‌ها و ساخت گزارش‌های ساده نوشته می‌شوند، و اصلاً برای نوشتن IS در سطح سازمانی نیستند. همه اینها سرعت سیستم را کاهش می دهد، پیچیدگی ایجاد و اصلاح یک IS را افزایش می دهد و به منفی ترین حالت بر هزینه سخت افزار لازم برای عملکرد آن تأثیر می گذارد.

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

    مانند هر توسعه‌دهنده فرانت‌اند، تقریباً در هر پروژه‌ای باید با پروتکل‌های کلاینت-سرور سر و کار داشته باشم - بدون آنها نمی‌توانم کار کنم. و خیلی خیلی اوقات شما باید با معماری ضعیف کار کنید.

    همچنین، اغلب اوقات توسعه یک پروتکل و معماری بر دوش یک توسعه‌دهنده وب قرار می‌گیرد، که همیشه درست نیست - در بیشتر موارد باید تنها در ارتباط با کسانی که با این معماری سازگار هستند توسعه یابد. متأسفانه، در حالی که در طول سه سال گذشته روی چندین ده پروژه کار می کردم، فقط 3 یا 4 بار درگیر برنامه ریزی این بخش از معماری بودم - در همه موارد دیگر، قبلاً با درجات مختلفی از آمادگی ارائه شده است. مشتری. چقدر دنیا می تواند بهتر باشد!

    خطا در پردازش

    بیشتر اوقات به چیزی شبیه این برخورد کردم:

    کد HTTP 200 (OK) نادرست نام کاربری یا رمز عبور اشتباه است. لطفا دوباره تلاش کنید.
    آن ها نتیجه پردازش درخواست در خود XML موجود است، کد بازگشتی HTTP 200 است، یعنی. به طور معمول، داده ها در قالب یک RPC معمولی ارائه می شوند. به عنوان مثال، به روشی مشابه، در 90 درصد موارد، مدیریت خطا در پروتکل SOAP پیاده سازی می شود.

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

    اما اجازه دهید در اصل به کاستی های این رویکرد نگاه کنیم.

    • ابتدا باید XML را تجزیه کنید. این داده های اضافی منتقل شده از طریق شبکه، زمان اضافی CPU صرف شده برای تجزیه XML، اضافی است رمبرای ذخیره داده های متنی همه اینها در دستگاه های مدرن در منطقه Wi-Fi چندان ترسناک نیست، اما حتی چنین زیاده روی هایی می تواند تفاوتی در مترو بین ایستگاه ها در برنامه ای ایجاد کند که ده ها درخواست را به طور همزمان ارسال می کند (و با این رویکرد، بلوک های خالی برای رسیدگی به خطا باید در هر درخواست، حتی موفق باشید).
    • ثانیاً، توسعه‌دهنده وب باید خود متن‌های خطا را اختراع کند. اغلب آنها برای کاربر کاملاً نامفهوم هستند، زیرا دقت جمله بندی آخرین چیزی است که یک توسعه دهنده وب هنگام نوشتن یک سرویس به آن فکر می کند. متن خطا در 90٪ موارد با زبان مادری موافق نیست، و در نهایت، تعداد زیادی از برنامه های تلفن همراه نیاز به بومی سازی دارند. در حالی که متن خطا به احتمال زیاد همیشه فقط به زبان انگلیسی نوشته می شود، بنابراین برای یک برنامه نویس جلویی کاملاً بی فایده است - او نمی تواند آن را بگیرد و چاپ کند.

    اما زمان مورد نیاز یک برنامه نویس وب برای اختراع متن پیام تلف می شود و حتی کانال با اطلاعات غیر ضروری بارگذاری می شود.

    چگونه یک مشکل را حل کنیم؟

    که در پروتکل HTTPسال‌هاست که می‌توان کدهای خطای خود را اضافه کرد، برای این منظور آنها باید به محدوده 512 تا 597 تعلق داشته باشند. من مطمئن هستم که این تعداد خطا برای پوشش همه موارد کافی است. خطاهای احتمالیدر یک برنامه با اندازه متوسط واضح است که این چه مزایایی دارد، اما با این حال اجازه دهید خلاصه کنیم:

    1. هیچ اضافه کاری وجود ندارد. فقط کد HTTP در هدر ارسال می شود، به سادگی هیچ بدنه درخواستی وجود ندارد.
    2. در سمت سرویس گیرنده، تنها دو شاخه از کد پردازش درخواست وجود دارد - اجرای موفقیت آمیز، یا یک خطا در حین اجرا (هر دو فراخوان قبلاً خارج از جعبه در هر کتابخانه درخواستی اجرا شده اند). هیچ "درخواستی با موفقیت تکمیل شد، اما ممکن است یک خطای منطقی در بدنه پاسخ" وجود داشته باشد.
    خطای سرور 5xx

    سرور نتوانست درخواست ظاهرا معتبری را برآورده کند.
    کدهای وضعیت پاسخ که با رقم "5" شروع می شود مواردی را نشان می دهد که در آن سرور متوجه شده است که با خطا مواجه شده است یا در غیر این صورت قادر به انجام درخواست نیست. به جز زمانی که به درخواست HEAD پاسخ می‌دهد، سرور باید یک موجودیت حاوی توضیحی از وضعیت خطا را شامل شود و مشخص کند که آیا این یک وضعیت موقتی یا دائمی است. به همین ترتیب، عوامل کاربر باید هر موجودیتی را که شامل می شود به کاربر نمایش دهند. این کدهای پاسخ برای هر روش درخواستی قابل اجرا هستند.

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

    اگرچه ما تعمیم نمی دهیم - ایده استفاده از کدهای HTTP چند سال پیش توسط یک آمریکایی به من پیشنهاد شد.

    به طور کلی، ایدئولوژی این است - مشتری همیشه بهتر می داند که چگونه یک خطا را گزارش کند. و سرور باید به سریع ترین و مقرون به صرفه ترین روش خطا را به مشتری اطلاع دهد.

    اتصال به جلسه یا کوکی.

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

    دومین عیب جهانی این است که سافاری (یا هر مرورگری در اندروید) کوکی‌ها و متغیرهای نشست خود را با برنامه به اشتراک نمی‌گذارد که البته از نظر امنیت درست است، اما منجر به یکسری مشکلات و عصا می‌شود.

    فرض کنید اپلیکیشن موبایل شما تنها 70 درصد از عملکرد وب سایت را اجرا می کند. 30٪ باقیمانده از عملکرد فقط در وب در دسترس است و برنامه شما فقط حاوی پیوندهایی به صفحات وب مربوطه است.

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

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

    بازگشت HTML

    این قبلاً ریشه در طراحی خود سرورهای وب دارد که در ابتدا فقط برای مرورگر طراحی شده بودند. خطاهای 403، 404، و گاهی اوقات خطاهای پیچیده تر، اغلب به عنوان یک صفحه HTML برگردانده می شوند، که اغلب به سادگی ابزاری برای نشان دادن در آن ندارند. اپلیکیشن موبایل. به طور دقیق تر، وجوه وجود دارد، اما وقتی صفحه 404 را می بینید پیدا نشدبا یک Arial Black سیاه و سفید در پس‌زمینه‌ای سفید در داخل یک نمای وب، کاربر تلفن همراه عصبانی می‌شود و برنامه را می‌بندد.

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

    از WSDL استفاده کنید

    در مورد فناوری های مایکروسافت، وضعیت هنوز هیچ چیز نیست - بیشتر آنها فن آوری های مدرناز WSDL خارج از جعبه پشتیبانی می کند. این را نمی توان در مورد PHP و جاوا گفت - به خصوص توسعه دهندگان PHP علاقه زیادی به ایجاد دستی صفحات معمولی که اساساً خدمات وب هستند، دارند. اما برای ادغام با یک سرویس وب سازگار با WSDL، کافی است یک توسعه‌دهنده موبایل از ابزاری برای تولید کد استفاده کند، در حالی که پاسخ‌های سرویس وب کامپایل شده دستی نیز باید با دست تجزیه شوند.

    درست است، در اینجا نیز نکات ظریفی وجود دارد - پیاده‌سازی استاندارد WSDL از MS و Sun (Oracle) هنوز ناسازگاری‌هایی دارند، اما هنوز هم رفع این ناسازگاری‌ها با یک فایل سریع‌تر از نوشتن دستی همه چیز است.

    نتیجه

    من فقط دردناک ترین اشتباهات طراحی را که توسعه دهندگان موبایل هر روز با آن روبرو هستند، لمس کرده ام. اگر مقاله مورد تقاضا باشد، من قطعاً در مورد ده ها ظرافت مشتری-سرور دیگر خواهم نوشت که بسیار دوست دارم در API سرویس های وب که هر روز با آنها کار می کنید ببینم.

    معماری سرویس گیرنده-سرور(معماری مشتری-سرور) مفهوم است شبکه اطلاعات، که در آن بخش عمده ای از منابع آن در سرورهایی متمرکز شده است که به مشتریان خود خدمات ارائه می دهند. معماری مورد بحث دو نوع مؤلفه را تعریف می کند: سرورها و مشتریان.

    سرور -یک شی است که فراهم می کند سرویسسایر اشیاء شبکه به درخواست آنها. سرویسیک فرآیند خدمات مشتری است.

    شکل معماری مشتری-سرور

    سرور بر اساس دستورالعمل های مشتریان کار می کند و اجرای وظایف آنها را مدیریت می کند. پس از اجرای هر کار، سرور نتایج را برای مشتری ارسال کننده کار ارسال می کند.

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

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

    شکل مدل کلاینت-سرور

    مشتری آغازگر است و استفاده می کند پست الکترونیکیا سایر خدمات سرور در این فرآیند، مشتری یک سرویس را درخواست می کند، یک جلسه ایجاد می کند، نتایج مورد نظر خود را دریافت می کند و پس از انجام آن گزارش می دهد.

    که در شبکه هایی با فایل سرور اختصاصیدر یک مستقل اختصاصی کامپیوتریک سیستم عامل شبکه سرور نصب شده است. این کامپیوترتبدیل می شود سرورنرم افزار ( توسط), نصب شده بر روی ایستگاه کاری، به آن اجازه می دهد تا با سرور ارتباط برقرار کند. رایج ترین سیستم عامل های شبکه عبارتند از:

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

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

    در معماری مدرن مشتری-سرور، چهار گروه از اشیاء متمایز می شوند: سرویس گیرندگان، سرورها، داده ها و خدمات شبکه. کلاینت ها در سیستم های ایستگاه های کاری کاربر قرار دارند. داده ها بیشتر در سرورها ذخیره می شوند. خدمات شبکهسرورها و داده های مشترک هستند. علاوه بر این، سرویس ها رویه های پردازش داده ها را مدیریت می کنند.

    شبکه های معماری کلاینت-سرور دارای مزایای زیر هستند:

    امکان ایجاد شبکه مقدار زیادایستگاه های کاری؛

    ارائه حساب کاربری متمرکز، امنیت و مدیریت دسترسی که مدیریت شبکه را ساده می کند.


    دسترسی کارآمد به منابع شبکه؛

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

    در کنار مزایای شبکه، معماری سرویس گیرنده-سرور دارای معایبی نیز می باشد:

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

    نیاز به پرسنل واجد شرایط برای مدیریت؛

    هزینه شبکه بالاتری داشته باشد و تجهیزات شبکه.

    سیستم های "مشتری-سرور". قسمت 2

    معماری سرویس گیرنده-سرور: تعریف، پیش نیازهای کاربرد، مزایا و معایب

    معماری مشتری-سرور چیست؟ گزینه های ساخت برنامه

    پس بیایید در نهایت در مورد آن صحبت کنیم

    کلاینت-سرور چیست؟ . به بیان دقیق، باید بین فناوری مشتری-سرور به معنای گسترده تمایز قائل شد، که می تواند در هر موردی استفاده شود. سیستم های کامپیوتریاز معماری واقعی مشتری-سرور در رابطه با برنامه های کاربردی اطلاعات به طور کلی و سیستم های مدیریت خودکار سازمانی به طور خاص.

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

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

    این تعریف گسترده باعث ایجاد سردرگمی می شود. بنابراین، سیستم فایل سرور نیز از فناوری سرویس گیرنده-سرور استفاده می کند، اما از نقطه نظر معماری برنامه کاربردی، مهم است که سرور چه نوع منابعی را در اختیار مشتریان قرار می دهد.

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

    :
  • مولفه ارائه داده (تجسم)؛
  • جزء منطق کاربردی؛
  • جزء مدیریت پایگاه داده
  • در واقع، هر برنامه ای که اجرای یک یا دیگری را کامپیوتری می کند وظیفه کاربردی، باید اطلاعات را با کاربر مبادله کند، پردازش واقعی این اطلاعات را به عنوان بخشی از اتوماسیون یک فرآیند تجاری خاص انجام دهد، و در نهایت، داده های مورد استفاده در برنامه را در یک یا آن رسانه دائمی ذخیره کند.

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

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

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

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

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

    جزء تجسم وظیفه اعمال شده ورودی کاربر را با استفاده از ابزارهای مختلف و همچنین نمایش اطلاعات روی صفحه نمایش و چاپ انجام می دهد. جزء تجسم برای معماری سرویس گیرنده-سرور همیشه در محل کار کاربر اجرا می شود (زیرا او باید هر گونه نتیجه برنامه را مشاهده کند).

    مؤلفه منطق اعمال شده یک یا چند کار مربوط به پردازش داده ها را در یک یا دیگری حل می کند موضوع. این کامپوننت بسته به مدل مورد استفاده می تواند به روش های مختلفی بین بخش های کلاینت و سرور توزیع شود.

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

    از نظر کمیت قطعات تشکیل دهندهسیستم های مشتری-سرور به دو لایه و سه لایه تقسیم می شوند

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

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

    در معماری مشتری-سرور، چندین مورد متفاوت وجود دارد مدل های کاربردیبسته به توزیع اجزای برنامه بین بخش های سرویس گیرنده و سرور. از نظر تاریخی، اولین مورد توسعه یافت مدل سرور دسترسی به داده از راه دور. در این مدل قسمت سرور فقط داده ها را ذخیره می کند و قسمت کلاینت تمام منطق برنامه ها را پیاده سازی می کند. در این صورت کلاینت درخواست هایی را برای دریافت داده به سرور ارسال می کند و سرور نمونه های خاصی را به مشتری برمی گرداند. رایج ترین وسیله ارتباط بین کلاینت و سرور در این مورد SQL ( زبان ساختار یافته query) یک زبان استاندارد غیر رویه ای داده گرا است.

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

    در سمت مشتری، شدت تبادل داده های شبکه و در برخی موارد، ساختار برنامه ساده شده است. در حال حاضر، این گزینه برای سیستم های ساختمان رایج ترین است.

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

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

    پیش نیازهای ظهور معماری مشتری-سرور در سازمان

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

    در مرحله اول، معماری سرویس گیرنده-سرور زمانی حیاتی می شود که تعداد کاربرانی که بطور فعال از داده های مشابه استفاده می کنند از 10 تا 15 نفر فراتر رود. با توجه به محدودیت‌های اساسی موجود در برنامه‌های کاربردی فایل-سرور، انتقال 15 کاربر موازی چنین سیستم‌هایی دشوار است و 20 کاربر اغلب از هم جدا می‌شوند. بنابراین، اگر یک شرکت با وظیفه ساختن سیستمی روبرو شود که در آن تعداد مکان‌هایی که به طور همزمان با داده‌ها کار می‌کنند از 20 بیشتر شود، مشتری-سرور عملا تنها گزینه برای آن است.

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

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

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

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

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

    معماری سرویس گیرنده-سرور: بله، اما...

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

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

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

    و در نهایت بزرگترین تلهدر راه ایجاد یک سیستم CS در یک سازمان نیاز است تغییر ساختار مدیریت و هزینه های سازمانی مرتبط

    .

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

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

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

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

    DB، در ساختار زبان پرس و جوهای SQL (Structured Query Language) که استاندارد صنعتی در دنیای پایگاه داده های رابطه ای است. سرور راه دور درخواست را دریافت کرده و آن را به سرور پایگاه داده SQL هدایت می کند. SQL Server - برنامه ویژهکه پایگاه داده راه دور را مدیریت می کند. سرور SQL تفسیر پرس و جو، اجرای آن در پایگاه داده، شکل گیری نتیجه پرس و جو و صدور آن را برای برنامه مشتری فراهم می کند. در این حالت، منابع کامپیوتر مشتری در اجرای فیزیکی درخواست شرکت نمی کنند. کامپیوتر مشتری فقط درخواستی را به پایگاه داده سرور ارسال می کند و نتیجه را دریافت می کند و پس از آن آن را به روش لازم تفسیر کرده و به کاربر ارائه می دهد. از آنجایی که نتیجه درخواست به برنامه مشتری ارسال می شود، تنها داده هایی که مشتری به آنها نیاز دارد از طریق شبکه "سفر" می کند. در نتیجه بار روی شبکه کاهش می یابد. از آنجایی که پرس و جو در همان محل ذخیره داده ها (روی سرور) اجرا می شود، نیازی به ارسال بسته های داده بزرگ نیست. علاوه بر این، سرور SQL در صورت امکان، پرس و جوی دریافتی را به گونه ای بهینه می کند که در حداقل زمان با کمترین سربار [ [ 3.2 ] , [ 3.3 ] ] اجرا شود. سیستم در شکل نشان داده شده است. 3.3.

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


    برنج. 3.3.معماری سرویس گیرنده-سرور

    • وجود دارد شبکه محلی، متشکل از رایانه های مشتری که هر کدام دارای برنامه مشتریبرای کار با پایگاه داده
    • در هر یک از رایانه های مشتری، کاربران توانایی اجرای برنامه را دارند. با استفاده از رابط کاربری ارائه شده توسط برنامه، تماسی را با DBMS واقع در سرور برای واکشی/به‌روزرسانی اطلاعات آغاز می‌کند. برای ارتباط استفاده می شود زبان خاصپرس و جوهای SQL، به عنوان مثال فقط متن درخواست از طریق شبکه از مشتری به سرور منتقل می شود.
    • DBMS فراخوانی به داده های واقع در سرور را آغاز می کند، در نتیجه تمام پردازش داده ها بر روی سرور انجام می شود و تنها نتیجه پرس و جو در رایانه مشتری کپی می شود. بنابراین، DBMS نتیجه را به برنامه باز می گرداند.

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

    • ویژگی های مشتری برنامه:
      • ارسال درخواست به سرور
      • تفسیر نتایج پرس و جوهای دریافتی از سرور.
      • ارائه نتایج به کاربر به شکلی (رابط کاربری).
    • توابع بخش سرور:
      • دریافت درخواست از برنامه های مشتری
      • تفسیر درخواست ها
      • بهینه سازی و اجرای پرس و جو در پایگاه داده.
      • ارسال نتایج به برنامه مشتری
      • اطمینان از سیستم امنیتی و کنترل دسترسی.
      • مدیریت یکپارچگی پایگاه داده
      • اجرای پایداری حالت عملکرد چند کاربره.

    DBMS های به اصطلاح "صنعتی" در معماری "مشتری-سرور" کار می کنند. آنها صنعتی نامیده می شوند زیرا DBMS این کلاس است که می تواند عملکرد سیستم های اطلاعاتی در مقیاس یک شرکت متوسط ​​و بزرگ ، سازمان ، بانک را تضمین کند. MS SQL Server , Oracle , Gupta , Informix , Sybase , DB2 , InterBase و تعدادی دیگر به دسته DBMS های صنعتی [ [ 3.2 ] ] تعلق دارند.

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

    مزایای اصلی این معماری را در مقایسه با معماری "فایل - سرور" در نظر بگیرید:

    • به طور قابل توجهی ترافیک شبکه را کاهش داد.
    • پیچیدگی برنامه های کلاینت کاهش می یابد (بیشتر بار روی قسمت سرور می افتد) و در نتیجه الزامات ظرفیت های سخت افزاری رایانه های مشتری کاهش می یابد.
    • در دسترس بودن یک ویژه ابزار نرم افزاری- SQL-server - منجر به این واقعیت می شود که بخش قابل توجهی از وظایف طراحی و برنامه نویسی قبلاً حل شده است.
    • به طور قابل توجهی یکپارچگی و امنیت پایگاه داده را بهبود می بخشد.

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

    3.4. معماری سه لایه (چند لایه) "مشتری-سرور".

    سه پیوندی (در برخی موارد چند پیوندی) معماری(N-tier یا چند- معماری سه لایه? اکنون هنگام تغییر منطق کسب و کار، دیگر نیازی به تغییر اپلیکیشن های کلاینت و به روز رسانی آن ها برای تمامی کاربران نیست. علاوه بر این، الزامات تجهیزات کاربر تا حد امکان کاهش می یابد.

    بنابراین، در نتیجه، ساختار کار به شرح زیر است:

    • پایگاه داده در قالب مجموعه ای از فایل ها بر روی هارد یک کامپیوتر اختصاصی (سرور شبکه) قرار دارد.
    • DBMS نیز بر روی سرور شبکه قرار دارد.
    • یک سرور برنامه اختصاصی وجود دارد که میزبان نرم افزار تجزیه و تحلیل کسب و کار (منطق تجاری) [ [ 3.1 ] ] است.
    • کامپیوترهای کلاینت زیادی وجود دارند که هر کدام دارای یک به اصطلاح "Tin Client" هستند - یک برنامه کلاینت که رابط کاربری را پیاده سازی می کند.
    • در هر یک از رایانه های مشتری، کاربران این فرصت را دارند که یک برنامه کاربردی - یک کلاینت نازک را اجرا کنند. با استفاده از رابط کاربری ارائه شده توسط برنامه، تماسی را با نرم افزار هوش تجاری واقع در سرور برنامه آغاز می کند.
    • سرور برنامه نیازهای کاربر را تجزیه و تحلیل می کند و درخواست هایی را برای پایگاه داده ایجاد می کند. برای برقراری ارتباط، از یک زبان پرس و جوی SQL استفاده می شود، به عنوان مثال. فقط متن درخواست از طریق شبکه از سرور برنامه به سرور پایگاه داده منتقل می شود.
    • DBMS تمام اطلاعات مربوط به ساختار فیزیکی پایگاه داده واقع در سرور را در خود محفوظ می دارد.
    • DBMS فراخوانی به داده های واقع در سرور را آغاز می کند که در نتیجه نتیجه پرس و جو در سرور برنامه کپی می شود.
    • سرور برنامه نتیجه را به برنامه مشتری (به کاربر) برمی گرداند.
    • برنامه با استفاده از رابط کاربری، نتیجه اجرای پرس و جو را نمایش می دهد.