Мне действительно нравится идея помещать DataContracts (и Service Contracts) в сборки, а затем делиться ими со службами и клиентами и т. Д., Но я не вижу веской причины объединять их в одну монолитную сборку.
Имеет больше смысла помещать их в сборки в зависимости от того, как они используются. Если есть группы из них, которые совместно используются несколькими службами и клиентами, то это одна сборка и т. Д.
Это избавляет от необходимости выставлять метаданные, и я думаю, что это позволит вам делать изящные вещи, такие как подключение к событиям сериализации как на стороне сервера, так и на стороне клиента.