نمایش نتایج 1 تا 10 از 10

نام تاپیک: مقالات آموزشی و کاربردی در زمینه WPF

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #6
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    Post BeRMOoDA File Encrypter

    نرم افزار رمز نگاری فایل

    امکانات برنامه:
    • رمزنگاری فایل بر اساس کلمه عبوری که به آن داده میشود و با الگوریتمAES، بطوریکه فقط با همان کلمه عبور، رمز گشایی خواهد شد.
    • قابلیت رمزنگاری محتویات فولدر ها بصورت تو در تو (همراه با زیرفولدر ها)
    • امکان رمزنگاری و رمزگشایی بصورت همزمان و با Thread های مجزا، بدون کاهش سرعت
    • محاسبه Elapsed Time و Remaining Time با استفاده از Thread مجزا


    ویژگی های فنی:
    • استفاده از تکنولوژی WPF
    • کاملا Multi Thread
    • طراحی شده با معماری MVVM
    • استفاده از Aero Glass Theme ویندوز 7
    • با استفاده از Visula Studio 2010 و .NET Framework 3.5 نوشته شده است.




    چند نکته که بر عهده شما خواهد بود:

    Exception Handling ها اعمال نشده اند.
    Validation ها در رویداد CanExecute برای Command ها، اعمال نشده اند.
    گزینه On The Fly Encryption در نسخه open source فعال نمی باشد.

    لینک دریافت برنامه همراه با سورس

    توضیحات:

    من این برنامه رو چند سال پیش نوشته بودم ولی معماری خاصی نداشت و تقریبا spaghetti code بود.
    چند روز پیش تصمیم گرفتم این برنامه را با معماری MVVM بنویسم تا ببینم از نظر performance چه تغییراتی اتفاق میفتد. نتیجه خیلی جالب بود، اعمال رمزنگاری و رمزگشایی نزدیک 30% سریع تر انجام شدند!

    ساختار پروژه:


    کلاس های داخل فولدر Converters، کلاس هایی هستند که در Binding ها استفاده می شوند. کاربرد آن زمانی است که مقداری که Bind می شود باید تغییراتی (از نظر نوع داده یا فرمت نمایش) بکند. به عنوان مثال کلاس زیر برای NOT کردن مقدار یک متغیر bool در کد Xaml را ممکن می سازد:
     [ValueConversion(typeof(bool), typeof(bool))]
    public class XamlNotOperatorConverter : IValueConverter
    {

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {

    return !(bool)value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
    return !(bool)value;
    }
    }


    سپس برای استفاده از این کلاس در کد Xaml باید یک object از آن در resource های کنترل مورد نظر تعریف کرد و آن را به عنوان مقدار پارامتر Converter برای Binding قرار داد:

     <UserControl.Resources>
    <project:XamlNotOperatorConverter x:Key="NotOperatorConverter"/>
    </UserControl.Resources>


     <Expander IsExpanded="{Binding ElementName=expanderDecrypt, Path=IsExpanded, Converter={StaticResource NotOperatorConverter}}" />


    با این کار، بدون نوشتن کد برای event handling، زمانی که یکی از expander ها باز شود، expander دیگر بصورت خودکار بسته خواهد شد.

    لایه Model
    در فولدر Model، مدل داده ای که قرار است در برنامه با آن سر و کار داشته باشیم تعریف شده است. در برنامه قصد نمایش اطلاعات مربوط به فایل ها را داریم و میخواهیم نام، سایز و وضعیت یک فایل را نشان دهیم. وضعیت یک فایل می تواند نرمال، در حال پردازش و پردازش شده باشد که هر کدام با یک رنگ مشخص می شود. به همین دلیل نوع داده فیلد Status از نوع Brush در نظر گرفته شده است.

    لایه View
    فولدر View شامل یک user control است که در واقع قرار است در داخل MainWindow نمایش داده شود. اما بر اساس قوانین MVVM، هیچ منطقی را شامل نمی شود د دارای code behind نیست. منطق مورد نیاز برنامه بصورت کامل در لایه ViewModel پیاده سازس خواهد شد.

    لایه ViewModel
    فولدر ViewModels شامل کلاس هایی است که منطق برنامه را فراهم می کنند. یک کلاس پایه وجود دارد که هر ViewModel ای از آن ارث می برد. یک ViewModel برای MainWindow و یک ViewModel برای user control ایجاد شده است. در حالت کلی، برای هر View، یک ViewModel وجود خواهد داشت.

    کلاس PasswordHelper:
    فیلد Password در کنترل PasswordBox یک DependencyProperty نیست و به همین دلیل (و نیز دلایل امنیتی) امکان Bind آن وجود ندارد. برای حل این مسئله یک کلاس طراحی شده که یک Attached Property به PasswordBox اضافه می کند و می توان مقدار آن را Bind کرد.

    کلاس AeroGlassProvider:
    این کلاس با استفاده از API های ویندوز 7 یا وسیتا، قابلیت استفاده از Aero Theme ویندوز را در برنامه فراهم می کند.

    کلاس Crypto:
    این کلاس هم لایه ارتباط با فایل است که می توان آن را لایه Data Access هم در نظر گرفت. در این کلاس با استفاده از الگوریتم AES اعمال رمزنگاری و رمزگشایی انجام می شوند.

    کلاس RelayCommand:
    آقای Josh Smith این کلاس را نوشته اند که امکان استفاده ساده از Action ها و Predicate ها را به برنامه نویسان می دهد.

    توضیحات کامل در مورد معماری MVVM بزودی با استفاده از یک پروژه ساده ارائه خواهد شد.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •