2016-03-25 3 views
0

В настоящее время работает с клиентом, который имеет проект/структуру Web Api, который они используют для нескольких клиентов. 98% кода используется повторно, но они копируют и вставляют репозиторий для каждого нового клиента. После копирования и вставки единственные вещи, которые действительно меняются, - это Web.Configs и время от времени пару расширений к OOTB api. Например. возможно, они выставляют пользовательский модуль в api api/rockets/ или расширяют существующий api и добавляют некоторые новые методы &.Стратегия совместного использования проектов веб-API C#

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

ответ

2

Подход git - это один из способов сделать это, но я, вероятно, поеду на пакеты Nuget.

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

+0

Я хочу сделать это, но как насчет всего, что находится в базовом веб-проекте, например startup.cs (owin stuff), app_start и т. Д.? – Nix

+0

Одной из замечательных особенностей Nuget является то, что вы можете включать в себя конфигурации и даже исходный код, а затем вносить в него преобразования. https://docs.nuget.org/Create/Configuration-File-and-Source-Code-Transformations. В любом случае, компромисс - это сложность. Поскольку нет серебряной пули, я предлагаю всегда стараться держать ее как можно проще. Если вам нужно слишком далеко заходить в функции Nuget, чтобы заставить его работать, это, вероятно, будет в неправильном направлении, и если это так, то подход на основе forking в git может быть не таким уж плохим. –

0

Одним из вариантов является создание единого веб-проекта для нескольких клиентов, использующих «Районы». Таким образом, вы можете включать/выключать каждый из них индивидуально.

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

+0

У нас есть довольно строгие требования безопасности, чтобы сохранить envs sep. Проблема для нас - это не так просто, как просто разветвить bl, мы действительно хотим ее расширить и настроить. Я просто не могу понять, как структурировать его в .net, чтобы сделать его расширяемым. – Nix

Смежные вопросы