Поддерживать типы контрактов в отдельной общей сборке - это действительно хорошая идея. Это дает вам возможность добавить Адаптеры , например, для преобразования между типами контракта и другими имеющимися у вас бизнес-объектами или посредниками и т. Д. Между этими типами.
Имеет смысл использовать общие типы , даже если вы не управляете всеми клиентами . Предположим, у вас есть служба, которая используется внутренними приложениями, использующими .NET, а также доверенными третьими лицами в компании-партнере. Партнерские приложения используют Java, Ruby или Python. В этом случае партнер не будет иметь доступа к общим типам, но, опираясь на WSD / XSD, может свернуть свою собственную библиотеку типов на стороне клиента. Это не должно мешать вам предоставлять хороший пакет общих типов для ваших собственных разработчиков.
Эта рекомендация для обмена типами также применяется при использовании интерфейса REST, а не WS / SOAP. При использовании REST WSDL отсутствует, но XSD (или аналогичный) по-прежнему будет использоваться для описания типов сообщений, которыми обмениваются сервер и его клиенты. Так что никаких изменений в советах, независимо от того, используете ли вы SOAP или REST.
РЕДАКТИРОВАТЬ: И это применяется независимо от того, используете ли вы .NET или Java или что-нибудь еще. Если вы контролируете оба конца провода и платформы одинаковы, тогда да, вы должны поделиться типами. Почему бы тебе?