Что рекомендуется для совместного использования данных конфигурации между несколькими связанными приложениями в решении winforms? Два возможных решения, которые я представляю, - это использование настраиваемого раздела в файле machine.config (?), А другое - создание дополнительного приложения-службы конфигурации, которое поддерживает настройки через свой класс Properties и обрабатывает запросы на получение и установку этих настроек из все остальные приложения.





Одна из проблем с приложением службы конфигурации заключается в том, что вам потенциально может потребоваться аутентификация / авторизация вызывающих лиц службы, если настройки содержат конфиденциальные данные (например, пароли базы данных). Может или не может быть проблемой в зависимости от вашей среды.
Точно так же вы можете использовать какой-либо другой общий ресурс для хранения настроек (общий XML-файл, база данных), но, конечно, вам нужно каким-то образом «выполнить загрузку», т.е. каждое приложение должно будет иметь информацию, чтобы найти общий ресурс (URL-адрес службы конфигурации, расположение XML-файла, строка подключения для базы данных конфигурации).
Другой момент заключается в том, что служба конфигурации потенциально создает дополнительную единую точку отказа для всех зависимых приложений. Или у вас могут быть избыточные службы конфигурации, а затем вы снова возвращаетесь к проблеме синхронизации - сложности, которая часто не оправдана только для экономии усилий по обновлению нескольких файлов конфигурации.
Лично я обычно живу с независимыми файлами конфигурации в каждом приложении. В некоторых случаях предоставление администраторам инструментов для автоматизации обновления нескольких файлов конфигурации (например, для изменения паролей базы данных, которые используются в нескольких приложениях).
Аутентификация между приложениями в мире .NET относительно проста. Вы можете запускать каждое приложение под конкретным идентификатором приложения и проходить проверку подлинности в общей службе с помощью проверки подлинности Windows. Авторизация - это больше работы: вы можете защитить конфигурацию конфиденциального приложения от доступа других приложений.
Не могли бы вы подсказать, где я могу прочитать об этом на самом деле?
Собственно аутентификацию делаете? Это зависит от того, как вы общаетесь. Например. если вы вызываете веб-службу WCF из своего приложения, вы должны настроить как клиентские, так и серверные конечные точки для использования проверки подлинности Windows, и ваше приложение будет работать под идентификатором, известным службе. Для этого просто посмотрите документацию WCF.
Я очень мало знаю об этом, но я думал о линиях клиентских приложений до WPF, олицетворяющих пользователя, созданного для них, и только этого пользователя, имеющего доступ либо к библиотеке GAC, либо к службе Windows, которая обслуживает информацию о конфигурации. Тем не менее, я хотел бы изучить WCF.
Интересный момент об аутентификации. Я потратил много времени на размышления о том, как аутентифицировать одно приложение для другого.