ASP.NET Приложение веб-службы против ASP.NET Веб-служба

#asp.net #web-services

#asp.net #веб-службы

Вопрос:

Я новичок в .NET. Сегодня я узнаю о веб-службе. Я нашел два способа создания веб-службы.

Первый из них — Щелкните правой кнопкой мыши на решении << Добавить новый проект << ASP.NET Приложение веб-службы

Второй вариант — щелкните правой кнопкой мыши на решении << Добавить новый веб-сайт << ASP.NET Веб-сервис

В чем разница между ними?

Ответ №1:

Приложение веб-службы предварительно компилирует весь ваш код в singe.dll, которая будет помещена в корзину. Итак, если у вас есть несколько файлов веб-службы и код в каждом из них, все они будут скомпилированы в общую dll. Эта библиотека будет загружаться каждый раз при вызове любой из служб.

Веб-сайт веб-службы будет хранить файлы кода в каталоге App_Code, и каждая служба будет иметь свой собственный код, скомпилированный в собственную отдельную библиотеку во Временном Asp.Net папка с файлами. Это позволяет загружать каждую библиотеку в память независимо.

У них обоих есть свои преимущества и недостатки. Единую библиотеку легче перемещать / обновлять, чем модель веб-сайта, но модель веб-сайта допускает разделение использования памяти, предотвращающее влияние проблемы в одной службе на отдельную службу.

Редактировать:

Что я подразумеваю под разделением использования памяти, так это то, что каждый.dll загружается в зависимости от процессов, необходимых для завершения транзакции. The w3wp.exe процесс, который управляет потоками, будет запускать отдельного пользователя.библиотеки DLL, необходимые для завершения запроса / ответа. В приложении эти .Библиотеки DLL никогда не меняются. Все они загружаются в процесс независимо от того, нужны они или нет. На веб-сайте каждая страница или служба компилируется как отдельная библиотека. Итак, если w3wp.exe для выполнения задачи необходимо загрузить App_Code/MyService_as33fweqs.dll (динамически генерируемое временное имя скомпилированной библиотеки dll), оно меньше и потенциально быстрее, поскольку содержит только то, что ему нужно. Это позволяет w3wp.exe независимо генерировать потоки различной сложности / потребности в памяти.

Комментарии:

1. спасибо за ответ, Джоэл. Не могли бы вы, пожалуйста, уточнить «разделение использования памяти»?

2. @Mohit Kumar: Я кое-что добавил к ответу, чтобы описать его немного более полно. Однако я не уверен, добавил ли я ясности или грязи.

Ответ №2:

Вам не следует использовать ни то, ни другое. Они используют устаревшую технологию «ASMX». Вся разработка новых сервисов должна осуществляться в WCF.

Используйте «Приложение-службу WCF» или «Библиотеку служб WCF», или одну из более специфичных версий.

Я также не рекомендую когда-либо использовать «Новый веб-сайт». Это ошибка, допущенная Microsoft в процессе попытки приспособить людей, привыкших к PHP и подобным технологиям. Оно отличается от любого другого вида .NET-проекта и ведет себя так, как никто другой никогда бы не ожидал. Существует очень мало причин использовать его для чего-либо нетривиального.

Кстати, я считаю веб-службы нетривиальными, поэтому никогда не использовал бы веб-сайт «project» для веб-служб.

Ответ №3:

В ASP.NET термин «приложение» подразумевает, что оно предварительно скомпилировано, тогда как «сайт» подразумевает, что это не так. Я бы выбрал первое.