نمایش نتایج 1 تا 9 از 9

نام تاپیک: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

  1. #1
    کاربر دائمی آواتار negar.rafie
    تاریخ عضویت
    آذر 1390
    پست
    730
    تشکر کردن
    412
    71 بار تشکر شده در 54 پست

    تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    سلام
    فرض کنید ما قصد راه اندازی یک شبکه اجتماعی را داریم
    حال تفاوت نرم افزاری که به صورت ویندوز اپلیکیشن راه اندازی میشه با نرم افزاری که به صورت یک سایت راه اندازی میشه در چیست؟
    مثلا کلوب را به جای اینکه بیایم به صورت سایتراه اندازی کنیم به صورت یک نرم افزار ویندوزی پیاده سازی کنیم
    ایا از لحاظ سرعت و موارد دیگه باهم فرق دارن؟

  2. #2
    کاربر دائمی آواتار golbafan
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    در قلب دوستان
    پست
    1,918
    تشکر کردن
    61
    1,781 بار تشکر شده در 884 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    سلام
    هم بله و هم نه !!!

    بسته به تکنولوژی هایی که استفاده میشه و همچنین روش پیاده سازی سایت و نرم افزار و ایجاد کانکشن ها میتونه سرعت اپلیکیشن بیشتر و یا کمتر از وبسایت بشه
    بطور کلی اون چیزی که خیلی مهم هست اینه که شما چه مقدار اطلاعات رو از سرور به سمت کلاینت فراخوانی کنید و همچنین مهمه که چه مقدار بار پردازشی روی سرور ایجاد کرده باشید

    در صورتی که نرم افزار شما مستقیم به سرور دیتابیس در شبکه وصل باشه هر کوئری که میزنید باید کلی دیتا به سمت کلاینتها شیر بشه که باعث مصرف بالای ترافیک و کند شدن سیستم ها میشه
    فرض کنید 500 کلاینت دارید و هرکدوم هر 10 ثانیه کوئری هایی میزنن به سمت سرور. سرور باید 50 کوئری در هر ثانیه پردازش کنه و سپس داده های زیاد و مختلفی رو به سمت هر کلاینت شیر کنه
    و اگر داده ها مثلا شامل عکس هم باشن دیگه بدتر... ممکنه اصلا سرور نتونه این همه ترافیک رو پشتیبانی کنه!!!

    در وب سایت ها شما درخواست رو به یک سرور میفرستید که وب سایت (سرویس) اصلی در اون قرار داره و از اونجایی که اون سرویس دسترسی بهتری به داده ها داره جستجو رو در خودش انجام میده و نتیجه رو بصورت یک صفحه html به شما برمیگردونه
    مثلا جستجو در گوگل به طور ساده: شما یک کوئری ارسال میکنی مثلا: (https://www.google.com/search?q=%D8%...utf-8&oe=utf-8) که در حد چند بایت هست و شبکه رو اشغال نمیکنه بعد سرویس جستجوی گوگل با توجه به کوئری جستجو رو در خودش انجام میده و نتیجه رو که میتونه شامل میلیون ها رکورد باشه به شما با کد های html ساده و کم حجم (در حد چند کیلوبایت) نشون میده
    (برای مثال فوق گوگل صفحه رو به حجم 400 کیلوبایت که شامل عکس هم هست بصورت فشرده ارسال میکنه که بعد از آنپک شدن در مرورگر میشه حدوداً 1.2 مگابایت)

    اما اگر شما بتونید نرم افزاری رو بر همین اساس کارکرد وبسایت درست کنید میتونید سرعت بالاتری نسبت به وبسایت داشته باشید. چون مواردی که به سمت شما ارسال میشه میتونه کدهای به مراتب ساده تری باشه که توسط نرم افزار کلاینت ترجمه بشه و نمایش داده بشه
    برای این موضوع از طراحی چند لایه در نرم افزارها استفاده میشه که بطور ساده بخوام بگم باید اینطوری بگم:

    نرم افزار 3 لایه:
    1- نرم افزار کلاینت: کار این نرم افزار، ایجاد یک کوئری (مثل جستجو در گوگل) از موارد درخواستی شما و ارسال به نرم افزار یا سرویس موجود در سرور هست و همچنین ترجمه و نمایش پاسخهای دریافتی از سرور
    2- نرم افزار سرور: کار این نرم افزار یا سرویس، پردازش کوئری دریافتی از سمت سما و جستجو در دیتابیس (همجوار) و ایجاد یک پاسخ با حجم کم هست (مثلا در قالب json)
    3- دیتابیس اصلی که فقط نرم افزار سرور میتونه بهش دسترسی داشته باشه

    لایه های بیشتر:
    در صورت زیاد بودن درخواستها نرم افزار سرور میتونه بجای اتصال مستقیم به سرور فقط نقش یک rooter رو ایفا کنه و مثلا اگر در هر ثانیه داره 1000 کوئری دریافت میکنه بیاد کار تقسیم اینها به گروههای 20 تایی رو انجام بده و مثلا هر 20 کوئری رو برای پردازش و جمع آوری داده به یک سرور دیگه ارسال کنه . بعد داده ها رو از اون سرورها جمع آوری کنه و برای کلاینت های درخواست کننده ارسال کنه

    بیشتر:
    این وسط میتونه تکنولوژی های دیگه ای هم مثل کلاستریگ و پارتیشنینگ در سمت سرور(های) دیتابیس انجام بشه


    نتیجه گیری:
    اینکه سرعت کار چقدر باشه بیشتر از هر چیز به نحوه معماری شبکه/پروژه و استفاده از انواع مناسب تکنولوژی مربوط میشه
    آخرین ویرایش به وسیله golbafan : یک شنبه 11 مهر 1395 در 14:58 عصر

  3. 4 کاربر از golbafan به خاطر این مطلب مفید تشکر کرده اند:


  4. #3
    کاربر دائمی آواتار negar.rafie
    تاریخ عضویت
    آذر 1390
    پست
    730
    تشکر کردن
    412
    71 بار تشکر شده در 54 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    ممنون از شما استاد بزرگوار
    یعنی شما میگید بهتره اینگونه برنامه ها را حتما به صورت یک وب سایت پیاده سازی کنیم؟و خیلی بهتر هستش از اینکه به صورت ویندوز اپلیکیشن پیاده سازی بشن؟

  5. #4
    مدیر بخش آواتار Mani_rf
    تاریخ عضویت
    آبان 1387
    محل زندگی
    </ Here>
    پست
    1,955
    تشکر کردن
    43
    1,484 بار تشکر شده در 889 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    زمانی که شما تصمیم میگیرید یک برنامه مالتی پلتفرم در این ابعاد بسازید باید استاندارد هایی رو رعایت کنید که در توسعه به مشکلات جدی نخورید.
    برای مثال دیتایی که برای همه پلتتفرم ها فرستاده میشه باید و باید دقیقا یکسان باشه، این به این معناست که شما باید سرویس هایی روی سرور داشته باشی که با استفاده از متدها و سیگنچر های یکسان برای همه پلتفرم ها کار کنه.
    درواقع شما به هیچ عنوان اجازه ندارید که توی برنامه نسخه ویندوزی کانکشن مستقیم به دیتابیس بزنید. این کار نه تنها از نظر امنیتی مشکل جدی داره بلکه امکاناتی مثل ایجاد CDN یا کش های سروری برای جلوگیری از سلکت های مکرر و یا حتی Load Balance های ساده سرور ها رو از شما میگیره.
    از هیچ جا بجز خود سررور نباید امکان اتصال به دیتابیس وجود داشته باشه و باید از معماری های Service Base استفاده بشه.

    فقط این رو در نظر بگیرید که مثلا تصمیم میگیرید از این به بعد بجای این که در یک قسمت عکس کاربر رو با ابعاد واقعی به کلاینت ها بدید عکس کوچیک شده رو بدید:
    - راه حل در زمان سلکت مستقیم اینه که نسخه برنامه همه پلتفرم ها رو رو آپدیت کنید!
    - راه حل در زمان استفاه از سرویس اینه که فقط توی سرور تغییر لازم رو به وجود بیارید و نسخه گذاری کنید.
    تبریک میگم به همین سادگی و بدون کوچکترین تغییر در نسخه ها و حتی بدون این که کاربر ها حس کنند استراتژی جدید پیاده سازی شد.

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

    برای مثالی که فرمودید (شبکه اجتماعی):
    1- سنگ بزرگیه و پیاده سازیش نیاز به تجربه زیاد داره. من این کار رو انجام دادم و البته تحویل دادم اما با مواردی برخورد میکنید که حتی تصوری هم ازش ندارید. مثل تفاوت زمانی مناطق مختلف جغرافیایی.
    2- پیشنهاد میکنم که فقط یک نسخه وب داشته باشید و به مالتی پلتفرم بودن فکر نکنید مگر این که داشتن نسخه ویندوزی برای شما مزیت خاصی تولید کنه. برای مثال شما میخواید یک عکس رو به کاربر طوری نمایش بدید که نتونه از روش کپی بگیره، این کار توی ویندوز و موبایل امکان پذیر هست اما توی وب هرگز (برای نمونه استراتژی تلگرام در نمایش عکس های زمان دار. حتی نمیشه از صفحه اسکرین شات گرفت).
    3- بزرگترین مزیت وب اینه که نیازی به برنامه نویسی مکرر برای دیوایس های متفاون ندارید و میشه اون رو مالتی پلتفرم تصور کرد.
    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

  6. 4 کاربر از Mani_rf به خاطر این مطلب مفید تشکر کرده اند:


  7. #5
    کاربر دائمی آواتار Naghibi
    تاریخ عضویت
    مهر 1387
    محل زندگی
    مشهد
    پست
    221
    تشکر کردن
    97
    52 بار تشکر شده در 46 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    نقل قول نوشته شده توسط Mani_rf مشاهده تاپیک
    درواقع شما به هیچ عنوان اجازه ندارید که توی برنامه نسخه ویندوزی کانکشن مستقیم به دیتابیس بزنید. این کار نه تنها از نظر امنیتی مشکل جدی داره بلکه امکاناتی مثل ایجاد CDN یا کش های سروری برای جلوگیری از سلکت های مکرر و یا حتی Load Balance های ساده سرور ها رو از شما میگیره.
    از هیچ جا بجز خود سررور نباید امکان اتصال به دیتابیس وجود داشته باشه و باید از معماری های Service Base استفاده بشه.
    با تشکر از استاد گرامی
    میشه یکم بیشتر توضیح بدین که سمت سرور چه برنامه ای باید وجود داشته باشه؟ یعنی فرض کنید ما یک برنامه ویندوز اپلیکیشن داریم که روی سیستم کلاینت ها نصب میشه و دیتابیس آن روی سرور قرار گرفته. با توجه به گفته شما برنامه نباید کانکشن مستقیم به دیتابیس بزنند، پس چه اتفاقی باید بیفتد؟ سمت سرور باید یه سرویس اجرا شود یا یه ویندوز اپلیکیشن دیگه که جوابگوی کلاینت ها باشد؟

  8. #6
    کاربر جدید
    تاریخ عضویت
    اردیبهشت 1391
    پست
    23
    تشکر کردن
    11
    17 بار تشکر شده در 17 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    سوال منم هست!

  9. #7
    مدیر بخش آواتار Mani_rf
    تاریخ عضویت
    آبان 1387
    محل زندگی
    </ Here>
    پست
    1,955
    تشکر کردن
    43
    1,484 بار تشکر شده در 889 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

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

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

  10. 2 کاربر از Mani_rf به خاطر این مطلب مفید تشکر کرده اند:


  11. #8
    کاربر دائمی آواتار baidin
    تاریخ عضویت
    فروردین 1386
    پست
    224
    تشکر کردن
    23
    14 بار تشکر شده در 13 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    نقل قول نوشته شده توسط Mani_rf مشاهده تاپیک
    زمانی که شما تصمیم میگیرید یک برنامه مالتی پلتفرم در این ابعاد بسازید باید استاندارد هایی رو رعایت کنید که در توسعه به مشکلات جدی نخورید.
    برای مثال دیتایی که برای همه پلتتفرم ها فرستاده میشه باید و باید دقیقا یکسان باشه، این به این معناست که شما باید سرویس هایی روی سرور داشته باشی که با استفاده از متدها و سیگنچر های یکسان برای همه پلتفرم ها کار کنه.
    درواقع شما به هیچ عنوان اجازه ندارید که توی برنامه نسخه ویندوزی کانکشن مستقیم به دیتابیس بزنید. این کار نه تنها از نظر امنیتی مشکل جدی داره بلکه امکاناتی مثل ایجاد CDN یا کش های سروری برای جلوگیری از سلکت های مکرر و یا حتی Load Balance های ساده سرور ها رو از شما میگیره.
    از هیچ جا بجز خود سررور نباید امکان اتصال به دیتابیس وجود داشته باشه و باید از معماری های Service Base استفاده بشه.

    فقط این رو در نظر بگیرید که مثلا تصمیم میگیرید از این به بعد بجای این که در یک قسمت عکس کاربر رو با ابعاد واقعی به کلاینت ها بدید عکس کوچیک شده رو بدید:
    - راه حل در زمان سلکت مستقیم اینه که نسخه برنامه همه پلتفرم ها رو رو آپدیت کنید!
    - راه حل در زمان استفاه از سرویس اینه که فقط توی سرور تغییر لازم رو به وجود بیارید و نسخه گذاری کنید.
    تبریک میگم به همین سادگی و بدون کوچکترین تغییر در نسخه ها و حتی بدون این که کاربر ها حس کنند استراتژی جدید پیاده سازی شد.

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

    برای مثالی که فرمودید (شبکه اجتماعی):
    1- سنگ بزرگیه و پیاده سازیش نیاز به تجربه زیاد داره. من این کار رو انجام دادم و البته تحویل دادم اما با مواردی برخورد میکنید که حتی تصوری هم ازش ندارید. مثل تفاوت زمانی مناطق مختلف جغرافیایی.
    2- پیشنهاد میکنم که فقط یک نسخه وب داشته باشید و به مالتی پلتفرم بودن فکر نکنید مگر این که داشتن نسخه ویندوزی برای شما مزیت خاصی تولید کنه. برای مثال شما میخواید یک عکس رو به کاربر طوری نمایش بدید که نتونه از روش کپی بگیره، این کار توی ویندوز و موبایل امکان پذیر هست اما توی وب هرگز (برای نمونه استراتژی تلگرام در نمایش عکس های زمان دار. حتی نمیشه از صفحه اسکرین شات گرفت).
    3- بزرگترین مزیت وب اینه که نیازی به برنامه نویسی مکرر برای دیوایس های متفاون ندارید و میشه اون رو مالتی پلتفرم تصور کرد.
    سلام
    دوست عزیز اگه امکانش هست خطی که مشخص کرده ام را بیشتر توضیح بدید.
    تشکر

  12. #9
    مدیر بخش آواتار Mani_rf
    تاریخ عضویت
    آبان 1387
    محل زندگی
    </ Here>
    پست
    1,955
    تشکر کردن
    43
    1,484 بار تشکر شده در 889 پست

    نقل قول: تفاوت اتصال به سرور توسط برنامه ویندوزی با وب سایت

    معماری های وجود دارند که اصولا طراحی و پیاده سازی اونها بر مبنای ارتباط با دیتابیس از طریق سرویس هاست که به service-oriented architecture (SOA) Programming معروف هستند.
    در این معماری ها برنامه شما فقط از طریق یک واسط که سرویس باشه به دیتابیس دسترسی داره و هیچ کانکشن مستقیمی از برنامه اتفاق نمی افته.
    برای مثال :
    زمانی که تو برنامه جستجو انجام میدید، برنامه یک سرویس رو فراخوانی میکنه و پارامتر های لازم رو بهش میده و منتظر پاسخ میمونه. پس از دریافت پاسخ اطلاعات رو نمایش میده.
    و یا هنگامی که میخواید یک رکورد جدید ثبت کنید، اطلاعات اون رکورد رو به سرویس میفرستید و سرویس بعد از بررسی و ثبت پاسخ مبنی بر ثبت شدن یا وجود ایراد رو برای شما برمیگردونه.
    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

تاپیک های مشابه

  1. اتصال به سرور وی پی ان با vb6
    نوشته شده توسط titaniom1370 در بخش برنامه نویسی مرتبط با شبکه و وب در VB6
    پاسخ: 6
    آخرین پست: سه شنبه 02 آذر 1395, 13:53 عصر
  2. گفتگو: انتخاب نحوه ی اتصال به سرور در برنامه نویسی تحت شبکه
    نوشته شده توسط aghayex در بخش WCF , Web Services , .Net Remoting
    پاسخ: 0
    آخرین پست: یک شنبه 13 مهر 1393, 11:54 صبح
  3. اتصال به سرور توسط FTP
    نوشته شده توسط farhad_k100 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 28 تیر 1393, 18:47 عصر
  4. سوال: عدم اتصال به سرور و مواجه شدن با Sql Server Does not Exist ...
    نوشته شده توسط HjSoft در بخش SQL Server
    پاسخ: 9
    آخرین پست: یک شنبه 26 مهر 1388, 03:26 صبح
  5. مشکل در اتصال به سرور در برنامه ای که با SQLServer است
    نوشته شده توسط nasr در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: شنبه 10 مرداد 1383, 09:39 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •