اپلیکیشن Native یا Hybrid : مسئله این است !

اپلیکیشن Native یا Hybrid : مسئله این است !
کاربران عموما زمان استفاده از تلفن‌های هوشمند خود لذت می‌برند! چون خیلی از کارهای خود را از جمله چک کردن ایمیل، گشت و گذار در جوامع مجازی، خوندن کتاب، دیدن فیلم و گوش کردن موسیقی و خیلی کارهای دیگه رو میتونن با دستگاه کوچک خود انجام دهند. البته این چیزی هستش که کاربران بهش توجه میکنن، ولی توسعه دهندگان از دید دیگری به نرم‌افزارهای تلفن همراه نگاه می‌کنند ! یک سوالی که ممکن است برای توسعه دهندگان بوجود آید، توسعه نرم‌افزار بصورت Native یا Hybrid هستش!
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
جای بروشور دیواری
خرید جای بروشور دیواری و رومیزی
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
تعمیر لوازم خانگی
تعمیر جاروبرقی، مایکروفر، بخارشوی، ظرفشویی، لباسشویی، سولاردام، کولرگازی
خودتان را اینجا معرفی کنید

بطور کل نرم‌افزارهای موبایل به سه دسته تقسیم می‌شوند: 
  1. Native App
  2. Web App
  3. Hybrid App

نرم‌افزار Native چیست؟

ساخت و توسعه نرم‌افزارهای Native به این معناست که برای برنامه نویسی و توسعه نرم‌افزار خود از زبان‌های اصلی سیستم عامل استفاده کنید. مثلا برای توسعه نرم‌افزار اندروید باید از زبان برنامه نویسی Java و برای توسعه نرم‌افزار آیفون باید از زبان برنامه نویسی Objective-C استفاده کنید. بزرگترین مزیت این حالت بازدهی (performance) بالای نرم‌افزار است، زمانی که شما برنامه خود را بصورت Native می‌نویسید کدهای شما به زبان ماشین کامپایل خواهند شد(Dalvik bytecode در اندروید) که همین موضوع باعث می‌شود شما حداکثر بازدهی ممکن از نرم‌افزار را داشته باشید. بازدهی بالا می‌تواند شامل افکت‌های انیمیشن، روان کار کردن بخش‌های مختلف برنامه، امکان استفاده از multi touch و خیلی موارد دیگه باشه که بدلیل دسترسی مستقیم به موقعیت‌های حافظه و سخت‌افزار گوشی اتفاق میفته.
توسعه نرم‌افزارهای Native آسان نیست!  چرا؟ چون باید برنامه‌ای که می‌خواهید بنویسید، برای هر platform بشکل مجزا بنویسید. با اینکه امروزه منابع زیادی برای یادگیری برنامه‌نویسی در اینترنت وجود دارند اما باز هم یادگیری برنامه‌نویسی بصورت Native شاید برای همه قابل فهم و انجام نباشه و همین موضوع کمی کار رو سخت میکنه. اگر شما بخواهید نرم‌افزار خود را برای پلتفرم‌های مختلف مانند اندروید، ios و یا ویندوز طراحی کنید باید کدی که می‌نویسید را به زبان برنامه‌نویسی هر کدام از پلتفرم‌ها مجددا بنویسید! شاید منطق و الگوریتم همگی یکی باشند اما مسلما SDK و APIهای که برای هرکدام استفاده می‌کنید متفاوت خواهند بود و از همه مهمتر باید وقت بیشتری برای کدنویسی آن بگذارید.

پس اگر می‌خواهید برنامه نویسی Native انجام دهید به خاطر داشته باشید برای هر Platfrom باید زبان برنامه‌نویسی آن را یاد بگیرید و مجددا کدهای برنامه خود را بنویسید.

مزایا

  • بدلیل کامپایل شدن برنامه دارای سرعت بالایی هستند
  • دسترسی به تمامی امکاناتی که سیستم عامل به برنامه‌نویس می‌دهد
  • پشتیبانی از APIهای مختلف

معایب

  • دوباره نویسی کدهای برنامه برای پلتفرم‌های مختلف
  • هزینه تمام شده بالا بدلیل زمان توسعه برنامه
 

نرم‌افزار Web چیست ؟

نرم‌افزارهای web در واقع نرم‌افزار نیستند! آنها وب‌سایتی هستند که بصورت Responsive طراحی شده‌اند و یا اینکه وب‌سایتی هستند که مخصوص موبایل پیاده‌سازی شده‌اند و کاربران می‌توانند توسط مرورگر دستگاه‌های خود آنها را بدرستی مشاهده کنند.  شاید بشه گفت این قبیل نرم‌افزارها  شبیه نرم‌افزار هستند، تا اینکه نرم‌افزار واقعی باشند.
این نرم‌افزارها با استفاده از HTML5 طراحی و توسعه داده می‌شوند، به همین دلیل باید حتما در مرورگر گوشی آنها را مشاهده کرد. برای دسترسی به این قبیل نرم‌افزارها کاربر باید مانند بازدید از یک وب‌سایت عمل کند، یعنی ابتدا مرورگر را باز کند، در بخش نوار آدرس، آدرس وب‌سایت یا وب‌اپلیکیشن را وارد کند و آنرا از طریق مرورگر مشاهده کند. امکان نصب نرم‌افزار بر روی گوشی وجود ندارد و کاربر فقط می‌تواند یک bookmark از آن آدرس را بر روی گوشی خود بسازد که در آینده دسترسی به آن سایت راحت‌تر باشد.   
با توجه به اینکه مرورگرهای مختلفی بر روی گوشی‌ها وجود دارد و کاربر شما از مرورگر مورد علاقه خود استفاده می‌کند، اگر نرم‌افزار را اصولی توسعه ندهید و یا برخی نکات در طراحی سایت/اپلیکیشن را در نظر نگیرید، ممکن است نرم‌افزار شما در برخی از مرورگرها دچار مشکل شود.
البته باید این رو هم گفت که Web Appها خیلی هم بد نیستند! چون کار شما رو به عنوان توسعه دهنده خیلی راحت میکنه! اگر شما در حال طراحی یک وب سایت با ساختار وب اپلیکیشن هستید کافیه موارد لازم برای دستگاه‌های موبایل و تبلت را در نظر بگیرید و نرم‌افزار خود را تولید کنید، بدین شکل شما یکبار کد می‌زنید و با همان کد هم وب‌سایت دارید و هم موبایل اپلیکیشن از نوع Web App

مزایا

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

معایب

  • نداشتن دسترسی به سخت‌افزار گوشی یا تبلت
  • وابسته به مرورگر
  • عدم امکان انتشار نرم‌افزار در مارکت‌ها و app store


نرم‌افزار Hybrid چیست ؟

نرم‌افزارهای Hybrid مانند نرم‌افزارهای Web هستند (وب سایت یا وب اپلیکیشن) که باید در مرورگر مشاهده شوند اما تفاوتی که با Web App دارد این است که نیازی نیست کاربر در مرورگر گوشی، برنامه را ببیند بلکه توسط WebView در اندروید و یا UIWebView در iOS (مرورگر native) محتوای نرم‌افزار به کاربر، در قالب یک نرم‌افزار Native نمایش داده خواهد شد. نرم‌افزارهای Hybrid توسط HTML و CSS و JavaScript توسعه داده می‌شوند و سپس توسط نرم‌افزارهای مانند Cordova به نرم‌افزار Native تبدیل می‌شوند.
البته همانطوری که پیش‌تر گفته شد، تبدیل آنها به نرم‌افزار Native بدین معنا نیست که کدهای ما Compile شوند بلکه بر اساس پلتفرم مورد نظر، Cordova یک اپلیکیشن Native  تولید می‌کند و در آن یک web view قرار می‌دهد و کدهای ما را درون آن اجرا می‌کند.
این روش توسعه نرم‌افزار نسبت به نرم‌افزارهای Native سریعتر و راحت‌تر است. امکان رفع مشکلات و یا به روزرسانی نرم‌افزار بسیار راحت خواهد بود و هر زمان که بخواهید می‌توانید برای هر بستری که لازم باشد نرم‌افزار خود را منتشر کنید.
Cordova به شما این امکان را می‌دهد که بدون حتی اضافه کردن یک خط کد به برنامه خود، آنرا برای پلتفرم‌های مختلف منتشر کنید! علاوه بر این تقریبا شما به تمامی امکانات سخت‌افزاری دستگاه (که در نرم‌افزارهای Native می‌توانستید کار کنید) دسترسی دارید و حتی کلی Plugin از قبل توسعه داده شده وجود دارد که می‌توانید بسیار راحت‌تر برنامه خود را توسعه دهید. تنها ایرادی که به نرم‌افزارهای Hybrid وارده اینه که بازدهی نرم‌افزارهایی که بدین شکل توسعه داده می‌شوند به اندازه نرم‌افزارهای Native نیستند و دلیلش هم اینه که کدهای شما توسط مرورگر قرار است پردازش و نمایش داده شود.

مزایا

  • نوشتن کد یکبار و استفاده از آن در بسترهای متفاوت
  • دسترسی به تمامی امکاناتی که سیستم‌عامل به برنامه نویس می‌دهد
  • دارای Pluginهای متعدد

معایب

  • بازدهی پایین نسبت به نرم‌افزار Native


در زمان بررسی Native یا Hybrid بودن نرم‌افزار، Web App جایگاهی ندارد. پس ما مقایسه رو بین این دو نوع نرم‌افزارها انجام می دهیم. 
همانطوری که در بالا گفته شد در تولید نرم‌افزار Native و Hybrid تقریبا امکانات و قابلیت‌ها یکسان هستند فقط دو فرق عمده دارند:
  1. ​سرعت و بازدهی نرم‌افزار
  2. نحوه نوشتن کد
در نرم‌افزارهای Hybrid بدلیل اینکه در مرورگر نرم‌افزار Native کدها اجرا می‌شوند، بازدهی پایین‌تری نسبت به Native دارند. چون یکبار باید web view باز شود و سپس داخل آن کدها اجرا شوند. اما در مورد کد نویسی، سرعت توسعه نرم‌افزار در حالت Hybrid خیلی سریع‌تر و راحت‌تر نسبت به Native است.
حالا به این مرحله می‌رسیم که بین این دو کدام را انتخاب کنیم ؟

بالاخره Hybrid یا Native ؟

در اینجا من نظر شخصی خودم رو با تجربه ای که در این زمینه دارم به شما انتقال می‌دهم ولی ممکنه نظرها متفاوت باشه، پس لطفا نظر خودتون رو از طریق نظرات این مطلب ارسال کنید و با دیگران به اشتراک بگذارید.
اگر می‌خواهید بازدهی نرم‌افزار شما در حد عالی باشه، اگر می‌خواهید بازی بنویسید، اگر می‌خواهید از APIهای Native استفاده کنید و همچنین اگر شما برنامه‌نویس هستید یعنی قبلا حداقل با زبان برنامه نویسی C در حد قابل قبولی کار کرده‌اید و الان هم هنوز تمایل دارید یک برنامه‌نویس باقی بمانید (بطور کل علاقه شما برنامه نویسی است) بهتره که به سمت نرم‌افزارهای Native بروید و یک زبان را انتخاب کنید و آنرا یاد بگیرید. 
مسلما نوشتن برای همه پلتفرم‌ها کار آسانی نیست و نیاز به زمان دارد، اما با توجه به اینکه برنامه‌نویسی یک مفهوم و درک است، اگر شما بصورت اصولی یک زبان برنامه‌نویسی را یادبگیرید می‌توانید پس از اینکه به آن مسلط شدید، سایر زبان‌های برنامه نویسی را یاد بگیرید. کار خیلی مشکلی نیست، چون تقریبا همه چیز برابر و مفاهیم یکی هستند و فقط syntax ها و نحوه استفاده از apiها متفاوت هستند.

برای شروع منابعی را معرفی می‌کنم که می‌توانند به شما کمک کنند: و اما اگر شما یک طراح وب هستید و می‌خواهید همچنان طراح وب بمانید و علاقه‌ای به یادگیری برنامه نویسی‌های پیچیده ندارید پیشنهاد میکنم بصورت Hybrid نرم‌افزارهای خودتون رو طراحی کنید.
برای طراحان وب که HTML5 و CSS و JavaScript (منظور FrontEnd Developer است) بلد هستند شاید یادگیری یک زبان برنامه‌نویسی جدید و درک آن بسیار سخت و زمان‌بر باشه، پس بهتره از معلومات قبلی خود استفاده کنید و با کمی وقت گذاشتن و یادگیری تکنولوژی‌ها و ابزارهای جدید نرم‌افزار موبایل طراحی کنید.
برای تولید نرم‌افزارهای Hybrid می‌تونید از ابزارهای زیر استفاده کنید: اصلاح: Xamarin به اشتباه در دسته تولید نرم‌افزارهای Hybrid قرار گرفته است، در واقع خروجی اپ‌هایی که با Xamarin تولید می‌شوند بصورت Native هستند.

اگر می‌خواهید بصورت Hybrid بازی طراحی کنید و توسعه بدید، پیشنهاد می‌کنم از Ludei استفاده کنید.
زمانی که بصورت Hybrid کار می‌کنید می‌توانید از فریم‌ورک‌های طراحی و یا برنامه‌نویسی مختلفی استفاده کنید: من با Ionic کار کردم که یک فریم‌ورک فوق‌العاد برای توسعه نرم‌افزار بخصوص برای iOS هستش، در این فریم ورک از AngularJS استفاده شده که بخاطر ساختار MVC، کدها بسیار تمیز و سرعت توسعه هم بالا خواهد بود. جدیدا هم با Meteor شروع به کار کردم که اونم فوق‌العاده هستش، پیشنهاد میکنم اگر میخواین موبایل اپلیکیشن Hybrid توسعه بدید، حتما از یکی از فریم‌ورک‌ها استفاده کنید و AngularJS و Meteor رو در اولویت قرار بدید.

نتیجه گیری

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

مجید علوی زاده فعالیت حرفه ای خود را از سال ۱۳۷۷ با طراحی گرافیک شروع کرد، طراحی وب را از سال ۱۳۸۰ و برنامه نویسی وب را از سال ۱۳۸۱ آغاز کرد و در همان سال وب سایت مجید آنلاین را تاسیس کرد. هم اکنون تخصص او طراحی و توسعه وب است.

نظرات و سوالات کاربران

ارسال پاسخ بهار
بهار
سه شنبه ۲۰ آذر ۱۳۹۷ ۱۰:۰۶
خیلی عالی و روان توضیح دادید ممنونم
ارسال پاسخ مهدی
مهدی
جمعه ۱۱ خرداد ۱۳۹۷ ۱۴:۱۹
سلام زبان برنامه نویسی Basic4Android که چندسالی هست معرفی شده در کدوم دسته از قرار میگیره : Hybrid یا Native
ارسال پاسخ بهزاد احمدی
بهزاد احمدی
یکشنبه ۰۵ فروردین ۱۳۹۷ ۰۳:۰۴
سلام و سپاس از مقاله شما دوست عزیز
کد نوشته شده توسط پلترفرم Meteor آیا در ویندوز هم میتوان خروجی ios گرفت؟
با کدام پلتفرم میتوان کراس پلتفرم در ویندوز نوشت؟
سپاسگزارم
ارسال پاسخ نوبتی
نوبتی
پنج شنبه ۲۶ بهمن ۱۳۹۶ ۲۳:۳۲
بین زامارین و ری اکت نیتیو کدوم خوبن؟
ارسال پاسخ پیمان برشکار
پیمان برشکار
پنج شنبه ۲۶ بهمن ۱۳۹۶ ۱۷:۱۰
با سلام ، مطالب جالب و فنی خوب و موثری بودند ، از شما به جهت درج مطالب گرانبهایتان متشکرم
ارسال پاسخ مجید علوی‌زاده
مجید علوی‌زاده
یکشنبه ۲۴ دی ۱۳۹۶ ۱۸:۱۴
در پاسخ به دیدگاه Mohamad.s.y ارسال شده در یکشنبه ۲۴ دی ۱۳۹۶ ۱۵:۴۴
سلام
ممنون از توضیحات جامع. یه پرسش هم بنده دارم اونم اینه که بجای جاوا میشه از زبان پایتون استفاده کرد؟
شما می‌تونید از فریم‌ورک kivy.org برای توسعه اپلیکیشن موبایل با Python استفاده کنید.
ارسال پاسخ مجید علوی‌زاده
مجید علوی‌زاده
یکشنبه ۲۴ دی ۱۳۹۶ ۱۸:۱۲
در پاسخ به دیدگاه شراره ارسال شده در یکشنبه ۲۴ دی ۱۳۹۶ ۱۳:۴۹
سلام برای رستوران یک اپ می خواهم که فروش انلاین داشته باشه بخرم از توضیحاتتون متوجه شدم native باشه بهتر هست درسته؟
فرقی نمی‌کنه، می‌تونید بصورت Hybrid هم طراحی کنید.
باید ببینید هزینه تمام شده کدوم یکی براتون مناسب‌تر هستش.
ارسال پاسخ Mohamad.s.y
Mohamad.s.y
یکشنبه ۲۴ دی ۱۳۹۶ ۱۵:۴۴
سلام
ممنون از توضیحات جامع. یه پرسش هم بنده دارم اونم اینه که بجای جاوا میشه از زبان پایتون استفاده کرد؟
ارسال پاسخ شراره
شراره
یکشنبه ۲۴ دی ۱۳۹۶ ۱۳:۴۹
سلام برای رستوران یک اپ می خواهم که فروش انلاین داشته باشه بخرم از توضیحاتتون متوجه شدم native باشه بهتر هست درسته؟
ارسال پاسخ مجید علوی‌زاده
مجید علوی‌زاده
چهارشنبه ۰۱ آذر ۱۳۹۶ ۱۶:۱۴
در پاسخ به دیدگاه iman ارسال شده در سه شنبه ۳۰ آبان ۱۳۹۶ ۱۸:۲۰
با سلام و احترام
سوالی داشتم.
ایا یادگیری زبان basic مانند b4a مناسب است و ایا این زبان برای برنامه نویسی اندروید چطور میدانید؟
ایا native است؟
ممنون میشم پاسخ بدید.
راستش من اطلاعات دقیقی در مورد B4A ندارم اما بعید می‌دونم Hybrid باشه. ظاهرا استفاده ازش نیاز به لایسنس داره،
شما اگر می‌خواین یک زبان برنامه‌نویسی جدید یادبگیرید بهتره که زبانی مانند Java یا Swift (اگر نمی‌خواهید ویندوزی توسعه بدین) رو یاد بگیرید که بتونید یه نرم‌افزار native برای پلتفرمی که در نظر دارید بنویسید.
ارسال پاسخ iman
iman
سه شنبه ۳۰ آبان ۱۳۹۶ ۱۸:۲۰
با سلام و احترام
سوالی داشتم.
ایا یادگیری زبان basic مانند b4a مناسب است و ایا این زبان برای برنامه نویسی اندروید چطور میدانید؟
ایا native است؟
ممنون میشم پاسخ بدید.
ارسال پاسخ مجید علوی‌زاده
مجید علوی‌زاده
چهارشنبه ۲۷ بهمن ۱۳۹۵ ۱۲:۵۱
در پاسخ به دیدگاه ali ارسال شده در پنج شنبه ۱۴ بهمن ۱۳۹۵ ۱۷:۱۵
سلام. توضیحات کامل بود. ممنون. فقط یه سوال. هر کاری که ما بتونیم در انروید استادیو انجام بدیم میتونیم اون اتفاق رو در آیونیک پیاده کنیم.؟
تقریبا اکثر کارهایی که در اپ‌های native میشه انجام داد رو ر hybrid هم میشه انجام داد (مزایا و معایبشون در مطلب گفته شده) اما یه مشکلی دیگه‌ای هم که توی اپ‌های hybrid بهش بر می‌خوریم این هستش که امکان کار با service ها و یا مثلا اجرای اپ در background وجود نداره.
ارسال پاسخ ali
ali
پنج شنبه ۱۴ بهمن ۱۳۹۵ ۱۷:۱۵
سلام. توضیحات کامل بود. ممنون. فقط یه سوال. هر کاری که ما بتونیم در انروید استادیو انجام بدیم میتونیم اون اتفاق رو در آیونیک پیاده کنیم.؟
ارسال پاسخ مجید علوی‌زاده
مجید علوی‌زاده
جمعه ۱۷ دی ۱۳۹۵ ۱۴:۵۸
در پاسخ به دیدگاه مجتبی ارسال شده در پنج شنبه ۱۶ دی ۱۳۹۵ ۲۳:۰۹
سلام حرف شما کاملا دریته و من مطمئنم ک اشتباهی رخ داده امیدوارم دوستان رسیدگی کنند ممنون
ممنون از نظر شما و بهنود عزیز،
بله حق کاملا با شماست و مطلب ویرایش شد.
ارسال پاسخ مجتبی
مجتبی
پنج شنبه ۱۶ دی ۱۳۹۵ ۲۳:۰۹
در پاسخ به دیدگاه بهنود ارسال شده در یکشنبه ۲۳ آبان ۱۳۹۵ ۱۰:۵۲
تکنولوژی Xamarin جزو ابزارهای هیبرید نیست و خروجی آن native می باشد.
سلام حرف شما کاملا دریته و من مطمئنم ک اشتباهی رخ داده امیدوارم دوستان رسیدگی کنند ممنون
ارسال پاسخ بهنود
بهنود
یکشنبه ۲۳ آبان ۱۳۹۵ ۱۰:۵۲
تکنولوژی Xamarin جزو ابزارهای هیبرید نیست و خروجی آن native می باشد.
ارسال پاسخ مجید علوی‌زاده
مجید علوی‌زاده
چهارشنبه ۲۰ مرداد ۱۳۹۵ ۱۵:۰۶
در پاسخ به دیدگاه مالمیر ارسال شده در شنبه ۱۴ فروردین ۱۳۹۵ ۱۸:۳۴
سلام و ممنونم از اطلاعات دهی عالیتون.. یه سوال داشتم!!
اپلیکیشن هایی مثل دیوار و شیپور از native استفاده شده درش یا hybrid !؟
این دو تا نرم‌افزار که اشاره کردید بهشون Native هستن
ارسال پاسخ مجید علوی‌زاده
مجید علوی‌زاده
چهارشنبه ۲۰ مرداد ۱۳۹۵ ۱۵:۰۶
در پاسخ به دیدگاه سعید ارسال شده در یکشنبه ۱۷ مرداد ۱۳۹۵ ۲۰:۴۴
سلام دوست عزیز

میخواستم بدونم چطور میشه در برنامه های Hybrid از پرداخت درون برنامه ای (مثلا بازار) استفاده کرد

با تشکر
متاسفانه من خودم کار نکردم این مورد رو اما اگر بخواین کلا In-App Purchase رو داشته باشید میتونید از پلاگین زیر برای cordova استفاده کنید:

github.com/j3k0/cordova-plugin-purchase
ارسال پاسخ سعید
سعید
یکشنبه ۱۷ مرداد ۱۳۹۵ ۲۰:۴۴
سلام دوست عزیز

میخواستم بدونم چطور میشه در برنامه های Hybrid از پرداخت درون برنامه ای (مثلا بازار) استفاده کرد

با تشکر
ارسال پاسخ مالمیر
مالمیر
شنبه ۱۴ فروردین ۱۳۹۵ ۱۸:۳۴
سلام و ممنونم از اطلاعات دهی عالیتون.. یه سوال داشتم!!
اپلیکیشن هایی مثل دیوار و شیپور از native استفاده شده درش یا hybrid !؟
ارسال پاسخ hamid
hamid
دوشنبه ۲۴ اسفند ۱۳۹۴ ۱۱:۰۸
تشکر از مطلب مفیدت. تو سایت های فارسی کمتر اینجور مطلب ها پیدا میشه. لایک داری برادر