Я разработал приложение (например, ради приложения членского билета),
когда пользователь смахивает свою членскую карту, а приложение извлекает их данные, находит историю покупок, рассчитывает, какую ставку дисконтирования они заслуживают и т. д.
Приложение также выполняет «сопоставление правил»: определение ставки дисконтирования в соответствии с различными правилами в зависимости от стажа работы, баланса банка и т. Д.
Теперь меня попросили создать новый модуль / приложение, когда пользователь проводит пальцем по своей карточке, и система затем отображает некоторую рекламную информацию в соответствии с соответствием правилу (например, рекламный ролик, если остаток на вашем банке> 5000 $, или коммерческий для индивидуальные регистрационные номера, если указанная вами профессия - «md» и т. д.).
Теперь эти два приложения связаны только в том смысле, что:
* они используют некоторые из той же доменной модели (Member
сущность)
* они имеют одни и те же функции (получение информации об участнике из данных карты, сопоставление правил и управление правилами)
* коммерческое приложение должно получать информацию из основного приложения (данные участника)
* Кроме того, я бы хотел, чтобы «инфраструктурные» операции, которые я разработал, были доступны для моего приложения для коммерческого приложения (например, возможность ведения журнала ControllerBase
или httpModule
, которая управляет созданием и уничтожением сеанса - сеанс за аккаунтом). запрос).
Мое существующее приложение является (довольно) простым MVC / n-уровневым приложением.
Моя лучшая идея относительно того, как подойти к этому, состоит в том, чтобы иметь коммерческое приложение как совершенно другое приложение, которое связывается с основным приложением (используя wcf / веб-сервисы) для получения сведений о членах.
Я также хочу, чтобы некоторые общие классы (например, Member
или ControllerBase
) распределялись между двумя приложениями.
Чтобы достичь этого, самый простой способ - создать Common
dll, который будет содержать все, что я хотел бы поделиться.
но мое беспокойство в этом случае заключается в том, что Common
DLL просто превратится в мешанину шансов и заканчивается без каких-либо последовательных отношений (EntityBase
и ControllerBase
и ViewBase
в одной и той же DLL ??)
Любые мысли о вышеупомянутом решении, или о предмете в целом приветствуются.
p.s. это не должно иметь большого значения, но я использую следующие технологии: c # 3.5 (скоро будет 4.0), nHibernate для настойчивости, приложения winforms для терминалов, где клиенты сканируют свои карты, и веб-сайт на основе jQuery для администрирования.