نظرات مطالب
یکپارچه کردن ELMAH با WCF RIA Services
الف - این اسم هر چیزی می‌تونه باشه که در قسمت path ‌های ذکر شده فوق قابل تغییر است (بنابراین از اسم‌های پیش فرض استفاده نکنید).
ب - بهترین مرجع برای ELMAH ، فایل web.config پوشه samples آن است. در این مورد تنظیمات لازم وجود دارد (در مورد بستن دسترسی ریموت یا استفاده از authorization).
خلاصه این دو مورد رو یکی از اعضای اصلی تیم ASP.NET در عمل نشان داده:
http://haacked.com/archive/2007/07/24/securely-implement-elmah-for-plug-and-play-error-logging.aspx
+
http://code.google.com/p/elmah/wiki/SecuringErrorLogPages
نظرات مطالب
ارتقاء از WinForms به WPF
- تعریف شما از ریسک چی هست؟ از چه چیزی واهمه دارید؟! یا اگر به wpf‌ مهاجرت کردید چه چیزی را از دست خواهید داد؟!
"تفاوت‌های یک برنامه نویس کارمند با یک برنامه نویس علاقمند" را مطالعه کردید؟
https://www.dntips.ir/2010/02/blog-post.html

برای یک کارمند شاید زیاد فرقی نکنه. حق با شماست.

- ضمنا ظاهر زیبا فقط قسمتی از قابلیت‌هایی است که بدست می‌آورید؟ سیلورلایت که برادر کوچکتر wpf محسوب می‌شود را هم فراموش نکنید. با یک تیر دو نشان (البته نیاز به رعایت یک سری مسایل دارد).

اگر وقت کردید مطلب زیر را مطالعه کنید تا ابعاد مزایای این مهاجرت را به صورت تخمینی درک کنید:
https://www.dntips.ir/2009/09/wpf.html
نظرات مطالب
آشنایی با ویژگی DebuggerDisplay در VS.Net
سلام
دو ماخذ در بالا معرفی کردم که به اندازه‌ی کافی توضیحات لازم را به همراه دارند و ترجمه هر کدام شاید 20 - 30 صفحه‌ای می‌شود.

کلا شما مجبور نیستید از این خصیصه‌ها یا ویژگی‌ها استفاده کنید. این‌ها یک سری اطلاعات اضافی هستند که به تعاریف کلاس‌ها یا متدها اضافه می‌شوند (می‌توانند اضافه شوند)، مثلا راهنما یا URL یا بیان این‌که این متد منسوخ شده است و دیگر از آن استفاده نکنید (در intellisense ظاهر می‌شود) و امثال آن.
و یا کارآیی زمان اجرا می‌توانند داشته باشند مثل متدهای یک وب سرویس که با ویژگی وب‌ متد مشخص می‌شوند و در زمان اجرا به عنوان یکی از متدهای یک وب سرویس قابل استفاده خواهند بود. یا اگر مباحث unit testing را دنبال کرده باشید، یک سری ویژگی سفارشی دیگر نیز به کلاس‌های آزمون واحد اضافه می‌شود که نه در کامپایل تاثیری دارند و نه در هنگام اجرا بلکه توسط ابزارهای بررسی آزمون‌های واحد شناسایی شده و مورد استفاده قرار می‌گیرند.
پاسخ به بازخورد‌های پروژه‌ها
مشکل در IDENTITY و سیستم کاربران
- لطفا از این قسمت برای انجمن پرسش و پاسخ استفاده نکنید. این سایت، انجمن عمومی نیست.
- قسمت پروژه‌ها فقط مرتبط هست به مشکلات پروژه‌ها و هیچ هدف دیگری ندارد. لطفا رعایت کنید.
عدم رعایت این مساله در آینده، سبب حذف شما از سایت خواهد شد.
سایت ما هدف تبدیل شدن به انجمن عمومی پرسش و پاسخ را ندارد. از روز اول نداشته‌است. 

- این پروژه از روش دات نت 4 استفاده می‌کند. به عبارتی از ASP.NET Identity نوشته شده برای دات نت 4.5 به بعد کمک نگرفته‌است و از روش Forms authentication استفاده می‌کند. اطلاعات بیشتر
- برای استفاده از کلاس‌های شخصی در ASP.NET Identity به این مقاله مراجعه کنید.
پاسخ به بازخورد‌های پروژه‌ها
نمایش pdf در مرورگر در asp.net mvc
- حالت flush، مثل حالت flush یک فایل zip یا حتی png در مرورگر است. یعنی تصویر هم دانلود خواهد شد (بجای نمایش) چون Response در این لحظه کلا خاتمه پیدا می‌کند. بنابراین دیگر صفحه‌ای وجود نخواهد داشت و life cycle آن قطع می‌شود.
- برای نمایش فایل در مرورگر، نیاز است فایل روی سرور ذخیره شود و بعد Redirect کنید به مسیر آن (یعنی از حالت InMemory که راسا Response را خاتمه می‌دهد استفاده نکنید. return File هم کار مشابهی را انجام می‌دهد؛ فایل را بافر کرده و flush می‌کند). اینبار (با Redirect به آدرس) به صورت خودکار در مرورگر باز خواهد شد؛ بجای نمایش صفحه دانلود. یک نمونه‌اش برای web forms در اینجا است: (^). برای MVC هم شبیه به همین return Redirect به آدرس، در اکشن متدها وجود دارد.
پاسخ به بازخورد‌های پروژه‌ها
درخواست همزمان گزارش
نباید به تمام کاربران یک فایل را نمایش دهید. چون ممکن است رکوردهایی که گزارش می‌گیرند متفاوت باشد.
یک راه این است که حین ذخیره سازی فایل، یک نام منحصربفرد را تولید کنید. مثلا از Guid استفاده کنید:
AppPath.ApplicationPath + "\\Pdf\\name" + System.Guid.NewGuid().ToString("N") + ".pdf"
روش دیگر این است که اگر برنامه وب است، اصلا از فایل استفاده نکنید و از memory stream استفاده کنید:
using(var memoryStream = new MemoryStream())
{
  return new PdfReport()
   ...
  .Generate(data => data.AsPdfStream(memoryStream));
  // now use memoryStream.ToArray()
}
memoryStream.ToArray حاوی فایل pdf شما است. الان می‌تونید داخل browser اون رو flush کنید.
مطالب
Full Text Search و Rank فیلدهای بازیابی شده
حالتی را در نظر بگیرید که بخواهید تعداد زیادی رکورد را که حجم هر رکورد هم قابل ملاحظه هست، نگهداری کنید(مثلا چندین هزار مقاله) و همچنین قابلیت جستجو را در این رکوردها لحاظ کنید به صورتی که بر اساس رکوردهایی که بیشترین تعداد تکرار کلمات مدنظر را دارند مرتب شوند.
شاید اولین راه حل، مطلب آقای سلیم آبادی در اینجا باشه، که تعداد تکرار یک کلمه را در فیلدی در جدول بیان کردند و درست هم هست اما با 2 شرط:
1) رکوردهای ما حجم کمی داشته باشند چرا که دستور LIKE پاسخ سریعی را با حجم بالای اطلاعات به ما نمی‌دهد.
2) رکوردهای ما از خانواده‌ی char باشند. برای مثال اگر مقالات ما به صورت pdf باشند این کد جواب نمی‌دهد.

اما راه دوم استفاده از Ful Text Search  و دستور CONTAINSTABLE هست که 2 شرط لازم را برای راه حل اول احتیاج نداره. در اینجا فقط نحوه‌ی استفاده از CONTAINSTABLE  رو مطرح میکنیم.
CONTAINSTABLE جدولی از موارد یافت شده را بر اساس معیارهایی که ما به اون معرفی می‌کنیم، ایجاد می‌کند. این جدول حاوی دو فیلد KEY(کلید فیلد مورد نظر) و RANK(مقداری بین 0 تا 1000) است که میزان همسانی رکورد با معیار ما را مشخص می‌کند و ما با استفاده از این فیلد می‌توانیم رکوردهایمان را مرتب کنیم.
به این کد توجه کنید:
SELECT t.Title, p.[RANK]
    FROM Articles AS t 
        INNER JOIN CONTAINSTABLE(Articles, Data, 'management' ) AS p
            ON t.Id = p.[KEY]
ORDER BY p.RANK
در اینجا کار جستجو انجام شده و بر حسب میزان نزدیکی محتویات رکورد با معیار ما مرتب شده است.
نکته: هیچ فرقی نمی‌کند که محتویات فیلد مورد نظر شما یک متن ساده، یک فایل word یا حتی pdf باشد. فقط باید تنظیمات Full Text Search درست انجام شود.
بازخوردهای دوره
استفاده از StructureMap جهت تزریق وابستگی‌ها در برنامه‌های WPF و الگوی MVVM
- هر دوره قسمت اختصاصی رو داره به نام «پرسش و پاسخ» برای طرح این نوع سؤالات خارج از موضوع مطلب جاری، اما مرتبط با عنوان دوره.
- در این مورد DbContext در همان پرسش و پاسخ‌های قسمت 12 سری EF بحث شده. اینجا
برای تکرار:
«... در یک برنامه مبتنی بر MVVM، مدیریت طول عمر یک context در طول عمر ViewModel برنامه است. در یک برنامه ویندوزی تا زمانیکه یک فرم باز است، اشیاء آن تخریب نخواهند شد. بنابراین مدیریت context در برنامه‌های ویندوزی «دستی» است. در زمان شروع فرم context شروع خواهد شد، زمان تخریب/بستن آن، با بستن یا dispose یک context، خودبخود اتصالات هم قطع خواهند شد.
بنابراین در برنامه‌های وب «context/session per http request» داریم؛ در برنامه‌های ویندوزی «context per operation or per form». یعنی می‌تونید بسته به معماری برنامه ویندوزی خود، context را در سطح یک فرم تعریف کنید و مدیریت؛ و یا در سطح یک عملیات کوتاه مانند یک کلیک ...»
نظرات مطالب
گروه بندی دینامیک(پویا) در StimulSoft
سلام و احترام 
من یک گزارش ساختم که قراره در پایین اون، اسم و سمت امضاداران، نشون داده بشه. برای این کار اومدم در page footer یه پنل گذاشتم و در اون پنل، cross data گذاشتم. تا وقتی که تعداد امضا داران کم هست، همه چیز درسته. ولی وقتی از یه تعداد بیشتر میشه، انگار کلا به هم میریزه. در صفحه اول گزارش، اخرین شخص امضادار دوبار تکرار میشه. ضمن اینکه حتی صفحه بندی هم به هم میریزه و شماره صفحه اول یک هست و صفحه دوم میشه سه و یک سوال دیگه اینکه فرض کنید مشکل اول حل شده، حالا اگه صفحه رو بذارم در حالت landscape، پیج هدر و پیج فوتر نظمشون به هم میریزه. چکار کنم که این مشکل هم حل بشه؟
صفحه اول وقتی تعداد امضاداران کمه:

صفحه دوم:

صفحه اول وقتی تعداد امضاداران زیادمیشه:

صفحه دوم:

فایل mrt.
الان برای حل مشکل چیکار کنم؟ کلا آیا برای اضافه کردن امضاداران این کار(یعنی استفاده از پنل و کراس دیتا) و این‌ها درسته؟

نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت چهاردهم- آماده شدن برای انتشار برنامه
- یک authorization server هست؛ یک UI هست برای Identity server.  
-  authorization server یک لایه نیست. قرار نیست جزئی از برنامه‌ی شما باشد. یک برنامه‌ی کاملا «مستقل» هست. هدف اصلی آن هم همین مستقل بودن و نقش تامین هویت مرکزی را بازی کردن هست و گرنه اگر قرار باشد این‌ها با هم یکی شوند، شاید بهتر باشد از ASP.NET Core Identity استفاده کنید. 
- این روش برای شرکتی طراحی شده که یک برنامه‌ی حسابداری دارد، یک برنامه‌ی مجزای منابع انسانی و مدیریت کارمندان، یک برنامه‌ی مجزای مالی و حقوق و دستمزد، یک برنامه‌ی مجزای حضور و غیاب، یک برنامه‌ی مجزای اعلانات شرکت و غیره. هر کدام از این برنامه‌ها هم یک دیتابیس مستقل دارند و قرار نیست تعاریف کاربران و اطلاعات و نقش‌های آن‌ها در بانک‌های اطلاعاتی هر کدام از این برنامه‌ها تکرار شوند. اینجا است که «برنامه‌ی مستقل» authorization server مرکزی معنا پیدا می‌کند.