Zdravím,
už před nějakým časem jsem začal uvažovat nad vytvořením systému pro správu (nejen) blogů a zaplnit tak jistou mezeru na trhu v oblasti .NET aplikací. Nyní jsem se k této myšlence vrátil a poupravil jsem databázovou strukturu. Nezahrnuje sice všechny mé myšlenky, ale prozatím ji nehodlám dále rozšiřovat. Uvítám však veškeré připomínky a návrhy. Diagram a objektový model -> http://img17.imageshack.us/gal.php?g=diagramq.jpg.
Stejně tak mě potěší, pokud vás napadne zajímavej název výsledné aplikace -> může, ale nemusí souviset s účelem aplikace a neměl by obsahovat slovo "blog".
Fórum › Offtopic
Název aplikace + návrh databáze
To djanosik : To bude nějakej redakční systém či co? Nebo nějaké desktopová aplikace pro správu redakčního systému, třeba pomocí SOAP? Protože redakčních systémů používajících .NET je hodně - Blogengine.NET, Umbraco, Comunity Server...
Spis podle navrhu te databaze bych tipl, ze to ma byt spravce nekolika blogu. Jinak navrh nevypada spatne, ale otazkou je, co to ma vsechno umet a delat, ale na prvni pohled vypada v pohode.
djanosik
Sice mě žádné jméno nenapadlo, ale zkusil bych být tebou Web 2.0 Domain Generator[1]. Ten vysype toliko blbých jmen, že něco radši vymyslíš sám :o)
Návrh databáze se mi zdá docela standardní pro podobné služby. Jen bych asi pro stromy (kategorie, komentáře) spíše použil traverzování kolem stromu a celý ten kus diagramu kolem rolí se mi zdá podivný (k čemu role a skupiny, když uživatel může mít přiřazena přímo práva? Předpokládám, že práva je vlastně tabulka toho, co se smí – pokud uživatel/role nemá přiřazen(a) žádná práva, nic nesmí.). Také to vypadá, že vícejazyčnost nebude řešena. Správně? Když už to podporuje více blogů, tak tohle by se tam určitě hodilo.
[1] http://www.dotomator.com/web20.html
Samozřejmě, má to být webová aplikace využívající ASP.NET MVC. Vytvářet další deskotovou aplikaci, by bylo nejspíš plýtvání časem.
To NOclipus : Závažným problémem všech jmenovaných a dalších CMS/BlogEnginů pro .NET je, že mi ani jedna z nich nevyhovuje :). A druhá věc je, že kromě Community Serveru, se kterým nemám ani trochu dobré zkušenosti (i když nevím, jak nová verze, která už se tak nejmenuje), žádný z nich nepodporuje vytváření X blogů v rámci jedné instalace. Existujou způsoby, jak to obejít, ale popravdě mě to moc neoslovilo.
To dannyk : Já bych jen nerad sepisoval seznam plánovaných funkcí (v hlavě toho mám celkem hodně), ale řekněme, že se časem chci přiblížit systémům, jako je např. Wordpress, MovableType, apod.
To bukaj_001 : Nad traverzováním kolem stromu jsem taky uvažoval, ale troufám si říct, že tahle metoda je o něco rychlejší. O aktualizaci hodnot TreeLevel a TreePath se stará trigger při vložení záznamu a při updatu (pokud se změní hodnota ParentId) -> pro aplikaci je to zcela transparentní. Máš k tomu nějakej jinej důvod?
A pokud jde o ty role, myslel jsme to asi takhle. V průběhu vývoje bude určitě potřeba omezit přístup k některým částem aplikace. V ASP.NET se to standardně řeší jen s pomocí rolí (pokud je uživatel v určité roli, může něco udělat, jinak ne). Problém nastane, pokud je třeba některé role přejmenovat, přidat nové, apod. Aplikace to nemůže zaregistrovat, protože většina RoleProviderů (jakási abstrakce na zvoleným uložištěm) využívá k identifikaci název role.
Já jsem se tedy rozhodl primárně neřešit, v jaké je uživatel roli, ale jaká má přiřazena oprávnění (oprávnění lze dělit do skupin, ale nevím, jestli to tak zůstane) a přiřazují se především k rolím (vztahují se pak na více uživatelů) a pokud je to nutné/vhodné, pak je lze přiřadit i ke konkrétním uživatelům (nebudu pro jednoho uživatele, kterému chci např. dočasně přidělit nějaká práva, vytvářet novou roli). Možná je to zbtečně komplikované, uvidíme.
Vícejazyčnost ve smyslu, že lze lokalizovat UI, samozřejmě bude. Jen ještě nevím, zda se hodnoty budou ukládat do DB. Lokalizace obsahu řešena nebude (alespoň k tomu nevidím důvod).
djanosik
[…] tahle metoda je o něco rychlejší […] Máš k tomu nějakej jinej důvod?
Benchmarky jsem na tohle nikdy nedělal, takže nevím, jak je to s rychlostí té které metody. Relační databáze se podle mě obecně na ukládání stromových struktur nehodí a traverzování kolem stromu se mi zdá jako nejmenší zlo. I když teď, když přemýšlím nad tím, jak různé operace provést s traverzováním a s ukládáním cesty v stromu, začíná se mi ukládání cesty líbit čím dál tím víc.
[…] role […]
Už snad chápu. Mně vždycky něco na takovémto ukládání rolí a oprávnění do databáze nevoní. I když stále mě nenapadá, jak to udělat elegantněji.
Vícejazyčnost ve smyslu, že lze lokalizovat UI, samozřejmě bude. Jen ještě nevím, zda se hodnoty budou ukládat do DB. Lokalizace obsahu řešena nebude (alespoň k tomu nevidím důvod).
Myslel jsem tu lokalizaci samotného obsahu, ne UI. Jinak lokalizaci UI bych do databáze nerval – na to jsou efektivnější způsoby (nevím, jestli má .NET podporu pro gettext, či má něco podobného svého; ale radši bych využil nějaký takový specializovaný nástroj, než databázi jako úložiště + si k tomu psát ještě vlastní kód pro obsluhu).
To bukaj_001 : V .NETu se pro lokalizaci UI většinou používaj Resources (soubory *.resx). Existuje výchozí soubor např. Messages.resx a k němu soubory pro "každou" kulturu (Messages.cs.resx, Messages.en.resx, atd). Výchozí soubor se zkompiluje společně s projektem (ClassLibrary.dll), ostatní jsou uloženy v satelitních knihovnách (cs/ClassLibrary.resources.dll, en/ClassLibrary.resources.dll). Pokud někdo chce jen konkrétní lokalizace, může zbytek smazat. Správné resources se většinou volí podle kultury aktuálního vlákna, případně podle UserAgent řetězce u ASP.NET aplikací (automaticky, lze nastavit v konfiguraci).
Dokážu si představit, že někdo bude chtít lokalizovat stránky (Pages) a případně další části, takže to asi pořeším, ale u příspěvků (Posts) si nejsem moc jistej.
BTW: Dík za tip na ten generátor. Netuším, jestli bych si tam něco vybral, ale je to zajímavý :)
Ohledne roli, skupin: Podle me to ma smysl a daji se tim jemneji ridit prava. Vyuziti to podle me ma, ale otazkou zustava, jestli to je az tak potreba.
Pred nedavnem jsem videl i zajimavy navrh systemu roli a prav, kdy role se daly dedit:
Permissions.addRole("User");
Permissions.addRole("Admin", "User");
dale se pridaly nejake zdroje
Permissions.addResource("download");
Permissions.addResource("clanky");
a k jednotlivym resources se prirazovaly prava
Permissions.addPrava("User", "download", "view");
Permissions.addPrava("Admin", "download", "delete");
Nejak takto to priblizne vypadalo. Podle me je to vcelku zajimavy navrh a pak uz neni problem kontrolovat pristupy k jednotlivym vecem.
Co se tyce lokalizace obsahu, tak to je podle me blbost a nema to smysl,ale upravy v db by byly v celku minimalni, takze zahrnout by se to dalo. Ohledne lokalizace UI,tak pouzit resources je pekna vec, ale podle me je to prilis velke omezeni, kdyz se vysledek zkompiluje do dll. Takhle by bylo lepsi pouzit externi soubor a pak ho nacist a lokalizovat sablonu.
Dale bych zkusil pridat moznost pluginu, ale to bych zavedl asi az pozdeji.
BTW: Co takhle nazev Redacto :o)
To dannyk : Hmm, to nevypadá špatně.
Ad Resoruces: Chápu. V interní aplikaci to není na škodu, ale tady by bylo žádoucí, aby kdokoliv mohl vytvořit vlastní lokalizaci a dát ji k dispozici ostatním, to při použití *.dll není dost dobře možné. Otázka je, zda zůstat u ResourceManageru, ale načítat nezkompilované resx soubory z nějaké složky a nebo použít jinej systém?.
Pluginy určitě ano, ale nejdřív musím domyslet architekturu.
BTW: Zajímavej název :)
Ad Resources: Ja bych se na ty resources asi vykaslal a udelal neco vlastniho, protoze ne kazdy ma editor resx souboru. A ono udelat si nejaky vlastni mensi sablonovaci system, ktery by to prepisoval by nemel byt takovy problem.
Ad Nazev: Ze jo, taky se mi libi :D
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
VB - Jak získat název aplikace — založil Denoy
Grafický návrh aplikace — založil Peyton Sharp
Návrh databáze — založil Dragon
Návrh databáze — založil kucape2
Návrh databáze — založil Gooo
Moderátoři diskuze