515 1395/02/27
متن مطلب

مقایسه پروژه های Web Site و Web Application در Visual Studio

مقایسه پروژه های Web Site  و Web Application  در Visual Studio

در ویژوال استودیو شما می توانید پروژه Web Application  ویا Web Site  ایجاد نمایید. شما Web Application  را با گزینه New Project  ایجاد و با Open Project  باز میکنید ولی Web Site  را با گزینه New Web Site ایجاد و با Open Web Site باز می نمایید. قبل از ساخت یک پروژه جدید وب لازم است از تفاوت های این دو نوع آگاهی کسب کرده و در انتخاب نوع پروژه دقت نمایید ، چرا که تغییر و تبدیل یک نوع به نوع دیگر علاوه بر سختی موجب اتلاف زمان شده و پروژه را مستعد خطا خواهد کرد.

نکته:

برای ایجاد یک پروژه جدید ما(ماکروسافت) Web Application را به شما پیشنهاد میکنیم.   هرچند این مبحث مطالبی را مبنی بر فواید Web Site  معرفی خواهد کرد ولی اکثر توسعه دهندگان وب که Web Site را برگزیده اند سرانجام مضراتی از آن را میابند که سنگینی آن بیشتر از فوایدش می باشد. برای مثال تمامی خصیصه های (feature فیچر)   ASP.net لزومآ برای وب سایت در دسترس نخواهد بود مثلآ از ویژوال 2012 به بعد ابزاری برای تولید پروژه های وب وجود دارد که فقط برای Web Application در اختیار خواهد بود (برای کسب اطلاعات بیشتر می توانید مطلب Creating an ASP.net Web Project in Visual Studio  را مطلاعه نمایید).

سناریو :

سناریویی که مبنی برا انتخاب Web Application  می باشد به شرح زیر است:

  • شما نیاز به استفاده از Edit And Continue  در دیباگر ویژوال استودیو دارید.
  • تمامی کدها و فایل ها و کلاس هایی که با صفحات ASP.net  مرتبط هستند برای تست بصورت واحد و یکپارچه در نظر گرفته می شوند.
  • شما برای کلاس هایی که وابسته به صفحات هستند و همچنین برای کنترل ها و کلاس های منحصر آن باید ارجاع داشته باشید.
  • وابستگی در حالتی که چندین پروژه مرتبط به هم دارید توسط شما مشخص می شود.
  • برای کل سایت در هنگام کامپایل فقط یک اسمبلی ساخته می شود.
  • کنترل نام اسمبلی ها و همچنین شما ورژن ایجاد شده برای پروژه دست شماست.
  • برای کامپایل پروژه می توانید MSBuild ویا Team Build  را انتخاب کنید برای مثال می توانید مراحل Prebuild یا Postbuild را مشخص کنید.
  • نیازی به قرار دادن سورس برنامه روی سرور نیست.

سناریویی که مبنی برا انتخاب Web Site  می باشد به شرح زیر است:

  •  یک پروژه در بر دارنده ی  کدهای C#  و هم کدهای Visual Basic  می باشد. ( درحالی که بصورت پیشفرض در Web Application فایل پروژه بر مبنای زبان برنامه شما کامپایل می شود ، هرچند می توان این حالت پیشفرض را تغییر داد ولی این امر می تواند اندکی مشکل باشد.)
  • شما می توانید سایت ایجاد شده را بصورت Real Time   توسط FTP  باز نموده و آپدیت نمایید.
  • برای گسترش (deploy ) پروژه مجبور به کامپایل صریح آن نیستید.
  • اگر پروژه را کامپایل نمایید کامپایلر به ازای هر صفحه و یا هر پوشه یک فایل اسمبلی جداگانه خواهد ساخت.
  • برای تغییر یک فایل به تنهایی می توانید فقط آنرا تغییر داده و بر روی سرور قرار دهید.
  • حتی بعد از کامپایل هم میتوانید صفحات ASP.net  را بدون نیاز به کامپایل دوباره کل سایت تغییر داده و جایگزین نمایید.
  • سورس کامل پروژه برای اجرا باید روی سرور قرار گیرد.

تفاوت ها در یک نگاه:

  •  

پروژه های Web Application    

پروژه های Web Site

ساختار فایل پروژه

فایل برنامه (.csproj / vbproj) دربردارنده اطلاعاتی از جمله لیست فایل ها و رفرنس ها پروژه به پروژه دیگر خواهد بود.

هیچ فایل برنامه ای وجود ندارد و تمامی فایل هایی که داخل پوشه می باشند جزو فایل های   سایت شناخته می شوند.

  •  
  • شما پروژه را در سیستم خود کامپایل می کنید.
  • بصورت پیشفرض کامپایل کد ها در یک اسمبلی قرار می گیرد.
  • سورس کدها بصورت اتوماتیک در سرور توسط Asp.net  با اولین درخواست کامپایل میشوند.

(البته شما می توانید کامپایل را در سیستم خود نیز انجام دهید)

  • بصورت پیشفرض کامپایل برای هر کلاس یک اسمبلی جدا می سازد.

فضا های نام

  •  
  • ها بصورت صریح در صفحات و کلاس ها و کنترل ها افزوده می شود.

هیچ namespace ای بصورت پیشفرض اضافه نمی شود (شما می توانید بصورت دستی آنها را اضافه کنید)

  •  
  •  

اسمبلی تولید شده در مرحله کامپایل را روی سرور قرار می دهید

اکثر مراحل کامپایل توسط ابزارهای ارائه شده ویژوال استودیو انجام می شود.

کل سورس پروژه روس سرور قرار میگیرد.

اکثر مراحل کامپایل توسط ابزارهای ارائه شده ویژوال استودیو انجام می شود.

 

ساختار فایل پروژه:

پروژه های Web Application از فایل پروژه ویژوال استودیو (.csproj / .vbproj) برای نگهداری اطلاعات پروژه استفاده می کنند. با این امکان می توان فایل هایی را که در پروژه دخیل هستند و یا باید کامپایل شوند را به تفکیک مشخص کرد.

در مورد Web Site تمامی فایل هایی که در داخل پوشه برنامه قرار دارد به صورت پیش فرض جزیی از برنامه تلقی شده و کامپایل خواهند شد و برای اینکه فایلی را بخواهید استثنا کنید یا باید آنرا حذف کنید و یا پسوند آنرا به نامی که توسط سرور IIS قابل شناسایی نیست تغییر دهید.

فایده فایل پروژه یعنی همان (.csproj / .vbproj) در Web Application   :

می توان فایلی را به طور موقت از برنامه حذف کرد بدون نگرانی از آنکه فایل بصورت کلی حذف شود ، چرا که فایل در ساختار برنامه باقیست. برای مثال اگر صفحه ای برای توزیع آماده نیست شما می توانید به راحتی آنرا از برنامه خارج کنید (Exclude) و برنامه را کامپایل نمایید و بعد از اینکه این صفحه هم آماده شد دوباره آن را وارد پروژه نمایید (include ) که اهمیت این امر در مواردی که از برنامه های کنترل سورس استفاده می کنید دوچندان می شود.

فایده عدم استفاده از فایل برنامه در Web Site :

شما مجبور به کنترل و شخصی سازی ساختار فایل برنامه در ویژوال استودیو نیستید و به راحتی هر فایل یا صفحه ای را که میخواهید با کپی کردن به پوشه و یا حذف کردن از آن توسط فایل اکسپلورر انجام می دهید.

کامپایل :

برای برنامه های Web Application  شما بصورت معمول پروژه را Build منمایید و تمامی کد های صفحات و همچنین کلاس ها به صورت یک فایل اسمبلی در پوشه bin   ذخیره می گردد.

برای Web Site شما مجبور به کامپایل دستی پروژه نیستید و می توانید از Batch-Compile استفاده کنید و همچنین به ازای هر صفحه و کلاس شما یک فایل اسمبلی خواهید داشت.

مزایای کامپایل در Web Application  :

  • می توانید از MSBuild استفاده کنید.
  • می توانید خصیصه های اسمبلی از جمله نام و ورژن را به راحتی مدیریت نمایید.
  • کامپایل قبل از توزیع برنامه این مزیت را دارد که کاربران مجبور نیستند منتظر کامپایل برنامه در سرور باشند
  • مدیریت دقیق روی فایل ها و ساختار برنامه و همچنین کلاس ها و ارجاعات خواهید داشت.

مزایای کامپایل در Web Site  :

  • می توانید هر صفحه را که نیاز دارید بدون در نظر گرفتن آماده شدن دیگر صفحات تست و اجرا نمایید.
  • آپدیت و جایگزینی فایل ها به راحتی صورت میگیرد چرا که اسمبلی تمام فایل ها بصورت منحصر همان صفحه ایجاد خواهد شد.
  • ایجاد شدن چند اسمبلی می تواند در برخی پروژه ها به نغع برنامه بوده و performance  را بالا ببرد برای مثال در حالتی که یک سایت با صفحات زیاد دارید و برخی صفحات به نسبت دیگر صفحات خیلی کمتر درخواست می شوند.
  •  

هیچ فرقی بین Web Application   ,  و web Site از نظر performance  وجود ندارد مگر درحالت ذکر شده در بالا و در سایت های خیلی بزرگ.

انتشار : (Deployment)

در web Site کل فایل های پروژه را بر روی سرور قرار می دهید درحالتی که در Web Application  فایل های برنامه بصورت اسمبلی ها (.dll )   روی سرور قرار میگیرد. همین امر می تواند در برخی حالت ها مثلآ زمانی که از هاست share شده استفاده می کنید خیال شما را از بابت سورس برنامه مطمئن سازد.

برای  Web Site نیز این مزیت وجود دارد که برای انجام تغییرات کوچک مجبور به کامپایل و آپلود دوباره کل پروژه نیستید.

امیدوارم این مطلب مفید واقع شود. (ترجمه : علی تنها)

لینک مطلب اصلی

اشتراک گذاری در شبکه های اجتماعی