Мне интересно, есть ли разумный способ спроектировать C # dll, чтобы впоследствии можно было перестроить его и использовать новую версию в качестве замены в «безопасном» режиме.Безопасный в основном означает, что подписи не меняются.
Я размышлял о различиях между использованием базы данных, прежде всего через LINQ, и использованием ее преимущественно с хранимыми процедурами.Преимущество хранимых процедур заключается в том, что вы можете изменить любую отдельную хранимую процедуру без повторной компиляции / повторной публикации вашего приложения.Итак, я обдумывал, что нужно для того, чтобы получить аналогичную возможность, создав решение, в котором весь код, ориентированный на базу данных, находился в отдельном проекте, используя такие забавные вещи, как файлы dbml и еще много чего.Очевидно, что если вы засыпаете мусор внутри одной из ваших замещающих функций LINQ, замена вызовет проблемы, но этот недостаток существует.
Основные правила, которые я придумал, таковы:
- Если модель базы данных изменится, пришло время выполнить перекомпиляцию.
- Защита от изменения любых сигнатур.Нельзя удалять существующие общедоступные методы.
Моя интуиция заключается в том, что большая часть этой работы будет включать использование интерфейса, на который ссылается отдельный проект и который используется основным проектом для того, чтобысделать все звонки.
Итак, имеет ли эта идея смысл?Есть ли какие-либо стратегии, которые следует использовать, чтобы сделать это достаточно безопасным (т. Е. Без добавления большого количества нового риска, помимо того, что связано с редактированием хранимых процедур без перестройки приложения)?