CodeGym /وبلاگ جاوا /Random-FA /قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم
John Squirrels
مرحله
San Francisco

قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم

در گروه منتشر شد
این مطالب بخشی از مجموعه "مقدمه ای بر توسعه سازمانی" است . بخش اول، در مورد شبکه، اینجا است . قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم - 1معماری نرم افزار به ساختار ایجاد شده در یک برنامه، یعنی کل ماژول ها و اجزای برنامه و نحوه تعامل آنها اشاره دارد. برنامه نویسان برای مدت طولانی روی معماری های خوب کار می کنند، بنابراین تعجب آور نیست که ما در مورد الگوهای معماری زیادی شنیده باشیم. شما باید آنها را درک کنید: هنگام نوشتن یک برنامه وب، ارائه یک معماری خوب بسیار مهم است، زیرا یک برنامه وب دارای اجزا و ماژول های بیشتری نسبت به یک برنامه معمولی است. الگوی معماری روشی هوشمندانه برای حل برخی از مشکلات طراحی نرم افزار است. احتمالاً با الگوهای طراحی مانند روش کارخانه، کارخانه انتزاعی، سازنده، نمونه اولیه، تک تن و احتمالاً موارد دیگر برخورد کرده اید. هنگام نوشتن کد، ایجاد کلاس ها و برنامه ریزی نحوه تعامل کلاس ها از آنها استفاده می کنیم. الگوهای معماری در سطح بالاتری از انتزاع، هنگام برنامه ریزی تعامل کاربر با سرورها، داده ها و سایر اجزاء مورد استفاده قرار می گیرند. بیایید نگاهی گذرا به برخی از الگوها و نحوه استفاده از آنها بیندازیم.

معماری سرویس گیرنده-سرور

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

اجزای معماری مشتری-سرور

بیایید ببینیم همه چیز در مورد چیست. معماری مشتری -سرور یک الگوی طراحی است که برای ایجاد برنامه های کاربردی وب استفاده می شود. این معماری از سه جزء تشکیل شده است: قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم - 3
  1. Client - از نام آن می توان فهمید که این مؤلفه از برخی خدمات (برنامه وب) استفاده می کند و برای درخواست اطلاعات با یک سرور تماس می گیرد.

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

  3. شبکه - این بخش ساده است. تبادل اطلاعات بین مشتری و سرور را تسهیل می کند.

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

  • یک ماژول سرور - یک برنامه وب که بر روی یک سرور میزبانی می شود و پیام های کاربران را دریافت می کند، آنها را پردازش می کند و سپس آنها را برای گیرندگان می فرستد.

قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم - 4هنگامی که می خواهیم اطلاعات مفید (یا نه چندان مفید) را در اینترنت مشاهده کنیم، یک مرورگر را باز می کنیم، یک درخواست را در نوار جستجو وارد می کنیم و در پاسخ از موتور جستجو اطلاعاتی دریافت می کنیم. در این زنجیره، مرورگر مشتری است. درخواستی را با اطلاعاتی در مورد آنچه ما به دنبال آن هستیم به سرور ارسال می کند. سرور درخواست را پردازش می کند، مرتبط ترین نتایج را پیدا می کند، آنها را در قالبی که مرورگر (مشتری) می تواند درک کند، بسته بندی می کند و آنها را باز می فرستد. سرویس های پیچیده مانند موتورهای جستجو می توانند سرورهای زیادی داشته باشند. برای مثال، یک سرور مجوز، یک سرور برای یافتن اطلاعات، یک سرور برای تولید پاسخ، و غیره. مشتری فقط از نقطه ورود، یعنی آدرس سروری که درخواست ها باید به آن ارسال شود، می داند. اپلیکیشنی را که در قسمت قبلی این مجموعه بررسی کردیم را به یاد بیاورید . این برای نظارت بر میانگین دمای هوا در همه کشورها در زمان واقعی بود. معماری آن چیزی شبیه به این است: قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم - 5برنامه ما روی سرور قرار دارد. فرض کنید هر پنج ثانیه یک بار درخواست هایی را به سرورهایی که توسط ایستگاه های هواشناسی محلی اداره می شوند ارسال می کند، اطلاعات دمای یک کشور خاص را از سرورها دریافت می کند و این اطلاعات را ذخیره می کند. هنگامی که مشتری از ما می‌خواهد «دمای فعلی هوای جهان را مشاهده کنید»، ما آخرین اطلاعات ذخیره‌شده را که بر اساس کشور مرتب شده‌اند، برمی‌گردانیم. بنابراین، برنامه ما هم به عنوان یک سرور (زمانی که درخواست های کاربر را پردازش می کند) و هم به عنوان یک مشتری (زمانی که اطلاعات را از سرورهای دیگر دریافت می کند) عمل می کند.
در اینجا یک نکته مهم وجود دارد: مفهوم سرور در مورد یک کامپیوتر خاص نیست، بلکه در مورد رابطه بین موجودیت های شبکه است .
یک معماری سرویس گیرنده-سرور ساده به ندرت و فقط برای برنامه های بسیار ساده استفاده می شود. برای پروژه های واقعا بزرگ و پیچیده از معماری های مختلفی استفاده می کنیم که در آینده با آن ها آشنا خواهید شد. حال بیایید مدلی را بررسی کنیم که بسیار شبیه معماری کلاینت-سرور است.

معماری سه لایه

این یک الگوی معماری است که ماژول سوم را معرفی می کند - ذخیره سازی داده ها . در این الگو به سه سطح معمولاً لایه ها یا لایه ها گفته می شود: قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم - 6
  1. لایه مشتری رابط کاربری است که به آن لایه ارائه نیز می گویند. این می تواند یک مرورگر وب باشد که صفحات HTML را دریافت می کند، یا یک رابط کاربری گرافیکی که با استفاده از JavaFX نوشته شده است. نکته اصلی این است که این لایه به کاربر اجازه می دهد درخواست هایی را به سرور ارسال کند و پاسخ های آن را پردازش کند.

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

  3. لایه داده سرور پایگاه داده است: سرور ما با آن تعامل دارد. این لایه تمام اطلاعات لازم برای عملکرد برنامه را ذخیره می کند.

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

مزایای معماری سه لایه

معماری مانند این به ما مزایای زیادی می دهد، از جمله:
  1. توانایی محافظت در برابر تزریق SQL (این یک حمله به سرور است؛ شامل ارسال کد SQL است که هنگام اجرا، به مهاجم اجازه می دهد تا پایگاه داده ما را تحت تأثیر قرار دهد).

  2. جداسازی داده هایی که می خواهیم دسترسی کاربر به آنها را کنترل کنیم.

  3. امکان تغییر داده ها قبل از ارسال به مشتری.

  4. مقیاس پذیری (توانایی گسترش برنامه ما به چندین سرور که از یک پایگاه داده استفاده می کنند.

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

هر چند وقت یکبار باید از الگوهای معماری استفاده کرد؟

اگر مثلاً با الگوی طراحی روش کارخانه آشنا هستید ، احتمالاً به این فکر کرده اید که چه زمانی از آن استفاده کنید. گاهی اوقات تصمیم گیری برای انجام کاری دشوار است: ایجاد یک شی با استفاده از اپراتور جدید یا با استفاده از روش کارخانه. اما با گذشت زمان، درک فرا می رسد. وقتی صحبت از الگوهای معماری به میان می آید، همه چیز کمی متفاوت است. چارچوب‌های سازمانی به گونه‌ای طراحی شده‌اند که به برنامه‌نویس اجازه می‌دهد تا پروژه‌ای را بر اساس برخی الگوهای پذیرفته‌شده ایجاد کند. بر این اساس، قبل از یادگیری فریم ورک Spring، حتما باید معماری کلاینت-سرور، معماری سه لایه و معماری MVC را درک کنید. نگران نباشید: ما هنوز در مورد معماری MVC صحبت خواهیم کرد. قسمت 3. HTTP/HTTPS قسمت 4. اصول اولیه Maven قسمت 5. Servlets و Java Servlet API. نوشتن یک برنامه وب ساده قسمت 6. ظروف Servlet قسمت 7. معرفی الگوی MVC (Model-View-Controller)
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION