در قسمت قبل معماری اپلیکیشنهای N-Tier و بروز رسانی موجودیتهای منفصل توسط Web API را بررسی کردیم. در این قسمت بروز رسانی موجودیتهای منفصل توسط WCF را بررسی میکنیم. بروز رسانی موجودیتهای منفصل توسط WCF سناریویی را در نظر بگیرید که در آن عملیات CRUD توسط WCF پیاده سازی شده اند و دسترسی دادهها با مدل Code-First انجام میشود. فرض کنید مدل اپلیکیشن مانند تصویر زیر است. همانطور که میبینید مدل ما متشکل از پستها و نظرات کار ...
تمام اپلیکیشنها را نمیتوان در یک پروسس بسته بندی کرد، بدین معنا که تمام اپلیکیشن روی یک سرور فیزیکی قرار گیرد. در عصر حاظر معماری بسیاری از اپلیکیشنها چند لایه است و هر لایه روی سرور مجزایی توزیع میشود. بعنوان مثال یک معماری کلاسیک شامل سه لایه نمایش (presentation)، اپلیکیشن (application) و داده (data) است. لایه بندی منطقی (logical layering) یک اپلیکیشن میتواند در یک App Domain واحد پیاده سازی شده و روی یک کامپیوتر میزبانی شود. در این ...
فرض کنید مطابق اصول نامگذاری که تعیین کردهاید، تمام جداول بانک اطلاعاتی شما باید با پیشوند tbl شروع شوند. برای انجام اینکار در نگارشهای قبلی EF Code first میبایستی از ویژگی Table جهت مزین کردن تمامی کلاسها استفاده میشد و یا به ازای تک تک موجودیتها، یک کلاس تنظیمات ویژه را افزود و سپس از متد ToTable برای تعیین نامی جدید، استفاده میشد. در EF 6 امکان بازنویسی سادهتر پیش فرضهای تعیین نام جداول، طول فیلدها و غیره، پیش بینی شدهاند ک ...
یک 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 ...
برای ادامهی کار به لایهی Interface بازمیگردیم. کلیهی متدهایی که به آن نیاز داریم، نخست در این لایه تعریف میشود. در اینجا نیز از قراردادهایی برای تعریف کلاس و روالهای آن بهره میبریم که در ادامه به آن میپردازیم. پیش از آن باید بررسی کنیم، برای استفاده از این دو موجودیت، به چه متدهایی نیاز داریم. من گمان میکنم موارد زیر برای کار ما کافی باشد: 1- نمایش کلیهی رکوردهای جدول خبر 2- انتخاب رکوردی از جدول خبر با پارامتر ورودی شناس ...
پیش از ادامهی نوشتار بهتر است توضیحاتی دربارهی قالبهای T4 داده شود. این قالبهای مصنوعی حاوی کدهایی که است که هدف آن صرفهجویی در نوشتن کد توسط برنامه نویس است. مثلاً در MVC شما یکبار قالبی برای صفحه Index خود تهیه میکنید که برای نمونه بجای ساخت جدول ساده، از گرید Kendo استفاده کند و همچنین دارای دکمه ویرایش و جزئیات باشد. از این پس هر بار که نیاز به ساخت یک نمای نوع لیست برای یک ActionResult داشته باشید فرم ساز MVC از قالب شم ...