PDA

View Full Version : از چه روشی استفاده کنم؟



ehsaun_kkt
دوشنبه 10 اسفند 1394, 04:37 صبح
دوستان برای مثال زیر از چه روشی در سمت سرور باید استفاده کنم؟

کاربر از طریق اپلیکیشن سفارشی رو ایجاد میکنه و استاتوس سفارش در اپ میشه در حال بررسی سفارش ، چند دقیقه بعد که سفارش تایید شد استاتوس در اپ میشه: سفارش شما تایید شد. چند روز بعد که سفارش ارسال شد میشه: سفارش شما ارسال شد و....

برام مهمه که در لحظه ای که تغییری در دیتابیس صورت میگیره، وضعیت سفارش در اپ تغییر کنه (یا چند ثانیه)


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

ممنون

ehsaun_kkt
دوشنبه 10 اسفند 1394, 09:41 صبح
سوال خیلی پیشه پا افتادست یا اینکه کسی راه حلی نداره؟

ehsaun_kkt
دوشنبه 10 اسفند 1394, 16:01 عصر
up...............

masiha68
دوشنبه 10 اسفند 1394, 17:18 عصر
دوستان برای مثال زیر از چه روشی در سمت سرور باید استفاده کنم؟

کاربر از طریق اپلیکیشن سفارشی رو ایجاد میکنه و استاتوس سفارش در اپ میشه در حال بررسی سفارش ، چند دقیقه بعد که سفارش تایید شد استاتوس در اپ میشه: سفارش شما تایید شد. چند روز بعد که سفارش ارسال شد میشه: سفارش شما ارسال شد و....

برام مهمه که در لحظه ای که تغییری در دیتابیس صورت میگیره، وضعیت سفارش در اپ تغییر کنه (یا چند ثانیه)


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

ممنون


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

pbm_soy
دوشنبه 10 اسفند 1394, 17:24 عصر
این سوال شما بصورتهای مختلف در چند ماه گذشته تو این سایت مطرح شده است!
شما سوال را در بخش php مطرح کردید ولی بیشتر دوستان در بخش اندروید مطرح کرده بودند بدنیست در تالار اندروید جستجو کنید
سوالات دوستان بیشتر برای ایجاد نرم افزار چت بود که اپلیکشن بتواند با سرور ارتباط دوطرفه داشته باشد مخصوصا سرور بتواند داده هایی را به اپلیکیشن بفرستد
در هرصورت من کوتاه چند نکته را عرض میکنم
بهترین کا. استفاده از وب سرویس است که در این صورت معمولا اپلیکیشن باید هرچند لحظه یکبار باید از سرور درخواست وضعیت باید بکند
مورد بعدی استفاده از سوکت پروگرامینگ است که روش خوب و منطقی این است ولی کانکشن همیشه از طرف اپلیکیشن به سرور باید زده شود چون معمولا کلاینتها حالا چه اندرویدی چه یک pc باشد آی پی آدرس ولید ندارند و سرور نمیتواند آنها را مستقیم ببینید و پیام دهد وهمینطور در این روش کانکشنی که زده میشود باید همیشه باز بماند تا درصورت لزوم سرور داده بفرستد این روش تقریبا شبیه روشی است که گوگل برای ارسال پوش نوتیفیکیشنها به دستگکاههای اندرویدی استفاده میکند
مورد بعدی روش استفاده از وب سوکت و webrtc و غیره است

ehsaun_kkt
دوشنبه 10 اسفند 1394, 19:20 عصر
سوال اولت رو نفهمیدم

فرض کنید بنده یک اپلیکیشن اندرویدی ساختم که کاربر میتونه مثلا توش سفارش کالا بده، این سفارش در نهایت به سمت سرور می ره و در دیتابیس ذخیره میشه خب؟ حالا بنده توی دیتابیس برای هر سفارش یک فیلد وضعیت سفارش گذاشتم که سه مقدار عددی می گیره:
1:سفارش تایید شد.
2:سفارش در حال آماده سازی می باشد.
3:سفارش ارسال شد.

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

ممکنه دو سه روز بعد از تایید سفارش ، سفارش ارسال بشه یعنی تا دو سه روز هر کاربراپلیکیشن باید هر یک دقیقه یک ریکوئست بده به سرور که کالای من در چه وضعیتیه؟؟

میخوام بجای اینکه اپلیکیشن هر چند ثانیه یک رکوئست بده ، خود سرور تغییر وضعیت سفارش رو به سفارش دهنده اطلاع بده..


متوجه منظور من شدید؟؟

ehsaun_kkt
دوشنبه 10 اسفند 1394, 19:33 عصر
این سوال شما بصورتهای مختلف در چند ماه گذشته تو این سایت مطرح شده است!
شما سوال را در بخش php مطرح کردید ولی بیشتر دوستان در بخش اندروید مطرح کرده بودند بدنیست در تالار اندروید جستجو کنید
سوالات دوستان بیشتر برای ایجاد نرم افزار چت بود که اپلیکشن بتواند با سرور ارتباط دوطرفه داشته باشد مخصوصا سرور بتواند داده هایی را به اپلیکیشن بفرستد
در هرصورت من کوتاه چند نکته را عرض میکنم
بهترین کا. استفاده از وب سرویس است که در این صورت معمولا اپلیکیشن باید هرچند لحظه یکبار باید از سرور درخواست وضعیت باید بکند
مورد بعدی استفاده از سوکت پروگرامینگ است که روش خوب و منطقی این است ولی کانکشن همیشه از طرف اپلیکیشن به سرور باید زده شود چون معمولا کلاینتها حالا چه اندرویدی چه یک pc باشد آی پی آدرس ولید ندارند و سرور نمیتواند آنها را مستقیم ببینید و پیام دهد وهمینطور در این روش کانکشنی که زده میشود باید همیشه باز بماند تا درصورت لزوم سرور داده بفرستد این روش تقریبا شبیه روشی است که گوگل برای ارسال پوش نوتیفیکیشنها به دستگکاههای اندرویدی استفاده میکند
مورد بعدی روش استفاده از وب سوکت و webrtc و غیره است


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

وب سوکت از سوکت پروگرمینگ جداست یا همونه؟ الان چیزی که معقوله سوکت پروگرمینگ؟ روی هاست میشه انجام داد؟

masiha68
سه شنبه 11 اسفند 1394, 02:47 صبح
فرض کنید بنده یک اپلیکیشن اندرویدی ساختم که کاربر میتونه مثلا توش سفارش کالا بده، این سفارش در نهایت به سمت سرور می ره و در دیتابیس ذخیره میشه خب؟ حالا بنده توی دیتابیس برای هر سفارش یک فیلد وضعیت سفارش گذاشتم که سه مقدار عددی می گیره:
1:سفارش تایید شد.
2:سفارش در حال آماده سازی می باشد.
3:سفارش ارسال شد.

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

ممکنه دو سه روز بعد از تایید سفارش ، سفارش ارسال بشه یعنی تا دو سه روز هر کاربراپلیکیشن باید هر یک دقیقه یک ریکوئست بده به سرور که کالای من در چه وضعیتیه؟؟

میخوام بجای اینکه اپلیکیشن هر چند ثانیه یک رکوئست بده ، خود سرور تغییر وضعیت سفارش رو به سفارش دهنده اطلاع بده..


متوجه منظور من شدید؟؟

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

ehsaun_kkt
سه شنبه 11 اسفند 1394, 07:07 صبح
بله متوجه شدم ...
ببینی چیزی که شما میگین امکانش نیست ...فرض کنین یک سایت باشه خودش به کامیپوتر شما وصل شه و یه کارایی بکنه ... تا شما خودتون وارد وبسایت نشین وبسایت هیچ کاری انجام نمیده
در مورد اپلیکشن هم دقیقا وضعیت همینه .... باید اپلکشن یک ریکوست بفرسته سمت سرور و بعد جواب رو پردازش کنه ...
باید یک تایمری روی اپلیکشن بزارین و بر اساس نیاز خودتون بهش تایم بدین و هر بار وضعیت سفارش رو چک کنین

ولی میگم نشد وجود نداره :) پس این همه شبکه های اجتماعی مثل تلگرام و ... چطوری به پیام ها رو بین کاربران انتقال میدن؟؟؟؟؟

آیا با XMPP یا جابر میشه همچین کاری کرد؟ من نمیخوام چترو راه بندازم فقط میخوام یه ارتباط دو طرفه داشته باشم الان متد روز دقیقا چیه؟

masiha68
سه شنبه 11 اسفند 1394, 08:18 صبح
شما خودت تا تلگرام رو باز نکنی و تلگرام ریکوست نفرسته سمت سرور می تونی بفهمی چندتا پیام واست اومده ...
بحث چت روم و چت نیست ... در کل چیزی که میخوای نمیشه و مطئنم اگه میشد الان دیگه سیستمی توی دنیا وجود نداشت که امن باشه ...چون هر سروری بدون اینکه کلاینت بخاد میتونست به سیستمش وصل شه .... حالا بحث ما ربطی به امنیت نداره ... ولی در کل میگم اینکه یک سرور بخاد به کلاینت اطلاعات بفرسته فقط وقتی امکان داره کلاینت درخواست اطلاعات کرده باشه
البته به قول خودت کار نشد نداره و شایدم ما بلد نیستیم ... یه ذره سرچ کن اگه چیزی پیدا کردی اینجا بنویس ما هم متفیض شیم :)

ehsaun_kkt
سه شنبه 11 اسفند 1394, 08:27 صبح
ولی push notification ها میتونند با کاربر اندروید از سمت سرور ارتباط بزنند ولی نمیدونم چطور باید ازش استفاده کرد ...

حداقل با push notification میتونیم به اپلیکیشن بگییم چه موقع رکوئست بده

ehsaun_kkt
چهارشنبه 12 اسفند 1394, 15:57 عصر
سوال اولت رو نفهمیدم و
سوال دومت رو هم که چندتا جواب داره و نمی دونم کدوم به دردت میخوره
یا از وب سرویس استفاده می کنی که خودم restful رو توصیه می کنم و البته soap هم خوبه ... دومین مرود سینک کردن دیتابیسه که زیاد ازش اطلاعی و ندارم فقط یه جا خودم میشه دوتا دیتابیس اسمش یه چیزی بود شبیه رپلیکشن یا رفلکشن ....
و اینم بیشتر مربوط میشه به اینکه اپلیکشنت چی باشه ...
اپلیکشن من یه نرم افزار تحت ویندوز بود که یه سری اطلاعات رو به وب می فرستاد و ازش می گرفت و با سی شارپ نوشته شده بود واسه همین از restful استفاده کردم ...
شاید راهای دیگه هم باشه ول یخب من همینا رو بلدم ... امیدوارم دوستان بیشتر کمکت کنن

برای restful منبع فارسی سراغ ندارید؟ البته روی فریم ورک yii باشه بهتره

masiha68
چهارشنبه 12 اسفند 1394, 16:36 عصر
برای restful منبع فارسی سراغ ندارید؟ البته روی فریم ورک yii باشه بهتره
پیکجی که اقای صیفی زاده داده بیرون ... بدک نیست ، خوب توضیح داده
دقیقا هم رو فریم ورک یی ...جایی هم مشکل بود بپرس در حد توانم راهنمایی می کنم

مهرداد سیف زاده
چهارشنبه 12 اسفند 1394, 16:51 عصر
در مورد وب سرویس میتونید مکانیزم session id رو پیاده سازی کنید
مثلا یک بار که برنامه آندروید لاگین کرد از سرور یه session id یکتا بگیره. در درخواستهای بعدی این session id به همراه درخواست ارسال میشه. حالا بسته به خودتون داره عمر این session id رو میتونید تا یک هفته هم در نظر بگیرید. تا وقتی که اون session id مدت زمانی در سمت سرور داره، تمام دیتای رد و بدل شده در اون session id یک دیتای واحد به نظر میرسن. یعنی مثل این که کاربر یک بار سوکت رو باز کرده و حالا یک هفته هست که با همون سوکت داره دیتا رو رد و بدل میکنه. حالا مورد وب سوکت در حالتی که برنامه آندروید اینترنت نداشته باشه، سوکت قطع میشه. که با داشتن session id دوباره میتونید یه کانکسن جدید ایجاد کنید ولی در ارسال مقادیر از همون session id‌استفاده کنید
session id چیزی نیست که برید الان تیکش رو بزنید و فعال بشه. بلکه صرفا یک مانیزم هست و شما باید پیاده سازی کنید. با اولین درخواست یک session id براش در نظر گرفته میشه و بعد ذخیره در درخواستهای بعدی گرفته میشه و مقایسه میشه. البته این مورد فشار به سرور هم میاره چون با هر درخواست باید روی دیتابیس query بزنید که این session id‌ مربوط به کدوم کاربر بوده

ehsaun_kkt
چهارشنبه 12 اسفند 1394, 19:30 عصر
در مورد وب سرویس میتونید مکانیزم session id رو پیاده سازی کنید
مثلا یک بار که برنامه آندروید لاگین کرد از سرور یه session id یکتا بگیره. در درخواستهای بعدی این session id به همراه درخواست ارسال میشه. حالا بسته به خودتون داره عمر این session id رو میتونید تا یک هفته هم در نظر بگیرید. تا وقتی که اون session id مدت زمانی در سمت سرور داره، تمام دیتای رد و بدل شده در اون session id یک دیتای واحد به نظر میرسن. یعنی مثل این که کاربر یک بار سوکت رو باز کرده و حالا یک هفته هست که با همون سوکت داره دیتا رو رد و بدل میکنه. حالا مورد وب سوکت در حالتی که برنامه آندروید اینترنت نداشته باشه، سوکت قطع میشه. که با داشتن session id دوباره میتونید یه کانکسن جدید ایجاد کنید ولی در ارسال مقادیر از همون session id‌استفاده کنید
session id چیزی نیست که برید الان تیکش رو بزنید و فعال بشه. بلکه صرفا یک مانیزم هست و شما باید پیاده سازی کنید. با اولین درخواست یک session id براش در نظر گرفته میشه و بعد ذخیره در درخواستهای بعدی گرفته میشه و مقایسه میشه. البته این مورد فشار به سرور هم میاره چون با هر درخواست باید روی دیتابیس query بزنید که این session id‌ مربوط به کدوم کاربر بوده

ممنون مهندس سیف زاده ، فیلمهای آموزش yii شما رو پیگیر هستم ولی کاش در قسمت وبسرویس بیشتر آموزش میدادید:

مثلا یک مثال هم با access_token میزدید

مثلا کاستومایز های post و get و ... rule هارو می گفتید ، الان هر کاربری که ثبت نام باشه میتونه هر جدولی رو حذف کنه؟؟ شاید ما نخوایم کاربر چیزی رو حذف کنه یا آپدیت کنه.

مثلا اضافه کردن یه متد به وبسرویس که خیلی مهمه!

________

الان اگه من بخوام کاربر با شماره موبایلش ثبتنام کنه و من با sms هویتش رو چک کنم و سپس access_token رو بفرستم باید یه وبسرویس برای ثبت نام درست کنم؟ و یک وبسرویس برای سایر خدماتم؟

____

بنظرتون IMEI گوشی هم میتونه یه مشخصه امنیتی باشه که به سرور ارسال کنم؟؟ مثلا اگه IMEI کاربر تغییر کرد باید دوباره شمارش رو با پیامک تایید کنه.



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

خیلی ممنون ، در موارد بالا اگه اطلاعاتی چیزی دارید ممنون میشم اشتراک بگذارید یا آموزش بدید.

مهرداد سیف زاده
جمعه 14 اسفند 1394, 09:21 صبح
در مورد وب سرویس باید به منابع دیگر رجوع کنید
در مورد این که چرا در مورد وب سرویس بیشتر توضیح ندادم، خب اون میشد مجموعه آموزشی وب سرویس نه yii2 در حالی که خیلی منابع اصلا وب سرویس رو آموزش ندادن. جالبه دوستان همه شکایت از این دارن چرا انجام ندادی، در صورتی همین مجموعه نمونه تجاری مطالب خیلی کمتری رو در برگرفته
در مورد مکانیزمهای بیشتر بسته به پروژه شما داره و دوستان بصورت عمومی چیزی رو که باید بدونید گفتن
منابع مفید
http://www.tutorialspoint.com/restful/
http://it-ebooks.info/book/3060/

ehsaun_kkt
جمعه 14 اسفند 1394, 18:18 عصر
در مورد وب سرویس باید به منابع دیگر رجوع کنید
در مورد این که چرا در مورد وب سرویس بیشتر توضیح ندادم، خب اون میشد مجموعه آموزشی وب سرویس نه yii2 در حالی که خیلی منابع اصلا وب سرویس رو آموزش ندادن. جالبه دوستان همه شکایت از این دارن چرا انجام ندادی، در صورتی همین مجموعه نمونه تجاری مطالب خیلی کمتری رو در برگرفته
در مورد مکانیزمهای بیشتر بسته به پروژه شما داره و دوستان بصورت عمومی چیزی رو که باید بدونید گفتن
منابع مفید
http://www.tutorialspoint.com/restful/
http://it-ebooks.info/book/3060/


من ناسپاس نیستم از ارائه آموزش های خوبتون... و همین جا از آموزش هاتون تشکر میکنم و واقعا مثل شما که اینقدر سخاوتمندانه اطلاعاتش رو به اشتراک گذاشته توی نت ندیدم!

+ولی واقعا مبحث وبسرویس یه چیزه به روزه و همه میخوان پروژه هاشون رو با اندروید ارتباط بدن. شما حدود 125 قسمت با ارزش از آموزش yii2 رو ازائه دادید ولی اگه دو 3 قسمت 5 شش دقیقه ای دیگه بیشتر وبسرویس رو ارائه میداید واقعا مجموعه تون یک مرجع برای کسایی میشد که میخوان yii رو یاد بگیرن و دغدغه وبسرویس رو نداشته باشن.. (فقط یه پیشنهاد)


ممنون از لینک