اگر برنامه وب است، به هیچ عنوان نباید از سرویسهایی که به صورت یک فیلد استاتیک تعریف شدند استفاده کنید:
بررسی واژه کلیدی static متغیرهای استاتیک و برنامههای ASP.NET
- اگر برنامه دسکتاپ است و نیاز دارید که اطلاعات یک سرویس خاص را در طول
عمر برنامه زنده نگه دارید، برای نمونه در StructureMap حالت طول عمر
Singleton هم وجود دارد برای مدیریت این نوع سرویسها و نیازی نیست باز هم
متغیر استاتیک تعریف کنید. (یک نمونه آن در دوره «
طراحی یک فریم ورک برای کار با WPF و EF Code First توسط الگوی MVVM» بحث شده به همراه مثال کاربردی)
-
ضمنا زنده نگه داشتن اطلاعات یک سرویس در طول عمر یک برنامه، باید با
آگاهی کامل صورت گیرد. در اینجا و در حالت استفاده از EF، به این ترتیب
Context ایجاد شده Dispose نخواهد شد و همین مساله مشکلات زیادی مانند
خطاهای ثبت اطلاعات جدیدی که پیشتر در صفحهای دیگر به Context وارد شدن را
سبب میشود. همچنین در محیطهای چندکاربری مانند وب، یک Context به اشتراک
گذاشته بین تمام کاربران (مفهوم متغیرهای استاتیک)، thread safe نیست و
مشکلات تداخل اطلاعات و یا حتی تخریب آنها را شاهد خواهید بود.