как разделить классы и функциональность между двумя приложениями - PullRequest
1 голос
/ 04 июля 2011

Я разработал приложение (например, ради приложения членского билета),
когда пользователь смахивает свою членскую карту, а приложение извлекает их данные, находит историю покупок, рассчитывает, какую ставку дисконтирования они заслуживают и т. д.
Приложение также выполняет «сопоставление правил»: определение ставки дисконтирования в соответствии с различными правилами в зависимости от стажа работы, баланса банка и т. Д.

Теперь меня попросили создать новый модуль / приложение, когда пользователь проводит пальцем по своей карточке, и система затем отображает некоторую рекламную информацию в соответствии с соответствием правилу (например, рекламный ролик, если остаток на вашем банке> 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 для администрирования.

1 Ответ

1 голос
/ 04 июля 2011

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

...