#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 термин «приложение» подразумевает, что оно предварительно скомпилировано, тогда как «сайт» подразумевает, что это не так. Я бы выбрал первое.