میزبانی WAS در WCF

چهارشنبه 19 آبان 1395

در این مقاله، با مفهوم WAS در تکنولوژی WCF آشنا می شویم و مفاهیم ابتدایی آن را بررسی می کنیم. سپس آن را در یک برنامه ساده پیاده سازی می کنیم.

میزبانی WAS در WCF

WAS => Windows Activation Service

WAS یک Process Activation Service است که همراه با ویندوز ویستا و IIS 7 ارائه شد. WAS برای پشتیبانی از پروتکل های non-HTTP ارائه شد. زیرا در IIS 6  فقط از پروتکل های HTTP پشتیبانی می شد. اگر می خواهید از پروتکل های non-HTTP مانند NetTcpBinding  و NetMSMQBinding بر روی IIS استفاده کنید، تنها انتخاب شما WAS خواهد بود.

میزبانی WAS

بزرگترین محدودیت معماری WCF قبل از نسخه ی 7 IIS، این بود که هیچ پشتیبانی ای برای پروتکل های non-HTTP بر روی IIS وجود نداشت. برای این که بتوانیم لیست کاملی از پروتکل های پشتیبانی شونده توسط WCF (حتی پروتکل های non-HTTP ) را مورد استفاده قرار بدهیم (مانندnet.tcp, net.pipe, net.msmq ) باید از پلتفرم WAS (Windows Activation Service) استفاده کنیم. روند کاری WAS زمانی فعال می شود که درخواستی از سمت کاربر ، دریافت شود. بر خلاف Host، SelfHosting همیشه باید برای دریافت درخواست ها آماده باشد. زمانی که اولین درخواست از سمت کاربر بیاید، listener ، سریعا WAS را فراخوانی می کند تا worker process را فعال کند، سپس درخواست به  application domain handler  ارسال می شود که در داخل  worker process است که وظیفه ی مدیریت درخواست ها و بازگرداندن پاسخ به کاربر را بر عهده دارد. هیچ اهمیتی ندارد که درخواست از نوع WCF Service request و یا  ASP.NET Request باشد، وظیفه ی activation process در هر دوی این موارد این است که worker process را در زمان دریافت یک درخواست ، فعال کند.message-based activation ، activation process(فعال سازی مبتنی بر پیام) نیز نامیده می شود. Application domain protocol handler ، سپس WCF Service Host در داخل application domain را به کار می اندازد. 

در شکل بالا می بینید که worker process  همزمان با WCF Service زمانی فعال می شود که اولین درخواست از سمت کاربر ارسال می شود. بعد از آن، Server  منتظر می ماند تا به محض دریافت یک درخواست از سمت کاربر، آن را پردازش کند و به کاربر برگرداند. 

معماری میزبانی WAS

زمانی که WAS فعال شود، worker process شروع به انتظار برای دریافت درخواست ها می کند. هر بار که هر کدام از protocol listener ها یک درخواست، دریافت می کنند، WAS  .وجود worker process برای سرویس دهی به درخواست را بررسی می کند. وظیفه ی listener دریافت درخواست ها از صف application pool  و سپس ارسال آن ها به appropriate protocol handler  برای پردازش آن ها است. 

Protocol Listener ها : Listener ها مسئول دریافت درخواست ها هستند. Protocol Listener برای همه پروتکل ها نظیر HTTP,net.tcp و ... فراهم شده است. 

-Listener Adapter : این Adapter ها مسئول برقراری ارتباط بین WAS  و worker process برای یک پروتکل خاص هستند. 

-Protocol Handler : این Handler ها مسئول مدیریت درخواست ها از طریق مدل service برای یک پروتکل خاص هستند. 

مراحل پیکربندی WAS Hosting

مراحل زیر را برای پیکربندی WAS Hosting بر روی IIS انجام بدهید. 

مرحله 1 

مطمئن باشید که در زیرشاخه ی .NET Framework 3.5.1 ویژگی های  HTTP Activation  و Non-HTTP Activation تیک زده شده باشند. به مسیر Control Panel -> Programs-> Programs and Features (Win 7 OS)->Turn Windows Features ON or Off بروید.

مرحله 2: مطمئن شوید که سرویس های TCP  در حال اجرا هستند. 

Net.TCP listener Adapter

Net.TCP Port Sharing Service

مرحله 3: یک WCF Service Library ایجاد کنید تا تمامی قراردادها و پیاده سازی ها در آن انجام شود. 

مرحله 4 - مطابق با نیازهایتان، قوانین و پیاده سازی های مورد نیاز را انجام بدهید. در این مثال، ما نام قوانین را “ServiceLib” و نام پیاده سازی ها را  “ServiceImp” قرار داده ایم. 

همان طور که در تصویر بالا مشخص شده است، دقت کنید که “netTcpBinding” را انتخاب کرده باشید. 

مرحله5 - برای میربانی، یک پروژه دیگر ایجاد کنید. نوع پروژه را بر روی WCF Service Application قرار بدهید . همه ی فایل های  .cs درون این پروژه بجز فایل svc را پاک کنید. 

مرحله 6 - تگ سرویس در محتویات فایل SVC را مطابق زیر تغییر بدهید:

مطمئن بشوید که در تگ سرویس، نام کلاسی که در آن عملیات مربوط به سرویس را پیاده سازی کرده ایم، باشد. 

مرحله 7 - Internet Information Services (IIS) را باز کنید.

Default Website را انتخاب کنید و برنامه را اضافه کنید. 

مسیر فیزیکی مربوطه را به روز رسانی کنید و بر روی دکمه OK کلیک کنید. 

مرحله 8 - default website را انتخاب کرده و گزینه ی Edit Bindings را بزنید. 

مطمئن شوید که یک ورودی برای SiteBindings در نظر گرفته باشید.

مرحله 9 - سایت خود را انتخاب کنید و دکمه ی  Advanced Settings را بزنید و پروتکل های فعال شده مانند HTTP,net.tcp را به روز رسانی کنید. 

بعد از این مورد، سپس یک فایل .svc را در IIS انتخاب کنید و browse را بزنید. سپس، سرویس به صورت مناسبی اجرا خواهد شد. 

مرحله 10- پیکربندی کاربر 

حالا می توانید فایل .svc را در پروژه / IIS خودتان اجرا کنید، سپس URL  را کپی کنید وآن را در قالب Service Reference در پروژه کاربر اضافه کنید. 

سپس، شی را برای service reference انتخاب کنید و متدهای سرویس را بهینه سازی کنید. برای مشاهده ی جزئیات ، تصویر زیر را ببینید. 

 در صورت تمایل میتوانید به صورت رایگان آموزش WCF به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • WCF
  • 2k بازدید
  • 0 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید