Какие типичные шаблоны используются для системы, которая объединяет данные из многих источников с нестандартными API-интерфейсами? - PullRequest
0 голосов
/ 13 октября 2010

Я никогда не спрашивал ничего такого общего раньше, и я не уверен, будет ли это звучать так, будто я прошу кого-то сделать мою работу за меня. Я опытный программист, но я немного новичок в шаблонах дизайна, о которых говорят на таких сайтах.

Сводка параметров:

(1) Существуют 3 внешние системы, которые фактически являются хранилищами данных

Система1 - ОТДЫХ System2 - WSDL System3 - COM Interop

(2) Сущности данных имеют значение в 2 из систем, перемещаясь как в (из 2 соответствующих систем), так и из них

(3) Все это управляется приложением диспетчера синхронизации.

Краткое описание реализации:

(4) Объекты данных определяются интерфейсами, расположенными в отдельном пространстве имен.

IFoo IBar IBaz

(5) Работа выполняется классами Utility, которые живут в пространстве имен, выделенном для системы.

namespace MyCompany.Integrations.System1 {
 public static class Utility {
  public static List<IFoo> GetFoos(DateTime since) {...}
  public static void SaveBazes(List<IBaz> bases) {...}
 }
}

namespace MyCompany.Integrations.System2 {
 public static class Utility {
  public static void SaveFoos(List<IFoo> foos) {...}
  public static List<IBar> GetBars(DateTime since) {...}
 }
}

namespace MyCompany.Integrations.System3 {
 public static class Utility {
  public static void SaveFoos(List<IFoo> foos) {...}
  public static void SaveBars(DateTime since) {...}
 }
}

Вопрос: На какие существующие шаблоны, если таковые имеются, это похоже, и есть ли области, которые я мог бы изучить, чтобы помочь мне узнать, как улучшить мою архитектуру? Я знаю, что классы Утилиты не ОО. Я еще не понял, как расположить классы, чтобы сделать это простым способом.

Дополнение: Я думал больше и, основываясь на одном ответе, думаю, я не был достаточно конкретен. Я надеюсь, что кто-то, у кого было больше опыта, скажет мне, как применить некоторые OO-паттерны и уйти от уроков Utility

Ответы [ 2 ]

2 голосов
/ 13 октября 2010

10 000-футовый ответ:

Вы можете найти Дизайн, управляемый доменом и Чистый код , полезный, поскольку он дает вам набор шаблоновхорошо работать вместе и набор принципов для оценки, когда применять шаблон.Ресурсы DDD: книга , бесплатное быстрое вступление , отличное прохождение .Ресурсы чистого кода: сводка , Принципы SOLID .

Конкретный ответ:

Вы уже используете Шаблон репозитория (ваши служебные классы), который я, вероятно, также использовал бы здесь.Статические члены могут затруднить проверку кода , но в остальном это не проблема.Если хранилища становятся слишком сложными, разбейте низкоуровневую связь API на Шлюзы .

Поскольку объект разделен на несколько источников данных, рассмотрите возможность моделирования этого явно.Например: Person, HumanResourcesPerson, AccountingPerson.Используйте имена, понятные внешним системам и их владельцам бизнеса (например, Сотрудник, Ресурс).См. Принцип единой ответственности и Вездесущий язык по некоторым причинам.Это могут быть полные объекты или просто объекты передачи данных (DTO) в зависимости от того, насколько они сложны.

Синхронизация может выполняться Службой приложений , которая координирует хранилища и объекты.

1 голос
/ 13 октября 2010

Звучит так, будто вам нужен шаблон Finder, который может найти репозитории, верно ли мое понимание? Если так, то изучите паттерн Finder в Google, там должна быть некоторая информация.

Я сделал быстрый поиск и нашел это:

http://martinfowler.com/articles/injection.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...