aplikace: Když používám tento termín, obvykle mám na mysli jakýkoli aplikace. Může být také interpretován jako webová stránka, webová aplikace, desktopový software, mobilní aplikace atd. Považujte to za obecný zástupný symbol.
modul: Kompilace metod/funkcí/podprogramů a proměnných. Může být také interpretován jako třída (v kontextu objektově orientovaného programování)
backend: Technologie pro ukládání dat/model/server
datové úložiště: Databáze/systém souborů nebo jakákoli jiná technologie úložiště
Takže tady je problém: jak strukturujete svůj software/aplikaci tak, aby bylo snadné ji udržovat, upgradovat a přidávat/odebírat nové funkce?
Většina lidí by vám doporučila oddělit součásti vaší aplikace (nebo je rozdělit do modulů). Což je skvělá rada: když oddělíte kódovou základnu, stane se přehlednou, stručnou a snadno ovladatelnou.
Existuje několik technologií (které lze použít jako modely rolí), které do nás vrážejí tuto (oddělovací) ideologii; příklady zahrnují:
- Rozhraní REST API (agnostický jazyk):
Vytvoření REST API vás nutí abstrahovat vaše databázové operace od ostatních backendových komponent a oddělit tyto operace pod HTTP slovesy (POST, PATCH, GET, DELETE & PUT). Pomáhá také porozumět tomu, co každé z těchto sloves dělá, a využít je ve svůj prospěch: porozumět jim a správně implementovat jejich koncové body skutečně pomáhá při strukturování. Doporučuji nahlédnout do disertační práce Roye Fieldinga o REST
***Disclaimer: Slyšel jsem (a četl) pár skvělých věcí o GraphQL. Pravděpodobně na to brzy přejdu. - Modely Django (python):
Jednou z výhod používání django je, že abstrahuje všechny databázové operace (pokud používáte podporovanou databázi) a opravdu vám pomůže soustředit se na vytváření vaší aplikace. To je pěkně shrnuto v dokumentu Django Design Philosophies (který by si podle mě měl přečíst každý softwarový vývojář). Modely Django vás nutí explicitně definovat entity datové domény, se kterou vaše aplikace manipuluje a spravuje
Pokud zkombinujete REST a django , zjistíte, že můžete vytvořit koncový bod REST s podporou všech HTTP sloves (v případě potřeby) pro každý model django.
– pokud si pohráváte s vývojem webu, doporučuji vám vyzkoušet django a zažít úžasnost. — - Reagovat (javascript):
Toto je více zaměřeno na UI stránku věcí. Myslím, že každý, kdo někdy napsal html, by se zamiloval do reakce. Co vás React nutí udělat, je rozdělit/explicitně definovat vaše uživatelské rozhraní na jedinečné/individuální/samostatné, autonomní/samostatné/dobře podložené komponenty.
Existují však určité scénáře, kdy byste museli vymyslet strukturu sami (jako kdybyste vytvářeli reaktivní aplikaci s backendem firebase a chtěli byste využít některé z předem připravených firebase technologie, tudíž žádný REST ani django….i když máme React )
Zde je výchozí šablona v mé hlavě pro oddělení aplikací:
Odděluji komponenty uživatelského rozhraní od komponent pro ukládání dat / backend a k překlenutí mezery používám zpětná volání.
Kromě toho věnuji pozornost tomu, co se pravidelně znovu používá (např. funkce pro analýzu řetězců a/nebo čísel, funkce související s časem, ukládání proměnných, ke kterým pravidelně přistupuje více modulů atd.), a vytvářím pro to modul konstant/generiky s statický přístup k jeho proměnným a metodám/funkcím (pokud používáte něco jako javascript, nemusíte se starat o statický přístup; stačí exportovat své proměnné a importovat/vyžadovat tento soubor v jakémkoliv modulu, který potřebuje přístup k takovým konstantám a/nebo generika).
Zdá se, že to funguje perfektně pro UI stránku věcí, ale věci se stávají trochu složitějšími, pokud jde o backend / moduly pro ukládání dat, protože se zdá, že téměř každý případ je jedinečný, nejlepší je rozdělit věci do vzoru CRUD , tj. oddělení backendových modulů na:
- Generování/Vytváření obsahu
- Načítání obsahu
- Aktualizace obsahu (včetně mazání)
I když to dává určitý smysl (alespoň pro mě) na teoretické úrovni a na papíře, v praxi to dělá kódování mnohem obtížnějším, protože všechny tyto věci (generování, vyhledávání a aktualizace) spolu souvisí/souvisejí a jejich povaha je silně závislé/jedinečné pro každou komponentu/situaci uživatelského rozhraní…..
Vytvořit na vysoké úrovni(Jsem si vědom, že je možné dále/hlouběji oddělit) jazykový agnostický přístup k vytváření jednoduchých aplikací.
Zdá se také, že existuje paradox, na který člověk občas narazí při vytváření aplikací:
obsah definuje uživatelské rozhraní,
UI definuje obsah (do určité míry)
Bylo by také hezké poskytnout řešení tohoto paradoxu.
— dělá “Nemo judex in causa sua’ zde platí.
Úspěch metody, kterou navrhuji, se posuzuje podle toho, jak snadno lze do aplikace přidávat nové funkce s minimálním narušením struktury aplikace a čitelnosti/intuice/pochopení kódové báze při zachování konzistence a strukturální integrity datového úložiště.
Mezi další měřítka patří úhlednost (jak úhledný proces je), stručnost a délka procesu (v ideálním případě by měla být krátká).
Takže moje hlavní obavy jsou: konzistentnost, správa a snadnost.
Abych tento problém vyřešil, vzal jsem si příklad souběžné programování terminologie:
V zásadě chcete, aby veškerý kód související s generováním/aktualizací obsahu (tj. kód, který zapisuje do úložiště dat nebo jej aktualizuje) byl v jednom modulu, aby byla zajištěna konzistence a aby se zabránilo opakování #úhlednost #stručnost,
Čtete také jako nezávislí, protože dotazy na komponenty jsou obvykle jedinečné pro každou jednotlivou instanci/situaci, tj. jeden modul pro generování obsahu a aktualizace obsahu, několik modulů pro načítání obsahu; Motivace: Konzistence/trvalost a úhlednost/přenositelnost.
Sdílené zápisy můžete dále rozdělit na moduly specifické pro komponenty: tj. pokud několik komponent uživatelského rozhraní používá sdílení několika zápisů, můžete pro ně vytvořit modul sdílených zápisů; Pokud jste například vytvářeli aplikaci podobnou twitteru, místo univerzálního modulu pro zápisy ji můžete rozdělit na kousky a mít univerzální modul pro zápis pro akce tweetování, sledování/nesledování a/nebo akce s přímými zprávami. .
Přidávání funkcí
Chcete-li do aplikace přidat funkci, postupujte takto:
- Modelujte data prvku. Ujistěte se, že zapadají do existujícího schématu/struktury datového úložiště
- Vytvářejte, refaktorujte a testujte kód/moduly pro generování obsahu a aktualizaci obsahu.
- Vytvořte komponenty uživatelského rozhraní (a/nebo jakékoli jiné komponenty), které mohou tuto funkci implementovat.
- Vytvořte pomocníky datového úložiště pro každou z těchto funkcí.
Odebírání funkcí
- Odeberte datový model ze schématu existujícího úložiště dat a ujistěte se, že je zachována strukturální integrita.
- Odstraňte související kód/moduly pro generování obsahu a aktualizaci obsahu.
- Odstraňte související komponenty uživatelského rozhraní a jejich příslušné pomocné moduly úložiště dat.
nechte dotazy vaší aplikace definovat návrh vaší databáze.
to nebude fungovat pro samostatné aplikace, které nevyužívají žádné úložiště dat nebo backend, např. jednoduché videohry, jako je tic-tac-toe.
Softwarové inženýrství je z velké části experimentální proces (v tuto chvíli) a je opravdu chaotický, také každý případ je jedinečný pro danou situaci, to, co funguje pro mě, nemusí fungovat pro vás, ale v případě, že jsou naše případy podobné, doufám, že to pomohlo. Také prosím pamatujte, že toto je pouze můj názor na problém.
Existuje mnoho vzorů aplikací a návrhů, kterých jsem si vědom, a pravděpodobně byste je měli místo toho následovat.
Učení GraphQL (samozřejmě). Implementace návrhového vzoru úložiště. Uvidíme, zda mohu na tento problém použít techniky/přístupy evolučních algoritmů.
Из курса: AWS Essential Training for Architects
- Транскрипт курса
- Файлы упражнений
- Просмотр v режиме офлайн
Oddělte své komponenty
— [Instruktor] Decoupling neboli volná vazba se týká principu návrhu, který se zabývá minimalizací závislostí mezi komponentami za účelem zlepšení škálovatelnosti aplikací. Myšlenkou je usilovat o systém, kde pokud by jedna z komponent v architektuře selhala, ostatní komponenty pokračovaly vesele dál, jako by k žádnému selhání vůbec nedošlo. Běžný příklad toho lze vidět v typické třívrstvé architektuře webových aplikací, kde existuje několik webových serverů, které se připojují k několika aplikačním serverům, které se zase připojují k databázové vrstvě. Aplikační servery si obvykle neuvědomují webové servery a podobně webové servery nemusí nutně vědět mnoho o aplikačních serverech, zvláště pokud jsou propojeny s vyrovnávačem zátěže nebo nějakou jinou komponentou, která usnadňuje distribuci. Architektura pro dosažení volného spojení umožňuje komponentám nezávisle škálovat. Aplikace jsou…
Закрепляйте полученные в процессе обучения знания с помощью файлов упрайненене
Загрузите файлы, используемые преподавателем для ведения курса. Следуйте им и обучайтесь, просматривая, слушая и выполняя упражнения.
Загрузите файлы упражнений для этого курса. Получите бесплатную пробную подписку прямо сейчас.
Загрузите курсы a проходите обучение, где бы вы ни находились
Просматривайте курсы на мобильном устройстве без подключения к Интернету. Загружайте курсы, используя приложение LinkedIn Learning pro iOS nebo Android.
Просматривайте этот курс в любое время и в любом месте. Получите бесплатную пробную подписку прямо сейчас.
* Цена может отличаться в зависимости от сведений профиля и страны плателььщика, регистрации
Ознакомьтесь с темами, касающимися бизнеса
- Obchodní analýza a strategie
- Obchodní software a nástroje
- Kariérní růst
- Služby zákazníkům
- Diverzita, spravedlnost a začlenění (DEI)
- Finance a účetnictví
- Lidské zdroje
- Vedení a řízení
- Marketing
- Profesionální vývoj
- Project Management
- Prodej
- Malé podniky a podnikání
- Vzdělávání a vzdělávání
Ознакомьтесь с темами, касающимися творчества
- AEC
- Animace a ilustrace
- Zvuk a hudba
- Grafický design
- Pohyblivá grafika a VFX
- Fotografování
- Produkt a výroba
- User Experience
- Video
- Vizualizace a reálný čas
- Web Design
Ознакомьтесь с темами, касающимися технологий
- Artificial Intelligence (AI)
- Cloud Computing
- Data Science
- Správa databáze
- devops
- technické vybavení
- Zákaznická podpora IT
- Mobilní vývoj
- Správa sítě a systému
- Bezpečnost
- Vývoj softwaru
- Web Development
- LinkedIn © 2024 г.
- O nás
- Dostupnost
- Pravidla pro uživatele
- Zásady ochrany osobních údajů
- Cookie Policy
- Политика защиты авторских прав
- Политика торговой марки
- Настройки гостя
- Pravidla komunity
- العربية (арабский)
- Čeština (чешский)
- dánština (датский)
- němčina (немецкий)
- angličtina (английский)
- španělština (испанский)
- Français (французский)
- हिंदी (хинди)
- Bahasa Indonesia (индонезийский)
- italština (итальянский)
- 日本語 (японский)
- 한국어 (корейский)
- Bahasa Malajsie (малайский)
- Nederlands (нидерландский)
- norština (норвежский)
- polski (польский)
- portugalština (португальский)
- Română (румынский)
- Русский (rusky)
- Svenska (шведский)
- ภาษาไทย (тайский)
- tagalština (тагальский)
- turečtina (турецкий)
- Українська (украинский)
- 简体中文 (китайский (упрощенный))
- 正體中文 (китайский (традиционный))