Мой первый вопрос: могу ли я добавить более 1 файла службы (asmx) и
использовать их в одном проекте веб-сервиса?
Вы можете добавить несколько точек входа в свой веб-сервис, чтобы при вызове разных URL-адресов вызывалось различное поведение. Вы можете сделать это, добавив
[WebMethod]
Перед открытыми методами внутри вашего файла Service.cs.
Как я могу опубликовать их и использовать / звонить / потреблять их с разных сайтов? (Я знаю, как использовать их, когда они находятся в одном проекте, но другой проект немного сбивает с толку)
Вы можете сгенерировать код для взаимодействия с веб-сервисом на основе файла WSDL. Я не уверен, как вы делаете это в .NET, но в Java есть инструмент командной строки для генерации класса для взаимодействия со службой SOAP из других приложений. Это ведь весь смысл веб-сервисов.
Как их защитить, чтобы они были доступны для аутентифицированных пользователей / приложений?
Возможно, вы хотите управлять этим на стороне IIS. Несмотря на то, что, возможно, возможно выполнить некоторую базовую аутентификацию для вашего веб-сервиса, но с проверкой имени пользователя, может оказаться более эффективным справиться с этим, прежде чем вы достигнете своего веб-сервиса.
Вы также можете настроить базовую аутентификацию, используя атрибут аутентификации файла Web.config.