PDA

View Full Version : مشکل در ساختن Application Instance در WebService



AftaB66
سه شنبه 29 دی 1388, 15:18 عصر
سلام .
من میخوام توی یک WebService که با یک Application در ارتباطه،چک کنم اگه از این Instance،Application ای وجود نداشت ،یک Instance از اون بسازه . چطور می تونم این کار رو انجام بدم؟؟:متفکر::متفکر:

mehdi.mousavi
سه شنبه 29 دی 1388, 15:26 عصر
سلام . من میخوام توی یک WebService که با یک Application در ارتباطه،چک کنم اگه از این Instance،Application ای وجود نداشت ،یک Instance از اون بسازه . چطور می تونم این کار رو انجام بدم؟؟:متفکر::متفکر:

سلام.
منشاء این نیاز عجیب چیه؟ Web Service کارش مشخصه چی هست (یا باید باشه). مطمئنا این جزء وظایف WS نیست که بخواد Instance ای از یک Application ایجاد کنه... البته این نیاز در Application های COM/COM+ نیازی کاملا معتبره و پاسخی کاملا سر راست داره، اما بعید میدونم برنامه شما با COM نوشته شده باشه...

در هر حال، برای اینکار ناپسند، شما میتونید یک NT Service بنویسید که وظیفه اجرای Application رو سمت Client به عهده داشته باشه. در واقع، این NT Service، میشه یک Surrogate. یعنی وکیلی برای اجرای برنامه Target شما (بر اساس درخواست وب سرویس) سمت Client.

اما بازهم میگم، این نیاز عجیب هستش و بهتره مساله رو بگونه دیگه ای حل کنید تا از چنین نیازی دوری کنید.

موفق باشید.

AftaB66
سه شنبه 29 دی 1388, 16:29 عصر
برنامه من در واقع یه جورChatClientServer هستش. زمانی که از طرف کلاینت های متعدد ، پیغامی میرسه می خوام اگه برنامه سرورنبود ، یکInstance از اون بسازه Run

در غیراینصورت نه.




وظیفه اجرای Application رو سمت Client به عهده داشته باشه



تو برنامه من Application سمت سرور اجرا نمیشه!!

به نظر شما این راه حل درسته؟؟

mehdi.mousavi
سه شنبه 29 دی 1388, 16:34 عصر
برنامه من در واقع یه جورChatClientServer هستش. زمانی که از طرف کلاینت های متعدد ، پیغامی میرسه می خوام اگه برنامه سرورنبود ، یکInstance از اون بسازه Run در غیراینصورت نه. تو برنامه من Application سمت سرور اجرا نمیشه!! به نظر شما این راه حل درسته؟؟

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

در برخی اوقات بهتره تا فقط پیامی رو در صف پیامها قرار بدید (مثلا گذاشتن پیامی تو MSMQ) و سرویس دیگه ای بر اساس نیاز، پیامها رو خونده و پردازش کنه.

موفق باشید.

AftaB66
سه شنبه 29 دی 1388, 17:57 عصر
َمي خوام يك Listoner بنويسم كه هميشه در حال اجرا باشه و ديتاهاي رسيده از Client ها رو دريافت ،پردازش و تو ديتابيس ذخيره كنه.
تقريبا مطمئنم كه Webservice ميشه راه حلش باشه، ولي اينكه چجوري تو Webservice از Application ( كه كار دريافت و پردازش و ذخيره رو داره)Instance بگيرم و بلد نيستم.
بازم ممنون از راهنماييتون..

mehdi.mousavi
سه شنبه 29 دی 1388, 18:05 عصر
َمی خوام یک Listoner بنویسم که همیشه در حال اجرا باشه و دیتاهای رسیده از Client ها رو دریافت ،پردازش و تو دیتابیس ذخیره کنه. تقریبا مطمئنم که Webservice میشه راه حلش باشه، ولی اینکه چجوری تو Webservice از Application ( که کار دریافت و پردازش و ذخیره رو داره)Instance بگیرم و بلد نیستم. بازم ممنون از راهنماییتون..

آهان! یه Application دیگه قراره کاری که وب سرویس باید انجام بده رو انجام بده! خوب این اصلا درست نیست. اما اگر مجبورید اینکارو کنید، میتونید از یکی از 8-9 روش موجود برای IPC (http://msdn.microsoft.com/en-us/library/aa365574%28VS.85%29.aspx)استفاده کنید. در واقع، اطلاعات رو از طریق وب سرویس به Application مورد نظر از طریق Pipe، COM، DDE، Clipboard و ... میتونید منتقل کنید و پاسخش رو هم از همون طریق از َApplication مورد نظر دریافت کنید و سپس پاسخ Client ای رو که وب متود مورد نظر رو Call کرده، برگردونید.

وب متودها رو سپس میتونید از طریق Client ها بصورت Async. فراخوانی کنید تا هنگامیکه وب سرویس داره کار مورد نظر رو انجام میده، Client هم به وظائف خودش برسه و وقتی پاسخ وب متود اومد، اونوقت Client اونو بررسی کنه و رویه مورد نظر رو پیگیری کنه.

اما بازهم میگم، اینکار اصلا درست نیست که بخواهید کد پردازش و ذخیره اطلاعات رو Application دیگه ای انجام بده و Web Service این وسط فقط یک نماینده باشه. در واقع این کارها (دریافت، پردازش، ذخیره و پاسخ دادن به Client) رو باید خود Web Service انجام بده. میشه بگید چطور به این طرح رسیدید؟ شاید من چیزی رو از قلم میندازم....

موفق باشید.

AftaB66
چهارشنبه 30 دی 1388, 13:59 عصر
سلام.
دو تا برنامه Client و Server (دريافت ها و ارسال ها) رو جداگانه نوشتم ، ولي بعدا فهميدم بايد Listener بنويسم ، به همين خاطر رفتم سراغ وب سرويس.
ميشه براي مواردي كه گفتيد
اطلاعات رو از طریق وب سرویس به Application مورد نظر از طریق Pipe، COM، DDE، Clipboard و ... میتونید منتقل کنید يه لينك خوب بزارين.
ممنون..

mehdi.mousavi
چهارشنبه 30 دی 1388, 14:40 عصر
سلام. دو تا برنامه Client و Server (دریافت ها و ارسال ها) رو جداگانه نوشتم ، ولی بعدا فهمیدم باید Listener بنویسم ، به همین خاطر رفتم سراغ وب سرویس. میشه برای مواردی که گفتیدیه لینک خوب بزارین. ممنون..

سلام.


Named Pipe ها (http://www.switchonthecode.com/tutorials/interprocess-communication-using-named-pipes-in-csharp)
اینم یک مقاله دیگه برای Named Pipe ها (قسمت اول (http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx) و دوم (http://www.codeproject.com/KB/threads/dotnetnamedpipespart2.aspx))
مثال برای MSMQ (http://articles.techrepublic.com.com/5100-10878_11-6170794.html)
و خلاصه، بقیه متودها رو هم با کلمه C# توی Google جستجو کنید، به مثالهای دیگه در اون موارد خواهید رسید.

موفق باشید.