PDA

View Full Version : سوال: ارسال کد فعال سازی برای نرم افزار از طریق وب اپلیکیشن بصورت خودکار



ashkan1234
جمعه 02 آبان 1393, 21:06 عصر
با سلام!
دوستان تا حالا کسی تجربه انجام چنین کاری رو داشته؟
ارسال کد فعال سازی برای نرم افزار از طریق وب اپلیکیشن بصورت خودکار از وبسایت!
دقیقا سوالم اینه که در قسمت وب اپلیکیشن چطور باید عمل کرد که وقتی کاربر ویندوزاپلیکیشن روی دکمه "دریافت کد" کلیک کرد ، اون کد بصورت خودکار از وب اپلیکیشن به سمت ویندوز اپلیکیشن بیاد و نرم افزار فعال شه!
یا بطور دقیقتر یچیزی تو مایه های نرم افزار وایبر یا لاین!وقتی کاربر میخواد فعالش کنه از سمت سرور یه کدی براش توی تکست باکس قرار میگیره یا اس ام اس میاد براش که اونم برام سواله!
چطور یه وب اپلیکیشن میتونه به یه ریکوئست پاسخ بده در حالی که هیچ کس وب سایت رو باز نکرده(یعنی متد Application_Start اجرا نشده!)
یا مثلا چیزی که توی قسمت پیامکی هست،اونموقع چطور وب اپلیکیشن پاسخ میده؟؟؟؟؟؟؟
با سپاس!

http://barnamenevis
جمعه 02 آبان 1393, 21:47 عصر
با سلام!
دوستان تا حالا کسی تجربه انجام چنین کاری رو داشته؟
ارسال کد فعال سازی برای نرم افزار از طریق وب اپلیکیشن بصورت خودکار از وبسایت!
دقیقا سوالم اینه که در قسمت وب اپلیکیشن چطور باید عمل کرد که وقتی کاربر ویندوزاپلیکیشن روی دکمه "دریافت کد" کلیک کرد ، اون کد بصورت خودکار از وب اپلیکیشن به سمت ویندوز اپلیکیشن بیاد و نرم افزار فعال شه!
یا بطور دقیقتر یچیزی تو مایه های نرم افزار وایبر یا لاین!وقتی کاربر میخواد فعالش کنه از سمت سرور یه کدی براش توی تکست باکس قرار میگیره یا اس ام اس میاد براش که اونم برام سواله!
چطور یه وب اپلیکیشن میتونه به یه ریکوئست پاسخ بده در حالی که هیچ کس وب سایت رو باز نکرده(یعنی متد Application_Start اجرا نشده!)
یا مثلا چیزی که توی قسمت پیامکی هست،اونموقع چطور وب اپلیکیشن پاسخ میده؟؟؟؟؟؟؟
با سپاس!

با سلام

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

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

ashkan1234
جمعه 02 آبان 1393, 21:52 عصر
باتشکر از شما ولی کامل عرض کردم مثل وایبر و لاین!اینا که یه کد رو به همه نمیدن!
اصلا مشکل روی شماره سریال و الگوریتم و این حرفا نیست!
مشکل اینجاست:

چطور یه وب اپلیکیشن میتونه به یه ریکوئست پاسخ بده در حالی که هیچ کس وب سایت رو باز نکرده(یعنی متد Application_Start اجرا نشده!)

plus
جمعه 02 آبان 1393, 22:20 عصر
وقتی شما از طریق نرم افزار، یک صفحه وب رو درخواست میکنید، برای وب سرور مثل این هست که یک کاربر معمولی یک اون صفحه رو باز کرده، و طبیعتا Application_Start (اگه ازقبل اجرا نشده باشه) اجرا میشه.بنابراین برای وب سرور فرقی نمیکنه که یک شخص یک صفحه رو درخواست کنه و یا نرم افزار.
البته، همه اینها در صورتی هست که شما بخواین از طریق Web Site کد رو ارائه بدین که البته لزومی هم در این مورد نیست.مثلا میتونه یک وب سرویس باشه یا اصلا ربطی به وب نداشته باشه و مثلا یک Application روی سرور باشه که روی یک پورت خاص، درخواست ها رو دریافت میکنه و پاسخ میده...

ashkan1234
جمعه 02 آبان 1393, 22:43 عصر
وقتی شما از طریق نرم افزار، یک صفحه وب رو درخواست میکنید، برای وب سرور مثل این هست که یک کاربر معمولی یک اون صفحه رو باز کرده، و طبیعتا Application_Start (اگه ازقبل اجرا نشده باشه) اجرا میشه.بنابراین برای وب سرور فرقی نمیکنه که یک شخص یک صفحه رو درخواست کنه و یا نرم افزار.البته، همه اینها در صورتی هست که شما بخواین از طریق Web Site کد رو ارائه بدین که البته لزومی هم در این مورد نیست.مثلا میتونه یک وب سرویس باشه یا اصلا ربطی به وب نداشته باشه و مثلا یک Application روی سرور باشه که روی یک پورت خاص، درخواست ها رو دریافت میکنه و پاسخ میده...ممنون از پاسخگوییتون!الان شما در نظر داشته باشید که یک وب سرویس پیامکی از مگفا دارم!حالا میخوام وقتی کاربری این کد رو : *140*ApplicationId# را برای وب اپلیکیشن پیامک کرد،وب اپلیکیشن هم در پاسخ به کاربر ، کد فعال سازی رو براش پیامک کنه!سوال اینجاست این کار چجوری عملی میشه؟اینجا که دیگه به وب اپلیکیشن ما درخواستی ارسال نمیشه!(پس Application_Start اجرا نمیشه!)بلکه درخواست به وب سرویس مگفا ارسال میشه!وب اپلیکیشن چجوری میتونه در قبال این پیامک بلافاصله پاسخ رو برای کاربر بفرسته!البته این سوال رو از پشتیبانی مگفا پرسیدم ولی پاسخ درستی دریافت نکردم!از چندتا برنامه نویس وب هم پرسیدم ولی بازم متاسفانه نتیجه نگرفتم!سپاسگذار خواهم شد اگر پاسخ دهید!

plus
جمعه 02 آبان 1393, 23:09 عصر
سرویس های پیامکی معمولا (تا یکی دو سال پیش که من با یکی شون کار میکردم) امکانی رو دارن که پس از دریافت پیامک میتونن یک وب سایت رو از اومدن پیامک باخبر کنن.یعنی شما توی پنل مربوط به خودتون، آدرس یک صفحه مثلا aspx وبسایتون رو میدین و هر موقع که شماره شما پیامکی دریافت کنه (در صورتی که اصلا سرویس شما امکان دریافت داشته باشه و فقط برای ارسال نباشه)، یک HTTP Request از طرف سرور پیامک به صفحه تعیین شده ارسال میشه و مشخصات پیامک دریافتی رو به اون صفحه ارسال میکنه. شما در اون صفحه میتونید با اومدن درخواست، کد فعال سازی رو پیامک کنید.
حتی اگه این امکان به این شکل ارائه نشه، به هر حال سرویس های پیامکی که دریافت پیامک رو پشتیبانی میکنن معمولا یک روش باخبر کردن (Notification) هنگام دریافت پیامک رو باید ارائه بده.
در شرایطی که امکان Notification ارائه نشده، شما باید سروری داشته باشید که مدام با وصل شدن به سرویس پیامک، پیامک های جدید دریافت شده رو بررسی کنه و در صورت دریافت پیامک جدید عملیات لازم رو انجام بده.

ashkan1234
جمعه 02 آبان 1393, 23:26 عصر
سرویس های پیامکی معمولا (تا یکی دو سال پیش که من با یکی شون کار میکردم) امکانی رو دارن که پس از دریافت پیامک میتونن یک وب سایت رو از اومدن پیامک باخبر کنن.یعنی شما توی پنل مربوط به خودتون، آدرس یک صفحه مثلا aspx وبسایتون رو میدین و هر موقع که شماره شما پیامکی دریافت کنه (در صورتی که اصلا سرویس شما امکان دریافت داشته باشه و فقط برای ارسال نباشه)، یک HTTP Request از طرف سرور پیامک به صفحه تعیین شده ارسال میشه و مشخصات پیامک دریافتی رو به اون صفحه ارسال میکنه. شما در اون صفحه میتونید با اومدن درخواست، کد فعال سازی رو پیامک کنید.
حتی اگه این امکان به این شکل ارائه نشه، به هر حال سرویس های پیامکی که دریافت پیامک رو پشتیبانی میکنن معمولا یک روش باخبر کردن (Notification) هنگام دریافت پیامک رو باید ارائه بده.
در شرایطی که امکان Notification ارائه نشده، شما باید سروری داشته باشید که مدام با وصل شدن به سرویس پیامک، پیامک های جدید دریافت شده رو بررسی کنه و در صورت دریافت پیامک جدید عملیات لازم رو انجام بده.
واقعا خدا خیرتون بده!
یک هفته است سر کارم!
مثلا خیر سرشون پشتیبانی دارن!
والا نه امکان ریکوئست دادن،نه نوتیفیکیشن!
اون روش آخر رو فکر کنم بشه روی یک کامپیوتری که دائم روشنه یا اینکه روی یک سرور اختصاصی پیاده کرد!
ولی چجوری یک سرور میتونه مداوم وصل باشه به وب سرویس پیامک؟!!

plus
جمعه 02 آبان 1393, 23:52 عصر
بله روش آخر رو همونطور که گفتین میشه پیاده کرد.البته اولویت شما باید روش های دیگه ای باشه و این روش به عنوان آخرین راه حل انتخاب بشه.
منظورم از مدام وصل بودن این هست که در بازه های زمانی مشخص (مثلا هر 30 ثانیه یکبار)، به سرویس وصل بشه، ببینه پیامک جدیدی دریافت شده یا نه.و در صورت دریافت پیامک، اقدام لازم رو انجام بده.

ashkan1234
شنبه 03 آبان 1393, 00:26 صبح
بله روش آخر رو همونطور که گفتین میشه پیاده کرد.البته اولویت شما باید روش های دیگه ای باشه و این روش به عنوان آخرین راه حل انتخاب بشه.
منظورم از مدام وصل بودن این هست که در بازه های زمانی مشخص (مثلا هر 30 ثانیه یکبار)، به سرویس وصل بشه، ببینه پیامک جدیدی دریافت شده یا نه.و در صورت دریافت پیامک، اقدام لازم رو انجام بده.
بله صد در صد آخرین راه اینو میذارم و فردا روشهایی رو که ما فرمودید با ارئه دهنده وب سرویس در میان میذارم!
ولی کلا همین راه آخری که شما فرمودید مایلم بدونم چطور میشه پیاده سازیش کرد؟؟؟
اگر لطف بفرمایید و جزییات بیشتری در ارتباط با پیاده سازیش بفرمایید ممنون میشم!

plus
شنبه 03 آبان 1393, 00:43 صبح
پیاده سازیش که بستگی به سرویسی داره که استفاده میکنید ولی در حد طرح، نگفتین کجا مشکل دارین؟
فرض کنید شما سروری دارین که مثلا میتونید یک Console Application رو روش اجرا کنید.این برنامه باید با استفاده از متدهای ارائه شده در وب سرویس پیامک، عملیات بررسی و ارسال کد فعال سازی رو انجام بده.
در حد سود و کد چیزی شبیه به این:

Main() {

service = GetSmsService();
while (true) {
newMessages = service.GetNewMessages();
foreach (message in newMessages) {
activationCode = CreateActivationCode(message.Text);
service.SendMessage(message.PhoneNumber, activationCode);
}
Thread.Sleep(30000);
}
}

ashkan1234
شنبه 03 آبان 1393, 00:54 صبح
پیاده سازیش که بستگی به سرویسی داره که استفاده میکنید ولی در حد طرح، نگفتین کجا مشکل دارین؟
فرض کنید شما سروری دارین که مثلا میتونید یک Console Application رو روش اجرا کنید.این برنامه باید با استفاده از متدهای ارائه شده در وب سرویس پیامک، عملیات بررسی و ارسال کد فعال سازی رو انجام بده.
در حد سود و کد چیزی شبیه به این:

Main() {

service = GetSmsService();
while (true) {
newMessages = service.GetNewMessages();
foreach (message in newMessages) {
activationCode = CreateActivationCode(message.Text);
service.SendMessage(message.PhoneNumber, activationCode);
}
Thread.Sleep(30000);
}
}

درست متوجه نشدم!
منظور شما اینه که یک ویندوز اپلیکیشن بنویسم که روی یک سرور نصب بشه و این اپلیکیشن اون عملیات مورد نظر را انجام بده؟(مثلا عمل دریافت اس ام اس جدید و ارسال کد فعال ساز برای کاربر!)
فکر کنم منظورتون همچین چیزی بایستی باشه!
من ابتدا فکر کردم سرور هاست منظورتونه!که سرور هاست رو نمیشه باهاش اینکارو کرد!ولی فکر کنم روی سرور اختصاصی بشه! اینطور نیست؟

plus
شنبه 03 آبان 1393, 15:03 عصر
برای مثال اون روش رو گفتم.اگه بخواین روی هاست این کار رو انجام بدین باید تحقیق کنید و ببینید چطور میشه یک Thread رو در حال اجرا نگه داشت که بعید روش اصولی ای پیدا کنید چون Web Server ها بر اساس Request/Response طراحی شدن.یعنی درخواست میاد، Thread یا Thread هایی ایجاد میشه، و کدهای تعیین شده ای اجرا میشن تا به اون درخواست پاسخ بدن و در نهایت با ارسال پاسخ این روند به پایان میرسه.
این سیستم ها طراحی نشدن که یک کد همواره در حال اجرا باشه و هدف اصلی هم این بوده که Web Server بتونه به تعداد زیادی درخواست پاسخ بده...البته من آنچنان با وب سرورهای IIS و Apache و ... آشنایی ندارم ممکنه راهی برای Schedule کردن ارائه بدن که مثلا صفحه aspx ای که شما کد بررسی پیامک رو در اون نوشتین رو هر چند ثانیه یکبار اجرا کنن...