PDA

View Full Version : ارتباط بین win application & web application



zoghal
سه شنبه 21 آبان 1387, 08:40 صبح
ضمن خسته نباشید بر استادان گرامی

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


برای این منظور یک سری فانکشن تعریف کردم که
1- گزارش ها رو خروجی میده
2- پارامتر های گزارش ها که داینامیک هستند رو میده
3- پرامترها رو میگیره و گزارش رو به صورت html خروجی میده


حالا میخواهم با یک وب اپلیکیش این توابع رو صدا کنم و خروجی رو دریافت و نمایش بدم

زبان برنامه نویسی اگر پی اچ پی باشه بهتره اما asp.net هم مشکلی نیست.
لطفا بنده رو راهنمایی کنید.

اگر هم راه بهتری دارید ممنون میشم نظر بدید.

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

ghabil
سه شنبه 21 آبان 1387, 13:44 عصر
دقیقا الان توی چیش میتونیم بهت کمک کنیم ؟ خب اگر برنامت رو خوب و ماژولار نوشته باشی میتونی یک برنامه کوچیک با خود WebSnap دلفی یا اینتراوب بنویسی (چون با توجه به اسم فروم به نظر میاد کد باید اصل کدت دلفی باشه) و همون کدها رو استفاده کنی و صدا بزنی. پارامترها هم حالا یا با متد Post یا توی URL درخواستهات پاس بشند.

zoghal
سه شنبه 21 آبان 1387, 15:37 عصر
ببین دوست عزیز من
اصلا موضوع بالا رو فراموش کنید.

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

ghabil
سه شنبه 21 آبان 1387, 18:14 عصر
و میخوای اینها نرم افزاری به هم مربوط نباشند ؟ یعنی از طریق کد مربوط نباشند؟

اگر اینطوری سه تا راه داری:
1) به فایل EXE پارامترها رو در زمان اجرا پاس کنی مثلا اینطوری ReportBuilde.Exe -param1 value1 -param2 value2

که این معمولا به درد پارامترهای کم و ساده میخوره

2) یک Shared Folder درست کنی با یک سرویس که برنامه وبی یک فایل حاوی همه پارامترها رو درست کنه و بزاره توی اون فلدر و سرویس هم مرتبا اون فلدر رو چک کنه و به محض ایجاد فایل جدید گزارش مربوطه رو بسازه

3)ترکیب دو روش بالا : یعنی فایل ساخته بشه اما بجای سرویس برنامه وبی یم بار برنامه ویندوزی رو با پارامتر نام فایل اجرا کنه

در همه حالا فوق برنامه ویندوزی نتیجه حاصله رو در یک فلدر کپی میکنه و این فلدر از طریق وب سرورت (مثلا IIS) روی وب میتونه سرویس بده و خوب تو هم Response هر درخواست رو Redirect میکنی به این آدرس وب که نتیجه توش هست تا کاربر گزارشش رو بگیره.

اگر جاییش ناواضح بوذ بگو بیشتر توضیح بدم

zoghal
سه شنبه 21 آبان 1387, 18:21 عصر
راهی که شما گفتید به طریقی کار رو راه میندازه
اما میخواهم به این صورت باشه

mydomain/index.php?go=GetListReport در مرورگر ارسال بشه، حالا رو سرور ما بتونیم پورت 80 رو دریافت کنیم و عمل مورد نظر انجام و باید جواب برگرده به درخواست که از وب اومده،
می دونم برای این کار باید از IdHTTPServer استفاده بشه
اما راهش رو نمی دونم یا شاید به خاطر این هست که من هم به اینترنت هستم و هم یک لوکال هاست آپاچی دارم
از سایر پورت ها هم به این دلیل استفاده نمیشه که نباید امکان بن کردن پورت ارتباطی باشه

vcldeveloper
چهارشنبه 22 آبان 1387, 04:34 صبح
یک راهش اینه که با استفاده از تکنولوژی های قدیمی دلفی (مثلا WebSnap) یک Web Application بصورت ISAPI بنویسید. لازمه اش اینه که روی سیستم سرور یک Web Server نصب باشه. اون وقت می تونید نتایج کوئری ها را بوسیله ابزارهایی کثل PageProducer یا مجموعه InternetExpress به HTML یا XML تبدیل کنید، و توسط Web Application به کلاینت ارسال کنید.

راه دیگه اش اینه که خودتون یک Web Server بنویسید که روی یک پورت مشخص فعال باشه، و هر زمان براش درخواستی اومد، آن را پردازش کنه، و یک HttpResponse بفرسته. اینجا هم می تونید از PageProducer یا InternetExpress استفاده کنید، ولی باید با چگونگی کارکرد Web Server ها و پروتکل HTTP آشنا باشید. برای IdHttpServer در مجموعه Demoهای Indy مثال وجود داره.

zoghal
چهارشنبه 22 آبان 1387, 10:22 صبح
مرسی آقای کشاورز دیشب همه این ها رو امنحان کردم، و به همین گفته های شما رسیدم
مرسی