معماری wpf
در پست های قبلی با ساختن یک برنامه در wpf و نمایش یک متن ساده آشنا شدید، در این پست کمی دربارۀ معماری این تکنولوژی براتون صحبت میکنم ...
تکنولوژی WPF یک تکنولوژی چند لایه ای ست. در بالاترین لایه اش اسمبلی های پایه ای WPF قرادارند که تماما به صورت کدهای مدیریت شده سی شارپ هستند. این لایه شامل API هایPresentationFramework.dll ، WindowsBase.dll و PresentationCore.dll می باشد که در واقع برنامه شما با این اسمبلی ها ارتباط دارد.
در لایه زیری آن، کامپوننت مدیریت نشده milcore.dll قرار دارد، تمامی کدهای نوشته شده توسط شما، از طریق لایه اول و ارتباط لایه اول با لایه دوم و کامپوننت مذکور تبدیل به آبجکت می شود.
در واقع دلیل اینکه کامپوننت milcore.dll به صورت مدیریت نشده هست، اینه که این کامپوننت بایستی ارتباط تنگ و مجتمع شده ای با Direct 3D داشته باشه و دارای کارایی بسیار بالایی از هر لحاظی باشد.
Direct 3D در لایه زیرین milcore.dll قرار دارد که به صورت یک API سطح پایین می باشد و در واقع به نوعی موتور WPF به همراه milcore نیز به حساب میاد.
زیر بخش های مختلف معماری WPF
1.
PresentationFramework.dll : این اسمبلی در واقع تمامی آبجکت های سطحه بالا و در واقع به نوعی بالاترین سطح از آبجکت های WPF مانند Windows ها ( که بالاترین سطح در برنامه های WPF را در مدل برنامه نویسی WPFApplication دارد) و Panel ها که از دیگر اجزای اساسی برنامه های WPF می باشند، را نگه داری می کند.
2.
Presentationcore.dll : شامل نوع های پایه از جمله UIElement و Visual میباشد که تمامی اشکال و کنترل های از این کلاس ها ارث بری می کنند. در قسمت بعدی نمودار سلسله مراتبی کلاس های WPF را نمایش میدم.
3.
Milcore.dll : در واقع هسته اصلی WPF در رندر کردن آبجکت ها به آبجکت هایی که لایه زیرین خودش یعنی Direct 3D نیاز دارد، میباشد. علاوه بر این در ویندوز ویستا، مدیر پنجره های دسکتاپ یعنی Desktop Windows manager (مدیریت کنندۀ پنجره های دسکتاب را بر عهده دارد) از همین کامپوننت استفاده می کند.
در واقع شما می توانید با فراخوانی DWM ، به فرم ها، به پنجره های برنامه خود، افکت هایی که پنجره های ویندوز ویستا دارا هستند را اضافه کنید.
4.
WindowsCodec.dll : یک API سطح پایین می باشد که قابلیت اعمال، کارهای زیادی را بر روی عکس ها، از قبیل بزرگ نمایی، چرخش و .. را دارد.
Direct 3D : یک API سطح پایین است که شامل تمامی گرافیک های رندر شده در WPF می باشد.