powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET Core Web server: вопрос по структуре
61 сообщений из 61, показаны все 3 страниц
ASP.NET Core Web server: вопрос по структуре
    #39925474
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея такая
есть Linux в туче с MyWebServer->database, хранилище файлов

Юзер может зарегистрироваться и работать с данными
MyWebServer
Index
Users
Customers
Documents

Как сделать для нескольких фирм?
Company1 (N users)->MyWebServer->AWS db(1), S3(1)
Company2 (M users)->MyWebServer->AWS db(2), S3(2)
...

Данные должны быть изолированы от юзеров других фирм.

Должен это быть один MyWebServer для всех фирм? Если да, то как развести фирмы?
Или лучше для каждой организации стартовать отдельный MyWebServer на своем порту на том же сервере?
Linux:
MyWebServer:9001
MyWebServer:9002
...

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

и так, и так можно, а можно и третий вариант: шардирование

но у тебя пока только один заказчик, так что выбирай второй вариант :)
появится ещё клиент, ну поднимешь ему второй сервер
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925477
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

плюс у тебя база уже существует и не заточена под то, чтобы там данные нескольких компаний хранить
так что и выбора у тебя нет
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925497
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Банальный load balancing. А если по отдельному инстансу для каждого клиента, то представь ситуацию - от одного клиента по нескольку сотен запросов в секунду, а от другого по половине запроса в час - один инстанс в итоге дымится, а второй вообще ничего не делает.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925498
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Ролг Хупин,

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


Все правильно, но, естественно, базу можно передизайнировать, добавить схемы или другим способом.
Но, тогда и код надо подкручивать и т.д. Похоже, что это все усложнение, отдельный вебсервер, база, хранилище - проще всего.
Но тут такой вопрос возникает:
Запускаю я два вебсервера на одном сервере
MyWebServer.com: 90001
MyWebServer.com: 90002

это как-то не красиво выглядит

Как сделать типа такого:

Roga.MyWebServer.com
Kopyta.MyWebServer.com

Но при этом - это два инстанса MyWebServer на одном хосте
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925506
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Как сделать типа такого:

Roga.MyWebServer.com
Kopyta.MyWebServer.com

Но при этом - это два инстанса MyWebServer на одном хосте


Nginx в режиме reverse proxy.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925508
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

А еще лучше все это под docker-compose вдуплить или подобное.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925512
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
skyANA
Ролг Хупин,

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


Все правильно, но, естественно, базу можно передизайнировать, добавить схемы или другим способом.
Но, тогда и код надо подкручивать и т.д. Похоже, что это все усложнение, отдельный вебсервер, база, хранилище - проще всего.
Но тут такой вопрос возникает:
Запускаю я два вебсервера на одном сервере
MyWebServer.com: 90001
MyWebServer.com: 90002

это как-то не красиво выглядит

Как сделать типа такого:

Roga.MyWebServer.com
Kopyta.MyWebServer.com

Но при этом - это два инстанса MyWebServer на одном хосте

Как уже предложили выше, использовать Haproxy, Nginx, IIS для роутинга с кастомного домена на определённый порт.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925514
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

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


Короче, читать про Multi Tenant до упора :)
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925625
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
del
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925664
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Ролг Хупин
Данные должны быть изолированы от юзеров других фирм.


Короче, читать про Multi Tenant до упора :)

Сначала читать, потом приложение переписывать...
Зачем это делать, когда заказчик один, кто попросил просто десктоп в веб перевести, а другие клиенты только в мечтах?

P.S.: походу сошлись на том, что ТС за работу получает право продавать приложение.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925675
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Не, ну мульти-тенант, и право развернуть сколько угодно независимых инстансов, это вообще разные вещи :)
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925690
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
skyANA,

Не, ну мульти-тенант, и право развернуть сколько угодно независимых инстансов, это вообще разные вещи :)

Ну да. Под мульти-тенант надо будет приложение и базу заточить.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925702
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем это делать, если не предвидится никакого мульти-тенант?
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39925708
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Как сделать типа такого:

Roga.MyWebServer.com
Kopyta.MyWebServer.com

Но при этом - это два инстанса MyWebServer на одном хосте


Да, точно это просто как пошарить ресурсы на независимые инсталляции.

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


Короче, читать про Multi Tenant до упора :)


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

ну вот что нагуглилось

https://habr.com/ru/post/110979/
https://habr.com/ru/company/microsoft/blog/145027/
https://habr.com/ru/post/252353/
https://habr.com/ru/company/1c/blog/326654/

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

ну вот что нагуглилось

https://habr.com/ru/post/110979/
https://habr.com/ru/company/microsoft/blog/145027/
https://habr.com/ru/post/252353/
https://habr.com/ru/company/1c/blog/326654/

прост лень искать уже )


да, ладно, и так хорошо (ц)
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951483
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы Blazor Server был multitenant надо использовать разные config параметры для разных тенантов.
Как ловить в коде, какой тенант вызвал?
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951494
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Как ловить в коде, какой тенант вызвал?


Зависит от способа дистрибьюции.
Например, по домену или под-домену.
Или по атрибутам авторизации.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951590
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Ролг Хупин
Как ловить в коде, какой тенант вызвал?


Зависит от способа дистрибьюции.
Например, по домену или под-домену.
Или по атрибутам авторизации.


Как вариант хотел сделать:
Одно приложение где-то в интернете,
на каждого тенанта отдельная база, так, может и дороже, но надежнее.
Может быть сделать одну общую базу для всех юзеров?

Все идентити в общей базе, естественно, разные тенанты не видят других, а базы с данными - отдельные, при этом могут размещаться,
где юзер захочет

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

Разделять на разные БД или нет зависит от условий, задачи и потребностей.
Единого рецепта и рекомендаций нет. Нужно смотреть по ситуации.
...
Рейтинг: 0 / 0
ASP.NET Core Web server: вопрос по структуре
    #39951689
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Одно приложение где-то в интернете
Это называется SaaS :)
Ролг Хупин
на каждого тенанта отдельная база, так, может и дороже, но надежнее.
Может быть сделать одну общую базу для всех юзеров?
Можно одну общую базу, можно на каждого свою базу, можно несколько баз и в каждой несколько тенантов.

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

Что за приложение? Как в нём регистрируются, заводятся новые аккаунты? Что им надо окромя базы? Файловое хранилище?


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

В синглетенантной версии я сделал все в одной базе - и юзеров тоже, через ASP.NET Identity PostgreSQL.
Но сейчас (по совету друзей (ц) см. выше) надо делать мультитенантный сервер.
Базы с прикладными данными я буду делать отдельные.
Базу с юзерами есть мысль сделать отдельную общую для всех тенантов, но изолированную, естественно.
И кроме того подумалось, может есть фреймворки или Нугеты для Blazor или ASP.NET Core, облегчающие разработку мультитенантных приложений такого типа.
...
Рейтинг: 0 / 0
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
ASP.NET Core Web server: вопрос по структуре
    #39954094
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Ролг Хупин
пропущено...


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

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

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

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

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

Если вы определились с решением, то опишите его и начните реализовывать.
Бум решать реальные проблемы, а не выдуманные.



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

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

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

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

Если вы определились с решением, то опишите его и начните реализовывать.
Бум решать реальные проблемы, а не выдуманные.



Отдельная база на каждого тенанта.
А вариант тенант1 с SQL Server, тенант2с PostgreSQL в одном приложении - может и нет смысла усложнять, но в общем не проблема.

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

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


Если это SaaS, то смысла нет. Если это решение, которое разворачивается на ресурсах заказчика, или требуется обеспечить такую возможность, то смысл есть. У кого-то закуплены лицухи на Oracle, у кого-то на MS SQL, а кто-то содержит Postgres Pro Enterprise.

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

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


Если это SaaS, то смысла нет. Если это решение, которое разворачивается на ресурсах заказчика, или требуется обеспечить такую возможность, то смысл есть. У кого-то закуплены лицухи на Oracle, у кого-то на MS SQL, а кто-то содержит Postgres Pro Enterprise.

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

Погоди, мы разбираем мультитенант решение, в котором приложение одно, развёрнутое в определённой ОС.
А вот хранилища типа на выбор.

Приходит к нам новый клиент, мы ему говоторим, что вот вам оно, приложение.
Данные, где хранить будете? Если в SQL Server, то с вас такой прайс, а если в Postrgers, то такой.

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

Приходит к нам новый клиент, мы ему говоторим, что вот вам оно, приложение.
Данные, где хранить будете? Если в SQL Server, то с вас такой прайс, а если в Postrgers, то такой.

Для меня это какая-то новая модель, чесслово :)


Ну ок. Есть пара идей, где и в этом тоже будет смысл.

1. Всё те же лицухи. И сейчас можно прикупить шаред СУБД. Цена сервиса может варьироваться от СУБД.
2. Решение SaaS, хорошо. Но также может потребоваться и BI с прямым доступом к БД или отчётной копии БД. А у заказчика есть свои BI-щики только на XxxxSql.
3. О чём я говорил, решение может предлагать переезд на мощности заказчика, как потенциальную возможность.

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

Приходит к нам новый клиент, мы ему говоторим, что вот вам оно, приложение.
Данные, где хранить будете? Если в SQL Server, то с вас такой прайс, а если в Postrgers, то такой.

Для меня это какая-то новая модель, чесслово :)


Ну ок. Есть пара идей, где и в этом тоже будет смысл.

1. Всё те же лицухи. И сейчас можно прикупить шаред СУБД. Цена сервиса может варьироваться от СУБД.
2. Решение SaaS, хорошо. Но также может потребоваться и BI с прямым доступом к БД или отчётной копии БД. А у заказчика есть свои BI-щики только на XxxxSql.
3. О чём я говорил, решение может предлагать переезд на мощности заказчика, как потенциальную возможность.

Т.е. смысл найти можно, но насколько это будет оправдано, если помножить на затраты.

То есть мы даём клиенту прямой доступ к БД. Интересно.

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

ты сам всегда топишь за то, что хорошие решения на дороге не валяются.
Их кто-то уже подобрал и делает на этом бабки.

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

Почему тогде просто не развернуть сервис на его инфраструктуре?


Ну не совсем прямой. Скорее к копии (зеркалу), и то не всей, данные инфры для отчётов не нужны. И только для чтения. Для отчётов это нормально. Не знаю как у вас, но в энтерпрайзе зачастую отчёты это одна из целевых задач ИС.

Развернуть сервис на инфре заказчика можно, если эта инфра у него есть. А также табун спецов, которые его обслуживают :) В этом же и смысл SaaS, -- экономия.


Дмитрий Мух
ты сам всегда топишь за то, что хорошие решения на дороге не валяются.
Их кто-то уже подобрал и делает на этом бабки.

Сервис у нас, а СУБД ваша, что-то я не видел такого :)


Не, я только про отчёты говорю. Ещё ETL до кучи. И это не мои домыслы, у нас есть 3 подрядчика и собственные программные системы. И это всё со всем интегрируется. Часть инфры у подрядчика, часть инфры у нас, но обслуживается подрядчиком, также есть подряд только на разработку, остальное всё у нас. Ну и мы ещё подрядчиком выступаем местами.

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

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



Отдельная база на каждого тенанта.
А вариант тенант1 с SQL Server, тенант2с PostgreSQL в одном приложении - может и нет смысла усложнять, но в общем не проблема.

О, тут могу рассказать как у нас.

Значит так.

В этом варианте надо связать определённого тенанта с определённой базой.
Делается это или некой функцией, или хранится в некой таблице, коллекции, конфиге.
Что по сути тоже функция (согласно общей алгебре) :)

Мы храним информацию о том, на каком сервере и какой базе находятся данные определённого аккаунта (организации, тенанта) в коллекции MongoDB и кэшируем в Memcached бакете.
Тот сервис, где реализован подход "Отдельная база на каждого тенанта", у нас использует MongoDB.

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

О, тут могу рассказать как у нас.

Значит так.

В этом варианте надо связать определённого тенанта с определённой базой.
Делается это или некой функцией, или хранится в некой таблице, коллекции, конфиге.
Что по сути тоже функция (согласно общей алгебре) :)

Мы храним информацию о том, на каком сервере и какой базе находятся данные определённого аккаунта (организации, тенанта) в коллекции MongoDB и кэшируем в Memcached бакете.
Тот сервис, где реализован подход "Отдельная база на каждого тенанта", у нас использует MongoDB.

Соответственно в начале запроса достаём эту информацию, кладём в контекст выполнения.
И когда в рамках последнего необходимо что-то получить из данных, то формируем подключение с нужными параметрами.


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


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