‫۱۲ سال و ۲ ماه قبل، پنجشنبه ۲۶ مرداد ۱۳۹۱، ساعت ۰۰:۱۷
پشنیاز درک کدهای آن مطالعه قسمت‌های MVC و NHibernate سایت است (به علاوه مباحث تزریق وابستگی‌ها). هر کدام یک 30 قسمتی هستند. مطالعه و تمرین آن‌ها حدودا نیمی از سال را به خود اختصاص خواهند داد (البته فرض بر این است که حداقل دو سال سابقه کار دات نت دارید و با خیلی از مباحث پایه‌ای آشنا هستید).
‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۲۵ مرداد ۱۳۹۱، ساعت ۲۳:۴۱
- در مورد تعریف «واجب» کسی اینجا بحث نکرده. این هم یک دید طراحی است. آیا کسی می‌تونه بگه اولین طراحی مطرح شده در مطلب جاری اشتباه است؟ خیر. اما ضرورتی ندارد تا این اندازه صرفا جهت واگذاری مسئولیت انجام یک متد به کلاسی دیگر، اینقدر طراحی انجام شده زمخت و طولانی باشد.
- در متن MSDN فوق نوشته شده که استفاده از delegate در این حالت خاص نیز معتبر است؛ اما ایده‌آل نیست. دلیلی که آورده از نظر من ساختگی است. ضرورتی ندارد تعریف یک delegate معرفی شده در runtime عوض شود. یا عنوان کرده که IComparable پایه مرتب سازی یک سری از متدها است. خوب ... بله زمانیکه از روز اول اینطور طراحی کردید همه چیز به هم مرتبط خواهند بود.


پ.ن.
قسمت نظرات MSDN یک زمانی باز بود ولی ... بعد از مدتی پشیمان شدند و به نظر این قابلیت منسوخ شده در این سایت!
‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۲۵ مرداد ۱۳۹۱، ساعت ۲۲:۰۷
طراحی IComparable مربوط به زمان دات نت یک است. اگر آن زمان امکانات زبان مثل امروز بود، می‌شد از طراحی ساده‌تری استفاده کرد.
یک نمونه از طراحی‌های اخیر تیم دات نت رو میشه در WebGrid دید. در این طراحی برای نمونه جهت دریافت فرمول فرمت کردن مقدار یک cell، از Func استفاده کردن. می‌شد این رو با اینترفیس هم نوشت (چون قرار است کاری به خارج از کلاس محول شود و هر بار اطلاعاتی به آن ارسال و نتیجه‌ای جدید اخذ گردد؛ پیاده سازی آن با شما، نتیجه را فقط در اختیار WebGrid ما قرار دهید). اما جدا استفاده از آن تبدیل می‌شد به عذاب برای کاربر که به نحو زیبایی با Func و امکانات جدید زبان حل شده.
‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۲۵ مرداد ۱۳۹۱، ساعت ۱۷:۵۱
خیر. این CMS امکان استفاده از بانک اطلاعاتی SQL Server CE را دارد. به عبارتی روی یک سرور بسیار ضعیف هم قابل نصب است. به همین جهت اکثر کسانی که از آن استفاده می‌کنند هزینه کمتری کرده و سرورهای ساده‌ای را تهیه خواهند کرد. به علاوه SQL Server CE نسخه رایگان و کم حجم SQL Server است (4 مگ حجم دارد). نیازی به نصب ندارد و این مورد یک مزیت مهم برای استفاده کنندگان عادی است که نمی‌توانند با SQL Server اصلی تعامل داشته‌باشند و از آن سر در بیاورند. بک آپ گرفتن از آن هم در حد کپی کردن فایل دیتابیس است و نیاز به عملیات و یا دانش خاصی ندارد.

‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۲۵ مرداد ۱۳۹۱، ساعت ۰۲:۰۹
EF Code first هم برای معرفی فیلدهای محاسباتی ویژگی NotMapped را دارد. این فیلدها در بانک اطلاعاتی معادلی ندارند و صرفا جهت اعمال به UI، به کلاس اضافه می‌شن.
البته منطق آنچنانی ندارند و در حد calculated field در sql server به آن نگاه کنید. عموما جمع و ضرب روی فیلدها است یا تبدیل تاریخ و در این حد ساده است. بیشتر از این بود باید از کلاس مدل خارج شود و به لایه سرویس سپرده شود.
و یا روش بهتر تعریف آن‌ها انتقال این موارد به ViewModel است. مدل را باید از این نوع خواص خالی کرد. ViewModel بهتر است محل قرارگیری فیلدهای محاسباتی از این دست باشد که صرفا کاربرد سمت UI دارند و در بانک اطلاعاتی معادل متناظری ندارند.

‫۱۲ سال و ۲ ماه قبل، سه‌شنبه ۲۴ مرداد ۱۳۹۱، ساعت ۰۴:۵۷
از این روش استفاده می‌کنه. به علاوه باید درنظر داشت HTMLWorker کتابخانه iTextSharp منسوخ شده در نظر گرفته می‌شود و دیگر توسعه نخواهد یافت و حتی نگهداری هم نمی‌شود. با Xml Worker آن جایگزین شده که فعلا از RTL و یونیکد پشتیبانی نمی‌کند.
‫۱۲ سال و ۲ ماه قبل، دوشنبه ۲۳ مرداد ۱۳۹۱، ساعت ۲۲:۳۵
- فرقی نمی‌کنه. Elmah.MVC توضیحات این قسمت رو خلاصه کرده.
- اگر به استفاده کنندگان اطمینان دارید، مهم نیست.
‫۱۲ سال و ۲ ماه قبل، دوشنبه ۲۳ مرداد ۱۳۹۱، ساعت ۱۷:۴۵
به احتمال زیاد تابحال در برنامه‌های وب خودتون نیاز به ارسال html به همراه تگ‌های آن نداشتید، ولی در کل:
- غیرفعال کردن validateRequest در سطح یک صفحه
<%@ Page 
Language="C#" 
        AutoEventWireup="true" 
        CodeBehind="editpage.aspx.cs" 
        validateRequest="false" 
        Inherits="MyProject.UI.editpage" %>
- در سطح کل برنامه
<system.web>
    <pages validateRequest="false" enableEventValidation="true" />
    <httpRuntime requestValidationMode="2.0" />
</system.web>
البته asp.net mvc از این لحاظ پیشرفته‌تر است؛ چون اجازه می‌ده در سطح یک خاصیت فقط این بررسی رو خاموش کرد با بکارگیری ویژگی AllowHtml آن.