بررسی ماژول های توسعه برنامه های تحت وب

چهارشنبه 6 مرداد 1395

در این مقاله توضیح کامل و جامعی پیرامون ماژول های مربوط به توسعه وب ارائه خواهیم کرد. این ماژول ها به صورت end to end می باشند.

 بررسی ماژول های توسعه برنامه های تحت وب

 

Front End

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

برخی از زبان های متداول عبارتند از Angular ، Ember ، React ، Aurelia ، Boostrap . این زبان ها، فریم ورک های front end نامیده می شوند و بر پایه ی Javascript نوشته شده اند. Javascript امکان پویایی و تحرک به صفحات وب می بخشد و از CSS نیز می توان برای استایل دهی به آن ها استفاده کرد.

HTML المان های اصلی مانند دکمه ها ، box های ورود اطلاعات و ... را برای ما فراهم می کند. JavaScript و CSS نیز به شما اجازه می دهند تا ظاهر زیبایی برای این المان ها ایجاد کنید. JS همچنین قابلیت پویایی و تحرک به سایت می بخشد.  اگر در برنامه facebook موس را بر روی یک نام نگهدارید، اطلاعات مربوط به آن شخص برای شما نشان داده می شود. این کار توسط JS  انجام می شود. شما می توانید کدهای مربوط به این کار را از طریق کلیک راست و انتخاب گزینه ی  "Inspect Element"  مشاهده کنید.

شما می توانید HTML framework مربوط به هر صفحه را با فشردن Ctrl+U  و یا کلیک راست بر روی صفحه و انتخاب گزینه  View Source مشاهده نمایید.

برای استایل دهی، از SASS  و  LESSنیز می توان استفاده کرد. Bootstrap نیز در این زمینه می تواند تا حد زیادی کمک کند.

اگر برنامه قرار است بر روی تلفن اجرا شود، می توانیم از React Native نیز استفاده کنیم. React Native می تواند بدون نیاز به هیچ گونه تنظیمات اضافی هم بر روی Ios و هم بر روی Android اجرا شود. Ionic نیز به همین صورت است.

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

علاوه بر این موارد، زبان های توسعه ی موبایل بسیاری مانند Swift و Objective-C برای iOS و Android Java برای Android نیز وجود دارند.

برنامه های Native به صورت محلی بر روی دستگاه تلفن نصب می شوند و شما می توانید از آن ها به صورت آفلاین نیز استفاده کنید. این برنامه ها می توانند به resource های آنلاین نیز دسترسی پیدا کنند، اما برنامه به صورت کلی در حالت آفلاین است. همچنین این موارد در یک زبان تحت وب کدنویسی نمی شوند.

برنامه های Hybrid نیز به نوعی به همین صورت هستند. آن ها دارای یک native dock هستند ولی با زبان های وب نوشته می شوند (حتی شما می توانید به برخی از داده ها به صورت آفلاین نیز دسترسی داشته باشید.) و به صورت مرتب نیز داده ها را با وب همگام سازی کنید.

برنامه های وب به راحتی می توانند از طریق یک مرورگر و بدون نیاز به یک native "dock" فعالیت خودشان را انجام بدهند.

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

نقل و انتقال اطلاعات

همه ی اطلاعاتی که شما نیاز دارید می تواند از طریق لایه انتقال داده منتقل شود. این اطلاعات می تواند شامل هر چیزی باشد، اما معمولا این کار از طریق  یک REST API انجام می شود.

نمونه ای از این مورد در زیر آورده شده است :

yourdomain.com/api/credentials/get

yourdomain.com/api/credentials/set

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

یک نکته جالب : socket + JSON + Node.js یک back end server مناسب برای gaming ایجاد می کنند.

JSON  یک object notation است که به صورت زیر است:

{"propertya":5, "propertyb":"value"}

این روش کمی پیچیده تر است. می توانید از این روش برای ارسال داده ها مانند نام و نام خانوادگی استفاده کنید. همچنین می توانید از یک back end REST API مانند yourdomain.com/api/names/get استفاده کنید. این روش خروجی ای مانند زیر به شما برمی گرداند:

{"first_name":"Carlos", "last_name":"La Borde"}

XML هم زیاد با این روش متفاوت نیست، حتی برای نمایش box IMO زیباتر نیز هست. اما کمی سنگین تر است:


<xml ..../>
<firstname>Carlos</firstname>
<lastname>La Borde</lastname>
</xml>

XML به دلیل سنگین بودن ، چندان پرکاربرد نیست اما همچنان به صورت موثری کارها را انجام می دهد. حالا به سراغ Back End می رویم.

Back End

بخش زیادی از امور به وسیله ی زبان های وب انجام شده است، اما حقیقت این است که شما می توانید از هر چیزی که دوست دارید استفاده کنید. برخی از سیستم ها وجود دارند که به REXX مجهز هستند (زبان IBM قدیمی ) و به خوبی نیز عمل می کنند.

زبان های استانداردی که امروزه شما درباره آن ها می شنوید عبارتند از : PHP, Ruby (+on Rails), Python,  و  Node.js.

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

IMO Ruby, Python  و  Node با REST بسیار خوب و قوی عمل می کنند، و Node نیز با JSON بسیار مطابقت دارد ، زیرا JS است.

شما به این مواردی که نام بردیم محدود نیستید. Java  و  C# در بخش back end بسیار عالی کار می کنند، اگر چه کمی سنگین هستند.

لایه انتقال DB

برای این که بتوانیم در بخش back end کار کنیم، نیاز داریم زبان تحت وبی که با آن کار می کنیم را به پایگاه داده متصل کنیم. برای برخی از زبان ها و پایگاه داده ها این کار بسیار آسان است.

برای Node  و  MySQL  و یا  mongo کافی است بسته ی مربوط به آن ها را نصب کنید و سپس شروع به کار کنید.

برای برخی از زبان های دیگر ، مانند Java  یا DB2 این کار کمی مشکل تر است و ممکن است مجبور شوید از ODBC  یا  JDBCاستفاده کنید (که بر روی سرور نصب می شوند و پلی به پایگاه داده برای شما فراهم می کنند).

پایگاه داده

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

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

یک query ساده به صورت زیر است :   

SELECT * FROM users WHERE email_address='carloslaborde@domain.com' 

علامت * به معنی انتخاب کل اعضای context است.

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

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

از انواع پایگاه داده های محبوب می توان MongoDB  و  Redis را نام برد. دلیل محبوبیت Mongo این است که بخشی از بسته ی MEAN  است. M = Mongo, E = Express ، A = Angular و N = Node .

پایگاه داده های NoSQL  برای نگهداری داده هایی که به صورت بسته بسته ارسال می شوند، مناسب است. داده هایی که در پایگاه داده های NoSQL   قرار می گیرند می توانند به راحتی اندازه گیری شوند و همچنین به راحتی به اشتراک گذاشته شوند.(مساله اشتراک گذاری یکی از مسائلی بود که در پایگاه داده SQL برای انجام آن با مشکلات زیادی روبرو بودیم.)

اما این نوع پایگاه داده ها در انجام عملیات های پیچیده چندان قوی عمل نمی کنند.

اگر در حال کار با Bluemix هستید، Cloudant انتخاب مناسبی است که استفاده از آن را به شما توصیه می کنیم.

Redis نیز که در مقاله به آن اشاره کردیم، یک پایگاه داده key store و یا key value نامیده می شود، که به این معنی است که شما داده ها را به صورت جفت جفت باید به آن ارسال کنید. سرعت آن بالاست و از in-memory caching استفاده می کند.

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

 

 

 

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید