في عملية تطوير التطبيقات على المنصة. صافي الأساسية غالبا ما يحتاج إلى الوصول إلى معلومات حول بيئة وقت التشغيل التي يتم تشغيل التطبيق. واحدة من المكونات الرئيسية التي تسمح بالوصول إلى هذه المعلومات هي واجهة إيوبهوستنفيرونمينت.
بالنسبة للمطورين الذين يستخدمون جوهر إطار الكيان (إف كور) للعمل مع قاعدة البيانات ، يمكن أن يكون حل هذه المشكلة صعوبة معروفة. في ظل الظروف القياسية ، لا تستطيع نماذج البيانات (الكيانات) الوصول إلى الخدمات الخارجية والتبعيات ، مثل إيوبهوستنفيرونمنت. ومع ذلك ، هناك عدة طرق لحل هذه المشكلة.
أسهل طريقة للحصول على إيوبهوستنفيرونمنت في نموذج في إف كور هو من خلال حقن التبعية. هذا يسمح لك لتمرير مثيل إيوبهوستنفيرونمنت إلى النموذج ، والتي سيتم استخدامها للوصول إلى المعلومات اللازمة حول بيئة وقت التشغيل.
للقيام بذلك ، يكفي إضافة منشئ في فئة سياق قاعدة البيانات (خليفة دبكونتيكست) الذي يقبل معلمة من نوع إيوبهوستنفيرونمنت. ثم قم بإنشاء الحقل المناسب في المنشئ وقم بتعيين القيمة التي تم تمريرها إليه.
الآن ، في نماذج البيانات الخاصة بك ، يمكنك استخدام المثيل الناتج من إيوبهوستنفيرونمنت للوصول إلى وقت التشغيل. على سبيل المثال ، يمكنك استخدام أساليب إيوبهوستنفيرونمنت للحصول على معلومات حول مسارات إلى الملفات والدلائل ، وغيرها من عناصر البيئة.
- ما هو إيوبهوستنفيرونمنت ولماذا أنا في حاجة إليها?
- لماذا أحتاج إلى استخدام إيوبهوستنفيرونمنت?
- كيف يمكنني الوصول إيوبهوستنفيرونمنت في نموذج في إف كور?
- المسار إلى المجلد مع الصور:
- مثال على استخدام إيوبهوستنفيرونمنت في نموذج في إف كور
- دليل مفصل على الحصول على إيوبهوستنفيرونمنت في نموذج إف الأساسية
- الخطوة 1: حقن التبعية
- الخطوة 2: استخدام إيوبهوستنفيرونمنت
- تطبيق البيانات المستلمة
- الخطوة 1: إضافة التبعيات اللازمة
- سؤال وجواب
- كيف يمكنني الحصول على إيوبهوستنفيرونمنت في نموذج في إف كور?
- ما هو نوع البيانات المستخدمة للحصول على إيوبهوستنفيرونمنت في النموذج في إف كور?
- هل من الممكن الحصول على إيوبهوستنفيرونمنت في نموذج دون استخدام حقن التبعية?
ما هو إيوبهوستنفيرونمنت ولماذا أنا في حاجة إليها?
إيوبهوستنفيرونمنت هو واجهة في آسيا والمحيط الهادئ.نت كور ، الذي يوفر معلومات حول بيئة وقت التشغيل الحالية لتطبيق مضيف الويب.
تحتوي هذه الواجهة على خصائص وطرق تسمح لك بالوصول إلى جوانب مختلفة من بيئة التطبيق ، مثل مسارات الملفات وإعدادات التكوين ومعلومات المضيف وغيرها.
لماذا أحتاج إلى استخدام إيوبهوستنفيرونمنت?
باستخدام إيوبهوستنفيرونمنت يسمح لك لخلق تطبيقات أكثر مرونة والمحمولة التي يمكن أن تتكيف مع بيئات التنفيذ المختلفة.
بعض الاستخدامات الممكنة ل إيوبهوستنفيرونمنت تشمل:
- الحصول على مسارات إلى أدلة التطبيقات المختلفة ، مثل الدليل الجذر ، ودليل الموارد ، ودليل الملفات المؤقتة ، وما إلى ذلك.
- تحديد بيئة وقت التشغيل الحالية (مثل التطوير والتدريج والإنتاج) وتطبيق الإعدادات والتكوينات المناسبة اعتمادا على البيئة.
- الحصول على معلومات حول المضيف ، مثل اسم المضيف والمنفذ.
- الحصول على معلومات حول البروتوكول المستخدم للطلبات (على سبيل المثال ، هتب أو هتبس).
- تتبع التغييرات في نظام الملفات وإعادة تشغيل التطبيق تلقائيا عند اكتشاف التغييرات (فقط في بيئة التطوير).
باستخدام إيوبهوستنفيرونمنت يمكن تبسيط كبير في تطوير وتكوين التطبيق الخاص بك ، والسماح لها بالتفاعل بشكل أكثر فعالية مع بيئتها.
كيف يمكنني الوصول إيوبهوستنفيرونمنت في نموذج في إف كور?
من وقت لآخر في تطبيق يستند إلى آسيا والمحيط الهادئ.نت كور باستخدام إف كور ، قد يكون من الضروري الوصول إلى كائن إيوبهوستنفيرونمنت ، الذي يوفر معلومات حول مضيف الويب ، في النموذج. ومع ذلك ، لا ينصح الوصول المباشر إلى إيوبهوستنفيرونمنت في النموذج ، لأن النماذج هي المسؤولة عن العمل مع البيانات ويجب أن لا يكون التبعيات على البنية التحتية لاستضافة المواقع على الشبكة.
بدلا من ذلك ، فمن المستحسن لتمرير المعلومات اللازمة من إيوبهوستنفيرونمنت إلى النموذج من خلال المعلمات من الأساليب أو الصانعين. للقيام بذلك ، يمكنك استخدام النهج التالي:
- إنشاء خاصية في النموذج لتخزين البيانات اللازمة. على سبيل المثال ، إذا كنت بحاجة إلى الحصول على المسار إلى مجلد به صور ، فيمكنك إنشاء خاصية نوع سلسلة لتخزين هذا المسار.
- في وحدة تحكم أو خدمة ، إنشاء طريقة من شأنها ملء الخاصية نموذج مع القيمة من إيوبهوستنفيرونمينت. على سبيل المثال ، يمكنك إنشاء طريقة تحصل على كائن إيوبهوستنفيرونمنت من المنشئ ويستدعي طريقة ماباث للحصول على المسار إلى المجلد مع الصور. ستقوم هذه الطريقة بعد ذلك بتعيين قيمة خاصية النموذج.
- في وحدة التحكم أو الخدمة حيث تقوم بإنشاء النموذج ، اتصل بهذه الطريقة وقم بتمرير المعلمات الضرورية إليها. ثم قم بإنشاء مثيل للنموذج وتمريره إلى العرض.
- في العرض ، يمكنك الوصول إلى خصائص النموذج واستخدامها لعرض المعلومات.
هنا مثال رمز يوضح هذا النهج:
"'شارب
الطبقة العامة ميموديل
{
سلسلة العامة إيماجيفولديرباث { الحصول على ؛ مجموعة؛}
}
خدمة الطبقة العامة
{
خاص للقراءة فقط إيوبهوستنفيرونمنت _ ويبوستنفيرونمنت;
الخدمة العامة (إيوبهوستنفيرونمنت ويبهوستنفيرونمنت)
{
_البيئة المستضيفة على شبكة الإنترنتالبيئة المستضيفة على شبكة الإنترنتالبيئة المستضيفة على شبكة الإنترنتالبيئة المستضيفة;
}
نموذج ملء الفراغ العام (نموذج ميموديل)
{
نموذج.إيماجيفولديرباث = _البيئة المضيفة على شبكة الإنترنت.ماباث ("~/صور");
}
}
الفئة العامة ميكونترولر: المراقب المالي
{
خدمة القراءة الخاصة _ ميس سيرفيس;
ميكونترولر العامة (ميسرفيس ميسرفيس)
{
_ ميس سيرفيس = ميس سيرفيس;
}
مؤشر النتائج العامة ()
{
ميموديل نموذج = جديد ميموديل();
_الخدمة.فيلموديل (نموذج);
عرض العودة (نموذج);
}
}
«`
В представлении можно использовать полученные данные, например:
"'أتش تي أم أل
المسار إلى المجلد مع الصور:
@نموذج.إيماجيفولديرباث
«`
حتى تتمكن من الوصول إلى إيوبهوستنفيرونمنت في النموذج في إف كور باستخدام النهج الموضح أعلاه. سيسمح لك ذلك بوضع منطق العمل مع مضيف الويب في خدمات أو وحدات تحكم منفصلة ، وبالتالي ضمان فصل المسؤوليات وتحسين قابلية اختبار الكود.
مثال على استخدام إيوبهوستنفيرونمنت في نموذج في إف كور
في هذا المثال ، سوف ننظر في كيفية استخدام واجهة إيوبهوستنفيرونمنت في النموذج الأساسي إطار الكيان للحصول على معلومات حول المسار إلى الملفات والمجلدات من تطبيق ويب.
1. أولا ، إضافة مرجع إلى مساحة الاسم الذي يحتوي على واجهة إيوبهوستنفيرونمينت:
باستخدام مايكروسوفت.اسبنيتكور.الاستضافة;2. Далее в классе модели добавим переменную типа IWebHostEnvironment:
private readonly IWebHostEnvironment _hostingEnvironment;3. Добавим конструктор, который будет принимать экземпляр IWebHostEnvironment:
public YourModelClass(IWebHostEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
4. الآن يمكننا استخدام متغير البيئة _إستضافةللحصول على معلومات حول المسار إلى الملفات والمجلدات الخاصة بتطبيق الويب. على سبيل المثال ، للحصول على المسار إلى مجلد " ووروت:
سلسلة ويبروتباث = _إستضافة البيئة.ويبروتباث;5. يمكننا الحصول على المسار إلى المجلد حيث يوجد الملف القابل للتنفيذ لتطبيقنا:
محتوى السلسلة مسار الجذر = _ بيئة الاستضافة.المحتوىروتباث;حتى نتمكن من استخدام إيوبهوستينفيرونمنت في النموذج للحصول على معلومات حول مسارات إلى الملفات والمجلدات من تطبيق ويب.
دليل مفصل على الحصول على إيوبهوستنفيرونمنت في نموذج إف الأساسية
توفر إي إف كور طريقة مريحة ومرنة للوصول إلى الخدمات ASP.NET الأساسية ، مثل إيوبهوستنفيرونمنت ، من النماذج. في هذا الدليل ، وسوف ننظر في كيفية الوصول إيوبهوستنفيرونمنت في نموذج إف الأساسية.
الخطوة 1: حقن التبعية
الخطوة الأولى هي إضافة إيوبهوستنفيرونمنت إلى منشئ النموذج. للقيام بذلك ، تحتاج إلى تضمين التبعية في منشئ النموذج. حقن التبعية هو عملية نقل التبعيات إلى فئة ، في هذه الحالة ، نموذج.
"'شارب
فئة عامة
{
خاص للقراءة فقط إيوبهوستنفيرونمنت _ ويبوستنفيرونمنت;
العامة مينتيتي (إيوبهوستنفيرونمنت ويبهوستنفيرونمنت)
{
_البيئة المستضيفة على شبكة الإنترنتالبيئة المستضيفة على شبكة الإنترنتالبيئة المستضيفة على شبكة الإنترنتالبيئة المستضيفة;
}
}
«`
الخطوة 2: استخدام إيوبهوستنفيرونمنت
بعد تنفيذ التبعية ، يمكنك استخدام إيوبهوستنفيرونمنت داخل النموذج. Например, вы можете получить путь к папке wwwroot или любой другой путь в файловой системе.
«`csharp
public class MyEntity
{
private readonly IWebHostEnvironment _webHostEnvironment;
public MyEntity(IWebHostEnvironment webHostEnvironment)
{
_webHostEnvironment = webHostEnvironment;
}
public string GetWwwRootPath()
{
return _webHostEnvironment.WebRootPath;
}
}
«`
يمكنك أيضا استخدام خصائص إيوبهوستنفيرونمنت الأخرى مثل كونتنتروتباث ، إفيرونمينتنام ، أبليكاتيوننام ، الخ.
تطبيق البيانات المستلمة
البيانات إيوبهوستنفيرونمنت التي تم الحصول عليها يمكن أن تكون مفيدة في العديد من السيناريوهات. على سبيل المثال ، يمكنك استخدام المسار إلى مجلد ووروت لتحميل وحفظ الملفات. Вы также можете использовать EnvironmentName для изменения поведения модели в зависимости от текущей среды выполнения (например, разработки или продакшена).
«`csharp
public class MyEntity
{
private readonly IWebHostEnvironment _webHostEnvironment;
public MyEntity(IWebHostEnvironment webHostEnvironment)
{
_webHostEnvironment = webHostEnvironment;
}
public void UploadFile(IFormFile file)
{
string path = Path.Combine(_webHostEnvironment.WebRootPath, «uploads»);
// حفظ الملف في المجلد المحدد
}
التنمية العامة()
{
العودة _ استضافة الويببيئة.اسم البيئة = = "التنمية";
}
}
"`
كما ترون ، الحصول على الوصول إلى إيوبهوستينفيرونمنت في نموذج إف الأساسية هو بسيط جدا ويمكن أن تكون مفيدة في مجموعة متنوعة من سيناريوهات التنمية.
الخطوة 1: إضافة التبعيات اللازمة
في النموذج الأساسي لإطار الكيان ، سنحتاج إلى إضافة العديد من التبعيات إلى مشروعنا.
في الدليل الجذر لمشروعك. في هذا الملف ، تحتاج إلى إضافة بضعة أسطر من التعليمات البرمجية:
باستخدام مايكروسوفت.اسبنيتكور.الاستضافة;
باستخدام مايكروسوفت.ملحقات.الاعتمادحقن;
:
خدمات تكوين الفراغ العام (خدمات جمع الخدمات)
{
الخدمات.أدرازورباجيس();
...
الخدمات.أدسينغلتون(إنف = > هوستينغنفيرونمنت);
...
}
، والتي يتم إنشاؤها تلقائيا داخل الإطار.
في النموذج الأساسي لإطار الكيان.
هو داخله.
سؤال وجواب
كيف يمكنني الحصول على إيوبهوستنفيرونمنت في نموذج في إف كور?
للحصول على إيوبهوستنفيرونمنت في نموذج إف كور ، تحتاج إلى استخدام الخدمات. في فئة النموذج ، تحتاج إلى إنشاء منشئ الذي سيتم تنفيذ إيوبهوستنفيرونمنت. ثم يمكنك استخدام إيوبهوستنفيرونمنت للحصول على بيانات حول بيئة وقت التشغيل الحالية ، مثل المسار إلى المجلد الجذر للمشروع أو عنوان ورل الأساسي. على سبيل المثال ، يمكنك استخدام إيوبهوستنفيرونمنت.كونتنتروتباث للحصول على المسار إلى المجلد الجذر للمشروع.
ما هو نوع البيانات المستخدمة للحصول على إيوبهوستنفيرونمنت في النموذج في إف كور?
للحصول على إيوبهوستنفيرونمنت في النموذج في إف كور ، يتم استخدام واجهة إيوبهوستنفيرونمنت. يتم تعريف هذه الواجهة في مساحة اسم ميكروسوفت.اسبنيتكور.استضافة ويوفر الوصول إلى المعلومات حول بيئة التنفيذ الحالية لتطبيق ويب. إيوبهوستنفيرونمنت يحتوي على خصائص للحصول على معلومات حول المسار إلى المجلد الجذر للمشروع ، ورل الأساسي ، واسم البيئة الحالية ، وغيرها من المعلومات.
هل من الممكن الحصول على إيوبهوستنفيرونمنت في نموذج دون استخدام حقن التبعية?
لا ، لا يمكنك الحصول على إيوبهوستنفيرونمنت في نموذج دون استخدام حقن التبعية. إيوبهوستنفيرونمنت هي الخدمة التي يجب أن تكون مسجلة في حاوية التبعية وجزءا لا يتجزأ من فئة النموذج من خلال منشئ. دون حقن التبعية ، والحصول على إيوبهوستنفيرونمنت في النموذج لن تعمل.