Да. ServiceStack требует, чтобы у вас был отдельный класс для каждой веб-службы, хотя, если вы используете REST (т. Е. Наследуете от RestServiceBase), вы можете реализовать несколько HTTP-глаголов в одном и том же ресурсе (иначе говоря, Request) в одной и той же веб-службе, например:
public class CustomersService : RestServiceBase<Customers>
{
OnGet(){...}
OnPost(){...}
OnDelete(){...}
OnPut(){...}
}
Это позволяет вам предоставить несколько реализаций для следующих действий HTTP:
GET /customers
GET /customers/1
POST /customers
PUT /customers/1
DELETE /customers/1
Хотя, если вы используете SOAP, вы ограничены одним методом RPC для каждого веб-сервиса, поскольку SOAP поддерживает только HTTP POST.
Лучший способ сделать это - наследовать от ServiceBase и реализовать метод Run () , который будет вызываться независимо от того, какой HTTP-глагол или конечная точка использовались для вызова службы ,
Это означает, что вам нужно ограничить себя одним МЕТОДОМ для каждой веб-службы, например, Вы должны сделать это:
public class GetCustomersService : ServiceBase<GetCustomers> {...}
public class PostCustomersService : ServiceBase<PostCustomers> {...}
public class DeleteCustomersService : ServiceBase<DeleteCustomers> {...}
public class PutCustomersService : ServiceBase<PutCustomers> {...}