عملیات میزبانی (Hosting) در WCF

در این مقاله مطالبی درباره نحوه پیاده سازی میزبانی در WCF خواهید آموخت. در ادامه مقاله، مطالب به صورت یک برنامه نیز قرار داده شده اند.

عملیات میزبانی (Hosting) در WCF

میزبانی

ابتدا به مروری بر روی معنی لغوی کلمه ی Host می پردازیم. کلمه Host در زبان انگلیسی به معنای فراهم کردن چیزی برای مخاطبین، و یا در معنی دیگری به منزله ی "تکیه دادن " نیز بیان شده است. همچنین در برخی از جملات به معنی میزبانی کردن مثلا از یک کنفرانس، اجلاس خبری و ... نیز به کار می رود. نکته مهمی که در این تعریف آخر وجود دارد این است که میزبانی توسط چه کسی (یا چه چیزی ) و برای چه کسی (یا چه چیزی) انجام می گیرد. به عبارت تکنیکی، "داده ها بر روی سرور، می توانند از طریق اینترنت در دسترس کاربر قرار بگیرند. " به عبارت دیگر ، "مجموعه سرویس هایی هستند که می توانند در دسترس کاربران قرار بگیرند. " کاربران از این داده ها یا سرویس ها استفاده خواهند کرد و از مزایای آن بهره مند خواهند شد.

 

نیازمندی ما به میزبانی در چه مواردی است؟

زمانی که شما یک سرویس را ایجاد می کنید نیاز دارید تا آن را در دسترس کاربران قرار بدهید، تا کاربران بتوانند از آن استفاده کرده و از مزایای آن بهره مند شوند. در موردی که ما درباره آن می خواهیم صحبت کنیم، سرویس ، یک " Online Shopping Service" است که کاربران می توانند از طریق اینترنت به مزایایی نظیر خرید و فروش کالا دسترسی داشته باشند. ما سپس نیاز داریم تا این سرویس را در یک مکانی قرار بدهیم. این فرآیند، hosting نام دارد. و تنظیمات مربوط به پیکربندی زیادی باید انجام شوند تا اجرای یک سرویس و همچنین گرفتن خدمات از آن امکان پذیر شود.

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

روش های محدودی برای انجام میزبانی در جهان وجود دارد.

1-Self Hosting با استفاده از Windows Console  و  Form Application

2- IIS Hosting با استفاده از IIS6

3- WAS Hosting با استفاده از IIS7

4-   Windows Service Application

 

انتخاب روش های میزبانی به transport protocol و ویژگی های مورد انتظار شما بستگی دارد. ویژگی های مهمی مانند Health Monitoring, Process Recycling,Process Activation  و  Idle Time Management برای میزبانی سرویس ها توصیه می شوند که در نظر گرفته شوند.

بازیابی پردازش ها – اگر IIS آگاه شود که سرویس به اندازه کافی از لحاظ کمبود حافظه و یا فاکتورهای دیگر، سالم و مطمئن نیست ، worker process را restart خواهد کرد تا به این ترتیب بتواند کل سیستم را از افتادن در مشکل، رها کند.

فعال سازی پردازش - Worker process و یا سایر پردازش ها فقط زمانی به کار می افتند که یک درخواست برسد. برخلاف SelfHosting، که در آن host process باید همیشه در حالت فعال و آماده برای دریافت درخواست ها باشد. همیشه این بحث وجود دارد که کدام میزبانی برای سرویس شما مناسب تر است، ما در این مقاله مرور کوتاهی بر این میزبانی ها خواهیم کرد تا بتوانید به درستی انتخاب خودتان را انجام دهید.

Service Host

Service Host یک بخشی از فضای نام ServiceModel است. هر نمونه ی  ServiceHost  ، به یک یا چند  سرویس  در زمان اجرا اختصاص پیدا می کند. زمانی که شما می خواهید میزبانی را بر روی یک console application(self-hosting)   انجام بدهید، شما نیاز به استفاده از class Service Host خواهید داشت. اگر در حال تلاش برای میزبانی سرویس خود بر روی WAS  یا IIS هستید، این دو خودشان به صورت خودکار از نمونه ای از ServiceHost استفاده خواهند کرد. ServiceHost با پارامتر هایی مانند erviceType,Service EndPoints,Base Address  و  Behaviour شروع به کار خواهد کرد و یک description از سیستم ایجاد خواهد کرد که در نهایت بخشی از System.ServiceModel خواهد بود. ServiceDescription مسئول ایجاد یک سری توضیحات برای سرویس شامل نوع سرویس، هدف نهایی و رفتارهای سرویس خواهد بود. دیاگرام زیر فرآیند service host را نشان می دهد.

 

Self Hosting

آسان ترین راه برای میزبانی سرویس شما استفاده از Self Hosting است که می تواند فقط به وسیله ی یک برنامه کنسول، وب فرم و یا یک Windows Service ایجاد شود. توسعه دهنده باید یک نمونه از Service Host class که از system.servicemodel مشتق شده ، بسازد . Service Host زمانی باز می شود که همراه با فایل های خودش نمونه سازی شود. یک بار که Service Host باز شود، فرآیند کاری را به گونه ای تنظیم می کند تا بتواند پیام ها را از سمت کاربر دریافت کند  و آن ها را مورد پردازش قرار بدهد.

حالا بیایید گام های مورد نیاز برای انجام عملیات Self Hosting را توضیح بدهیم.

گام1

در اولین گام، یک پروژه جدید باید ایجاد کنید. برای سادگی کار ما از یک برنامه کنسول استفاده خواهیم کرد. در تصویر زیر جزئیات کار را می بینید.

 

گام 2

در گام دوم می توانید ببینید که ServiceHost به همراه مشخص شدن نوع سرویس ایجاد شده است . می توانید ببینید که یک پارامتر ServiceType (Implementation) به کلاس ServiceHostپاس داده شده است . این کلاس ، یک سرویس برای ارتباط باcommunication protocol ایجاد خواهد کرد و همچنین یک DataContract ILibrary که بر روی آدرس مشخص شده، میزبانی شود.

شما همچنین می توانید ببینید که Event handler ها به کلاس service host نسبت داده شده اند و همزمان با باز یا بسته شدن ServiceHost به کار خواهند افتاد. تعریف نوع سرویس servicetype در این گام، اهمیت زیادی دارد، این کار را می توانید در Host App.config و یا به صورت کدنویسی انجام دهید.

همان طور که ملاحظه کردید، Self Hosting بسیار ساده است و نیازی به مراحل پیچیده و کارهای دشوار ندارد. نمونه برنامه در پایان برای دانلود قرار داده شده است.

دانلود فایل های ضمیمه مخصوص اعضای سایت می باشد !
کاربر مهمان! جهت دانلود و استفاده از امکانات سایت لطفا وارد سایت شوید و یا ثبت نام کنید
دانلود نسخه ی PDF این مطلب