Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация глобального класс с настройками / 25 сообщений из 35, страница 1 из 2
20.03.2013, 00:24
    #38190671
GavRYshA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
Имеется программа в которой необходимо сделать так сказать глобальный класс, который был бы доступен из других класов, но так чтобы не передать экземпляр класса настроек в каждый другой класс.
Возможно ли подобное сделать и как лучше?
...
Рейтинг: 0 / 0
20.03.2013, 00:56
    #38190696
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshA,

DI контейнер решит проблемы отца русской демократии
...
Рейтинг: 0 / 0
20.03.2013, 02:00
    #38190718
Верблюд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
ИзопропилGavRYshA,

DI контейнер решит проблемы отца русской демократии

:-// В режиме сервис-локатора, что ли? Или зачем тут DI?
...
Рейтинг: 0 / 0
20.03.2013, 02:04
    #38190720
Верблюд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshAчтобы не передать экземпляр класса настроек в каждый другой класс

А зачем они нужны в каждом другом классе? В "другие" классы не настройки должны передаваться, а объекты, свойства которых от настроек зависят, или инициализированные настройками фабрики таких объектов. И да, DI контейнер тут не нужен вообще.
...
Рейтинг: 0 / 0
20.03.2013, 09:50
    #38190939
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
ИзопропилGavRYshA,

DI контейнер, статический класс или синглетон решит проблемы отца русской демократииДобавил.
...
Рейтинг: 0 / 0
20.03.2013, 09:51
    #38190941
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
ВерблюдИ да, DI контейнер тут не нужен вообще.Если он в проекте уже присутствует - наверное лучше через него. Тут вопрос - нужен ли он в этом проекте.
...
Рейтинг: 0 / 0
20.03.2013, 12:42
    #38191238
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
сделать подобное возможно, а как лучше, на это есть много разных мнений, и каждый считает что его мнение лучше.
...
Рейтинг: 0 / 0
20.03.2013, 13:41
    #38191338
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
sldсделать подобное возможно, а как лучше, на это есть много разных мнений, и каждый считает что его мнение лучше.Правильное мнение одно: вариантов решения несколько, выбор зависит от решаемой задачи. Остальные мнения неправильные.
...
Рейтинг: 0 / 0
21.03.2013, 09:04
    #38192561
GavRYshA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
Спасибо за ответы.
Буду передавать экземпляр настроек в другие классы ибо пока не знаю как работает DI контейнер:)
...
Рейтинг: 0 / 0
21.03.2013, 13:06
    #38193011
Верблюд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshA,

1. Смысл передавать настройки целиком?
2. Да и сами настройки обычно передавать смысла нет. Например, вместо строки подключения обычно лучше отдавать фабрику, которая умеет создать соединение.
...
Рейтинг: 0 / 0
21.03.2013, 13:26
    #38193089
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshAСпасибо за ответы.
Буду передавать экземпляр настроек в другие классы ибо пока не знаю как работает DI контейнер:)Есть опасения, что в приложении может появиться второй экземпляр настроек? В противном случае статический класс или синглетон удобнее.
...
Рейтинг: 0 / 0
21.03.2013, 14:13
    #38193220
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
я бы использовал статический класс и не парился.
хотя конечно по такому скудному описанию более конкретно сказать нельзя.
...
Рейтинг: 0 / 0
21.03.2013, 14:33
    #38193274
GavRYshA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
вкратце расскажу принцип работы программы.
Когда открывается программа выскакивает окно для ввода логина и пароля для подключения к базе sql сервера. После ввода пароля программа получает ID пользователя под которым осуществился вход и открывается главное окно программы в котором и будет происходить вся работа. Этот ID я решил хранить в отдельном классе. Позже этот класс дополниться еще настройками, которые по окончанию работы запишутся в файл, чтобы при открытии по ID найти юзера в БД и заполнить поле "логин" автоматом.

Вкратце так)
...
Рейтинг: 0 / 0
21.03.2013, 14:58
    #38193344
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshA,

То есть строка соединения с базой не зависит от логина пользователя?)))
...
Рейтинг: 0 / 0
21.03.2013, 14:58
    #38193345
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
P.S. что мешает просто логин хранить?
...
Рейтинг: 0 / 0
21.03.2013, 15:52
    #38193487
GavRYshA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
LelouchGavRYshA,

То есть строка соединения с базой не зависит от логина пользователя?)))

Да не зависит, пользователей будет много и я решил их закинуть всех в таблицу. От ID пользователя будет зависеть какие данные, стоящие под этим ID, он сможет редактировать.
...
Рейтинг: 0 / 0
21.03.2013, 16:21
    #38193578
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshA,

То есть, любой злоумышленник, получивший копию программы, сможет получить логин и пароль пользователя, под которым может делать все что угодно .) Что мешает использовать логины SQL сервера? У них кстати тоже есть ID, который можно получить и обработать.
...
Рейтинг: 0 / 0
21.03.2013, 17:07
    #38193677
GavRYshA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
LelouchGavRYshA,

То есть, любой злоумышленник, получивший копию программы, сможет получить логин и пароль пользователя, под которым может делать все что угодно .) Что мешает использовать логины SQL сервера? У них кстати тоже есть ID, который можно получить и обработать.

не вижу разницы) зная логин и праль от SQL сервера тоже можно натворить многое.
...
Рейтинг: 0 / 0
21.03.2013, 18:14
    #38193786
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
using System;

namespace Application
{
    /// <summary>
    /// Глобальный класс с настройками
    /// </summary>
    public class ExecutionContext
    {
        private static ExecutionContext context;

        public static ExecutionContext Current
        {
            get { return context ?? (context = new ExecutionContext()); }
        }

        /// <summary>
        /// Пользователь, под которым осуществился вход
        /// </summary>
        public User User { get; set; }
    }

    public class User
    {
        public int ID { get; set; }
        public string Login { get; set; }
    }

    class Program
    {
        static void Main()
        {
            // Типа осуществили вход
            ExecutionContext.Current.User = new User { ID = 1, Login = "Vasya" };

            // Типа запускаем программу
            var instance = new Apllication.SomeNamespace.SomeClass();

            // Программа что-то делает
            instance.DoSomething();

            Console.ReadKey();
        }
    }
}

namespace Apllication.SomeNamespace
{
    using Application;

    public class SomeClass
    {
        public void DoSomething()
        {
            Console.WriteLine("User ID: {0}", ExecutionContext.Current.User.ID);
            Console.WriteLine("User Login: {0}", ExecutionContext.Current.User.Login);
        }
    }
}
...
Рейтинг: 0 / 0
21.03.2013, 18:22
    #38193795
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshA,

В Вашем случае их даже узнавать не надо, они написаны в самой программе.
...
Рейтинг: 0 / 0
21.03.2013, 18:24
    #38193799
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
Это все равно что на кредитке написать ее пин-код)
...
Рейтинг: 0 / 0
21.03.2013, 19:33
    #38193873
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
LelouchТо есть, любой злоумышленник, получивший копию программы, сможет получить логин и пароль пользователя, под которым может делать все что угодно .)Каким образом злоумышленник получит пароль пользователя?
...
Рейтинг: 0 / 0
21.03.2013, 20:38
    #38193947
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
skyANALelouchТо есть, любой злоумышленник, получивший копию программы, сможет получить логин и пароль пользователя, под которым может делать все что угодно .)Каким образом злоумышленник получит пароль пользователя?
А зачем злоумышленнику логин и пароль пользователя, если в программе уже прописана строка подключения?
Или она вынесена в отдельный файл и зашифрована?

Что-то про это нигде сказано не было.

А имея строку подключения, с вариантом хождения в базу из под application account в клиент серверном приложении можно поиметь небольшую кучку проблем с безопасностью...
...
Рейтинг: 0 / 0
21.03.2013, 21:40
    #38193999
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
GavRYshAДа не зависит, пользователей будет много и я решил их закинуть всех в таблицу
я буду долго гнать велосипед (с)
...
Рейтинг: 0 / 0
21.03.2013, 23:40
    #38194076
_=ДОБРЫНЯ=_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация глобального класс с настройками
Раз уж заговорили о паролях, спрошу здесь.
В приложении объявляю переменную
Код: vbnet
1.
 Friend SqlBuilder As New SqlConnectionStringBuilder()


Логин и пароль к базе хранится в зашифровоном виде в отдельном файле. Когда приложение запускается - достается логин и пароль, расшифровывается и заполняется SqlBuilder необходимыми параметрами доступа. И потом SqlBuilder использую при отправке запроса к БД.
Вопрос: с точки зрения безопасности такой подход правильный или нужно было как-то делать по другому?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация глобального класс с настройками / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]