ما در این قسمت بیشتر می خواهیم راجع به کدنویسی سمت سرور صحبت کنیم. من از منوی توسعه، مدیریت کدها، کدهای تحت سیستم عامل، کدهای تحت .NET مدیریت Assembly ها. اگر یادتان باشد ما در قسمت های قبلی راجع به Compile کردن Assembly ها صحبت کردیم.

من اینجا مثلا Assembly ، data Access را انتخاب می کنم و ما گفتیم وقتی Compile می کنیم ، در مدیریت خروجی ها ، DLL هایی که برای ما Compile شده و ساخته شده ، نشان داده می شود ، که دو تا هستند یکی _R که DLL  محیط Release است و _D که DLL محیط Debug است به علاوه ورژن هایشان الان این _R19 ورژن 19 این DLL است. اما اینجا ما یک دکمه ی مشاهده ی گزارش ساخت هم داریم که یک سری اطلاعات خیلی مفیدی به ما می دهد اولا رفرنس های DLL را می گوید که کجا هستند و چه DLL ها هستند با آدرس کاملشان به ما نشان می دهند بعد هم خود این DLL را به ما می گوید که این ورژن 12 است این ورژن 12 ورژن کد است از چه کدهایی با چه ورژن هایی ساخته شده است. می گوید که اولا کد DLL اش ورژن 12 است و مثلا" Data access Context کدش ، ورژن 14 است.

بعد وقتی ما این DLL را Publish می کنیم به محض این که مشکل پیش بیاید می توانید این ورژن را با ورژن های قبلی اش مقایسه کنید ببینید کدام کدها ورژن اش فرق کرده و برید آن تغییر را نگاه کنید بفهمید مشکل از آن تغییر است. مثلا اینجا از همین KS.Dynamic.DataAccess.Context ورژن 14 ، من می توانم بروم داخل کد و به شما نشان دهم. این KS.Dynamic.DataAccess.dll این همان ورژن 12 بود که در اینجا می بینید. کد آن هم که همینجا است منظور این است که این کد ، ورژن 12 است.

یا مثلا Data access context که الان ورژن 14 است. برای این که شما سایر ورژن ها را ببینید کافی است بروید به Source Control و مثلا می بینید ورژن 14 یا 13 من ورژن 13 را انتخاب می کنم مقایسه را می زنم و به من نشان می دهد که ورزن 13 با ورژن که الان هست یعنی 14 ، چه تفاوتی دارد. شما خیلی سریع می توانید مشکل DLL جدیدی که Publish کردید از روی تک تک ورژن های کدها بفهمید. دوستان در این قسمت می خواهم راجع به reference کردن یک Web service از نوع WCF صحبت کنم توی سرویس های ASMX شما مشکل خاصی ندارید با کدنویسی می توان یک سرویس ASMX را Call کرد و خروجی اش را گرفت. اما اگر وب سرویستان WCF باشد چون تنظیمات و قابلیت های زیادی دارد بدون visual studio یا پلتفرمخودکار استفاده کردند از WCF کار مشکلی هست.

شما برای اینکه یک WCF را رفرنس کنید ، در قسمت Code Generator ، یک قسمتی هست به نام WCF Metadata Generator ، شما در این قسمت در آدرس WSDL کافی آدرس WSDL وبسرویس WCF را وارد کنید در قسمت نام کاربری و گذر واژه ، اگر وبسرویس نیاز به authenticate دارید باید نام کاربری و رمز عبور وارد کنید و در صورتی که از windows authentication استفاده می کنید باید نام دامنه و درصورتی که پشت پروکسی هستید باید آدرس پروکسی را هم تنظیم کنید و زبانی که می خواهید متادیتا WCF با اون ساخته بشه ، سی شارپ یا VB.Net.

اینجا همان کاری رو انجام می دهد که شما در ویژوال استدیو ، Add Service Refrence را می زنید و آدرس وبسرویس تان را می دهید.منها اینجا تفاوتش اینه که باید ادرس WSDL وبسرویس تان را بدهید.

بعد که روی دکمه ساخت WCF کلیک می کنید ، یه سری کد تبدیل شده XML برای WSDL به سی شارپ را به شما تحویل می دهد. بعد از انجام Code Generate ، کافی است تا کد تولید شده را کپی کنید و مثل نمونه ایی که موقع نصب برای شما هست ، من اینجا یک dll، KS.Dynamic.Webservice ساخته ام فرضا من روی Local host یک WCF ساخته ام آمده ام آدرس WSDL را داده ام و Metadata اش، Generate شده است با سی شارپ بعد آمده ام یک DLL درست کرده ام برایش و در  DLL ، خود کدش که چیزی خاصی ندارد یک جانمایی دارد برای Namespace و یک Namespace دارد KS.Dynamic.webservice.TestWcf ، بعد آمده ام کد را در وسط این Namespace خودم Past کرده ام حالا Using سیستم هم دارد.

همانطور که مشاهده می کنید من همان طور که مشاهده می کنید من همان Web service testing یک متد Do work داشته که حالا دو عدد را می گرفته یک کاری می کرده و یک عدد بر میگردانده دو عدد ورودی و یک عدد خروجی بوده است. Sample بوده برای تست WCF. بعد که این را ذخیره کردم و DLL را هم ساختم اینجا از آن استفاده شده در لایه ی UI ، شما نیازی نیست که حتما در لایه ی UI شما باشد این برای Sample است و شما می توانید در Business این کار را انجام دهید. در UI controller در test line ، من گفتم که var service=createWCFinterface بعد آمده ام Service.dowork که دو عدد را می گرفتم صدا زدم و خروجی آن را هم ریخته ام در X، اما این Create WCF interface کجا قرار دارد؟

این هم همان در لایه ی UI در test class است. در test class من یک متدی دارم به اسم CreateWCFinterface که خروجی آن ISrvtestWCF این ISrvtestWCF همان کد تولید شده یا Generate شده از روی آن WSDL است یعنی خروجی آن قرار است وب سرویس من را بسازد و به من بدهد.

ما چون در اینجا Webconfig نداریم تنظیمات مهم WCF اینجا هست که همه ی آن هم با Maximum مقدار دهی شده است. ما اینجا یک قسمت Snipes code داریم که یکی از آنها ، نمونه گیری از یک سرویس WCF است، شما این را که بزنید برایتان همان متد می آید با Comment که می گوید شما باید System.dll را رفرنس کنید یا در جای دیگر می گوید اینترفیس WCF خروجی را باید اینترفیس WCF خودتان جایگزین کنید همان کاری که من کردم، یا می گوید اگر WCF تان از Windows Authentication استفاده میکند باید این دو خط را Uncomment کنید، یا اگر Proxy دارید باید این خط را Uncomment کنید و Proxy تان را اینجا Set کنید.

راهنمایی و تنظیمات کاملی دارد که می توانیم به جای Webconfig از آن استفاده کنیم بر گردیم به همان کد من، در کد من تنظیمات Set شده و آدرس سرویس هم که در Local host بوده در اصل به آن داده شده است. باز خروجی هم از نوع ISrvtestWCF است که به طور کامل با Name space آدرس را داده ام. این متد کاری که می کند از WCF من یک نمونه می سازد و بر می گرداند و همانطور که در متد قبلی هم دیدیم از آن استفاده شده است. این کاری است که شما باید برای نمونه گیری از یک سرویس WCF انجام بدهید.