Aplikacja internetowa w ASP.NET działa w przeglądarce, a dane trzyma w bazie MS SQL Server. Opisujemy jej budowę oraz zastosowania: sklep i ewidencję palet.
Program internetowy działa na serwerze, a użytkownik pracuje w przeglądarce. W magazynie przekłada się to na prosty skutek: kierownik i magazynier otwierają ten sam system bez instalowania czegokolwiek, a dane trafiają do jednej bazy.
Ta strona opisuje technologię ASP.NET i jej zastosowania w firmie. O gotowych programach magazynowych w przeglądarce piszemy w artykule o internetowych programach magazynowych, a o samym tworzeniu portali na stronie Tworzenie stron WWW w ASP.NET.
Od statycznych stron do aplikacji internetowych
Komputer pracujący wyłącznie na własnych zasobach ma ograniczone możliwości. Po podłączeniu do Internetu łączy się z podobnymi urządzeniami na całym świecie, współpracuje z nimi i korzysta z zasobów innych systemów. Programy internetowe wykorzystują ten mechanizm: dane leżą w jednym miejscu, a wiele komputerów pracuje na nich jednocześnie.
Sieć WWW zaczęła jako sposób prezentowania statycznych raportów i wyników badań naukowych z fizyki. Strona wyglądała tak samo dla każdego odwiedzającego, a informacje płynęły w jedną stronę. Gdy sprzęt i przesyłanie danych stały się dostępniejsze i tańsze, strony statyczne ustąpiły aplikacjom, które reagują na działania użytkownika.
Nowa możliwość przyniosła nowy problem, tym razem po stronie oprogramowania. Pisanie programów, które utrzymają bezpieczeństwo aplikacji internetowych, jest coraz trudniejsze. Zmieniające się zagrożenia wymagają od programistów ciągłej aktualizacji umiejętności.
Platforma Microsoft .NET oferuje prefabrykowaną infrastrukturę do typowych problemów oprogramowania internetowego. Mechanizm .NET Web Services pozwala serwerowi udostępniać funkcje dowolnym klientom. Windows Forms dają nowy sposób pisania bogatych aplikacji klienckich w środowisku .NET Framework. Platforma dostarcza też środowisko czasu wykonywania oraz dostęp do baz danych. Oficjalny opis technologii znajdziesz w dokumentacji ASP.NET na Microsoft Learn.
Ten sam program otwiera sklep i system magazynowy, bo przeglądarka jest klientem uniwersalnym. Firma nie utrzymuje różnych klientów, a użytkownik nie uczy się osobnej obsługi dla każdego systemu.
Różnicę między programem instalowanym na komputerze a portalem ASP.NET najłatwiej pokazać na kryteriach, które widzi administrator.
| Kryterium | Aplikacja Windows | Portal ASP.NET |
|---|---|---|
| Instalacja | Na każdym komputerze osobno | Brak, wystarczy przeglądarka |
| Aktualizacja | Wymiana programu na stanowiskach | Jedna wymiana na serwerze |
| Miejsce wykonania logiki | Stanowisko użytkownika | Serwer, w kodzie C# |
| Interfejs | Bogaty klient okienkowy z Windows Forms | Strony zbliżone do aplikacji Windows |
| Dostęp spoza firmy | Wymaga osobnej konfiguracji | Przez adres internetowy, według uprawnień |
Portal przenosi koszty utrzymania z wielu stanowisk na jeden serwer. Aktualizacja i kopia zapasowa dotyczą jednego miejsca, ale awaria serwera zatrzymuje pracę wszystkich użytkowników naraz. Dlatego przy portalu planuje się dostępność serwera i bazy.
Jak aplikacja ASP.NET obsługuje jeden formularz
Weźmy zapis dokumentu przyjęcia. Użytkownik wypełnia formularz w przeglądarce, a JavaScript sprawdza podstawowe warunki jeszcze przed wysłaniem, na przykład czy pole ilości zawiera liczbę. Dopiero potem przeglądarka wysyła do serwera żądanie HTTP.
Serwer wykonuje kod w C# i sprawdza dane ponownie, bo kontrola w przeglądarce nie chroni przed żądaniem spreparowanym poza formularzem. Następnie wywołuje procedurę T-SQL, która zapisuje nagłówek i pozycje dokumentu w jednej transakcji. Gdy którykolwiek zapis się nie powiedzie, baza wycofuje całość, więc dokument nie zostaje w stanie połowicznym.
Odpowiedź wraca do przeglądarki jako nowy fragment strony. Technika AJAX pozwala odświeżyć samą tabelę pozycji bez przeładowania całego ekranu, a użytkownik nie traci wpisanych danych.
Sesja i uprawnienia w przeglądarce
Protokół HTTP nie pamięta, kto wysłał poprzednie żądanie. Aplikacja rozwiązuje to sesją: po zalogowaniu serwer zapisuje, kim jest użytkownik, i przy każdym kolejnym żądaniu sprawdza jego prawa. Dzięki temu kierownik i magazynier, którzy otwierają ten sam adres, widzą różny zakres danych.
Sesja ma jednak swój koszt. Serwer trzyma w pamięci stan każdego zalogowanego użytkownika, więc przy wielu równoległych połączeniach trzeba pilnować jej czasu życia. Zbyt długa sesja obciąża serwer i wydłuża czas, w którym zostawiony bez nadzoru ekran pozostaje dostępny. Zbyt krótka wylogowuje magazyniera w trakcie pracy.
Bezpieczeństwo aplikacji internetowej
Aplikacja dostępna z przeglądarki jest widoczna z zewnątrz, więc bezpieczeństwo wymaga osobnej uwagi na każdym poziomie. Użytkownik loguje się, a system uprawnień ogranicza zakres jego pracy. Połączenie szyfruje się, a dane z formularzy traktuje jako niezaufane.
Dane z formularza uznaje się za niezaufane, dopóki serwer ich nie sprawdzi.
Zapytania do bazy buduje się z parametrów, a nie przez sklejanie tekstu, co zamyka drogę wstrzyknięciu SQL. Bibliotekom i platformie trzeba też zapewnić aktualizacje, bo zagrożenia zmieniają się szybciej niż same aplikacje.
Aplikacje internetowe na zamówienie
Programowanie aplikacji internetowych na zamówienie
SoftwareStudio wdraża rozwiązania informatyczne dla firm i programuje aplikacje internetowe na zamówienie. Zakres prac dopasowuje się do procesu klienta, a nie odwrotnie. Interfejs jest zbliżony do znanego z programów MS Office i Outlook, więc pracownik nie uczy się nowego sposobu obsługi okien i tabel.
Aplikacja powstaje w C# na platformie ASP.NET, a dane trzyma w bazie MS SQL Server, więc jej budowa jest taka sama jak opisana wyżej. Wersja przeglądarkowa działa na każdym stanowisku z dostępem do sieci.
Sklep internetowy w ASP.NET
Sklep Internetowy ASP.net umożliwia sprzedaż towarów i usług przez Internet. Opiera się na technologii Microsoft ASP.net oraz na oprogramowaniu CMS do zarządzania treścią, co ułatwia codzienną pracę z ofertą. CMS oddziela treść od kodu: pracownik zmienia opis oferty w panelu, a aplikacja ASP.NET wyświetla go na stronie. Programista nie musi wtedy ingerować w każdą zmianę tekstu.
Sklep wspiera działania marketingowe związane z promocją oferty i pomaga dotrzeć do nowych klientów. Strony są przygotowane tak, by widzieli je zarówno klienci, jak i wyszukiwarki, głównie Google.
Integracja z porównywarkami ofert
Sklep integruje się z portalami porównującymi oferty i ceny sklepów internetowych. Klient porównuje produkty i wybiera najlepszą ofertę, a firma zyskuje dodatkowy kanał dotarcia do kupujących. Zamówienia ze sklepu trafiają potem do magazynu, o czym piszemy na stronie o WMS dla e-commerce.
Od zamówienia w sklepie do wydania z magazynu
Zamówienie złożone w sklepie jest dopiero początkiem pracy magazynu. Gdy sklep jest zintegrowany z systemem magazynowym, zamówienie przechodzi do niego jako dokument i rezerwuje towar na stanie. Magazynier kompletuje je według lokalizacji, a po wysyłce system przekazuje do sklepu status zamówienia.
Stany magazynowe działają w drugą stronę. Sklep pokazuje klientowi dostępność towaru na podstawie aktualnych stanów, więc nie sprzedaje pozycji, której nie ma na półce. Różnica między stanem w sklepie a stanem w magazynie oznacza błąd integracji, który trzeba znaleźć w dokumentach.
Sklepy dla klientów firmowych i indywidualnych
Sklepy internetowe stały się głównym kanałem komunikacji firm z klientami. W obszarze biznesowym działają rozwiązania B2B, w indywidualnym rozwiązania B2C. Oba oparte są na technologii Microsoft ASP.net i systemie zarządzania treścią CMS, co zapewnia skuteczną sprzedaż online oraz łatwą pracę z oprogramowaniem sklepu.
Gospodarka paletami w przeglądarce
Sprawna gospodarka paletami wpływa na wydajność magazynu, bo liczy się ich rozmieszczenie oraz transport. Oprogramowanie dostępne z przeglądarki ułatwia tę gospodarkę, bo dane o paletach widzą jednocześnie wszystkie uprawnione osoby. Pozwala to lepiej wykorzystać miejsce w magazynie.
Program do gospodarki paletami od SoftwareStudio obsługuje przyjęcia i zwroty palet. Saldo palet rozlicza się na kierowców i przewoźników, a osobne rozliczenie dotyczy kontrahentów. Szczegóły opisuje strona o rozliczaniu salda palet.
Saldo palet pokazuje, ile palet danego typu pozostaje do rozliczenia między firmą a drugą stroną. Dopóki zwrot nie zostanie zapisany, saldo pozostaje otwarte, więc rozliczenie opiera się na dokumentach, a nie na pamięci. Zapis ilościowy wystarcza, bo palety tego samego typu są wymienne i nie wymagają osobnych numerów.
Przyjęcie palet rejestruje się na podstawie kwitu wystawianego przy bramie wjazdowej, a ich zwrot ewidencjonuje się ilościowo.
Gospodarka paletami współpracuje z systemem kontroli zapasów. System monitoruje zapasy w magazynie i zarządza nimi, więc firma lepiej wykorzystuje dostępne zasoby. Informacje o dostawach i poziomie zapasów są dostępne w czasie rzeczywistym, co ułatwia planowanie i optymalizację.
Aplikacja internetowa w codziennej pracy magazynu
Aplikacja internetowa działa przez przeglądarkę i zachowuje się jak standardowa aplikacja Windows, więc praca w niej jest intuicyjna. Interfejs znany z programów MS Office i Outlook skraca naukę obsługi. Pierwszym krokiem pracy jest logowanie, po którym aplikacja wczytuje uprawnienia użytkownika.
Inwentaryzacja w programie WMS.net
Inwentaryzacja w programie WMS Net ustala rzeczywisty stan magazynu i porównuje go ze stanem zapisanym w systemie. Spis wykonuje się na tych samych kartotekach, które służą ewidencji bieżącej. Regularne liczenie ujawnia różnice między rzeczywistością a dokumentacją. Różnica dodatnia oznacza nadwyżkę, a ujemna niedobór. Po wyjaśnieniu różnic dane są dokładniejsze, a firma lepiej planuje zakupy i zarządza zapasami.
Kartoteki magazynowe w programie WMS.net
Kartoteki magazynowe w programie WMS Net gromadzą dane o towarze, na przykład jego lokalizację i stany. Użytkownik przegląda szczegóły i śledzi ruchy towaru. Rzetelne kartoteki podnoszą też dokładność inwentaryzacji, bo spis porównuje się z aktualnymi zapisami.
Wydajność aplikacji przy wielu użytkownikach
Lista dokumentów w magazynie liczy tysiące wierszy, więc aplikacja nie wysyła ich wszystkich do przeglądarki. Serwer pobiera z bazy jedną stronę wyników, a indeksy na kolumnach filtrowania i sortowania skracają to zapytanie. Filtr wpisany przez użytkownika trafia do T-SQL jako parametr, więc baza przeszukuje tylko potrzebny wycinek danych.
Równoczesna praca wielu osób wymaga krótkich transakcji. Im krócej baza blokuje wiersze dokumentu, tym rzadziej jedna osoba czeka na drugą. Z tego powodu zapis dokumentu wykonuje się jedną procedurą, a nie serią osobnych żądań z przeglądarki.
Kopie zapasowe i dostępność
Baza MS SQL Server przechowuje wszystkie dokumenty magazynu, więc jej kopia zapasowa jest podstawowym zabezpieczeniem. Kopię wykonuje się według harmonogramu, a jej odtworzenie sprawdza się osobno, bo kopia, której nie da się odtworzyć, nie chroni danych.
Aktualizację aplikacji wykonuje się na serwerze poza godzinami pracy magazynu, a zmiana obejmuje od razu wszystkie stanowiska. Użytkownik po odświeżeniu strony pracuje już na nowej wersji.
Dokumenty prawne aplikacji internetowej
Aplikacja dostępna z przeglądarki przetwarza dane osobowe użytkowników, więc jej działanie opisuje polityka prywatności. Dokument określa zasady ochrony tych danych. Przejrzystość działań firmy buduje zaufanie klientów.
Warunki korzystania opisują zasady użytkowania oprogramowania przez klientów. Często obejmują licencje i odpowiedzialność stron, dzięki czemu obie strony unikają nieporozumień.
Technologie za aplikacją internetową
Warstwa serwerowa działa w C# na platformie ASP.NET, a dane leżą w bazie MS SQL Server. Logikę zapisu realizują procedury T-SQL, a transakcje pilnują integralności informacji. Po stronie przeglądarki pracuje JavaScript z biblioteką jQuery.
Użytkownik łączy się zdalnie, więc rozwiązania chmurowe ułatwiają dostęp do aplikacji i danych. Serwer może stać w firmie albo w chmurze, a pracownik w obu przypadkach otwiera ten sam adres. Dla magazynierów powstała aplikacja na terminale z Androidem, którą opisuje strona o terminalu Android.

Programy internetowe w programie magazynowym WMS.net
Dedykowany program zamiast arkusza Excel
SoftwareStudio dostarcza rozwiązania dla logistyki magazynowej, a jego produktem jest Magazyn WMS.net. Magazyn można prowadzić na zasadzie outsourcingu albo skorzystać z usługi magazynowania w magazynie logistycznym, w którym przechowuje się towar innych firm. Przedsiębiorstwo zajmuje się wtedy swoim głównym biznesem, a zarządzanie towarem przejmuje operator.
Kiedy standardowy program przestaje wystarczać
Wiele firm wspiera się arkuszami kalkulacyjnymi MS Excel, ale arkusz przestaje wystarczać, gdy rośnie liczba dokumentów i osób zmieniających te same dane. Podobnie bywa, gdy standardowy program nie spełnia oczekiwań albo użytkownik nie ma wiedzy, jak go skonfigurować.
Arkusz ma jeszcze jedną słabość: nie pilnuje spójności. Nikt nie blokuje wpisania ilości ujemnej ani zdublowanego indeksu, a po miesiącu pracy trudno ustalić, kto zmienił wartość. Baza danych z kontrolą po stronie serwera takie błędy odrzuca przy zapisie.
W takiej sytuacji można zaprojektować dedykowany program dopasowany do procesu firmy. SoftwareStudio tworzy aplikacje Windows w C# oraz portale internetowe w ASP.NET z użyciem AJAX. Pomaga też dostosować arkusze Excela i zautomatyzować pracę przez programowanie makr.
Co ustala się przed zleceniem programu
Przed zleceniem dedykowanego programu opisuje się proces i dane, na których on pracuje. Rozmowa obejmuje cztery obszary.
- Proces - kolejność czynności i dokumenty, które z nich powstają.
- Użytkownicy - role oraz zakres uprawnień każdej z nich.
- Dane - źródła informacji, w tym istniejące arkusze, i miejsce docelowe zapisu.
- Środowisko - serwer, baza MS SQL Server i sposób dostępu z przeglądarki.
Takie ustalenia przekładają się na harmonogram prac i koszt, dlatego zapisuje się je przed napisaniem pierwszej linii kodu.
Wybór narzędzia zależy od skali procesu. Poniższa tabela zestawia cztery rozwiązania oraz granice, przy których przestają wystarczać.
| Rozwiązanie | Kiedy wystarcza | Gdzie przestaje wystarczać |
|---|---|---|
| Arkusz Excel | Mała liczba dokumentów i jedna osoba przy danych | Kilka osób zmienia te same dane naraz |
| Makro Excela | Powtarzalna czynność w istniejącym arkuszu | Dane nadal leżą w pliku, a nie w bazie |
| Aplikacja Windows w C# | Stałe stanowiska w jednej firmie | Każda zmiana wymaga wymiany programu na komputerach |
| Portal ASP.NET z AJAX | Wielu użytkowników i dostęp z przeglądarki | Wymaga serwera i stałej dbałości o bezpieczeństwo |