Высказывание отзывов/мыслей о шаблоне или передовой практике для решения ситуации, которую я видел несколько раз за эти годы, но я не нашел ни одного решения, которое обращается к нему я бы хотел.Дизайн сервиса (WCF, ASMX, SOA)
Вот фон.
Компания имеет 3 приложения, поддерживающие 3 отдельные «направления бизнеса», которые очень связаны друг с другом. Два приложения буквально копируют/вставляют оригинал. Приложения должны иметь возможность расти с разной скоростью и иметь немного другую функциональность. Основные отличия функциональности от полей ввода данных. Различия в основном относятся к одной из следующих категорий:
- Один экземпляр имеет несколько полей , а другой нет.
- Строковое поле имеет максимальную длину 200 в одном экземпляре , но 50 в другом.
- Поля поиска/ссылки имеют различные базовые значения (т. Е. одинаковые структуры таблиц, но наступающие из разных баз данных).
- Поле определяется как предоставленный пользователем, свободный текст, значение в одном экземпляре, , но поиск/ссылка в другом.
Проблема состоит в том, что в компании существуют другие приложения, которые должны потреблять данные из этих трех отдельных приложений, но в идеале, разговаривать с ними ядром/централизованным образом (то есть через центральную службу, а не через 3 отдельных Сервисы). Мой вопрос заключается в том, как обращаться, в частности, с пунктом D выше. Я думаю, что подход «наименьшего общего знаменателя» может быть единственным способом. Например:
<SomeFieldName>
<Code></Code> <!-- would store a FK ref value if instance used lookup, otherwise would be empty or nonexistent-->
<Text></Text> <!-- would store the text from the lookup if instance used lookup, would store user supplied text if not-->
</SomeFieldName>
Другие мысли/идеи по этому вопросу?
TIA!
Существуют вариации как для модели данных, так и для поведения каждого приложения, но на данный момент я пытаюсь учитывать различия в контрактах на схему/модель/данные, а не поведенческие различия. Проблема заключается в том, что у нас нет жестких требований к тому, какие приложения будут потреблять наши данные, а только общее представление о том, что им понадобится и прошлый опыт. Мы пытаемся придумать что-то, что достаточно строго для определения наших структур данных, но достаточно свободно, чтобы допускать различия и рост. – Brian