موقع ويب ASP.NET أو تطبيق ويب ASP.NET؟


Answers

موقع الويب هو ما تقوم بنشره على خادم ويب ASP.NET مثل IIS. مجرد حفنة من الملفات والمجلدات. لا يوجد شيء في موقع ويب يربطك بـ Visual Studio (لا يوجد ملف مشروع). يتم إنشاء التعليمات البرمجية وتجميع صفحات الويب (مثل .aspx و .ascx و .master) بشكل ديناميكي في وقت التشغيل ، ويتم الكشف عن التغييرات على هذه الملفات بواسطة الإطار وإعادة تجميعها تلقائيًا. يمكنك وضع التعليمات البرمجية التي تريد مشاركتها بين الصفحات الموجودة في المجلد App_Code الخاص ، أو يمكنك تجميعها مسبقًا ووضع التجميع في مجلد سلة المحذوفات.

تطبيق الويب هو مشروع Visual Studio خاص. الاختلاف الرئيسي مع مواقع الويب هو أنه عند إنشاء المشروع يتم تجميع جميع ملفات التعليمات البرمجية في تجميع واحد ، والذي يتم وضعه في دليل bin. لا تقوم بنشر ملفات التعليمات البرمجية إلى خادم الويب. بدلاً من وجود مجلد خاص لملفات التعليمات البرمجية المشتركة ، يمكنك وضعها في أي مكان ، تمامًا كما تفعل في مكتبة الصف. نظرًا لأن تطبيقات الويب تحتوي على ملفات غير مخصصة لنشرها ، مثل ملفات المشروع والتعليمات البرمجية ، هناك أمر Publish في Visual Studio لإخراج موقع ويب إلى موقع محدد.

App_Code vs Bin

عادةً ما يكون نشر ملفات الرموز المشتركة فكرة سيئة ، ولكن هذا لا يعني أن عليك اختيار تطبيق ويب. يمكن أن يكون لديك موقع ويب يشير إلى مشروع مكتبة فئة يحتفظ بكود موقع الويب. تطبيقات الويب هي مجرد وسيلة مريحة للقيام بذلك.

CodeBehind

هذا الموضوع محدد لملفات .aspx و .ascx. هذا الموضوع ذو أهمية متناقصة في إطارات التطبيقات الجديدة مثل ASP.NET MVC و ASP.NET Web Pages التي لا تستخدم ملفات codebehind.

من خلال تجميع جميع ملفات التعليمات البرمجية في تجميع واحد ، بما في ذلك ملفات codebehind لصفحات .aspx وعناصر تحكم ascx ، في تطبيقات الويب ، يتعين عليك إعادة الإنشاء لكل تغيير طفيف ، ولا يمكنك إجراء تغييرات مباشرة. يمكن أن يكون هذا بمثابة ألم حقيقي أثناء التطوير ، حيث يجب عليك إعادة البناء لمعرفة التغييرات ، بينما يتم اكتشاف التغييرات في مواقع الويب بواسطة وقت التشغيل ويتم تلقائيًا إعادة تصنيف الصفحات / عناصر التحكم.

إن وجود وقت التشغيل لإدارة تجميعات codebehind هو عمل أقل عليك ، حيث لا داعي للقلق بشأن إعطاء الصفحات / التحكم في أسماء فريدة ، أو تنظيمها في مساحات أسماء مختلفة.

أنا لا أقول أن نشر ملفات التعليمات البرمجية هو دائمًا فكرة جيدة (خاصة في حالة ملفات التعليمات البرمجية المشتركة) ، ولكن يجب أن تحتوي ملفات codebehind فقط على تعليمات برمجية تؤدي مهام محددة لواجهة المستخدم ، ومعالجات الأحداث ، وما إلى ذلك. الطبقات بحيث ينتهي الرمز المهم دائمًا في مجلد سلة. إذا كانت هذه هي الحالة ، فلا ينبغي اعتبار نشر ملفات codebehind ضارًا.

هناك قيد آخر لتطبيقات الويب هو أنه يمكنك فقط استخدام لغة المشروع. في مواقع الويب ، يمكنك الحصول على بعض الصفحات في C # ، بعضها في VB ، إلخ. لا حاجة لدعم Visual Studio خاص. هذا هو جمال توسع مزود البناء.

أيضا ، في تطبيقات الويب لا تحصل على كشف الأخطاء في صفحات / عناصر التحكم حيث يقوم المترجم بترجمة فئات codebehind الخاصة بك فقط وليس كود الترميز (في MVC يمكنك إصلاح هذا باستخدام خيار MvcBuildViews) ، والذي يتم تحويله في وقت التشغيل.

استوديو مرئي

لأن تطبيقات الويب هي مشروعات Visual Studio ، فإنك تحصل على بعض الميزات غير المتوفرة في مواقع الويب. على سبيل المثال ، يمكنك استخدام أحداث الإنشاء لتنفيذ مجموعة متنوعة من المهام ، مثل تصغير و / أو دمج ملفات Javascript.

ميزة أخرى لطيفة المقدمة في Visual Studio 2010 هو Web.config التحول . هذا أيضا غير متوفر في مواقع الويب. يعمل الآن مع مواقع الويب في VS 2013.

بناء تطبيق ويب أسرع من بناء موقع ويب ، خاصة للمواقع الكبيرة. ويرجع ذلك أساسًا إلى عدم قيام تطبيقات الويب بتجميع شفرة الترميز. في MVC إذا قمت بتعيين MvcBuildViews إلى true ، فإنه يقوم بتجميع رمز الترميز والحصول على كشف الأخطاء ، وهو أمر مفيد للغاية. الجانب السلبي هو أنه في كل مرة تقوم فيها ببناء الحل ، فإنه يبني الموقع الكامل ، والذي يمكن أن يكون بطيئًا وغير فعال ، خاصة إذا كنت لا تقوم بتحرير الموقع. أجد نفسي تحويل MvcBuildViews داخل وخارج (مما يتطلب تفريغ المشروع). من ناحية أخرى ، مع مواقع الويب يمكنك اختيار ما إذا كنت ترغب في بناء الموقع كجزء من الحل أم لا. إذا اخترت عدم القيام بذلك ، فسيكون بناء الحل سريعًا جدًا ، ويمكنك دائمًا النقر على عقدة موقع الويب وتحديد إنشاء ، إذا قمت بإجراء تغييرات.

في مشروع MVC Web Application لديك أوامر ومربعات حوار إضافية للمهام الشائعة ، مثل 'Add View' ، 'Go To View' ، 'Add Controller' ، وما إلى ذلك. هذه ليست متوفرة في موقع MVC.

إذا كنت تستخدم IIS Express كخادم تطوير ، في مواقع الويب ، يمكنك إضافة أدلة ظاهرية. هذا الخيار غير متوفر في تطبيقات الويب.

NuGet Package Restore لا يعمل على مواقع الويب ، يجب عليك تثبيت الحزم المدرجة يدويًا على packages.config تعمل حزمة Restore الآن مع مواقع الويب التي تبدأ بـ NuGet 2.7

Question

عند بدء تشغيل مشروع ASP.NET جديد في Visual Studio ، يمكنني إنشاء تطبيق ويب ASP.NET أو يمكنني إنشاء موقع ويب ASP.NET.

ما هو الفرق بين تطبيق ASP.NET على ويب و ASP.NET Web Site؟ لماذا اخترت واحدة على أخرى؟

هل تختلف الإجابة استنادًا إلى إصدار Visual Studio الذي أستخدمه؟




في أحد تطبيقات الويب ، يمكنك إنشاء طبقات وظائف مشروعك ، كما يمكنك إنشاء تبعيات متبادلة بينها عن طريق تقسيمها إلى العديد من المشاريع ، ولكن لا يمكنك مطلقًا القيام بذلك على موقع ويب.




هنا تطبيق الويب داعمة هو مثال على الموقع. يمكن أن يكون موقع الويب وتطبيقات الويب ديناميكيًا / ثابتًا يعتمد على المتطلبات ، وهنا مثال على فهم عمل موقع الويب وتطبيق الويب.




عادة ما يتم تجميع التطبيقات قبل النشر حيث يستخدم موقع الويب دليل app_code. عندما يتغير أي شيء في مجلد شفرة التطبيق ، سيقوم الخادم بإعادة تجميع الشفرة. هذا يعني أنه يمكنك إضافة / تغيير الرمز مع موقع ويب على الفور.

ميزة التطبيق هي أنه لا يوجد إعادة تجميع وبالتالي ستكون أوقات البدء الأولية أسرع.




يحتوي "موقع ويب" على التعليمات البرمجية الخاصة به في دليل App_Code خاص ويتم تجميعها في العديد من DLLs (التجميعات) في وقت التشغيل. يتم "ترجمة تطبيق ويب" إلى واحد DLL واحد.




موقع الويب : يقوم بإنشاء مجلد app_code تلقائيًا وإذا قمت بنشره على الخادم وبعد ذلك إذا قمت ببعض التغييرات في أي ملف أو صفحة معينة مما لا يلزمك القيام بتجميع كافة الملفات.

تطبيق الويب يقوم بإنشاء ملف حلول تلقائيًا لا يقوم موقع الويب بتكوينه وإذا قمت بتغيير ملف واحد من أن تقوم بتجميع المشروع بالكامل ليعكس التغييرات التي أجراها.




مواقع الويب - لن يتم إنشاء ملف الحل. إذا كنا نريد إنشاء مواقع الويب لا حاجة للاستوديو المرئي.

تطبيق الويب - سيتم إنشاء ملف الحل. إذا أردنا إنشاء تطبيق ويب يجب أن تحتاج إلى الاستوديو المرئي. سيقوم بإنشاء ملف .dll واحد في مجلد bin.




Compilation أوﻻً ، ھﻧﺎك اﺧﺗﻼف ﻓﻲ اﻟﺗﺟﻣﯾﻊ. لم يتم ترجمة الموقع مسبقا على الخادم ، يتم تجميعه في الملف. قد تكون ميزة لأنه عندما تريد تغيير شيء ما في موقع الويب الخاص بك ، يمكنك فقط تنزيل ملف معين من الخادم ، وتغييره وتحميل هذا الملف مرة أخرى إلى الخادم وسيعمل كل شيء بشكل جيد. في تطبيق ويب لا يمكنك القيام بذلك لأن كل شيء تم تجميعه مسبقًا وينتهي بك الأمر مع dll واحد فقط. عندما تقوم بتغيير شيء ما في ملف واحد من مشروعك ، عليك إعادة تجميع كل شيء مرة أخرى. لذلك إذا كنت ترغب في الحصول على إمكانية تغيير بعض الملفات على موقع ويب الخادم هو الحل الأفضل لك. كما يسمح للعديد من المطورين بالعمل على موقع ويب واحد. على الجانب الآخر ، إذا كنت لا تريد أن تكون التعليمة البرمجية متوفرة على الخادم ، فعليك بدلاً من ذلك اختيار تطبيق ويب. يعد هذا الخيار أيضًا أفضل لاختبار الوحدة نظرًا لإنشاء ملف DLL واحد بعد نشر موقعك على الويب.

Project structure هناك أيضا اختلاف في هيكل المشروع. في تطبيق الويب لديك ملف مشروع تمامًا كما لو كنت تستخدمه في التطبيق العادي. في موقع الويب لا يوجد ملف مشروع تقليدي ، كل ما لديك هو ملف الحل. يتم تخزين جميع المراجع والإعدادات في ملف web.config. @Page directive هناك سمة مختلفة فيPage التوجيه للملف الذي يحتوي على فئة مرتبطة بهذه الصفحة. في تطبيق ويب هو معيار "CodeBehind" ، في موقع ويب تستخدم "CodeFile". يمكنك رؤية ذلك في الأمثلة أدناه:

Web Application:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  
Inherits="WebApplication._Default" %>  

موقع الكتروني:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

مساحات الأسماء - في المثال أعلاه ، يمكنك مشاهدة اختلاف آخر - كيفية إنشاء مساحات الأسماء. في مساحة اسم تطبيق ويب هو ببساطة اسم المشروع. في موقع ويب يوجد مساحة اسم افتراضية ASP للصفيف المترجمة ديناميكيًا.

التعديل والمتابعة - في خيار تعديل تطبيق الويب ومتابعة تطبيقه (لتشغيله يجب عليك الانتقال إلى قائمة أدوات ، انقر فوق خيارات ثم ابحث عن تحرير ومتابعة في تصحيح الأخطاء). هذه الميزة لا تعمل في Web Site.ASP.NET MVC إذا كنت ترغب في تطوير تطبيقات الويب باستخدام

ASP.NET MVC (Model View Controller) هو الخيار الأفضل و الافتراضي هو Web Application. على الرغم من أنه من الممكن استخدام MVC في موقع الويب إلا أنه غير مستحسن.

ملخص - الاختلاف الأكثر أهمية بين تطبيق ويب ASP.NET وموقع الويب هو التجميع. إذا كنت تعمل في مشروع أكبر حيث يمكن لعدد قليل من الناس تعديله ، فمن الأفضل استخدام موقع الويب. ولكن إذا كنت تقوم بمشروع أصغر ، يمكنك استخدام تطبيق الويب أيضًا.




أحد الاختلافات الرئيسية هو أن المواقع الإلكترونية يتم تجميعها ديناميكيًا وإنشاء مجموعات على ذبابة. Web applicaitons compile في تجميع واحد كبير.

تم التمييز بين الاثنين بعيداً في Visual Studio 2008.




ما لم تكن لديك حاجة محددة لمشروع يحمل ديناميكيًا ، فلا تستخدم مشروعًا لموقع ويب .

لماذا ا؟ لأن مشروع موقع الويب سيقودك إلى الأعلى عند محاولة تغيير مشروعك أو فهمه. سوف تجد ميزات البحث عن الكتابة الثابتة (مثل العثور على الاستخدامات ، refactor) في Visual Studio إلى الأبد في أي مشروع معقول الحجم. لمزيد من المعلومات ، راجع سؤال Slow “Find All References” في Visual Studio .

لا أستطيع حقاً معرفة سبب قيامهم بإسقاط تطبيقات الويب في Visual Studio 2005 لنوع مشروع موقع الويب الخاص بالإنتاجية ، واستنزاف العقل ، وإنتاجية موقع الويب.




نموذج مشروع تطبيقات الويب

  • يوفر نفس دلالات مشروع الويب كمشاريع Visual Studio .NET Web. يحتوي على ملف مشروع (هيكل يستند إلى ملفات المشروع). بناء النموذج - يتم تجميع جميع التعليمات البرمجية في المشروع في تجميع واحد. يدعم كل من IIS وخادم تطوير ASP.NET المدمج. يدعم جميع الميزات من Visual Studio 2005 (إعادة بيعها ، والأدوية ، وما إلى ذلك) ومن ASP.NET (الصفحات الرئيسية ، العضوية وتسجيل الدخول ، والتنقل في الموقع ، والموضوعات ، الخ). استخدام ملحقات ملقم FrontPage (FPSE) لم تعد متطلبًا.

نموذج مشروع موقع الويب

  • لا يوجد ملف مشروع (على أساس نظام الملفات).
  • نموذج تجميع جديد.
  • تجميع ديناميكي والعمل على الصفحات بدون إنشاء موقع كامل على كل عرض صفحة.
  • يدعم كل من IIS وخادم تطوير ASP.NET المدمج.
  • كل صفحة لديها التجمع الخاص بها.
  • نموذج كود غختلاف.



قد يبدو هذا واضحًا بعض الشيء ، ولكن أعتقد أنه شيء يساء فهمه نظرًا لأن Visual Studio 2005 يتم شحنه فقط مع موقع الويب في الأصل. إذا كان مشروعك يتعامل مع موقع ويب محدود إلى حد ما ولا يحتوي على الكثير من الفصل المنطقي أو المادي ، فسيكون موقع الويب جيدًا. ومع ذلك ، إذا كان تطبيقًا حقيقيًا على الويب يحتوي على وحدات نمطية مختلفة حيث يقوم العديد من المستخدمين بإضافة البيانات وتحديثها ، فمن الأفضل استخدام تطبيق الويب.

أكبر app_code لنموذج موقع الويب هو أن أي شيء في قسم app_code يتم تجميعه ديناميكيًا. يمكنك إجراء تحديثات ملف C # بدون إعادة نشر كاملة. ومع ذلك يأتي هذا في تضحية كبيرة. تحدث الكثير من الأشياء تحت الأغطية التي يصعب السيطرة عليها. من الصعب التحكم app_code الأسماء ، ويخرج استخدام DLL المحدد من النافذة افتراضيًا لأي شيء تحت app_code نظرًا لأنه يتم تصنيف كل شيء بشكل ديناميكي.

لا يحتوي نموذج تطبيق الويب على تجميع ديناميكي ، ولكنك تتحكم في الأشياء التي ذكرتها.

إذا كنت تقوم بتطوير n المستوى ، أوصي بشدة نموذج تطبيق الويب. إذا كنت تقوم بعمل موقع ويب محدود أو تنفيذ سريع وقذر ، فقد يكون لدى نموذج موقع الويب مزايا.

يمكن العثور على تحليل أكثر تفصيلاً في:




Related