По сути, он используется для разделения определения ваших контрактов данных между сервисом и клиентом.
Это очень полезно, когда вы вычислили свойства или вспомогательные методы в ваших контрактах данных.
Это также способ избежать восстановления ссылки на службу при изменении только контрактов данных.
Предположим, у вас есть две службы, использующие один и тот же класс A, и вы предоставляете методы с параметрами или возвращаемыми значениями типа A. Если вы используете обычные ссылки на службы в клиентском приложении, которое подключается к обеим службам, у вас будет два класса A на вашем клиенте. приложение, и они даже не совместимы.
Если вы поместите A в отдельную сборку и поделитесь ею между клиентом и службами (и определите «Повторное использование типов ...» в ссылках на службы), то вы сможете повторно использовать один и тот же класс везде и избежать дублирования некоторых классов.