JavaRush /وبلاگ جاوا /Random-FA /قسمت 1. آنچه باید قبل از یادگیری Spring و JavaEE بدانید

قسمت 1. آنچه باید قبل از یادگیری Spring و JavaEE بدانید

در گروه منتشر شد
اگر قبلاً تحصیل در Java SE را به پایان رسانده اید یا به آن نزدیک شده اید، وقت آن است که به گام های بعدی برای تسخیر حرفه یک توسعه دهنده جاوا فکر کنید. قسمت 1. آنچه باید قبل از یادگیری Spring و JavaEE بدانید - 1از یک طرف، شما در حال حاضر درک خوبی از جاوا دارید: می دانید چگونه با IDE کار کنید، برنامه بنویسید و خیلی چیزهای دیگر. اما بعداً با آنها، برنامه ها چه کنیم؟ چگونه می توان آنها را خنک تر کرد و "آنها را در جهان رها کرد"؟ بدیهی است که زمان شروع مطالعه فناوری های سازمانی فرا رسیده است. و اینجاست که سرگرمی شروع می شود. مهم نیست که با کدام پشته فناوری شروع کنید. چه JavaEE باشد چه Spring، احتمالاً با چیزهای زیادی روبرو خواهید شد که هنوز از درک شما خارج است. بین مبانی جاوا و فناوری های پیشرفته، هنوز سطح متوسطی از دانش وجود دارد که به شما کمک می کند هنگام خواندن اسناد حجیم، بقایای خودکنترلی و اعتماد به نفس را از دست ندهید. بنابراین هدف از این سری مقالات ارائه حداقل دانش نظری لازم برای مطالعه بیشتر JavaEE یا Spring است. تمام مواد به 7 قسمت تقسیم می شود:
  1. بیایید کمی در مورد شبکه صحبت کنیم.
  2. بیایید ساختار مشتری-سرور و معماری سه سطحی را در نظر بگیریم.
  3. بیایید به پروتکل های HTTP/HTTPS نگاه کنیم.
  4. بیایید همه چیزهایی را که باید در مورد Maven بدانید بیاموزیم.
  5. بیایید در مورد سرولت ها صحبت کنیم.
  6. ظروف سرولت
  7. و در نهایت - در مورد MVC.

قسمت 1. بیایید کمی در مورد شبکه صحبت کنیم

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

مدل شبکه OSI

مدل OSI (Open Systems Interconnection) یک رویکرد لایه ای برای ساخت شبکه ایجاد می کند. این به وضوح نشان می دهد که چگونه و در چه سطحی اعضای یک شبکه می توانند با یکدیگر تعامل داشته باشند. در مجموع، این مدل شامل 7 سطح است:
7 کاربردی
6 نمایندگی
5 جلسه
4 حمل و نقل
3 شبکه
2 مجرا
1 فیزیکی
تجزیه به لایه‌های انتزاعی به متخصصانی که مثلاً روی لایه انتقال کار می‌کنند، اجازه می‌دهد تا به جزئیات اجرای شبکه در لایه‌های شبکه و جلسه فکر نکنند. از این روش در برنامه نویسی نیز استفاده می شود. بیایید به تمام لایه های مدل OSI نگاه کنیم و دریابیم که کدام یک از آنها برای ما جالب هستند:
  1. 1. سطح فیزیکی - در اینجا قوانین فیزیک کار خود را انجام می دهند و وظیفه انسان استفاده و هدایت آن برای اهداف خود است. به عنوان مثال، ایجاد کابل ها و قرار دادن آنها برای اعضای شبکه.

    ما علاقه ای نداریم.

  2. لایه پیوند داده - مسئول انتقال داده ها به گره های شبکه و ایجاد کانال های انتقال داده بر روی اشیاء فیزیکی است.

    Нам не интересен, если только нет желания писать прошивку для каналообразующей аппаратуры.

  3. Сетевой уровень — для определения addressов отдельных пользователей сети и маршрутов к ним. На этом уровне стоит остановиться подробнее, а именно — на addressе пользователя в сети.

    Он определяется специальным протоколом: самый распространённый — IPv4 (Internet Protocol version 4). Именно его нужно использовать веб-программисту для обращения к другому абоненту сети.

    IPv4 состоит из четырех byteовых значений, разделенных точкой, например: 192.0.2.235. Стоит помнить, что значения byteовые, а значит, они лежат в пределах 0..255.

    IP-address, в свою очередь, делятся на классы, и просто так присвоить себе красивую комбинацию циферок не получится, но так сильно углубляться мы не станем. Достаточно понимать, что IP-address — это уникальный идентификатор абонента в сети, по которому мы сможем к нему обратиться.

  4. Транспортный уровень — занимается доставкой информации addressту. Для этого используются разные протоколы, которые нам пока не интересны. Гораздо больше нас интересует понятие, которое появляется на этом уровне, — port.

    Порты отвечают за идентификацию конкретного applications на компьютере. Например, ты написал чат на Java, установил на 2 компа и хочешь отправить своему собеседнику. Твое сообщение упаковывается, отправляется по конкретному IP-addressу, доставляется твоему собеседнику, но его ПК не знает, что делать с полученной информацией, так How не понимает, Howое приложение должно обработать твое сообщение. Для этого и указываются порты при общении абонентов в сети.

    Порт представляет собой число от 0 до 65535. Он добавляется к IP-addressу после двоеточия: 192.0.2.235:8080. Но нельзя использовать все порты из указанного диапазона: часть из них зарезервирована под операционную систему, еще часть принято использовать с конкретно оговоренной целью. В преднаmeaning разных портов углубляться не будем, пока достаточно понимать их роль в процессе общения в сети.

  5. Сеансовый уровень — создает и управляет сеансами связи приложений. На этом уровне становится возможным взаимодействие приложений, отправка requestов служебного уровня. Для нас важно знать, что на этом уровне между двумя абонентами открывается сессия (session), с которой нам часто придется работать.

    Сессия — сущность, которая создается при установке связи между двумя пользователями. В ней можно сохранять нужную нам информацию о юзере, об истории их взаимодействия. Важной деталью является то, что при остановке обмена информацией сессия не пропадает, а сохраняет свое состояние на протяжении установленного промежутка времени, поэтому пользователи могут продолжить обмен информацией после перерыва.

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

  6. لایه ارائه - مسئول رمزگذاری / رمزگشایی داده ها است. بدیهی است که اگر بخواهیم رشته «Hello web» را برای کاربر دیگری ارسال کنیم، ابتدا به کد باینری تبدیل می‌شود (کد می‌شود) و سپس ارسال می‌شود. پس از رسیدن به مقصد، پیام به عقب تبدیل (رمزگشایی) می شود و گیرنده می تواند رشته اصلی را ببیند. این اقدامات در سطح ارائه رخ می دهد.

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

    پروتکل های زیادی در این سطح استفاده می شوند: POP3، FTP، SMTP، XMPP، RDP، SIP، TELNET و البته HTTP/HTTPS. پروتکل یک توافق جهانی است که ما هنگام نوشتن پیام به آن پایبند هستیم. قطعا در مورد پروتکل های HTTP/HTTPS به صورت جداگانه و با جزئیات بیشتر صحبت خواهیم کرد.

قسمت 1. آنچه باید قبل از یادگیری Spring و JavaEE بدانید - 2 ما نیازی به دانستن نحوه عملکرد هر سطح از این مدل نداریم. نکته اصلی درک اصول عملکرد عناصری است که هنگام نوشتن برنامه های وب باید با آنها سر و کار داشته باشیم، یعنی:
  • آدرس IP - آدرس مشترک در شبکه؛
  • بندر - آدرس برنامه یک مشترک خاص؛
  • Session موجودیتی است که در کل ارتباط بین دو مشترک وجود دارد.
  • پروتکل های کاربردی (HTTP/HTTPS) قوانینی هستند که ما را در هنگام نوشتن و ارسال پیام راهنمایی می کنند.
وقتی مثلاً به یک فروشگاه آنلاین می رویم، آدرس محل و پورت آن را نشان می دهیم. در اولین بازدید شما، جلسه ای ایجاد می شود که در آن فروشگاه می تواند اطلاعات را ثبت کند. مثلاً در مورد کالاهایی که در سبد خرید گذاشته ایم. اگر برگه فروشگاه اینترنتی را ببندیم و سپس به آن برگردیم، محصولات ما در سبد خرید می‌مانند زیرا در جلسه ذخیره می‌شوند. خوب، البته، ما تمام اطلاعاتی را که از فروشگاه دریافت می کنیم از طریق پروتکل HTTP/HTTPS دریافت می کنیم و مرورگر ما می تواند آنها را پردازش کند. می توانید اعتراض کنید و بگویید که تا به حال آدرس و پورت را در مرورگر وارد نکرده اید و تا حدی حق با شماست، زیرا نام دامنه را وارد کرده اید که در سرور DNS تبدیل شده است. اما در اینجا، بیایید نگاهی بهتر به چیستی داشته باشیم.

DNS (سیستم نام دامنه)

همانطور که قبلا متوجه شدیم، هر مشترک در شبکه یک آدرس منحصر به فرد دارد. اگر در مورد یک برنامه صحبت می کنیم، آدرس منحصر به فرد آن IPv4:port خواهد بود . با دانستن این آدرس، می توانید مستقیماً به برنامه دسترسی داشته باشید. بیایید تصور کنیم که ما یک برنامه تحت وب نوشتیم که میانگین دمای هوای همه کشورها را به صورت بلادرنگ نمایش می دهد. ما آن را روی سروری با آدرس 226.69.237.119 و در پورت 8080 مستقر کردیم. برای اینکه کاربر بتواند اطلاعاتی را از ما دریافت کند، باید 5 شماره را در مرورگر وارد کند: 226.69.237.119:8080. مردم واقعاً دوست ندارند مجموعه ای از اعداد را به خاطر بسپارند: همه ما بیش از دو شماره تلفن را به خاطر نمی آوریم. به همین دلیل سیستم نام دامنه اختراع شد . ما می توانیم برای آدرس خود یک "نام مستعار" ایجاد کنیم - برای مثال world-temperature.com - و به جای جستجوی ما با استفاده از یک آدرس پنج رقمی، کاربر می تواند نام دامنه ما را در نوار آدرس مرورگر تایپ کند. برای تطبیق نام دامنه و آدرس واقعی، سرورهای DNS وجود دارد . هنگامی که یک کاربر، به عنوان مثال، javarush.ru را در مرورگر وارد می کند، درخواست او به سرور DNS ارسال می شود، جایی که به یک آدرس واقعی تبدیل می شود. قسمت 1. آنچه باید قبل از یادگیری Spring و JavaEE بدانید - 4درک این موضوع برای ما مهم است، زیرا در برنامه های خود ما خدمات از راه دور را هم با نام دامنه و هم با آدرس واقعی فراخوانی می کنیم و اینها همان خدمات خواهند بود. همین! در این مقاله به اصول اولیه طراحی شبکه پرداختیم که قبل از شروع یادگیری برنامه نویسی وب مفید خواهد بود. دفعه بعد به این خواهیم پرداخت که معماری مشتری-سرور چیست و چرا درک آن بسیار مهم است. قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم قسمت 3. پروتکل های HTTP/HTTPS قسمت 4. اصول Maven قسمت 5. Servlets. نوشتن یک برنامه وب ساده قسمت 6. ظروف Servlet قسمت 7. معرفی الگوی MVC (Model-View-Controller) قسمت 8. نوشتن یک برنامه کوچک فنری بوت
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION