CodeGym /وبلاگ جاوا /Random-FA /قسمت 1. آنچه باید قبل از یادگیری Spring و JavaEE بدانید
John Squirrels
مرحله
San Francisco

قسمت 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) رویکردی چند لایه برای ساخت شبکه ایجاد می کند. این به وضوح نشان می دهد که چگونه و در چه لایه ای موجودیت های یک شبکه می توانند با یکدیگر تعامل داشته باشند. در کل، این مدل شامل 7 لایه است:
7 کاربرد
6 ارائه
5 جلسه
4 حمل و نقل
3 شبکه
2 لینک اطلاعات
1 فیزیکی
شکستن مدل به لایه‌های انتزاعی به توسعه‌دهندگانی که روی لایه انتقال کار می‌کنند، اجازه می‌دهد، برای مثال، مجبور نباشند به جزئیات پیاده‌سازی در سطح لایه‌های شبکه و جلسه فکر کنند. از این روش در برنامه نویسی نیز استفاده می شود. بیایید تمام لایه های مدل OSI را در نظر بگیریم و مشخص کنیم که کدام یک مورد علاقه ما هستند:
  1. لایه فیزیکی - این لایه با قوانین فیزیک و نحوه استفاده از آنها برای اهدافمان سروکار دارد. به عنوان مثال، ایجاد کابل ها و قرار دادن آنها برای موجودیت های موجود در شبکه.

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

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

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

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

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

    یک آدرس IPv4 شامل چهار مقدار بایت است که با نقطه از هم جدا شده اند، به عنوان مثال: 192.0.2.235. باید به یاد داشته باشید که این مقادیر بایت هستند، به این معنی که در محدوده 0..255 قرار دارند.

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

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

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

    پورت عددی در محدوده 0 تا 65535 است. پس از کولون به آدرس IP اضافه می شود: 192.0.2.235:8080 . اما نمی توانید از همه پورت ها در محدوده مشخص شده استفاده کنید: برخی از آنها برای سیستم عامل رزرو شده اند، برخی دیگر معمولاً برای اهداف خاصی استفاده می شوند. ما به اهداف پورت های مختلف نخواهیم پرداخت. در حال حاضر کافی است نقش آنها را در فرآیند ارتباط در شبکه درک کنیم.

  5. لایه جلسه - این لایه جلسات ارتباطی را ایجاد و مدیریت می کند. در این لایه، امکان تعامل برنامه‌ها و ارسال درخواست‌های سطح سرویس وجود دارد. چیزی که باید بدانیم این است که در این لایه یک جلسه بین دو کاربر باز می شود و ما باید با جلسه کار کنیم.

    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-address:port خواهد بود . اگر این آدرس را می دانید، می توانید مستقیماً به برنامه دسترسی داشته باشید. تصور کنید که ما یک برنامه وب نوشتیم که میانگین دمای هوای همه کشورها را به صورت بلادرنگ نمایش می دهد. ما آن را روی سروری با آدرس 226.69.237.119 در پورت 8080 مستقر کردیم. برای اینکه کاربر بتواند اطلاعاتی را از ما دریافت کند، باید 5 شماره را در مرورگر وارد کند: 226.69.237.119:8080. مردم دوست ندارند مجموعه ای از اعداد را حفظ کنند: بسیاری از ما نمی توانیم بیش از دو شماره تلفن را به خاطر بسپاریم. به همین دلیل سیستم نام دامنه اختراع شد. ما می توانیم برای آدرس خود یک "نام مستعار" ایجاد کنیم، برای مثال world-temperature.com. به جای اینکه به دنبال ما با استفاده از آدرسی متشکل از پنج شماره دشوار به خاطر سپردن، کاربر می تواند نام دامنه ما را در نوار آدرس مرورگر وارد کند. سرورهای DNS وجود دارند که نام دامنه را به آدرس های واقعی نگاشت می کنند. به عنوان مثال، هنگامی که یک کاربر codegym.cc را در یک مرورگر وارد می کند، درخواست او به یک سرور DNS ارسال می شود که آن را به آدرس واقعی تبدیل می کند. قسمت 1. آنچه باید قبل از یادگیری Spring و JavaEE بدانید - 4درک این موضوع برای ما مهم است، زیرا برنامه های کاربردی ما سرویس های راه دور را هم با نام دامنه و هم با آدرس های واقعی فراخوانی می کنند. ما باید درک کنیم که در هر صورت خدمات یکسان است. فعلا همین! در این مقاله به اصول اولیه شبکه سازی پرداختیم که با شروع یادگیری برنامه نویسی وب به شما کمک خواهد کرد. دفعه بعد به این خواهیم پرداخت که معماری سرویس گیرنده-سرور چیست و چرا درک آن بسیار مهم است. قسمت 2. بیایید کمی در مورد معماری نرم افزار صحبت کنیم قسمت 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