• Как правильно писать "плагинное" приложение?

    VenomBlood
    @VenomBlood
    Посмотрите в сторону MEF и Unity (если говорить про .net), позволят создавать достаточно хорошие расширяемые системы.
    Если смотреть с более общей точки зрения, то «плагинабельность» — это достаточно широкая и проработанная тема.
    Тут встают вопросы: какая именно плагинабельность вам нужна?

    Нужно ли взаимодействие на базе SOA? нужна ли изоляция плагинов в отдельный домен? Можете ли вы обойтись простой структурой подлкючения модулей, или надо использовать шину сообщений? Нужно ли разграничение по уровням доверия и, соответственно, раздельный API?
    Также вопрос по поводу инъекции зависимостей — будут ли ваши плагины больше отдельными модулями, или они будут тесно интегрироваться в существующую среду (например плагин переопределяющий нотификацию) и возможно использование DI.

    Краткого совета «как писать» здесь быть не может, нужно знать задачу и все нюансы.
    Если говорить просто о каком-либо фреймворке для обеспечения плагинабельности — почитайте статьи про MEF, они на английском, но дадут общее представление об одном из возможных путей решения проблемы.
    Ответ написан
    1 комментарий
  • .Net Неверный формат аргумента функции: ArgumentException или FormatException?

    VenomBlood
    @VenomBlood
    На мой взгляд форматные исключения возникают в строках или при явной передаче объекта который может иметь несколько «форматов» представления (хотя в этом случае лучше реализовать конвертер по возможности и не выкидывать эксепшены вообще).
    Если мы передали вообще неверные данные — ArgumentException, если передали верные данные, но в неверном формате — FormatException. Только здесь надо определять уже в контексте конкретного приложения, могут ли входные данные быть вообще неверными (имея один формат представления) или все данные верны, но из за разных форматов может возникнуть ошибка. Например при формировании даты из строки для строки типа «dfdfdsfsf» я бы выдавал исключение неверного формата, а для данных «32.09.2010» — ошибку неверного аргумента (генериться оно будет соотв. уже на более низком уровне, при проверке даты).
    Ответ написан
    Комментировать