PDA

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



niloofar norouzi
یک شنبه 19 آبان 1387, 20:44 عصر
سلام
به گفته آقای کشاورز، مکان مطرح شدن این سوال را به این قسمت منتقل کردم.
من یه چیزهایی راجع به کلاس پروکسی فهمیده ام و قدری نیز با آن کار کرده ام.
من این کلاس را برای یک وب سرویس ایجاد کردم و به وب سرویس ام اضافه کردم و مثل یک کلاس معمولی ازش استفاه کردم.
مطالب مورد نیاز رو هم از سایت codeproject به دست آوردم ولی چیزی که ازش سر در نمی آورم تولید فایل dll این کلاس است. وقتی خود کلاس قابل تولید است و می شود از آن استفاده کرد، فایل dll این کلاس به چه کار می آید؟
این فایل را باید در پوشه bin قرارداد ولی در پوشه bin وب سرویس یا برنامه کاربردی کاربر در سمت مشتری؟
اوصلا چند روش برای استفاده وب سرویس ها وجود داره. مسلما یکی از اونها همین کلاس پروکسی است.
اینها موضوعاتی است که نمی توانم دلیلش را بفهمم.
ممنون می شم اگه راهنمایی بفرمایید

Chris_Ronaldo
دوشنبه 20 آبان 1387, 08:51 صبح
سلام

کلاس پروکسی که اشاره کردید برای ایجاد ارتباط هست.
یعنی واسط بین برنامه کاربردی شما و وب سرویس شما

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

توضیحاتمو با یه مثال شرح میدم:
فرض کنید شما می خواهید دمای هوای اصفهان و تهران را از طریق وب سروویس به دست بیاورید.
منطقیش اینه که دو تا وب سرویس در تهران و اصفهان داشته باشید و بخواهید آن ها را در برنامه کاربردی خود فراخوانی کنید.
روش معمولیش اینه که شما مستقیم پروژه وب سرویس را به solution برنامه اضافه کنید و webMethod اونو توی برنامه کاربردی صدا بزنید. (حالا با هر تعداد پارامتر)
اما اگر همکارتون بخواد همون وب سرویس را استفاده بکنه هم باید اون هم پروژه وب سرویس را به solution برنامه اش اضافه بکنه.
حالا تصور کنید وب سرویس بخواد یک تغییر کوچولو بکنه چه بلایی سر برنامه هاتون میاد!
حالا با استفاده از پروکسی مثال را شرح میدم:
کافیه شما وب سرویس را جداگانه ایجاد کنید و روی سرور تهران و اصفهان بذارید و از طریق پروکسی اونو فراخوانی کنید. این طوری برنامه شما دیگه به وب سرویس وابسته نیست و می تونید webMethod را از طریق پروکسی صدا بزنید.
یعنی شما یک dll پروکسی فقط در برنامه خودتون دارید که webMethod را با هر تعداد پارامتر می تونید صداش بزنید.
نیازی نیست که شما علم در رابطه با محتویات داخل وب سرویس داشته باشید. منظورم اینه که ممکنه همکارتون وب سرویس را نوشته باشه و نیازی هم نیست شما از کد وب سرویس مطلع باشید و فقط شما با فراخوانی webMethod درگیر هستید.
پس نتیجه گیری این که: وب سرویس به هر زبانی روی سرور قرار میگیره
برنامه شما فقط dll پروکسی را نیاز داره
برنامه شما نام webMethod و پارامترهای اونو نیاز داره
ضمن اینکه داخل پروکسی شما می تونید امکان مسیریابی هم اضافه کنید یعنی با ارسال پارامتر به پروکسی مشخص بشه که از کدام وب سرویس بر روی کدام سرور و .... استفاده بشه و خیلی کارهای دیگه

niloofar norouzi
دوشنبه 20 آبان 1387, 17:41 عصر
با سلام

توضیح بسیار زیبایی بود. کاملا درک کردم که کلاس پروکسی چقدر از اهمیت برخوردار است.

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


من این کلاس را تولید کردم و فایل dll آن را نیز ایجاد کردم.
کلاس پروکسی را به برنامه ام (وب سرویس) اضافه کردم و فایل dll آن را در پوشه bin گذاشتم.آیا تا اینجای کار درست است؟

به نظر می رسد که dll را باید به نحوی به برنامه فهماند. یعنی باید در web.config آن را تعریف کرد.چگونه و با چه دستوراتی؟

ممنون از راهنمایی شما

Chris_Ronaldo
سه شنبه 21 آبان 1387, 07:40 صبح
سلام
منظورم از اضافه کردن dll به برنامه کاربردی بود نه به پروژه وب سرویس.

شما می بایست dll مربوطه را در جایی که می خواهید از وب سرویس استفاده کنید اضافه کنید.

در واقع از طریق فانکشنی که در پروکسی هست می توانید webMethod مربوط به وب سرویس بر روی سرور مورد نظر را از داخل برنامه سمت کلاینت فراخوانی کنید.

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

niloofar norouzi
پنج شنبه 23 آبان 1387, 12:14 عصر
سلام
منظورم از اضافه کردن dll به برنامه کاربردی بود نه به پروژه وب سرویس.

شما می بایست dll مربوطه را در جایی که می خواهید از وب سرویس استفاده کنید اضافه کنید.

در واقع از طریق فانکشنی که در پروکسی هست می توانید webMethod مربوط به وب سرویس بر روی سرور مورد نظر را از داخل برنامه سمت کلاینت فراخوانی کنید.

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


با سلام
ممنونم. بسیار زیبا بود. من تونستم با اضافه کردم فایل dll کلاس پروکسی از طریق add reference به برنامه سمت مشتری ، بدون استفاده از add web reference ، از متد وب سرویس استفاده کنم.

ممنونم. توضیحاتتون در عین سادگی جامع و گره گشا بود.