В вашем примере вы предложили один сервис для статей и один сервис для категорий. Это, конечно, может быть просто примером, но в этом случае не имеет смысла разделять их, поскольку весьма вероятно и распространено иметь запросы и / или процедуры, которые используют как данные категории, так и данные статьи.
Имея это в виду, обычно имеет смысл группировать процедуры по степени их взаимосвязи. Если вы можете разделить все возможные подпрограммы, скажем, на три чистые группы, практически не перекрывая друг друга, то имеет смысл иметь три службы. Если вы не можете четко разделить какие-либо из своих подпрограмм, вам следует ограничиться одним веб-сервисом.
Но если учесть, что ваше утверждение "Нет абстракции" является недостатком одного веб-сервиса - это не обязательно так. Вы всегда можете создать слои абстракции за веб-службой, так что сам класс службы представляет собой просто фасад со множеством тонких вызовов методов, которые в других местах достигают более объемной логики.
В конце концов, единственный подход, который действительно имеет значение, потому что это единственный подход, который работает, заключается в следующем: выбрать самый простой из возможных подходов, только построить то, что вам нужно, чтобы построить как можно меньше слоев. вы можете; добавляйте сложность только тогда, когда вы сталкиваетесь с проблемой, которая не может быть решена лучше , чем путем добавления этой сложности. Всегда сложнее добавить сложность, чем убрать ее.