
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
میزبانی سرویس WCF توسط یک سرویس ویندوز
WCF –میزبانی سرویس WCF توسط یک سرویس ویندوز (windows service)
عملیات میزبانی سرویس WCF بر روی Windows service بسیار آسان است. در زیر مراحل راه اندازی و کدنویسی لازم به همراه تصاویر آموزشی ارائه گردیده است.
گام اول –محیط Visual Studio را راه اندازی کرده و سپس بر روی گزینه ی New → Project کلیک کنید. حال Class Library را از قالب های موجود انتخاب نمایید.

گام دوم – فضای نام (ارجاع) System.ServiceModel را به پروژه اضافه کنید. این فضای نام در واقع همان assembly (فایل dll) اصلی است که برای ساخت سرویس WCF مورد استفاده می گیرد.
گام سوم – در این مرحله رابط (interface) ISimpleCalulator را ایجاد می کنیم. برای این منظور attribute های ServiceContract و OperationContract را مانند زیر به کد اضافه می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; namespace WindowsServiceHostedService { [ServiceContract] public interfaceISimpleCalculator { [OperationContract] int Add ( int num1, int num2); [OperationContract] int Subtract( int num1, int num2); [OperationContract] int Multiply( int num1, int num2); [OperationContract] double Divide( int num1, int num2); } }<button></button> |
گام چهارم –رابط (interface) ISimpleCalculator را مانند زیر پیاده سازی نمایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowsServiceHostedService { Class SimpleCalulator : ISimpleCalculator { Public int Add ( int num1, int num2) { return num1 + num2; } Public int Subtract( int num1, int num2) { return num1 - num2; } Public int Multiply( int num1, int num2) { return num1 * num2; } Public double Divide( int num1, int num2) { if (num2 != 0) return num1 / num2; else return 0; } } }<button></button> |
گام پنجم –پروژه را کامپایل (build) کرده و فایل dll را دریافت نمایید. سرویس WCF اکنون آماده می باشد. حال نحوه ی میزبانی سرویس WCF در Windows service را شرح می دهیم.
نکته: در این آموزش، Contract و (پیاده سازی) Service را هر دو در یک پروژه ی واحد ایجاد کرده ایم. اما به طور کلی بهتر است هر یک را در پروژه ی مجزا قرار دهید.
گام ششم – محیط Visual Studio را راه اندازی کرده، بر روی New → Project کلیک کنید. سپس قالب Windows Service را انتخاب نمایید.
گام هفتم - 'WindowsServiceHostedService.dll' را به صورت یک reference به پروژه اضافه نمایید. این فایل dll (assembly) به عنوان service عمل می کند.

گام هشتم –متد OnStart از سرویس، کد hosting را برای میزبانی سرویس WCF می نویسد. لازم است از تنها یک نمونه شی میزبانی سرویس (service host object) استفاده نمایید. متد OnStop درست عکس متد نام برده عمل کرده و سرویس را می بندد. کد زیر نحوه ی میزبانی سرویس WCF در Windows service را نمایش می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.ServiceModel; using System.ServiceModel.Description; namespace WCFHostedWindowsService { Partial class WCFHostedWindowsService : ServiceBase { ServiceHostm_Host; Public WCFHostedWindowsService() { InitializeComponent(); } Private void InitializeComponent() { thrownewNotImplementedException(); } protectedoverridevoidOnStart(string[] args) { if (m_Host != null ) { m_Host. Close (); } // Create a URI to serve as the base address // Create ServiceHost m_Host = newServiceHost typeof(WindowsServiceHostedService.SimpleCalulator), httpUrl); // Add a service endpoint m_Host.AddServiceEndpoint (typeof(WindowsServiceHostedService.ISimpleCalculator), newWSHttpBinding(), "" ); //Enable metadata exchange ServiceMetadataBehaviorsmb = newServiceMetadataBehavior(); smb.HttpGetEnabled = true ; m_Host.Description.Behaviors. Add (smb); //Start the Service m_Host. Open (); } protectedoverridevoidOnStop() { if (m_Host != null ) { m_Host. Close (); m_Host = null ; } } staticvoid Main() { ServiceBase[] ServicesToRun; ServicesToRun = newServiceBase[] { newWCFHostedWindowsService(); } ServiceBase.Run(ServicesToRun); } } }<button></button> |
گام نهم –برای نصب سرویس، ابتدا بایستی کلاس Installer را برای Windows service داشته باشید. بنابراین بایستی یک کلاس Installer جدید به پروژه اضافه کنید. این کلاس از کلاس پایه ی Installer به ارث برده می شود. کد زیر اسم Service، نوع StartUp و دیگر اطلاعات مربوط به سرویس را نمایش می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | using System; using System.Collections.Generic; using System.Text; using System.ServiceProcess; using System.Configuration.Install; using System.ComponentModel; using System.Configuration; namespace WCFHostedWindowsService { [RunInstaller( true )] Public class WinServiceInstaller : Installer { Private ServiceProcessInstaller process; Private ServiceInstaller service; Public WinServiceInstaller() { process = newServiceProcessInstaller(); process.Account = ServiceAccount.NetworkService; service = newServiceInstaller(); service.ServiceName = "WCFHostedWindowsService" ; service.DisplayName = "WCFHostedWindowsService" ; service.Description = "WCF Service Hosted" ; service.StartType = ServiceStartMode.Automatic; Installers. Add (process); Installers. Add (service); } } }<button></button> |
گام دهم –پروژه را build کرده و فایل اجرایی WCFHostedWindowsService.exe را دریافت نمایید. پس از آن سرویس را با استفاده از پنجره ی فرمان (command prompt) محیط Visual نصب نمایید. برای این منظور با کلیک بر روی Start→All Programs→Microsoft Visual Studio 2008→Visual Studio Tools→ Visual Studio Command Prompt پنجره ی فرمان را باز کرده و با درج دستورinstall util سرویس را مانند زیر نصب نمایید.
