
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
استفاده از سرویس WCF
WCF –استفاده از سرویس
اپلیکیشن ها می توانند به سرویس های WCF دسترسی داشته و از آن ها استفاده کنند. یک سرویس WCF می تواند بر اساس نوع میزبانی، به روش های مختلفی مورد استفاده قرار گیرد. در زیر روش های دسترسی و استفاده از سرویس WCF برای هر یک از گزینه های میزبانی پرطرفدار تشریح شده است:
· دسترسی و استفاده از سرویس میزبانی شده بر روی IIS 5/6
· استفاده از سرویس WCF که با روش self-hosting میزبانی شده است
· دسترسی به سرویس میزبانی شده در WAS
· استفاده از سرویس WCF میزبانی شده در Windows Service
دسترسی و استفاده از سرویس میزبانی شده بر روی IIS 5/6
فرایند استفاده از سرویس میزبانی شده توسط IIS 5/6، نحوه ی ایجاد proxy و اپلیکیشن console در زیر به تفصیل آموزش داده شده است.
گام اول –پس از اینکه سرویسی در IIS مستقر (host) شد، می توان توسط اپلیکیشن های سمت کلاینت (client application) از آن ها استفاده کرد. پیش از ایجاد اپلیکیشن سمت کلاینت، بایستی یک proxy برای سرویس ایجاد کرد. اپلیکیشن سمت کلاینت توسط این proxy با سرویس تعامل برقرار می کند. برای ایجاد proxy، ابتدا پنجره ی فرمان (command prompt) را در محیط visual باز کنید. با استفاده از دستور service در پنجره ی فرمان، می توانید کلاس proxy و اطلاعات پیکربندی و تنظیمات آن را ایجاد نمایید.
svcutilhttp://localhost/IISHostedService/Service.svc

پس از اجرای این دستور، دو فایل در مسیر پیش فرض ساخته می شود:
1. MyService.cs –کلاس Proxy سرویس (WCF)
2. Output.config –اطلاعات مربوط به پیکربندی و تنظیمات سرویس
گام دوم - حال به ساخت اپلیکیشن Console در محیط ویژوال می پردازیم (client application).

گام سوم –فضای نام (reference) 'System.ServiceModel'; را به پروژه اضافه کنید. این فضای نام در واقع فایل dll اصلی سرویس WCF می باشد.
گام چهارم – یک کلاس Proxy ایجاد نمایید.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyServiceClient { Class Program { Static void Main(string[] args) { // Creating Proxy for the MyService ServiceClient Client = newServiceClient(); Console.WriteLine("Client calling the service..."); Console.WriteLine("Hello Ram"); Console.Read(); } } }
خروجی زیر به نمایش در می آید:

استفاده از سرویس WCF میزبانی شده با روش Self-hosting
گام اول –سرویس میزبانی شده و اکنون می خواهیم کلاس proxy را برای کلاینت پیاده سازی کنیم. روش های مختلفی برای ایجاد proxy وجود دارد.
· با استفاده از SvcUtil.exe، می توان کلاس proxy و فایل تنظیمات آن را با end-point های مورد نیاز ایجاد کرد.
· اضافه کردن Service reference به client application.
· پیاده سازی کلاس ClientBase .
از میان روش های نام برده، آخرین گزینه بهترین روش می باشد. در صورت استفاده از دو روش دیگر، لازم است به ازای هر تغییری که در پیاده سازی Service اعمال می کنیم، یک کلاس proxy جدید ایجاد نمایید. اما پیاده سازی کلاس ClientBase
برای این منظور یک کلاس proxy که حاوی فضاهای نام System.ServiceModel و MyCalculatorService می باشد ایجاد نمایید. حال یک اپلیکیشن console ایجاد کنید که دربردارنده ی فضاهای نام System.ServiceModel و MyCalculatorServiceProxy (کلاس به آن ها ارجاع می دهد) می باشد. گام دوم –اطلاعات End-point نیز مانند service بایستی به فایل تنظیمات client application اضافه شوند. گام سوم –پیش از راه اندازی client application، بایستی سرویس را اجرا کنید. در زیر خروجی اپلیکیشن به نمایش گذاشته شده است. استفاده از سرویس WCF که در WAS میزبانی شده یک فرایند ساده است که طی چند مرحله ی ساده برای شما توضیح خواهیم داد. · کلاس proxy و فایل تنظیمات را به client application اضافه نمایید. · یک شی از MathServiceClient ایجاد نموده و متد را فراخوانی کنید. خروجی زیر به نمایش در می آید: پس از اینکه سرویس با موفقیت مستقر (host) شد، می توانیم یک کلاس proxy برای تعامل با سرویس ایجاد کرده و از آن در client application استفاده کنیم. در مثال زیر، فرایند استفاده از سرویسی که درWindows service میزبانی شده را مشاهده می کنید. using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorService;
namespace MyCalculatorServiceProxy
{
// WCF create proxy for ISimpleCalculator using ClientBase
Public class MyCalculatorServiceProxy :
ClientBase
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorServiceProxy;
namespace MyCalculatorServiceClient
{
classProgram
{
Static void Main(string[] args)
{
MyCalculatorServiceProxy.MyCalculatorServiceProxy proxy = newMyCalculatorServiceProxy.MyCalculatorServiceProxy();
Console.WriteLine("Client is running at " + DateTime.Now.ToString());
Console.WriteLine("Sum of two numbers. 5 + 5 =" + proxy.Add(5,5));
Console.ReadLine();
}
}
}
دسترسی و استفاده از سرویس میزبانی شده در WAS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespaceWASHostedClient
{
classProgram
{
staticvoid Main(string[] args)
{
MathServiceClient client = newMathServiceClient();
Console.WriteLine("Sum of two number 5,6");
Console.WriteLine(client.Add(5, 6));
Console.ReadLine();
}
}
}
دسترسی و استفاده از سرویس میزبانی شده بر روی Windows Service
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespaceWindowServiceClient
{
classProgram
{
staticvoid Main(string[] args)
{
//Creating Proxy for the MyService
MyServiceClient client = newMyServiceClient();
Console.WriteLine("Client calling the service...");
Console.WriteLine("Sum of two numbers 5,6");
Console.WriteLine(client.Add(5, 6));
Console.WriteLine("Subtraction of two numbers 6,5");
Console.WriteLine(client.Add(6, 5));
Console.WriteLine("Multiplication of two numbers 6,5");
Console.WriteLine(client.Add(6, 5));
Console.WriteLine("Division of two numbers 6,3");
Console.WriteLine(client.Add(6, 3));
Console.Read();
}
}
}
خروجی زیر را به دست می دهد: