Skip to content
الفبای آموزشآموزش برنامه‌نویسی | برنامه‌نویسی هنر است
  • آموزش
    • برنامه‌نویسی
    • ترفند
    • طراحی
  • دانلود
    • جزوه
    • سورس کد
    • پروژه
    • کتاب
  • معرفی
    • سایت
    • افزونه
    • برنامه
    • سرویس

آموزش گام به گام ساختن و بکارگیری یک سرویس WCF با استفاده از ویژوال استودیو ۲۰۱۰

آموزش گام به گام ساختن و بکارگیری یک سرویس WCF با استفاده از ویژوال استودیو ۲۰۱۰

در این نوشتار، می‌خواهم چگونگی ایجاد یک سرویس WCF و بکارگرفتن آن را نشان دهم. (برای نمایش بزرگتر تصاویر، روی آنها کلیک کنید)

مایکروسافت برای پشتیبانی از معماری سرویس‌گرا (service oriented)، مدل برنامه‌نویسی یکپارچه WCF (Windows Communication Foundation) را فراهم کرد. ASMX نسخه‌ی پیشین از مایکروسافت بود که بر پایه XML و فریم‌ورک .NET بوده و وب‌سرویس‌های ASMX را پشتیبانی می‌کند.

evolution of wcf

evolution of wcf

مدل WCFبه توسعه‌دهندگان این امکان را می‌دهد تا راهکارهایی امن با قابلیت اطمینان و برپایه‌ی تراکنش تولید کنند که قابلیت استفاده بر روی پلت‌فرم‌های مختلف را داشته باشند. با استفاده از WCF شما می‌توانید داده‌ها را بصورت ناهمگام (asynchronous) از یک endpoint به endpoint دیگری ارسال کنید.

از مهم‌ترین مزیت‌های WCF اجماع مزایای کلیه روش‌های پیاده‌سازی سیستم‌های توزیع شده در یک غالب واحد و منعطف است. قبل از ارائه WCF، بسته به شرایط موجود بین کلاینت و سرور، معمولاً استفاده از یکی از روش‌های توسعه توزیع‌شده مناسب‌تر بوده و انتخاب می‌شده است. به عنوان مثال در صورتی که استفاده کننده از سرویس، روی پلتفرم .net پیاده‌سازی شده باشد و همچنین در داخل سازمان قرار داشته باشد، استفاده از .net Remoting بهترین راه حل موجود بوده است، حال اگر همین سرویس می‌بایست قابلیت دسترسی از خارج از سازمان یا از سایر پلتفرم‌ها (مانند J2EE) را می‌داشت، استفاده از WebService به عنوان راه حل دیگری مطرح می‌شد، یا در حالتی دیگر سرویس می‌بایست به هر دو صورت در اختیار قرار می‌گرفت که پیچیدگی فراوان و نگهداری پرهزینه‌ای را در بر داشت.

windows communication foundation (wcf) service

برای بیشتر خواندن درباره‌ی WCF اینجا کلیک کنید.

 

 

هم‌سنجی وب‌سرویس‌های .NET با WCF

ASMX Web Services

WCF

Can be hosted in ISS only

Multiple Hosting Options as IIS, WAS, Console, WinNT Service, WCF Provided Host

Support for HTTP only

Support for HTTP, TCP, MSMQ, NamedPipes

Limited Security

A Consistent Security Programming Model

Uses XmlSerializer

Uses DataContractSerializer

 

گرچه WCF یک گام بزرگ برای آینده است، اما ویژوال استودیو؛ ایجاد، انتشار و بکارگیری سرویس‌های WCF را آسان‌تر می‌کند.

در اینجا می‌خواهم سرویسی به نام SayHello با ۲ پارامتر به نام‌های name و language را بسازم. پارامتر name برای ورودی گرفتن نام اشخاص و پارامتر language برای گرفتن زبان مورد استفاده در ورودی است. این سرویس نام کاربر را گرفته و با توجه به زبان وارد شده، به کابر سلام می‌کند.

برای مثال هنگامی که کاربر مقدار “آرمان” برای پارامتر اول و مقدار “fa” را برای پارامتر دوم وارد کند، خروجی بصورت “سلام آرمان” نمایش داده می‌شود. و یا اگر مقدار “denis” برای پارامتر اول و مقدار “en” را برای پارامتر دوم وارد کند، خروجی “Hello denis” نمایش داده می‌شود.

 

آغاز کار:

نخست ویژوال استودیو ۲۰۱۰ را اجرا کرده و پس از آن از منوی File و زیرمنوی New، روی Project کلیک کنید. از پنجره‌ی باز شده و از سمت چپ Visual C# و زیر دسته‌ی WCF را انتخاب کرده و سپس از قسمت میانی پنجره WCF service application را انتخاب کرده و نامی برای سرویس خود برگزینید که در اینجا من نام HelloService را بکار بردم.

wcf_01

ویژوال استودیو همه‌ی فایل‌های لازم را برای شروع کار می‌سازد. بصورت پیش‌فرض سرویس نام Service1.svc و رابط  IService.csرا دارد. شکل زیر نمایی از پنچره Solution Explorer  پروژه‌ی ایجاد شده است:

wcf_02

در اینجا به این دو پیش‌فرض نیاز نداریم، یا باید حذف کنیم و یا برای ادامه‌ی کار، این دو را ویرایش کنیم. من در اینجا هر دو را با کلیک راست کردن روی هر کدام، حذف (Delete) می‌کنم.

حال این پروژه برای سرویس‌دهی آماده نیست، پس برای ساختن سرویس از پنچره Solution Explorer  روی نام پروژه (HelloService) کلیک راست کرده، Add را انتخاب و سپس روی New Item کلیک می‌کنیم.

در پنجره‌ی باز شده WCF service را انتخاب کرده و نام HelloService.svc را وارد کرده و روی دکمه‌ی Add کلیک می‌کنیم.

wcf_03

حالا ویژوال استودیو دو فایل با نام‌های IHelloService.cs و HelloService.svc ساخته است. این فایل‌ها در واقع برای تعریف سرویس (IHelloService.cs) و اجرای سرویس (HelloService.svc) هستند.

اجازه دهید که در اینجا رابط IHelloService را بررسی کنیم، شکل زیر مربوط به محتویات IHelloService است:

wcf_04

کدهای موجود در IHelloService برای تعریف سرویس و فراهم‌کننده‌های اپریشن/متد با نام DoWork() است (شبیه به وب‌متد در وب‌سرویس‌های ASMX). هر سرویس WCF، فایل رابطی را دارد که سرویس را تعریف می‌کند.

و حالا اجازه دهید که فایل  HelloService.svc را بررسی کنیم که شکل زیر مربوط به آن است:

wcf_05

کد نشان داده شده برای اجرای رابط IHelloService است. که این کد خود-توضیحی (self-explanatory) است؛ کلاس HelloService  نیاز به اجرای همه‌ی متدهای مشخص شده در تعریفات سرویس را دارد.

IHelloService.cs را در محیط ویژوال استودیو با کلیک کردن بر روی نام آن باز کنید و متد DoWork() را حذف کرده و یک تعریف برای SayHello() ایجاد کنید. اضافه کردن OperationContract به متد را فراموش نکنید. کدهای لازم برای این کار به شکل زیر می‌باشد:

wcf_06

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace HelloService
{
    [ServiceContract]
    public interface IHelloService
    {
        [OperationContract]
        string SayHello(String name, String language);
    }
}

 

حالا برای پیاده‌سازی متد SayHello  فایل HelloService.svc.cs را ویرایش کرده و کدهای زیر بنویسید:

wcf_07

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace HelloService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "HelloService" in code, svc and config file together.
    public class HelloService : IHelloService
    {
        public string SayHello(String name, String language)
        {
            switch (language)
            {
                case "en":
                    return "Hello " + name;
                case "fa":
                    return "سلام " + name;
                default:
                    return "زبان پشتیبانی نشده";
            }
        }
    }
}

 

ما موفق به ساخت این سرویس شده‌ایم.

حالا برای اجرای این سرویس می‌توان کلید F5 را از صفحه‌کلید فشار داده و یا از منوی Debug روی گزینه‌ی  start debugging کلیک کنید.

اگر همه‌ی مراحل بالا را به درستی انجام داده باشید؛ ویژوال استودیو میزبانی سرویس شما را برای یک کلاینت و تست کردن آن انجام می‌دهد. و شکل زیر نمایش داده می‌شود:

wcf_08

در قسمت چپ این پنجره، سرویس‌های در دسترس نمایش داده می‌شود و در سمت راست، سرویس‌ها را می‌توان آزمایش کرد. برای آزمایش کردن سرویس sayHello روی نام آن دوبار کلیک کنید. برای پارامترهای name و language مقداری وارد کنید و روی دکمه‌ی Invoke کلیک کنید. مثالی از ورودی‌ها و گرفتن خروجی از سرویس را در تصویر زیر می‌بینید:

wcf_09

ما این سرویس‌دهنده را ایجاد کرده‌ایم و درستی آن را نیز بررسی کردیم. در گام بعدی سرویس‌گیرنده را می‌نویسیم.

ایجاد یک سرویس‌گیرنده دو مرحله دارد.

یکی ساخت کلاس و دیگری ساخت فایل پیکربندی مربوط به سرویس است. نخست من می‌خواهم این فایل کلاس و پیکربندی را تولید کنم.

برای این کار، به همراه ویژوال استودیو یک ابزار عالی به نام svcutil.exe در درسترس است. این ابزار کلاس لازم و فایل پیکربندی را برای شما ‌تولید می‌کند. اگر اطلاعات بیشتری در مورد این ابزار نیاز دارید، اینجا کلیک کنید.

برای استفاده از این ابزار باید Visual studio command prompt را اجرا کنید. این محیط را از مسیر برنامه موجو در استارت‌منوی ویندوزتان پیدا کنید(Start Menu -> All Programs -> Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio command prompt) که جای آن در شکل زیر مشخص شده است:

wcf_10

مطمئن شوید که سرویس‌تان در ویژوال استودیو در حال اجرا است. برای ادامه‌ی کار نیاز به url سرویس خود دارید (که می‌توانید آن را در پنجره‌ی سرویس در حال اجرا و با کلیک راست کردن بر روی url سرویس در قسمت چپ پنجره بدست بیاورید) حالا در محیط خط فرمان باز شده توسط فرمان svcutil.exe هر دو فایل را بسازید، دستور

svcutil.exe http://localhost:4949/HelloService.svc /d:d:\temp

 

را وارد کرده و کلید اینتر را بزنید. شکل زیر تصویر اجرای این دستور است.

wcf_11

توضیحی برای سوئیچ /d در این دستور لازم است. با استفاده از این سوییچ، مسیری را برای ذخیره دو فایل ایجاد شده مشخص می‌کنیم (در اینجا مسیر d:\temp استفاده شده است). توجه کنید که محیط خط فرمان با دسترسی مدیر سیستم (run as administrator) اجرا شده باشد.

با این کار، این ابزار دو فایل با نام‌های HelloService.cs و output.config برای ما در مسیر مشخص شده می‌سازد.

در مرحله‌ی بعدی باید پروژه‌ی جدیدی بسازیم و فایل‌های ساخته شده و سرویس را در آن بکار گیریم. من برای اینکار در ویژوال استودیو و در قسمت solution explorer بر روی نام Solution  کلیک راست کرده و گزینه Add و سپس New Project را کلیک می‌کنم.

در پنجره‌ی باز شده Visual C# را کلیک کرده و در قسمت میانی Console Application را انتخاب و سپس نامی برای آن وارد کنید. من در اینجا نام TestService را وارد کردم.

wcf_12

حالا به مسیری بروید که توسط ابزار svcutil.exe دو فایل را ساخته شده است (d:\temp). فایل output.config را به app.config تغییر نام بدهید.

در مرحله‌ی بعدی این دو فایل را (d:\temp\helloservice.cs و d:\temp\app.config) را باید به پروژه اضافه کنیم. در ویژوال استودیو و در قسمت  Solution Explorerروی نام پروژه (TestService) کلیک راست کرده گزینه Add و سپس Existing Item را کلیک کنید.

در پنجره باز شده به مسیر ذخیره شده دو فایل رفته و آنها انتخاب کرده و روی دکمه‌ی Add کلیک کنید. (مانند تصویر زیر)

wcf_13

حالا نیاز به اضافه کردن یک reference با نام System.ServiceModel به پروژه داریم. برای این کار در قسمت Solution Explorer و در پروژه‌ی TestService و بر روی References  کلیک راست کرده و گزینه‌ی Add Reference را کلیک کنید. در پنجره‌ی باز شده و به تب .Net رفته و System.ServiceModel را انتخاب کرده و روی دکمه‌ی Ok کلیک کنید. (مانند تصویر زیر)

wcf_14

حالا در پروژه‌ی TestService و با دوبار کلیک روی Program.cs کدهای مربوط به آنرا مانند تصویر زیر تغییر دهید تا بتوان از وب سرویس و متد اصلی استفاده کرد.

wcf_15

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestService
{
    class Program
    {
        static void Main(string[] args)
        {
            //نمایش پیغام نام را وارد کنید
            Console.Write("Enter your name: ");
            //خواندن نام وارد شده توسط کاربر و قرار دادن در متغیر
            string name = Console.ReadLine();
            //نمایش پیغام زبان را وارد کنید
            Console.Write("Enter your language: ");
            //خواندن زبان وارد شده توسط کاربر و قراردادن در متغیر
            string lang = Console.ReadLine();

            //ساختن آبجکت سرویس گیرنده
            HelloServiceClient c = new HelloServiceClient();

            // فراخوانی سرویس
            Console.WriteLine(c.SayHello(name, lang));

            Console.ReadLine();
        }
    }
}

 

پیش از اجرا کردن پروژه، روی نام پروژه (TestService) کلیک راست کرده و گزینه‌ی Set as Startup Project را کلیک کنید. نمونه‌ای از خروجی برنامه را در زیر می‌بینید:

wcf_16

در این نوشتار شما گام به گام ساختن و بکارگرفتن یک سرویس WCF را مشاهده کردید.

 

حال که بیایید بصورت خلاصه با ABC در سرویس WCF آشنا شویم:

سرویس WCF، نقاط پایانی را ارائه می‌دهد که توسط شبکه و با استفاده از پروتکل‌های انتقالی، کاربرها از خدمات ارائه شده توسط سرویس، استفاده کنند. برای این منظور با سه اصطلاح Address، Bindingو Contract سر و کار داریم که به اختصار از آن به عنوان ABC در مبحث WCF یاد می‌شود.

  • A=Address: سرویس در کجا دسترس‌پذیر است (هر وبسایت یا وب‌سرویس آدرسی دارد، WCF می‌تواند آدرس‌ها را برای پروتکل‌های HTTP، TCP، NamedPipe، Peer2Peer و MSMQ فراهم کند).
  • B=Binding: چه کسی مجوز دسترسی داشته باشد (مشخص کردن چگونگی استفاده پروتکل‌های انتقال و پروتکل‌های امنیتی و …)
  • C=Contract: چگونگی انجام کارهای سرویس (هر رابط Contract را تعریف می‌کند، به زبان ساده‌تر Contract چیزی‌ست که خودتان در سرویس انجام داده و مشخص کرده‌اید).

با توجه به این توضیحات، محتویات فایل app.config درون پروژه‌ی خودتان را مرور کرده و endpoint خودتان را تحیل کنید.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IHelloService" />
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:4949/HelloService.svc" binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_IHelloService" contract="IHelloService"
                name="WSHttpBinding_IHelloService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

 

در شکل زیر WCF’s ABC با بیانی ساده و خلاصه به تصویر کشیده شده است.

wcf_abc

در صورت نیاز به دریافت فایل این آموزش و کدهای مربوط به آن از لینک زیر استفاده کنید، از طریق این لینک و به اشتراک‌گذاشتن، لینک دانلود فایل pdf این آموزش و سورس‌کد در دسترس قرار می‌گیرد.

Tags: Microsoft, Visual Studio, WCF, Windows Communication Foundation, آموزش, برنامه نویسی, پروژه, تصویری, دانلود پروژه سی شارپ, دانلود رایگان, سرویس, سرویس گرا, سورس کد, سی شارپ, گام به گام, وب سرویس, ویژوال استودیو

۹ comments

  • ppm ۹/ اسفند/ ۱۳۹۳ at ۶:۴۶ ق٫ظ پاسخ

    ازت خیلی ممنونم

  • منوچهر ۶/ تیر/ ۱۳۹۴ at ۱۱:۳۰ ق٫ظ پاسخ

    مرسی از زحمتت

  • ali ۳۰/ اردیبهشت/ ۱۳۹۵ at ۳:۲۵ ب٫ظ پاسخ

    خیلی ممنون واقعا خوب بود کاش میشد یه برنامه دیگه و بزرگتر رو با wcf اموزش میدادید تا بهتر و بیشتر بتونیم یاد بگیریمش

    • mohs@3n ۵/ شهریور/ ۱۳۹۵ at ۵:۲۳ ب٫ظ پاسخ

      از نظر شما سپاسگزارم. برنامه‌ی شخصی من این بود که اینکار رو ادامه بدم که متاسفانه هنوز امکان‌پذیر نشده

  • motezad ۸/ خرداد/ ۱۳۹۵ at ۹:۴۸ ق٫ظ پاسخ

    عالی بود

  • عباس ۳۰/ آذر/ ۱۳۹۵ at ۶:۳۶ ق٫ظ پاسخ

    مرسی. خیلی خوب و ساده و قابل فهم بود.

  • مهمان ۲۱/ اردیبهشت/ ۱۳۹۶ at ۲:۲۳ ب٫ظ پاسخ

    فوق العاده بود ممنونم

  • علی ۱۴/ شهریور/ ۱۳۹۶ at ۱۰:۴۵ ق٫ظ پاسخ

    ممنون، عالی بود.

  • سمبر ۱۷/ تیر/ ۱۳۹۷ at ۵:۰۱ ق٫ظ پاسخ

    با سپاااس برای شروع عالی و کامل بود

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Calendar

دسامبر 2014
ش ی د س چ پ ج
 12345
6789101112
13141516171819
20212223242526
2728293031  
« نوامبر   آگوست »

بایگانی‌ها

  • آگوست 2015
  • دسامبر 2014
  • نوامبر 2014

دسته‌ها

  • آموزش
  • برنامه‌نویسی
  • پروژه
  • ترفند
  • جزوه
  • دانلود
  • سایت
  • سرویس
  • سورس کد
  • کتاب
  • معرفی

برچسب‌ها

CEH Certified Ethical Hacker link shortener Microsoft pdf student Introduction Visual Studio WCF Windows Communication Foundation آموزش اسلاید امنیت در وب برنامه نویسی تصویری جزوه حسن دولتی دانلود دانلود رایگان دانلود پروژه سی شارپ رایگان رمز سرویس سرویس گرا سورس کد سی شارپ صفر و یک لینک کوتاه لینک کوتاه شده نفوذ هک وب سرویس ویژوال استودیو پاورپوینت پروژه پسورد کتاب کم کردن آدرس لینک کوتاه کردن آدرس سایت کوتاه کردن آدرس وبلاگ کوتاه کردن لینک کوتاه کننده لینک کوچ کردن لینک گام به گام گذرواژه

تازه‌ها

  • کوتاه‌کننده‌ی آدرس اینترنتی چیست؟ ۲۲/ آذر/ ۱۳۹۳
  • آموزش گام به گام ساختن و بکارگیری یک سرویس WCF با استفاده از ویژوال استودیو ۲۰۱۰ ۲۲/ آذر/ ۱۳۹۳
  • اسلاید آموزشی CEH – امنیت در وب! ۲۲/ آذر/ ۱۳۹۳
  • مقدمه‌ای بر وب‌سرویس‌ها ۲۲/ آذر/ ۱۳۹۳
  • آموزش
    • برنامه‌نویسی
    • ترفند
    • طراحی
  • دانلود
    • جزوه
    • سورس کد
    • پروژه
    • کتاب
  • معرفی
    • سایت
    • افزونه
    • برنامه
    • سرویس

Copyright الفبای آموزش ۱۴۰۲ | Theme by ThemeinProgress | Proudly powered by WordPress