‫۱۰ سال و ۱۰ ماه قبل، چهارشنبه ۲۹ آبان ۱۳۹۲، ساعت ۰۳:۵۵
با سپاس از دقت و حسن پاسخگویی جنابعالی
بله نحوه کار IOC‌ها را تقریبا می‌دانم و از اطلاعاتی که بازهم یادآوری کردید متشکرم. در مورد اینکه این کار را StructureMap باید انجام دهد با نظرتان موافق هستم اما در اینجا ما کتابخانه داریم که خودش دارای این پیاده سازی و تفکیک می‌باشد که مسئله در اینجاست که این پیاده سازی را چگونه باید یکپارچه کرد؟!
که خودم خوشبختانه در این گفتگو راهی به ذهنم رسید که قابل پیاده سازی می‌باشد. اما در صورتیکه شما هم نظری دارید خوشحال می‌شوم بدانم و یک بار دیگر از وقتی که صرف کرده اید متشکرم.
‫۱۰ سال و ۱۰ ماه قبل، چهارشنبه ۲۹ آبان ۱۳۹۲، ساعت ۰۰:۲۲
- نیازی به PerThreadUnitOfWorkScope و PerRequestUnitOfWorkScope کتابخانه‌های ثالث در حین کار با StructureMap نیست. خود این IoC Container قابلیت مدیریت طول عمر اشیاء را دارد. HttpContextScoped آن یعنی مدیریت طول عمر یک شیء و زنده نگه داشتن آن در طول یک درخواست یا Request. بنابراین نیازی نیست یکبار StructureMap این‌کار را انجام دهد و یکبار دیگر هم کتابخانه‌ی ثالث دیگری که مثلا PerRequestUnitOfWorkScope در آن تعریف شده؛ کار اضافی است. (بحث «تعیین طول عمر اشیاء در StructureMap» در متن فوق)
- فقط از
HybridHttpOrThreadLocalScoped استفاده کنید تا هر دو حالت برنامه‌های وب و ویندوز را با یک تنظیم پوشش دهید. نیازی هم به بررسی IsInWeb یاد شده نیست. خود StructureMap به صورت توکار این کار را انجام می‌دهد.
- نیازی نیست تا کار وهله سازی را در قسمت Use انجام دهید (کار اضافی است). فقط نام کلاس آن‌را ذکر کنید کافی است.
x.For<IMyInterface>().HybridHttpOrThreadLocalScoped().Use<MyClass>();
در این حالت کلاس MyClass، هر سازنده‌ای داشته باشد، با توجه به سایر x.For-Use‌های نوشته شده به صورت خودکار سازنده‌های آن‌ها توسط StructureMap وهله سازی می‌شوند. تا n سطح هم باشد، کار وهله سازی آن‌ها خودکار است به شرطی که در تنظیمات StructureMap ذکر کنید، هر تزریق اینترفیس صورت گرفته در سازنده کلاسی با چه کلاسی مرتبط است یعنی x.For-Use های کاملی باید داشته باشید.
‫۱۰ سال و ۱۰ ماه قبل، سه‌شنبه ۲۸ آبان ۱۳۹۲، ساعت ۲۳:۱۸
با تشکر از پاسخگویتان بله این مطالب را می‌دانستم شاید منظورم را اشتباه رساندم اینکه از کدام دو حالت UOW خودم استفاده کنم به کدام شکل تعریف می‌شود یعنی در زمانی که از HybridHttpOrThreadLocalScoped استفاده می‌کنم PerThreadUnitOfWorkScope یا PerThreadUnitOfWorkScope باشد؟و خودش این دو را با توجه به وب یا ویندوز سرویس بودن تشخیص دهد. با توجه به اینکه این دو Context را به عنوان ورودی دریافت می‌کنند. که اگر دریافت نمی‌کردن نحوه تعریف آنها شاید به این شکل صحیح بود.
x.For<UnitOfWorkScopeBase<TrackingModelUnitOfWork>>()
                   .HybridHttpOrThreadLocalScoped()
                   .Use(() =>
                   {
                       IsWeb ?new PerRequestUnitOfWorkScope<TrackingModelUnitOfWork>(context) : new PerThreadUnitOfWorkScope<TrackingModelUnitOfWork>(context)
                   });
در بالای آن Context را تعریف کردم اما نمی‌دانم مورد بالا را به چه نحوی تعریف کنم.
x.For<LightSpeedContext<TUnitOfWork>>().Singleton().Use(() =>
                {
                    var ctx = new LightSpeedContext<TrackingModelUnitOfWork>()
                    {
                        ConnectionString = "MyConnection",
                        QuoteIdentifiers = true,
                        DataProvider = DataProvider.SqlServer2012
                    };
                    return ctx;
                });
ممنون از راهنمایتان
‫۱۰ سال و ۱۰ ماه قبل، سه‌شنبه ۲۸ آبان ۱۳۹۲، ساعت ۲۲:۵۵
- در متن بحث شده: « حالت Hybrid ترکیبی است از حالت‌های HttpContext و ThreadLocal. اگر برنامه وب بود، از HttpContext استفاده خواهد کرد در غیراینصورت به ThreadLocal سوئیچ می‌کند.»
یعنی HybridHttpOrThreadLocalScoped هر دو مورد را به صورت خودکار پوشش می‌دهد.
- ضمنا روش تشخیص کلی زمینه برنامه جاری، اینکه وب است یا ویندوز به صورت زیر است:
using System.Web;

        bool IsInWeb
        {
            get
            {
                return HttpContext.Current != null;
            }
        }
این مورد ارجاعی را به اسمبلی استاندارد System.Web نیاز دارد.
‫۱۰ سال و ۱۰ ماه قبل، سه‌شنبه ۲۸ آبان ۱۳۹۲، ساعت ۲۲:۴۵
سلام
من در یک پروژه که دارای دو قسمت ویندوز سرویس و وب می‌باشد از تزریق وابستگی با  StructureMap  استفاده می‌کنم که دارای دو تعریف از UOW برای این دو هستم می‌خواستم بدونم به چه شکلی آن را تعریف کنم که در هر زمان که لازم بود یک نمونه از آن را با توجه به پروژه ای که هستم (ویندوز سرویس یا وب) داشته باشم و آیا اصولا این کار امکان پذیر است؟
x.For<UnitOfWorkScopeBase<TModelUnitOfWork>>()
                    .HttpContextScoped()
                    .Use<PerThreadUnitOfWorkScope<TModelUnitOfWork>>();
x.For<UnitOfWorkScopeBase<TModelUnitOfWork>>()
                   .HybridHttpOrThreadLocalScoped()
                   .Use<PerThreadUnitOfWorkScope<TUnitOfWork>>();
با تشکر از شما
‫۱۰ سال و ۱۱ ماه قبل، شنبه ۲۵ آبان ۱۳۹۲، ساعت ۰۰:۰۷
در مطلب جاری، روش قدم به قدم افزودن فایل‌های مورد نیاز توضیح داده شدند. لطفا یکبار مطلب را مطالعه کنید. این تغییرات را اگر به فایل Layout اعمال کنید، بدون مشکل کار خواهد کرد (و به کل سایت اعمال می‌شود). نمونه‌اش مطالب کار با فرم‌ها یا صفحات مودال بوت استرپ 3 هستند. مثال‌های قابل دریافت این قسمت‌ها، مثال MVC هم دارند که انتهای هر بحث پیوست شده. به فایل Layout آن‌ها دقت کنید تا نحوه افزودن این فایل‌ها را مشاهده نمائید.
‫۱۰ سال و ۱۱ ماه قبل، جمعه ۲۴ آبان ۱۳۹۲، ساعت ۲۳:۳۵
سلام؛ من از طریق package سایت nuget بوت استرپ را روی پروژه asp.net نصب کردم وجواب گرفتم ولی روی پروژه asp.net mvc نصب کردم جواب نمی‌دهد. 
‫۱۰ سال و ۱۱ ماه قبل، جمعه ۱۷ آبان ۱۳۹۲، ساعت ۰۲:۲۳

با تشکر فراوان از شما

برای کار با حجم زیاده داده آیا حالت نصب embedded را پیشنهاد میکنید؟

بین RavenDB و MongoDB در پلت فورم Asp.net MVC 4 کدامیک را پیشنهاد میکنید؟

‫۱۰ سال و ۱۱ ماه قبل، جمعه ۱۷ آبان ۱۳۹۲، ساعت ۰۱:۳۶
- بله.
- البته می‌شود پورت‌های دسترسی خارجی به یک سرور را با فایروال بست. به این ترتیب فقط برنامه نصب شده در آن سرور امکان اتصال را خواهد داشت (خیلی‌ها با SQL Server هم به همین نحو کار می‌کنند؛ یک برنامه وب و یک برنامه سرور SQL دارند روی یک سرور. برنامه وب سفارشی، لایه اتصال امن به بانک اطلاعاتی است).
- همچنین حالت نصب embedded آن دسترسی از بیرون ندارد و فقط از طریق برنامه قابل استفاده است.