در این مثال برای اینکه Instance Provider سفارشی خود را بتوانیم به عنوان یک Behavior به سرویس اضافه نماییم باید به خاصیت Description.Behaviors شی ServiceHost دسترسی داشته باشیم. زمانی که در پروژههای WCF از روش Self Hosting برای هاست سرویسها استفاده
کنیم به دلیل دسترسی مستقیم به شی ServiceHost هر گونه تنظیمات و عملیات
Customization به راحتی امکان پذیر است ؛ اما در IIS Hosting، از آن جا که به صورت پیش فرض از ServiceHostFactory مو ...
در قسمت قبلی مدیریت همزمانی در بروز رسانیها را بررسی کردیم. در این قسمت مرتب سازی (serialization) پراکسیها در سرویسهای WCF را بررسی خواهیم کرد. مرتب سازی پراکسیها در سرویسهای WCF فرض کنید یک پراکسی دینامیک (dynamic proxy) از یک کوئری دریافت کرده اید. حال میخواهید این پراکسی را در قالب یک آبجکت CLR سریال کنید. هنگامی که آبجکتهای موجودیت را بصورت POCO-based پیاده سازی میکنید، EF بصورت خودکار یک آبجکت دینامیک مشتق شده را در ...
در قسمت قبل رویکردهای مختلف برای حذف موجودیتهای منفصل را بررسی کردیم. در این قسمت مدیریت همزمانی یا Concurrency را بررسی خواهیم کرد.
فرض کنید میخواهیم مطمئن شویم که موجودیتی که توسط یک کلاینت WCF تغییر کرده است، تنها در صورتی بروز رسانی شود که شناسه (token) همزمانی آن تغییر نکرده باشد. به بیان دیگر شناسه ای که هنگام دریافت موجودیت بدست میآید، هنگام بروز رسانی باید مقداری یکسان داشته باشد.
مدل زیر را در ...
اگر قصد داشته باشیم که تزریق وابستگی (Dependency Injection) را برای سرویسهای WCF پیاده سازی کنیم نیاز به یک Instance Provider سفارشی داریم. در ابتدا باید سرویسهای مورد نظر را در یک Ioc Container رجیستر نماییم سپس با استفاده از InstanceProvider عملیات وهله سازی از سرویسها همراه با تزریق وابستگی انجام خواهد گرفت. فرض کنید سرویسی به صورت زیر داریم: [ServiceBehavior( IncludeExceptionDetailInFaults = true)]
public class BookSe ...
در قسمت قبل معماری اپلیکیشنهای N-Tier و بروز رسانی موجودیتهای منفصل توسط Web API را بررسی کردیم. در این قسمت بروز رسانی موجودیتهای منفصل توسط WCF را بررسی میکنیم. بروز رسانی موجودیتهای منفصل توسط WCF سناریویی را در نظر بگیرید که در آن عملیات CRUD توسط WCF پیاده سازی شده اند و دسترسی دادهها با مدل Code-First انجام میشود. فرض کنید مدل اپلیکیشن مانند تصویر زیر است. همانطور که میبینید مدل ما متشکل از پستها و نظرات کار ...
یک Windows Form جدید ایجاد کنید و نام آن را frmAddEditNews بگذارید. برابر با شکل ویژگیهای IsDeleted، tblCategory و tblNewsId را برابر با None کنید و tblCategoryId را از نوع Combobox انتخاب کنید. سپس با فشار فلش کنار tblNews گزینهی Details را انتخاب کنید. روی tblNews کلیک کرده آنرا بکشید و روی فرم رها کنید. آنگاه ظاهر فرم و چیدمان کنترلها را تنظیم کنید و دو دکمه ذخیره و لغو برابر با شکل در فرم ایجاد کنید: کد رو ...
در Solution Explorer روی نام راه حل - MyNews - راست کلیک کنید و Add-> New Project را انتخاب کنید. سپس یک پروژه از نوع Windows Forms Application انتخاب کنید و نام آنرا MyNewsWinApp بگذارید. یا کلیدهای ترکیبی Shift + Alt + D پنجرهی Data Sources را نمایان کنید. برابر با شکل روی ابزار Add New Data Source کلیک کنید: از پنجرهی باز شده روی گزینهی Service کلیک کنید: روی گزینهی Next کلیک کنید ...
خروجی پروژهی WCF Service Library یک فایل DLL است که هنگامی که با کنسول WCF Test Client اجرا میشود در آدرسی که در Web.Config تنظیم کرده بودیم اجرا میشود. اگر یک پروژهی ویندوزی در همین راه حل بسازیم؛ خواهیم توانست از این آدرس برای دسترسی به WCF بهره ببریم. ولی اگر بخواهیم در IIS سرور قرار دهیم؛ باید در وبسایت آنرا میزبانی کنیم. برای اینکار از Solution Explorer روی راه حل MyNews راستکلیک کنید و از منوی باز شده روی Add -> New Web S ...
پروژه را اجرا کنید و در WCF Test Client به وسیلهی متد AddNews دو خبر جدید درج کنید. روی متدهای GetAllCategory و GetAllNews به صورت جداگانه کلیک کنید. متوجه خواهید شد که هرچند در کلاس tblNews شیای از نوع tblCategory و در کلاس tblCategory شیای از نوع مجموعهی tblNews به صورت Virtual تعریف شده است ولی در بر خلاف انتظارمان اثری از آن در اینجا دیده نمیشود. نتیجهی مشاهدهشده به خاطر است که در هر دو تعریف صفت DataMember را به و ...
پس از ایجاد متدها، نوبت به تغییرات App.Config میرسد. هرچند خود Visual Studio برای کلاس پیشگزیدهی خود تنظیماتی را در App.Config افزوده است ولی چنانچه در در خاطر دارید ما آن فایلها را حذف کردیم و فایلهای جدیدی به جای آن افزودیم. از این رو مراحل زیر را انجام دهید: 1- فایل App.Config را از Solution Explorer باز کنید. 2- به جای عبارت MyNewsWCFLibrary.Service1 در قسمت Service Name این عبارت را بنویسید: MyNewsWCFLibrary.MyNewsService ...