PDA

View Full Version : بهترین تکنولوژی ارتباط میان کلاینت و سرور در نرم افزارهای شبکه مجازی



Javad_raouf
سه شنبه 17 فروردین 1395, 09:47 صبح
سلام دوستان
فرض کنید می خوایم یک نرم افزار مثل تلگرام داشته باشیم
برای این کار نیاز به یک نرم افزار سمت سرور و یک نرم افزار کلاینت داریم

برای ارتباط این دو تا بهترین تکنولوژی و روش چیه؟

راحت ترین روش وب سرویس هست که مسلما اصلا به درد این کار نمی خوره چون وب سرویس ارتباط یک طرفه است. فقط کلاینت می تونه به سرور درخواست بده و جواب رو بگیره
اگر بخوام مثلا یک برنامه چت بفرستیم کلاینت می خواد پیام رو ارسال کنه می تونه از وب سرویس استفاده کنه و منطقیه چون هر وقت بخواد پیامی رو ارسال کنه فقط وب متد Send رو فراخونی می کنه
اما اگر بخواد دریافت پیام رو هم از طریق وب سرویس انجام بده باید توی یک حلقه بی نهایت تابع Revice وب سرویس رو فراخونی کنه که اگر هزار تا کلاینت آنلاین باشن یعنی اینکه با دست خودمون سرور خودمون رو هک کردیم:افسرده:

می خوام تابع Revice از سمت کلاینت هی اجرا نشه و وقتی پیامی برای کلاینت مورد نظر ارسال شد، سرور یک جوری به کلاینت بفهمونه که الان باید تابع Revice رو فراخونی کنه:چشمک:

ممنون میشم کمک کنید

Javad_raouf
سه شنبه 17 فروردین 1395, 09:47 صبح
ضمنا اگر از امنیت سر رشته دارید لطفا این تاپیک رو هم مطالعه کنید:
http://barnamenevis.org/showthread.php?521395-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B4%D8%A8%DA%A9%D9%87-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-%D9%85%D8%AB%D9%84-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85&p=2313607#post2313607

hamid_hr
چهارشنبه 18 فروردین 1395, 04:57 صبح
شما میتونی از signalR استفاده کنی
مطالب در بارش تو همین سایت وجود داره

Javad_raouf
شنبه 21 فروردین 1395, 12:44 عصر
اگر مستقیم سوکت بنویسم چطوره؟

hamid_hr
یک شنبه 22 فروردین 1395, 03:10 صبح
اگر مستقیم سوکت بنویسم چطوره؟
اگه وقت و حوصله و تخصص داری برو سوکت بنویس.

Javad_raouf
یک شنبه 22 فروردین 1395, 11:02 صبح
اگه وقت و حوصله و تخصص داری برو سوکت بنویس.
توی C# که خیلی آسونه مگه سمت اندرویدش سخت باشه یا اینکه من چون خیلی چیزا رو نمی دونم فکر می کنم آسونه:لبخند:
------------------------
من به روش SignalR رفتم جلو و یک پروژه Sample ایجاد کردم و مشکلی هم بر نخوردم همه چی درسته
فقط یک سوالی برام پیش اومده:

توی کلاینت برای اتصال به سرور کدم اینه:
HubConnection connection;
connection = new HubConnection(url);
_hub = connection.CreateHubProxy("ChatHub");
connection.Start().Wait();

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

Javad_raouf
پنج شنبه 26 فروردین 1395, 07:12 صبح
اگه وقت و حوصله و تخصص داری برو سوکت بنویس.
چه وقت و حوصله و تخصصی
سوکت مگه چه کار داره
سمت دات نتش که خیلی آسونه
هم از Signalr آسون تره هم مشکلات سیگان آر رو نداره
مثلا توی سیگنال آر حتی یک guaranteed message delivery نداریم
یعنی پیامایی که می فرستی اصلا نمی فهمی رسید به طرف مقابل یا نه
یا حتی هر متدی که فراخونی می کنی خروجیش رو نمی فهمی

پس چه مزیتی به سوکت داره؟
کسی هست که واقعا تخصص داشته باشه توی این ضمینه ها؟

Javad_raouf
پنج شنبه 26 فروردین 1395, 08:02 صبح
من الان یک سرچ توی سایتای خارجی زدم
تقریبا تمام نرم افزار های پیام رسان فوری از سوکت استفاده می کنن و سیگنال آر بیشتر برای سایت ها یا بازی های آنلاین (تحت سایت) استفاده میشه

hamid_hr
شنبه 28 فروردین 1395, 05:55 صبح
سوکت مگه چه کار داره
سمت دات نتش که خیلی آسونه

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

Javad_raouf
چهارشنبه 01 اردیبهشت 1395, 08:05 صبح
سوکت خودش آسون هست. ولی باید بلد باشی سک پیغام رو کد کنی بعد دباره اینکد کنی. رمزگذاری و رمزنگاری کنی. اگه حجم تراکنش بالاست بتونی فشرده سازی کنی.
و هزار چیز دیگه
دردسرهایی هم داره
مثلا سیستم هایی که فایروال داره اذیت میشی و کانکت نمیشه
یا اگه یه برنامه دیگه دقیقا از همون سوکت شما استفاده کنه همه چی بهم میریزه
تمام چیزایی که فرمودید به سادگی قابل حله
برای کدینگ که از Public Key استفاده می کنیم و تقریبا غیر قابل نفوذه مخصوصا اگر به ازای هر تبادل اطلاعات Public key عوش بشه
فشرده سازی هم که الگوریتماش هست حتی میشه از توابع پیش فرض مثل Base64 هم استفاده کرد
برای فایروال هم چون سمت کلاینتم موبایل هست فکر نکنم خیلی مشکل بخورم ضمن اینکه کلا مشکل فایروال قابل حله
مشکل پورت هم می تونه با داینامیک کردن پورت حل بشه

طبق تحقیقاتی که کردم تقریبا به این نتیجه رسیدم که بهترین روش سوکت هست
ضمن اینکه سرور حتما باید لینوکس باشه وگرنه با تعداد کانکشن بالا می خوابه
اگر دوستان نظر دیگه ای دارن خوشحال می شم بدونم
ضمنا بابت نظراتت ممنونم

kanionline
چهارشنبه 05 آبان 1395, 02:57 صبح
سلام، در رابطه با فرق ببین سوکت و سیگنال آر در اینه که سیگنال آر هم در واقع از وب سوکت استفاده میکنه، ولی اگر بهر دلیلی این امکان فراهم نشد به روشهای دیگه مثل فریم، لانگ پولینگ رو میاره و بصورت اتوماتیک بهترین روش سوئیچ میکنه و ارتباط باز نگه میداره، مزیت دیگه سیگنال ار فراهم بودن فریم ورک های اونه مثلا میتونید ازش در اندروید یا ios و یا حتی وب با جاوا اسکریپت ازش استفاده کنید، که اینکار با سوکت کار سختی هستش و هندل کردنش مشکله، در رابطه با تعداد کانکشن ها هم ربطی به سیگنال آر نداره و مربوط به سیستم عامل اون میشه و اگر میخواید از وب سوکت استفاده کنید باید حتما از ویندوز 2012 سرور استفاده کنید و نحوه کانفیگ کردنش از تعداد کانکشن ها در هر cpu و موارد دیگه رو سرچ کنید پیدا میکنید، و اینکه گفتید از سیگنال آر برای مسنجرها نمیشه استفاده کرد غلطه و محدودیتی نداره و خیلی از پروژه های بزرگ با این روش پیاده سازی شده،