میزبانی WAS در WCF
چهارشنبه 19 آبان 1395در این مقاله، با مفهوم 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 به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .
- WCF
- 2k بازدید
- 0 تشکر