Я не верю, что вы ищете веб-сервисы. Веб-сервисы не являются общим средством развязки и не должны использоваться как один.
Прежде всего, я бы сказал, что прежде чем ссылаться на существующую библиотеку классов .NET, нужно сначала спросить себя, на какой риск вы рискуете, если обращаетесь к нему напрямую? Или что мне делать, если API / функциональность этой библиотеки изменятся?
Если вы ссылаетесь на System.dll, то вы знаете, что она не изменится (за исключением обновлений .NET Framework), и я бы рекомендовал ссылаться на нее напрямую. Здесь нет никакого реального риска. Если указанная библиотека вызывает большие подозрения или часто изменяется, то вы хотите защитить свою библиотеку-потребителя от зависимости от нее.
Есть много разных способов отделить вашу библиотеку от библиотеки, которую вы используете. Как упоминает Адриан К., «Инъекция зависимости» и «Инверсия контроля» - хорошее место для начала. Они также могут быть излишними, и может быть достаточно простого применения шаблона Adapter . Это действительно зависит от ситуации.