.NET + SQL Server instalacja u klienta

0

Cześć,
być może dla Was będzie to głupie pytanie lub trywialne, jednak mi spędza sen z powiek.

Normalnie pracując jako programista w firmie robię aplikacje, które składają się dajmy na to z 3 częsci

  1. Front (Angular)
  2. Back (WebApi)
  3. Dane (SQL Server)

No i 1 i 2 instalujemy na IIS na serwerze w firmie. Bazę danych na SQL Server firmowym. No i spoko. Tak też robię sobie w domu.
No ale załóżmy, że stworzyłem aplikację, którą chciałbym sprzedawać. Dla firm.
No i zastanawiam się jak to ogarnąć. Bo przecież nie pójdę do klienta i nie powiem "Panie, 1 i 2 sobie Pan postaw na IISie, a 3 to musi Pan tym skryptem zrobić se bazę na swoim SQL Serverze)

Zastanawiam się jak do tego podchodzi się a aplikacjach typu JIRA np. Gdzie ona trzyma bazę? Czy w takiej bazie można grzebać ręcznie?

1

Stawiasz swój serwer/hosting i sprzedajesz dostęp do oprogramowania. Są systemy, które producent daje, aby hostować sobie samemu, ale przeważnie takie systemy mają instalator, konfigurację, gdzie wszystko jest przygotowane tak, aby zainstalować i korzystać. Kwestią jest licencjonowanie jeśli chcesz zarabiać na takich projektach. W przypadku własnego hostingu problemu nie ma, póki rejestrujący się użytkownik nie zapłaci to nie ma dostępu. W przypadku instalacji (hosting po stronie klienta) trzeba sobie samemu stworzyć licencjonowanie.

0

Nie chodzi o licencjonowanie. To ogarnę.
Chodzi o to, że instalator musi np zdeployować bazę na SQL Server.
Ale ja nie chcę wymagać by ktoś miał SQL Servera. Chciałbym żeby aplikacja miała swoją bazę, w której klient nie będzie grzebał.

0

Chodzi o to, że instalator musi np zdeployować bazę na SQL Server.
Ale ja nie chcę wymagać by ktoś miał SQL Servera.

Czyli szukasz sposobu na automatyzacje instalacji SQL Servera, a następnie załadowanie do niej jakiejś domyślnej bazy?

Może to Ci coś pomoże

https://octopus.com/blog/automate-sql-server-install

A może legendarny docker na prodzie by się sprawdził? :D

0
hercules napisał(a):

Nie chodzi o licencjonowanie. To ogarnę.
Chodzi o to, że instalator musi np zdeployować bazę na SQL Server.
Ale ja nie chcę wymagać by ktoś miał SQL Servera. Chciałbym żeby aplikacja miała swoją bazę, w której klient nie będzie grzebał.

Obciążenie tej aplikacji będzie jakieś mikre?

To może zamiast pełnoprawnego SQL Servera postaw to na SQLocalDB.
Wydaje się, że do tego co potrzebujesz będzie idealny.
Poza tym, to się da zrobić w ogóle bez SQL Servera i IISa.

Sama usługa (w sensie, toja aplikacja jako usługa) .NET może serwować API i statyczne treści po prostu przy pomocy Kestrel'a.

2
hercules napisał(a):

Bo przecież nie pójdę do klienta i nie powiem "Panie, 1 i 2 sobie Pan postaw na IISie, a 3 to musi Pan tym skryptem zrobić se bazę na swoim SQL Serverze)

No wyobraź sobie że sporo oprogramowania komercyjnego właśnie tak działa, Pan zapewnia serwer, a oprogramowanie samo sobie tworzy bazy i robi migracje.

0

Niestety jest to urok oprogramowania webowego. Przy programach desktopowych zwykle mamy do czynienia w miłymi instalatorami, które nawet automatycznie potrafią serwer SQL zainstalować na stacji, ale za to wymagają osobnej instalacji na każdej stacji roboczej no i jesteśmy uzależnieni od systemu operacyjnego. Oprogramowanie webowe zwykle wymaga większego wysiłku przy instalacji, ale w większości przypadków wystarczy dobra instrukcja instalacji, ale raczej trudno jest przygotować gotowy instalator chyba, że w postaci maszyny wirtualnej. Sam "strojenie" środowiska tez wymaga pewnej wiedzy i jest to raczej robota dla osoby posiadającej wiedzę informatyczną.

0
cw napisał(a):

Niestety jest to urok oprogramowania webowego.

Tak z ciekawości, to dlaczego tylko webowego?

Przy programach desktopowych zwykle mamy do czynienia w miłymi instalatorami, które nawet automatycznie potrafią serwer SQL zainstalować na stacji,

A myślisz, że ten instalator to się sam zrobi taki ładny?
Wiem, bo właśnie robię...
Poza tym, co za różnica czy to apka webowa czy nie - instalator może być tu i tu.

ale za to wymagają osobnej instalacji na każdej stacji roboczej no i jesteśmy uzależnieni od systemu operacyjnego. Oprogramowanie webowe zwykle wymaga większego wysiłku przy instalacji,

Zaprawdę powiadam Ci, nie wiesz o czym mówisz.
Założę się, że nigdy tego nie robiłeś, bo gdybyś miał napisać jeden instalator dla aplikacji desktop, który pewnie zadziała od XP do Win10, to inaczej byś śpiewał :D
A UAC śniłby Ci się po nocach ;-)
O manifeście dla aplikacji w Windows słyszałeś?

ale w większości przypadków wystarczy dobra instrukcja instalacji, ale raczej trudno jest przygotować gotowy instalator chyba, że w postaci maszyny wirtualnej. Sam "strojenie" środowiska tez wymaga pewnej wiedzy i jest to raczej robota dla osoby posiadającej wiedzę informatyczną.

Weź to @hercules napisz jak mówiłem a zrobię Ci instalator dla Windows ;-)

0

@wloochacz:
Urok oprogramowania webowego ma to do siebie, że nie instalujesz tylko paczkę z .NET i puff! działa. Potrzebujesz zainstalować pliki strony, zainstalować IIS, skonfigurować IIS, doinstalować resztę głupot (o ile są wymagane). Twoja aplikacja webowa powinna tez posiadać konfigurację połączenia do bazy, albo instalator niech to robi. Jest więcej roboty przy instalacji webówki niż okienkowych.

0

"Zaprawdę powiadam Ci, nie wiesz o czym mówisz." - zapewniam Cię, że wiem co piszę bo w dawnych czasach sam przygotowywałem takie paczki :).

"Poza tym, co za różnica czy to apka webowa czy nie - instalator może być tu i tu." poważna szczególnie wtedy gdy musisz zainstalować bazę danych. W aplikacjach desktopowych użytkownik jak ma odpowiednie uprawnienia to może np. zainstalować MSSQL Express i automatycznie go skonfigurować z instalatora (co robi wiele instalatorów programów typu FK w wersjach dla małych firm). Przy rozwiązaniu webowym zwykle musisz najpierw odpowiednio skonfigurować IIS i uzyskać połączenie z serwerem baz danych, który może być np na zupełnie innej maszynie. Dodatkowo sytuacja się może skomplikować jak już na tym IIS działa kilka innych aplikacji, nie ma zainstalowanego odpowiedniej wersji .NET itp. Mam autorską aplikację opartą na IIS, która działa na kilkudziesięciu serwerach od morza do gór i przećwiczyłem bardzo dokładnie problem instalacji takiego rozwiązania. Ogólnie najważniejsza jest dobra instrukcja instalacji i aktualny FAQ na którym opisuje się napotkane problemy

0
AdamWox napisał(a):

@wloochacz:
Urok oprogramowania webowego ma to do siebie, że nie instalujesz tylko paczkę z .NET i puff! działa.

Prawie.
I jest znacznie, ale to znacznie łatwiej, ponieważ robisz to raz na serwerze, gdzie zazwyczaj nie musisz się przejmować uprawnieniami do katalogów, profilami wędrującymi i setką innych upierdliwych patentów pochodzących np. z kontrolera domeny.

Potrzebujesz zainstalować pliki strony, zainstalować IIS, skonfigurować IIS,

Używam nginx, nie lubię IISa.

doinstalować resztę głupot (o ile są wymagane). Twoja aplikacja webowa powinna tez posiadać konfigurację połączenia do bazy,

Wielkie halo, zapisać ustawienia np. przez serializację do jednego pliku...
Poza tym, mowa tu o .net a tam jest jeszcze mniejsze halo.

albo instalator niech to robi.

No, może.

Jest więcej roboty przy instalacji webówki niż okienkowych.

Robię to średnio raz na dwa miesiące (cykl wydawniczy aplikacji) i twierdzę, że jest dokładnie odwrotnie.
Niby dlaczego w webie jest trudniej z instalacją?
Dla mnie jest zdecydowanie łatwiej, bo przede wszystkim robię to tylko raz.

A tak poza tym, w desktopie masz dokładnie te same problemy, tylko zmultiplikowane na wiele końcówek i w bardziej ograniczonym (uprawnienia usera) środowisku.

0

Aplikację desktopową mogą się też w bardzo łatwy sposób same aktualizować.
Ms SQL server express może się łatwo "sam" zainstalować i skonfigurować.
Nigdy tego nie robiłem ale założę się, że aplikacja IIS też może się zainstalować z odpowiedniego instalatora. Advanced Installer za 500 ust może wdrożyć aplikację na IIS. Można to pewnie też zrobić samemu jakimiś skrzydłami powershell-a.

https://4sysops.com/archives/create-web-apps-and-application-pools-in-iis-with-powershell/

0

A nie wystarczy po prostu docker..?

1
Szekel napisał(a):

A nie wystarczy po prostu docker..?

Wystarczy, no jasne...
I będziesz tego Dockera instalował i konfigurował u każdego klienta, który chce używać tej aplikacji?

Gdyby to była chmurka, to OK.
Ale instalacja on-site u każdego klienta, a każdy nie wiadomo co tam ma za "serwer"?

0
wloochacz napisał(a):
Szekel napisał(a):

A nie wystarczy po prostu docker..?

Wystarczy, no jasne...
I będziesz tego Dockera instalował i konfigurował u każdego klienta, który chce używać tej aplikacji?

Gdyby to była chmurka, to OK.
Ale instalacja on-site u każdego klienta, a każdy nie wiadomo co tam ma za "serwer"?

Właśnie do tego powstał docker. Guzik cie obchodzi co ma za serwer.

Moim zdaniem instalacja i konfiguracja dockera jest dużo prostsza niż walka z IIS.

0
Szekel napisał(a):
wloochacz napisał(a):
Szekel napisał(a):

A nie wystarczy po prostu docker..?

Wystarczy, no jasne...
I będziesz tego Dockera instalował i konfigurował u każdego klienta, który chce używać tej aplikacji?

Gdyby to była chmurka, to OK.
Ale instalacja on-site u każdego klienta, a każdy nie wiadomo co tam ma za "serwer"?

Właśnie do tego powstał docker. Guzik cie obchodzi co ma za serwer.

Moim zdaniem instalacja i konfiguracja dockera jest dużo prostsza niż walka z IIS.

Mówisz?
To zainstaluj tego dockera na VPS z 2 GB RAM.
Guzik mnie obchodzi jak.

0

Używam "produkcyjnie" (dla wszystkich swoich rzeczy) Dockera na VPS z 2 GB RAM.

[ktos@lisa ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1945        1379          84          57         480         339
Swap:             0           0           0

[ktos@lisa ~]$ docker ps | wc -l
15

1 użytkowników online, w tym zalogowanych: 0, gości: 1