PDA

View Full Version : سوال: تغییر وب سرویس در زمان اجرا



میتی دات نت
دوشنبه 28 مرداد 1387, 12:26 عصر
به نام خدا
ما سه تا سرور داریم که روی دو تا از اون سرور ها یه وب سرویس نوشتیم که کارهایی را انجام میدهد .
روی سومی هم وب سایت با برنامه ما وجود داره که هر بار به ازاء پارامترهایی مه از بانک اطلاعاتی می خونه یکی از این وب سرویس ها رو صدا می کنه .
می خواستم بدونم در زمان اجرا چطور می تونم اونها رو عوض کنم .
اگر تعداد سرورهایی که وب سرویس روشه زیاد بشه راهی غیر از این وجود نداره

Aidin
سه شنبه 29 مرداد 1387, 00:34 صبح
منظورتون از عوض کردن چیه ؟
کد وب سرویس رو عوض کنید ؟ یا وب سرویسی که فراخوانی میشه رو ؟

میتی دات نت
سه شنبه 29 مرداد 1387, 11:01 صبح
وب سرویسی که فراخوانی میشه

mehdi.mousavi
سه شنبه 29 مرداد 1387, 16:48 عصر
به نام خدا
ما سه تا سرور داریم که روی دو تا از اون سرور ها یه وب سرویس نوشتیم که کارهایی را انجام میدهد . روی سومی هم وب سایت با برنامه ما وجود داره که هر بار به ازاء پارامترهایی مه از بانک اطلاعاتی می خونه یکی از این وب سرویس ها رو صدا می کنه . می خواستم بدونم در زمان اجرا چطور می تونم اونها رو عوض کنم . اگر تعداد سرورهایی که وب سرویس روشه زیاد بشه راهی غیر از این وجود نداره

سلام.
اگر هر دو وب سرویس یکیه و هدفتون Load Balancing هستش، بهتره اینکارو با سخت افزارهای موجود انجام بدین.

اما اگر دو Web Service متفاوت روی دو سرور در حال اجراست، خوب میتونید تواما به هر دو سرویس Reference داشته باشید و هنگام نیاز، هر کدوم رو که مایل بودید Invoke کنید.

میتی دات نت
سه شنبه 29 مرداد 1387, 17:17 عصر
به نام خدا
با تشکر
تعداد سرور ها و همینطور وب سرویس ها معلوم نیست . نام و آدرس هر کدام از سرورها در بانک اطلاعاتی وب ما وجود دارد . من می خواهم یک کلاسی بنویسم و هر باروب سرویس را که نیاز داشتم فراخوانی کنم

mehdi.mousavi
سه شنبه 29 مرداد 1387, 17:20 عصر
به نام خدا
با تشکر
تعداد سرور ها و همینطور وب سرویس ها معلوم نیست . نام و آدرس هر کدام از سرورها در بانک اطلاعاتی وب ما وجود دارد . من می خواهم یک کلاسی بنویسم و هر باروب سرویس را که نیاز داشتم فراخوانی کنم

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

میتی دات نت
چهارشنبه 30 مرداد 1387, 10:31 صبح
به نام خدا
همه وب سرویسها یکی هستن و فقط میزبانشون متغیره

mehdi.mousavi
چهارشنبه 30 مرداد 1387, 11:04 صبح
به نام خدا همه وب سرویسها یکی هستن و فقط میزبانشون متغیره

بسیار خوب. کافیه یک بار Reference به سرویس مورد نظر (بعنوان مثال وب سرویس نصب شده روی دستگاه 1) رو به برنامه اضافه کنید، سپس هنگام استفاده، URL اونو برای کارکردن با سرویس مورد نظر خودتون (وب سرویس موجود در دستگاه شماره 2) تعیین کنید و سپس متودهاش رو Invoke کنید. البته شاید نیاز باشه تا برای استفاده از سرویس 2 این Property ها رو هم Set کنید:

Credentials
CookieContainer
Proxy

بعبارت دیگه، در کلاس ServiceProxyFactory خودتون (که وظیفه ایجاد یک Instance از WS رو داره)، باید اینطور عمل کنید:



public static CustomerService GetCustomerService()
{
CustomerService service = new CustomerService();
service.Url = whateverUrl + "/CustomerService.asmx";

//service.CookieContainer = ...
//service.Credentials = ...

return service;
}که whateverUrl در واقع URL به مسیر اصلی وب سرویس روی دستگاه شماره 1، 2 و ... هستش. توجه کنید که اگر قراره Policy ای هم Set بشه (در صورت استفاده از WSE) باید در همین تابع انجام بشه.