اتصال به سرویس مستقر در IIS
آموزش WCF -اتصال به سرویس مستقر در IIS
در این قسمت از آموزش WCF، قصد داریم سرویس ای که در مرحله قبل به IIS اضافه کردیم (استقرار سرویس WCF در IIS) را در یک پروژه Workflow استفاده کنیم. در این سیستم گردش کار، ابتدا برای اتصال به سرویس تنظیمات لازم را انجام داده و سپس دو عدد دلخواه را به سرویس ارسال می کنیم و حاصل جمع آنها را از سرویس دریافت کرده و با استفاده از اکتیویتی WriteLine آنرا نمایش می دهیم.
مراحل انجام کار
پروژه گردش کار SendAndReceive شامل مراحل زیر است:
- ایجاد یک پروژه از نوع Workflow Console Application
- بدست آوردن اطلاعات سرویس
- ایجاد و طراحی Workflow
- اجرای Workflow
- پروژه SendAndReceive چگونه کار می کند؟
ایجاد یک پروژه از نوع Workflow Console Application
در پنل Solution Explorer روی Solution Chapter03 راست کلیک کرده و از گزینه ADD زیر منوی New Project را انتخاب نمایید. سپس در پنجره Add New Project گزینه workflow را انتخاب کرده و سپس از سمت راست پنجره گزینه Workflow Console Application را انتخاب نمایید. حالا قسمت Name را با مقدار SendAndReceive تنظیم نمایید و نهایتاً روی دکمه OK کلیک کنید.
بدست آوردن اطلاعات سرویس
قبل از اینکه به مرحله ی طراحی Workflow برویم، باید یکسری اطلاعات در مورد سرویس WCF کسب کنیم ...!
با استفاده از ابزار WCF Test Client بهتر می توانیم به اطلاعات مذکور دست یابیم، بنابراین به آدرس زیر رفته و فایل "WcfTestClient.exe" را اجرا نمایید:
"C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE"
حالا با استفاده از منوی File->Add Service سرویس Workflow ای که در مرحله قبل ایجاد و به IIS اضافه کردیم را به آن معرفی کنید و مطابق شکل زیر از سمت چپ پنجره، روی Config File دابل کلیک کنید:
حالا با توجه به تصویر بالا، اطلاعات ABC مربوط به سرویس را بدست آوردیم:
- A: مخفف Address می باشد و مقدار آن "http://localhost/ReceiveAndReply/Service1.xamlx" است.
- B: مخفف Binding می باشد و مقدار آن "basicHttpBinding" است.
- C: مخفف Contract می باشد و مقدار آن "IService" است.
در کنار اطلاعات ABC مربوط به سرویس، به نام پارامترهای ورودی و خروجی آن نیز نیاز داریم. بنابراین یکبار دیگر به ابزار WCF Test Client مراجعه می کنیم. اینبار مطابق شکل زیر، روی GetData دابل کلیک می کنیم و از سمت راست پنجره دو عدد را وارد کرده و روی دکمه "invoke" کلیک می کنیم. بعد از اینکه نتیجه نمایش داده شد، از پایین پنجره، تب XML را انتخاب می کنیم:
حالا به نام پارامترهای سرویس نیز دست یافتیم:
- Operation name یا نام عملیات سرویس: GetData
- نام پارامترهای درخواستی سرویس: xIn و yIn
- نام پارامتر نتیجه یا پاسخ سرویس: addResult
ایجاد و طراحی Workflow
فایل Service1.xaml که بصورت اتوماتیک توسط Visual Studio ساخته شده است را باز کنید و کارهای زیر را انجام دهید:
- از پنل Toolbox، اکتیویتی SendAndReceiveReply را بداخل صفحه بکشید.
- روی اکتیویتی Sequence کلیک کرده و از پایین صفحه تب Variables را انتخاب نمایید. حالا متغیر result از نوع Int32 را اضافه نمایید. (متغیر handle1_ توسط اکتیویتی SendAndReceiveReply بصورت اتوماتیک ایجاد شده است و در این پروژه بدون استفاده است)
- روی اکتیویتی Send راست کلیک کرده و گزینه ی Properties را انتخاب نمایید. حالا باید با توجه به اطلاعاتی که در مرحله ی قبل یعنی "بدست آوردن اطلاعات سرویس" بدست آوردیم، این قسمت را تنظیم نماییم.
- در اکتیویتی Send روی لینک روبروی Content کلیک کرده و پنجره باز شده را مانند زیر تنظیم نمایید. توجه فرمایید که نام پارامترها باید دقیقاً با نام پارامترهای سرویس مورد نظر یکسان باشد.
- در اکتیویتی ReceiveReplyForSend روی لینک روبروی Content کلیک کرده و پنجره باز شده را مانند زیر تنظیم نمایید. توجه فرمایید که نام پارامتر باید دقیقاً با نام پارامتری که نتیجه سرویس در آن ذخیره می شود یکسان باشد.
- مطابق شکل زیر از پنل Toolbox اکتیویتی WriteLine را به داخل Sequence بکشید و آنرا مطابق زیر تنظیم نمایید.
اجرای Workflow
پروژه SendAndReceive را بعنوان پروژه StartUp تنظیم نمایید و در ادامه برای اجرای Workflow دکمه های میانبر Ctrl+F5 را فشار دهید. همان طور که می بینید، دو عدد 10 و 20 توسط سرویس با هم جمع شده و نتیجه در Console نمایش داده می شود:
پروژه SendAndReceive چگونه کار می کند؟
با استفاده از اکتیویتی Send می توانیم با سرویس مورد نظرمان ارتباط برقرار کرده و شروع به گفتگو با آن کنیم. با توجه به آدرسی که در قسمت "Endpoint" اکتیویتی Send تنظیم کردیم، این اکتیویتی در پشت صحنه، فایل wsdl را واکشی می کند و با استفاده از آن امکان فراخوانی سرویس را با ایجاد یک Proxy فراهم می کند.
بنابراین اکتیویتی Send خیلی از کارهای خسته کننده ای که قبلاً باید انجام می شد را تنها با تنظیم چند خصوصیت برای ما انجام می دهد.
از اکتیویتی Send می توانیم، زمانی که نیاز به پاسخ نداریم و تنها برای ارسال پارامتر استفاده کرد و همچنین می توانیم از اکتیویتی Send در کنار اکتیویتی Receive برای ارسال و انتظار برای دریافت پاسخ، استفاده کنیم.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 7586