Developer's Guide to Microsoft Prism Library 5.0 for WPF
بعد از "Hello, World" چه چیزی پیش رو دارید؟ توسعه دهندگان WPF و Silverlight ، از فراوانی کتابهای عالی، ویدئوها و مقالات آنلاین خوشبخت هستند، چرا که میتوانند نحوهی ساخت یک برنامه تک صفحه ای را یاد بگیرند.این منابع data binding،dependency properties ، resources ، styles، effects، control templating و دیگراصول برنامه نویسی xaml را آموزش میدهند.
کمبودی در وجود آموزشهای Mode-View-ViewModel) MVVM) که الگوی غالب و محبوبی برای ساختن یک صفحهی تنهاست وجود ندارد، اما آموزشهای آنها برای وقتی که شما احتیاج به تحویل یک برنامهی کامل غیر بدیهی دارید ،خیلی کوتاه و ناقص هستند.
صفحهی اول شما به خوبی پیش میرود و صفحهی دوم و سوم را هم اضافه میکنید.چون شما solution خود را بر اساس قالب راهبری برنامه توکار(Built-in Navigation Application Template) شروع کرده اید و اضافه کردن صفحات جدید، حس آویزان کردن بلوز روی میلهی گنجه را دارد.کار شما روی غلتک افتاده تا وقتی که با حقیقت تلخ احتیاجات واقعی یک برنامه روبرو میشوید و این وقتی رخ میدهد که برنامهی شما به جای سه صفحه دارای سی صفحه است و دیگر فضایی روی میلهی گنجه برای سی صفحه وجود ندارد.بعضی از صفحات به صورت pop-up هستند، بعضی دیگر از صفحات وابسته به فعالیتهای کاربر در صفحه ای دیگر هستند و تغییرات را در قالب رابط کاربری نمایش میدهند، بعضی اختیاری هستند یا فقط به کاربران مجاز نمایش داده خواهند شد،صفحاتی نیز هستند که دائمی اند در حالی که دیگر صفحات در هر لحظه ای که بخواهید میتوانند گشوده یا بسته شوند.
شما پی خواهید برد که هدایت کردن به صفحه ای که پیش از این نمایش داده میشده، احتیاج به ساختن نمونه ای جدید دارد، در صورتی که این چیزی نیست که شما انتظار آن را داشته باشید و برای وحشت زده کردن شما، نمونهی قبلی بدون ذخیره کردن تغییرات از بین رفته است. شما به لاین نتیجه میرسید که راهبری(Navigation) تو کار به درد شما نمیخورد و تصمیم میگیرید که ار هم جداش کنید و از اول شروع کنید.ابتدا ساختن UI Framework مختص به خود را مطرح میکنید، اما تصمیم میگیرید که ابتدا وضعیت را بررسی کنید.حتما قبلا کسی این راه را رفته است، مطمئنا کسی راهنمایی و کدی را انتشار داده که از عهدهی مقیاس، تنوع و پیچیدگی برنامهی دنیای واقعی شما برآید.
یک نفر این کار را کرده.کتاب خانهی Prism مایکروسافت، نمونه کدها و کتابی که هم اکنون مطالعه میکنید، اوج 5 سال تحقیق و جست و جو برای گرد آوری بهترین پیشنهادها و تکنیکها از حرفه ایها و شاغلین در این زمینه است.
Prism همهی سناریوهای ذکر شده و حتی بیشتر را پوشش داده است. شما این راهنمایی و کدهای پشتیبانی را برای موارد زیر پیدا میکنید:
-بخش بندی کردن برنامه به ماژول ها، همان جزیرههای کاربردی نیمه مستقل، که باید به صورت مستقل توسعه داده و نگهداری شوند.
-مکانیزمی برای لود کردن ماژولها به صورت نامقارن یا در صورت درخواست تا برنامهها به سرعت اجرا شوند.
-دستگاه Publish/Subscribe و گردآورنده رویداد (Event Aggregator) برای رد و بدل کردن پیامها بین اجزایی که نمیتوانند و نباید به صورت مستقیم به هم متصل باشند.
-سرهم کردن یک صفحهی پیچیده به صورت پویا، مانند یک صفحه داشبورد که از چنیدن صفحهی ساده ساخته شده است.
-ساختن صفحات با استفاده از View-First و ViewModel-First یا یک controller که آنها را ایجاد کند و هماهنگشان کند.
-مقداردهی Viewها با پارامترها یا اطلاعات Context، مانند وقتی که یک ویرایشگر برای ویرایش اطلاعات یک خریدار باز میشود.
-راهنماییها و مثال هایی از تستهای خودکار برای viewها و viewmodelها که وابسته به منابع داده ای نامتقارن هستد.
بیشتر توسعه دهندگانPrism را یک راه حل All-in-One از یک منبع مورد اطمینا و معتبر میبینند.آنها همچنین این فرصت را پیدا میکنند تا هر کامپوننتی را به صروت دقیق موشکافی کنند و آنها را با رقبا مقایسه کنند و یک فریمورک شخصی با تعدادی جایگزین سرهم کنند. برای این مخاطبان، Prism انتخابی امن و قابل اعتماد خواهد بود.
من راه حلی به جامعگی و مستند شده که کدهای آن استوار و تست شده باشند ندیده ام.برنامههای بزرگی اختصاصا با Prism ساخته شده وبرنامههای شما هم میتوانند یکی از آنها باشند.
توسعه دهندگان دیگر به Prism، یک مقدار متفاوت نگاه میکنند.آنها به Prism به عنوان خلاصه ای از الگوها و استراتژیها برای ساختن رابط کاربری WPF و Silverlight نگاه میکنند. آنها ممکن است ماژولار بودن Prism را بپذیرند ولی ممکن است به جای DelegateCommand، جایگزین دیگری را ترجیح دهند یا حتی Injection Containerهای شخص ثالث را به جای MEF یا Unity انتخاب کنند.آنها ممکن است از Region فقط در Shell استفاده کنند و یا هرگز از Shell استفاده نکنند.برای این دسته از مخاطبان، Prism منبعی از پیشنهاد و الهام است و یکی از بزرگترین دستاوردهای Prism این است که هردو چشم انداز و دیدگاه را به یک اندازه پشتیبانی کند.