DLL бизнес-логики - PullRequest
1 голос
/ 16 мая 2010

У меня есть проект, где некоторая бизнес-логика отделена от проекта DLL, эта DLL содержит бизнес-логику для этого программного обеспечения для конкретного клиента.

Теперь у меня проблема после того, как другой клиент с другими правилами хочет реализовать программное обеспечение, мне нужно, чтобы приложение загрузило соответствующую DLL в соответствии с клиентом, использующим программное обеспечение, учитывая, что эта DLL содержит те же имена функцийно разные тела.

Я использую c # 3.5, есть ли способ сделать это ??

Ответы [ 3 ]

5 голосов
/ 16 мая 2010

Да, конечно. Вы можете выполнить ветвление проекта, изменить реализацию классов, сохранить одинаковые подписи всех классов и членов класса, перекомпилировать, и ваша бизнес-логика будет работать так, как вы хотите.

Но , это не хорошо . У вас будет две разные ветви с разными реализациями, для которых вам придется синхронизировать подписи навсегда . И тогда у тебя будет другой клиент, и другой. Это будет кошмар, который никогда не кончится.

Возможно ли, что различные функции могут быть выделены? Вы можете:

  • поместить конфигурацию в базу данных или файлы конфигурации (возможно, XML). По этой причине большая часть вашего приложения должна работать на основе таблиц или конфигурационных файлов.
  • вы можете внедрить плагинов и провайдеров для мест, где код должен отличаться.
  • своего рода oldschool, но вы можете реализовать функциональность plug-and-play, используя часть CodeDom , которая компилирует код (игнорируйте часть о выводе кода на экран). Затем вы можете добавить функциональность в легко редактируемые текстовые файлы.
  • взгляните на Managed Extensibility Framework , созданный именно для этого типа вещей.
1 голос
/ 15 декабря 2011

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

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

1 голос
/ 16 мая 2010

Код бизнес-логики с интерфейсом - IBusinessLogic.

Вы можете хранить обе бизнес-логики в одной сборке и использовать внедрение зависимостей на основе конфигурации, чтобы указать, какая бизнес-логика используется при развертывании на клиенте.

...