بر اساس رفتار پیش فرض در دیتابیس SQL Server، در زمان انجام دادن یک دستور که منجر به ایجاد تغییرات در اطلاعات موجود در جدول میشود (برای مثال دستور Update)، جدول مربوطه به صورت کامل Lock میشود، ولو آن دستور Update، فقط با یکی از رکوردهای آن جدول کار داشته باشد. در سیستمهای با تعداد تراکنش بالا و دارای تعداد زیاد کلاینت، این رفتار پیش فرض موجب ایجاد صفی از تراکنشهای در حال انتظار بر روی جداولی میشود که ویرایشهای زیادی بر روی آنها ...
در قسمت قبلی مدیریت همزمانی در بروز رسانیها را بررسی کردیم. در این قسمت مرتب سازی (serialization) پراکسیها در سرویسهای WCF را بررسی خواهیم کرد. مرتب سازی پراکسیها در سرویسهای WCF فرض کنید یک پراکسی دینامیک (dynamic proxy) از یک کوئری دریافت کرده اید. حال میخواهید این پراکسی را در قالب یک آبجکت CLR سریال کنید. هنگامی که آبجکتهای موجودیت را بصورت POCO-based پیاده سازی میکنید، EF بصورت خودکار یک آبجکت دینامیک مشتق شده را در ...
در قسمت قبل رویکردهای مختلف برای حذف موجودیتهای منفصل را بررسی کردیم. در این قسمت مدیریت همزمانی یا Concurrency را بررسی خواهیم کرد.
فرض کنید میخواهیم مطمئن شویم که موجودیتی که توسط یک کلاینت WCF تغییر کرده است، تنها در صورتی بروز رسانی شود که شناسه (token) همزمانی آن تغییر نکرده باشد. به بیان دیگر شناسه ای که هنگام دریافت موجودیت بدست میآید، هنگام بروز رسانی باید مقداری یکسان داشته باشد.
مدل زیر را در ...
در قسمت قبل پیاده سازی change-tracking در سمت کلاینت توسط Web API را بررسی کردیم. در این قسمت نگاهی به حذف موجودیتهای منفصل یا disconnected خواهیم داشت. حذف موجودیتهای منفصل فرض کنید موجودیتی را از یک سرویس WCF دریافت کرده اید و میخواهید آن را برای حذف علامت گذاری کنید. مدل زیر را در نظر بگیرید. همانطور که میبینید مدل ما صورت حسابها و پرداختهای متناظر را ارائه میکند. در اپلیکیشن جاری یک سرویس WCF پیاده سازی کرده ا ...
در قسمت قبل تشخیص تغییرات توسط Web API را بررسی کردیم. در این قسمت نگاهی به پیاده سازی Change-tracking در سمت کلاینت خواهیم داشت. ردیابی تغییرات در سمت کلاینت توسط Web API فرض کنید میخواهیم از سرویسهای REST-based برای انجام عملیات CRUD روی یک Object graph استفاده کنیم. همچنین میخواهیم رویکردی در سمت کلاینت برای بروز رسانی کلاس موجودیتها پیاده سازی کنیم که قابل استفاده مجدد (reusable) باشد. علاوه بر این دسترسی دادهها توسط مد ...
در قسمت قبلی بروز رسانی موجودیتهای منفصل با WCF را بررسی کردیم. در این قسمت خواهیم دید چگونه میتوان تغییرات موجودیتها را تشخیص داد و عملیات CRUD را روی یک Object Graph اجرا کرد. تشخیص تغییرات با Web API فرض کنید میخواهیم از سرویسهای Web API برای انجام عملیات CRUD استفاده کنیم، اما بدون آنکه برای هر موجودیت متدهایی مجزا تعریف کنیم. به بیان دیگر میخواهیم عملیات مذکور را روی یک Object Graph انجام دهیم. مدیریت دادهها هم با مدل C ...
در قسمت قبل معماری اپلیکیشنهای N-Tier و بروز رسانی موجودیتهای منفصل توسط Web API را بررسی کردیم. در این قسمت بروز رسانی موجودیتهای منفصل توسط WCF را بررسی میکنیم. بروز رسانی موجودیتهای منفصل توسط WCF سناریویی را در نظر بگیرید که در آن عملیات CRUD توسط WCF پیاده سازی شده اند و دسترسی دادهها با مدل Code-First انجام میشود. فرض کنید مدل اپلیکیشن مانند تصویر زیر است. همانطور که میبینید مدل ما متشکل از پستها و نظرات کار ...
تمام اپلیکیشنها را نمیتوان در یک پروسس بسته بندی کرد، بدین معنا که تمام اپلیکیشن روی یک سرور فیزیکی قرار گیرد. در عصر حاظر معماری بسیاری از اپلیکیشنها چند لایه است و هر لایه روی سرور مجزایی توزیع میشود. بعنوان مثال یک معماری کلاسیک شامل سه لایه نمایش (presentation)، اپلیکیشن (application) و داده (data) است. لایه بندی منطقی (logical layering) یک اپلیکیشن میتواند در یک App Domain واحد پیاده سازی شده و روی یک کامپیوتر میزبانی شود. در این ...
در 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 ...