powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET Core Web server: вопрос по структуре
25 сообщений из 61, страница 2 из 3
ASP.NET Core Web server: вопрос по структуре
    #39951762
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Базы с прикладными данными я буду делать отдельные.
Базу с юзерами есть мысль сделать отдельную общую для всех тенантов, но изолированную, естественно.
Вполне себе рабочий вариант. У нас который год в эксплуатации.
С другой стороны "мультитенантный сервер" с одной базой у нас работает ещё дольше :)

Так что повторюсь, что возможно реализовать и так, и сяк.

Ролг Хупин
И кроме того подумалось, может есть фреймворки или Нугеты для Blazor или ASP.NET Core, облегчающие разработку мультитенантных приложений такого типа.
Никогда не интересовался таким вопросом.
И звучит для меня это сильно размыто: "облегчающие разработку мультитенантных приложений такого типа".

В чём вы видите сложности? Какие моменты вам не понятны?
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951766
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
Базы с прикладными данными я буду делать отдельные.
Базу с юзерами есть мысль сделать отдельную общую для всех тенантов, но изолированную, естественно.
Вполне себе рабочий вариант. У нас который год в эксплуатации.
С другой стороны "мультитенантный сервер" с одной базой у нас работает ещё дольше :)

Так что повторюсь, что возможно реализовать и так, и сяк.

Ролг Хупин
И кроме того подумалось, может есть фреймворки или Нугеты для Blazor или ASP.NET Core, облегчающие разработку мультитенантных приложений такого типа.
Никогда не интересовался таким вопросом.
И звучит для меня это сильно размыто: "облегчающие разработку мультитенантных приложений такого типа".

В чём вы видите сложности? Какие моменты вам не понятны?



Вариант рабочий, никто не спорит, среди 3 основных вариантов.
Но меня больше устраивает вариант с отдельными базами.

Не хотелось бы изобретать велосипед, если уже кто-то изобрел.
Какой-нибудь нугет, облегчающий определение тенанта при запросе, умеющий определять соответствующие конфиги, сюда же -
если я использую EF, то сейчас я регистрирую сервис с connection string, она одна, проблем нет.
А с несколькими тенантами надо определить и видимо позднее вытащить её и отдать в контекст и т.д.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951768
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Не хотелось бы изобретать велосипед, если уже кто-то изобрел.
Какой-нибудь нугет, облегчающий определение тенанта при запросе, умеющий определять соответствующие конфиги, сюда же -
если я использую EF, то сейчас я регистрирую сервис с connection string, она одна, проблем нет.
А с несколькими тенантами надо определить и видимо позднее вытащить её и отдать в контекст и т.д.

Рассмотрите такой вариант:
- под Roga.MyWebServer.com развернуть отдельную версию вашего приложения (сервиса) с отдельной базой
- под Kopyta.MyWebServer.com развернуть другую отдельную версию вашего приложения (сервиса) с отдельной базой

При таком подходе не надо искать какие-то нугеты и вообще что-либо менять в коде.

Как вы планируете взаимодействовать с клиентами?
Зачем вам делать отдельную общую базу для всех тенантов на данный момент?
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951778
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
Не хотелось бы изобретать велосипед, если уже кто-то изобрел.
Какой-нибудь нугет, облегчающий определение тенанта при запросе, умеющий определять соответствующие конфиги, сюда же -
если я использую EF, то сейчас я регистрирую сервис с connection string, она одна, проблем нет.
А с несколькими тенантами надо определить и видимо позднее вытащить её и отдать в контекст и т.д.

Рассмотрите такой вариант:
- под Roga.MyWebServer.com развернуть отдельную версию вашего приложения (сервиса) с отдельной базой
- под Kopyta.MyWebServer.com развернуть другую отдельную версию вашего приложения (сервиса) с отдельной базой

При таком подходе не надо искать какие-то нугеты и вообще что-либо менять в коде.

Как вы планируете взаимодействовать с клиентами?
Зачем вам делать отдельную общую базу для всех тенантов на данный момент?


Юзер хочет разместить сервер один раз в одном месте и чтобы к нему обращались разные тенанты.
Возможно, разным тенантам даются разные субдоменные имена, чтобы различать.
На разных базах я пока настаиваю, так проще. И даже в случае, если один захочет сделать бекап и взять себе, или двинуть в другую тучу и т.д.
А одна база с юзерами - да х.е.з., показалось, что так будет проще для начала работы любому тенанту, т.е. юзер сам регистрироваться не будет. Новому тенанту создается одинюзер с админ правами, а он уже создает своих юзеров. Возможно, потом юзеры будут редактирвоать некритичные поля профиля, добавляя всякие подробности.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951780
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Я бы всё же посоветовал начать с единой базой.
Не потому что так лучше.
А потому, что единая база масштабируется до нескольких, а несколько никак до одной.
И с точки зрения моделирования получите больше скиллов.
И быстрее получите рабочее решение.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951801
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Дмитрий Мух
пропущено...

Рассмотрите такой вариант:
- под Roga.MyWebServer.com развернуть отдельную версию вашего приложения (сервиса) с отдельной базой
- под Kopyta.MyWebServer.com развернуть другую отдельную версию вашего приложения (сервиса) с отдельной базой

При таком подходе не надо искать какие-то нугеты и вообще что-либо менять в коде.

Как вы планируете взаимодействовать с клиентами?
Зачем вам делать отдельную общую базу для всех тенантов на данный момент?


Юзер хочет разместить сервер один раз в одном месте и чтобы к нему обращались разные тенанты.
Возможно, разным тенантам даются разные субдоменные имена, чтобы различать.
На разных базах я пока настаиваю, так проще. И даже в случае, если один захочет сделать бекап и взять себе, или двинуть в другую тучу и т.д.
А одна база с юзерами - да х.е.з., показалось, что так будет проще для начала работы любому тенанту, т.е. юзер сам регистрироваться не будет. Новому тенанту создается одинюзер с админ правами, а он уже создает своих юзеров. Возможно, потом юзеры будут редактирвоать некритичные поля профиля, добавляя всякие подробности.

А ваш заказчик хочет сам добавлять этих самых "тенантов"? Через некую админку, кликая мышкой?
Как при этом появится отдельная база под нового тенанта?
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951816
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Мне кажется просто пропущен этап функциональных требований.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951829
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
пропущено...


Юзер хочет разместить сервер один раз в одном месте и чтобы к нему обращались разные тенанты.
Возможно, разным тенантам даются разные субдоменные имена, чтобы различать.
На разных базах я пока настаиваю, так проще. И даже в случае, если один захочет сделать бекап и взять себе, или двинуть в другую тучу и т.д.
А одна база с юзерами - да х.е.з., показалось, что так будет проще для начала работы любому тенанту, т.е. юзер сам регистрироваться не будет. Новому тенанту создается одинюзер с админ правами, а он уже создает своих юзеров. Возможно, потом юзеры будут редактирвоать некритичные поля профиля, добавляя всякие подробности.

А ваш заказчик хочет сам добавлять этих самых "тенантов"? Через некую админку, кликая мышкой?
Как при этом появится отдельная база под нового тенанта?


Да, он сам будет ее создавать, скорее руками или отдельной утилитой: структура+начальные данные.
Я вижу, что выше были правильные замечания, похоже, отдельная база для юзеров не нужна
Это только усложнит
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951850
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Да, он сам будет ее создавать, скорее руками или отдельной утилитой: структура+начальные данные.

А дальше что? Руками где-то прописывать, что запросы с Kopyta.MyWebServer.com должны идти в эту базу?

Уверен, что такого у вас ещё нет. А значит надо разрабатывать, тестировать и т.п.

Отсюда самый простой вариант - под каждого нового тенанта отдельное приложение с отдельной базой.
Тут уже всё готово.
Остальные варианты потребуют от вас доработок.

Вообщем думайте сами, решайтие сами :)

P.S.: у нас в продуктах используются все три варианта. Могу рассказать как.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951855
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
Да, он сам будет ее создавать, скорее руками или отдельной утилитой: структура+начальные данные.

А дальше что? Руками где-то прописывать, что запросы с Kopyta.MyWebServer.com должны идти в эту базу?

Уверен, что такого у вас ещё нет. А значит надо разрабатывать, тестировать и т.п.

Отсюда самый простой вариант - под каждого нового тенанта отдельное приложение с отдельной базой.
Тут уже всё готово.
Остальные варианты потребуют от вас доработок.

Вообщем думайте сами, решайтие сами :)

P.S.: у нас в продуктах используются все три варианта. Могу рассказать как .


Жду с неподдельным интересом!

Каждому приложение+база - да, тут думать не надо, но юзеру не нравиться, хочется одно приложение на всех.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39952419
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Дмитрий Мух
пропущено...

А дальше что? Руками где-то прописывать, что запросы с Kopyta.MyWebServer.com должны идти в эту базу?

Уверен, что такого у вас ещё нет. А значит надо разрабатывать, тестировать и т.п.

Отсюда самый простой вариант - под каждого нового тенанта отдельное приложение с отдельной базой.
Тут уже всё готово.
Остальные варианты потребуют от вас доработок.

Вообщем думайте сами, решайтие сами :)

P.S.: у нас в продуктах используются все три варианта. Могу рассказать как .


Жду с неподдельным интересом!

Каждому приложение+база - да, тут думать не надо, но юзеру не нравиться, хочется одно приложение на всех.


"Могу рассказать как" - нет рассказа, жду
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39952805
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Ролг Хупин
пропущено...


Жду с неподдельным интересом!

Каждому приложение+база - да, тут думать не надо, но юзеру не нравиться, хочется одно приложение на всех.


"Могу рассказать как" - нет рассказа, жду

Занят, работу работаю.

На развёрнутое повествование пока времени нет. Только на небольшие сообщения.

Может есть конкретные вопросы? С чего начать?
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953171
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
пропущено...


"Могу рассказать как" - нет рассказа, жду

Занят, работу работаю.

На развёрнутое повествование пока времени нет. Только на небольшие сообщения.

Может есть конкретные вопросы? С чего начать?


Нашел такой фреймворк
https://github.com/Finbuckle/Finbuckle.MultiTenant

Много чего накручено, все неплохо. Там передается Connection string в конструктор, мне не хватает возможности передать еще и другие тенант зависимые параметры.

1. Как различаются тенанты в коде?
2. Как и когда передается тенант-зависимая ConnectionString в EF DbContext? Обычно она передается сразу при регистрации сервиса.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953358
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Дмитрий Мух
пропущено...

Занят, работу работаю.

На развёрнутое повествование пока времени нет. Только на небольшие сообщения.

Может есть конкретные вопросы? С чего начать?


Нашел такой фреймворк
https://github.com/Finbuckle/Finbuckle.MultiTenant

Много чего накручено, все неплохо. Там передается Connection string в конструктор, мне не хватает возможности передать еще и другие тенант зависимые параметры.

1. Как различаются тенанты в коде?
2. Как и когда передается тенант-зависимая ConnectionString в EF DbContext? Обычно она передается сразу при регистрации сервиса.

Тенанты никак не различаются в коде.

В начале запроса к приложению формируется контекст, где определен тенант.
Все дальнейшие операции выполняются в рамках него.
Также как вы задаёте DbContext для EF и последний с ним работает.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953387
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
В начале запроса к приложению формируется контекст, где определен тенант.


+ в атрибутах авторизации, которые используеются при формировании контекста
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953476
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
пропущено...


Нашел такой фреймворк
https://github.com/Finbuckle/Finbuckle.MultiTenant

Много чего накручено, все неплохо. Там передается Connection string в конструктор, мне не хватает возможности передать еще и другие тенант зависимые параметры.

1. Как различаются тенанты в коде?
2. Как и когда передается тенант-зависимая ConnectionString в EF DbContext? Обычно она передается сразу при регистрации сервиса.

Тенанты никак не различаются в коде.

В начале запроса к приложению формируется контекст, где определен тенант.
Все дальнейшие операции выполняются в рамках него.
Также как вы задаёте DbContext для EF и последний с ним работает.


Вроде понимаю, но подробности вызывают вопросы:
Когда приложение стартует в Startup надо зарегистрировать все сервисы, независимо от тенанта, поскольку приложение стартует один раз для всех будущих запросов.
Например, MyDbContext должен быть зарегистрирован без Connection string, и уже потом на запросе от конкретного тенанта надо определить его стрку подключения и передать ее контексту.

Мало того, если предположить, что тенант Х работает с SQL Server, тенант У - с PostgreSQL, то им надо передавать тип сервера и строку подключения.
Это когда и как передавать? если бы пример кода или ссылку то было бы проще понять.
(Не о себе, о будущих юзерах-читателях форума забочусь )
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953812
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Например, MyDbContext должен быть зарегистрирован без Connection string, и уже потом на запросе от конкретного тенанта надо определить его стрку подключения и передать ее контексту.


Вы не совсем правы.

Почитайте следующую доку, только внимательно.

https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/configuration/options?view=aspnetcore-3.1
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953843
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вечная тема - как построить универсальное приложение (но, тут это не предложение, а навязывание)
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953847
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Дмитрий Мух
пропущено...

Тенанты никак не различаются в коде.

В начале запроса к приложению формируется контекст, где определен тенант.
Все дальнейшие операции выполняются в рамках него.
Также как вы задаёте DbContext для EF и последний с ним работает.


Вроде понимаю, но подробности вызывают вопросы:
Когда приложение стартует в Startup надо зарегистрировать все сервисы, независимо от тенанта, поскольку приложение стартует один раз для всех будущих запросов.
Например, MyDbContext должен быть зарегистрирован без Connection string, и уже потом на запросе от конкретного тенанта надо определить его стрку подключения и передать ее контексту.

Мало того, если предположить, что тенант Х работает с SQL Server, тенант У - с PostgreSQL, то им надо передавать тип сервера и строку подключения.
Это когда и как передавать? если бы пример кода или ссылку то было бы проще понять.
(Не о себе, о будущих юзерах-читателях форума забочусь )

Вы таки определились, как у вас будет: одна PostgreSQL база, или что?

Если одна, то не надо что-то там регистрировать без Connection string, а надо в запросы к БД добавлять ограничения по тенанту.

Сервисов, что в рамках одной установки работают то с SQL Server, то с PostgreSQL в глаза не видел.

Если вы определились с решением, то опишите его и начните реализовывать.
Бум решать реальные проблемы, а не выдуманные.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953850
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
вечная тема - как построить универсальное приложение (но, тут это не предложение, а навязывание)

Что ты имеешь в виду под "универсальное приложение"?

У ТС-а Blazor Web Server и PostgreSQL database.
Приложение позволяет пользователю учитывать данные о поставщиках услуг, потребителях, типы услуг, сделки и т.д.

А "тенант Х работает с SQL Server, тенант У - с PostgreSQL" - это просто фантазия :)
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953941
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

вот тут написано, что ТС просит то что обещано - каждый клиент работает со своими данными на основе своей конфигурации, но на единственном экземпляре приложении

https://ru.wikipedia.org/wiki/Мультиарендность
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953942
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

а универсальное тут имелось виду каркас ASP.NET Core
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39953957
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
А "тенант Х работает с SQL Server, тенант У - с PostgreSQL" - это просто фантазия :)


На деле это возможно, если всё будет построено исключительно на EF, без ручного SQL и специфичных для СУБД решений. Пока решение небольшое, нагрузки и сложности нет, работать будет.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39954017
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
Дмитрий Мух,

вот тут написано, что ТС просит то что обещано - каждый клиент работает со своими данными на основе своей конфигурации, но на единственном экземпляре приложении

(подозрительная ссылка!) https://ru.wikipedia.org/wiki/Мультиарендность

Понятно, я называю это короче: SaaS.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39954021
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Дмитрий Мух
А "тенант Х работает с SQL Server, тенант У - с PostgreSQL" - это просто фантазия :)


На деле это возможно, если всё будет построено исключительно на EF, без ручного SQL и специфичных для СУБД решений. Пока решение небольшое, нагрузки и сложности нет, работать будет.

Не спорю, что можно.

Просто не видел такого никогда.
Чтобы одно и тоже приложение, одна и таже бизнес-логика, но вот у одного клиента сделки сохраняются в SQL Server, а у другого в PostgreSQL.

В чём может быть смысл?

Понимаю, если бы это были разные установки: одному Windows + SQL Server, другому Linux + PostgreSQL.
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET Core Web server: вопрос по структуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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