jak mohu být se všemi těmito službami anemický?
<p>kde nakreslíme hranici mezi delegací a zapouzdřením obchodní logiky? zdá se mi, že čím více delegujeme, tím více <a href="http://www.martinfowler.com/bliki/anemicdomainmodel.html">anemických</a> se stáváme. delegování však také podporuje opakované použití a principu dry=). co je tedy vhodné delegovat a co by mělo zůstat v našich modelech domén?</p><p>jako příklad vezměte následující obavy:</p><p><strong> autorizace </strong>. pokud by byl doménový objekt zodpovědný za udržování svých pravidel řízení přístupu (jako je například vlastnost canedit) nebo by měl být delegován na jinou součást/službu, která je výhradně odpovědná za správu přístupu, např. iauthorizationservice.canedit (objekt)? nebo by to měla být kombinace obou? možná má doménový objekt vlastnost canedit, která deleguje interní iauthorizationservice za účelem provedení skutečné práce?</p><p><strong> ověření </strong>. stejná diskuse jako výše se týká validace. kdo dodržuje pravidla a kdo je za jejich hodnocení odpovědný? na jedné straně by stav objektu měl patřit tomuto objektu a platnost je stav, ale nechceme přepisovat kód používaný k vyhodnocení pravidel pro každý objekt domény. my <em> můžeme</em> v tomto případě použijeme dědičnost ...</p><p><strong> vytváření objektů </strong>. tovární třída versus tovární metody versus „nováčkování“ v instanci. používáme-li samostatnou třídu továrny, jsme schopni izolovat a zapouzdřit logiku vytváření, ale na úkor otevření stavu našeho objektu do továrny. to lze spravovat, pokud je naše doména vrstva v odděleném sestavení tím, že odhalí interní konstruktér používaný v továrně, ale toto se stává problémem, pokud existuje více vzorů vytváření. a pokud celá továrna dělá, volá správného konstruktéra, co má smysl mít továrnu?</p><p>tovární metody ve třídě eliminují problém s otevíráním vnitřního stavu objektu, ale protože jsou statické, nemůžeme zlomit závislosti injekcí továrního rozhraní, jako můžeme se samostatnou třídou továrny.</p><p><strong> perzistence </strong>. dalo by se namítnout, že pokud náš objekt domény vystaví canedit, zatímco deleguje odpovědnost za provedení kontroly autorizace na jinou stranu (iauthorizationservice), proč nemá metodu uložit na našem doménovém objektu, která dělá totéž? to by nám umožnilo vyhodnotit vnitřní stav objektu a zjistit, zda lze operaci provést bez přerušení zapouzdření. samozřejmě to vyžaduje, abychom vložili instanci úložiště do našeho doménového objektu, který mi trochu voní, takže místo toho vyvoláme událost domény a umožníme manipulátoru provádět perzistenční operaci?</p><p>vidíš, kam s tím půjdu?</p><p>rockford lhotka má velkou diskusi o svých důvodech, proč pro svou cestu csla absolvoval cestu class-in-charge, a já mám trochu historie s tímto rámcem a vidím jeho představu o obchodních objektech paralelních s doménovými objekty mnoha způsoby. ale snažím se více vyhovovat dobrým ideálům ddd, zajímalo by mě, kdy se spolupráce stává příliš velkou.</p><p>pokud skončím s iauthorizationservice, ivalidator, ifactory a irepository pro můj agregovaný root, co zbude? je metoda publikování, která mění stav objektu z konceptu na publikováno natolik, že považuje třídu za neanemický doménový objekt?</p><p>tvoje myšlenky?</p>
<p>zdá se, že většina zmatku se týká funkcí, které by v modelu domény neměly vůbec existovat:</p><ul> <li> <p><strong>perzistence</strong> by nikdy nemělo být v modelu domény. vůbec nikdy. to je důvod, proč se spoléháte na abstraktní typy, jako je <code>irepository</code>, pokud část modelu někdy potřebuje udělat něco jako načtení jiné části modelu, a použít závislost injekce nebo nějakou podobnou techniku ​​k zapojení implementace. tak to udeřte ze záznamu.</p> </li> <li> <p><strong>autorizace</strong> není <em> obecně </em> součástí vašeho modelu domény, pokud není skutečně součástí domény, např. pokud píšete bezpečnostní software. mechanici, kterým je povoleno provádět to, co je v aplikaci, se běžně řeší v „edge“ úrovně business/domain, veřejných částí, se kterými mohou části ui a integrace skutečně hovořit - controller v mvc, services nebo samotný systém zasílání zpráv v soa ... získáte obrázek.</p> </li> <li> <p><strong>továrny</strong> (a předpokládám, že máte na mysli abstraktní továrny), nejsou zrovna <em> špatné </em>, které mají v doménovém modelu, ale jsou téměř vždy zbytečné. za normálních okolností máte továrnu pouze tehdy, když se vnitřní mechanika vytváření objektů může změnit. máte však pouze jednu implementaci doménového modelu, což znamená, že bude existovat pouze jeden druh továrny, která vždy vyvolá stejné konstruktory a další inicializační kód.</p> <p>můžete mít továrny na „pohodlí“, pokud chcete - třídy, které zapouzdřují běžné kombinace konstruktérských parametrů atd. - ale upřímně řečeno, obecně, pokud máte ve svém doménovém modelu mnoho továren, pak jen ztrácíte řádky kódu.</p> </li> </ul><p>takže jakmile všechny tyto trávníky odejdete, tak to prostě opustí ověření. to je jediný, který je tak složitý.</p><p><strong>ověření</strong> <em> je </em> součástí vašeho doménového modelu, ale je také součástí každé další komponenty aplikace. vaše uživatelské rozhraní a databáze budou mít svá vlastní, podobná, ale odlišná pravidla validace, založená na podobném, ale odlišném konceptuálním modelu. není skutečně určeno, zda objekty musejí mít metodu <code>validate</code>, ale i když ano, obvykle ji delegují do třídy validátoru (ne rozhraní - ověření je <strong>ne</strong> abstrakt v doménovém modelu je to zásadní).</p><p>mějte na paměti, že validátor je stále technicky součástí modelu; nemusí být připojen k agregovanému kořenovému adresáři, protože neobsahuje žádná data ani stav. doménové modely jsou koncepční věci, obvykle se fyzicky překládají do shromáždění nebo do sbírky sestav. pokud se váš kód delegace nachází v těsné blízkosti modelu objektu, nestresujte se nad „anemickým“ problémem; stále se to počítá.</p><p>k tomu všemu opravdu patří to, že pokud se chystáte udělat ddd, musíte pochopit, co je doména <em> </em>. pokud stále mluvíte o věcech, jako je vytrvalost a autorizace, jste na špatné cestě. doména představuje běžící stav systému - fyzické a koncepční objekty a atributy. do doménového modelu, období nepatří nic, co není přímo relevantní pro objekty a vztahy.</p><p>při zvažování, zda něco patří do doménového modelu, se zpravidla položte následující otázka:</p><p><strong>„může se tato funkčnost někdy změnit z čistě technických důvodů?“</strong> jinými slovy, nikoli kvůli jakékoli pozorovatelné změně skutečného podnikání nebo domény?</p><p>pokud je odpověď „ano“, pak nepatří do modelu domény. není součástí domény.</p><p>existuje velmi dobrá šance, že jednoho dne změníte svou infrastrukturu vytrvalosti a autorizace. nejsou proto součástí domény, jsou součástí aplikace. to platí také pro algoritmy, jako je řazení a vyhledávání; neměli byste jít a strčit implementaci binárního vyhledávacího kódu do svého modelu domény, protože vaše doména se týká pouze abstraktní koncepce vyhledávání, nikoli toho, jak to funguje.</p><p>pokud po odstranění všech věcí, na kterých vám nezáleží, zjistíte, že model domény je skutečně <em> anemický </em>, pak by to mělo sloužit jako docela dobrý náznak, že ddd je jednoduše nesprávným vzorem pro váš projekt.</p><p>některé domény jsou skutečně <em> </em> anemické. aplikace pro sociální bookmarking ve skutečnosti nemají o „doméně“ moc mluvit; všechny vaše objekty jsou v podstatě pouze data bez funkce. na druhé straně má obchodní a crm systém docela těžkou doménu; když načtete entitu <code>rate</code>, pak existuje rozumné očekávání, že ve skutečnosti <em> můžete dělat věci </em> s takovou mírou, například použít na objednané množství a nechte si zjistit objemové slevy a promo kódy a všechno zábavné.</p><p>doménové objekty, které pouze uchovávají data obvykle <em> do </em> znamenají, že máte anemický doménový model, ale to nutně <em> nemusí </em> znamená, že jste vytvořili špatný design - může to znamenat pouze to, že samotná doména je anemická a že byste měli používat jinou metodologii.</p>
To by typicky být špatný nápad, aby se pokusila portu Symbian OS C ++ do standardního C ++, aniž by bylo velmi dobré znalosti o tom, co styly Symbian dělat.


To by mohlo velmi dobře být jedním z těchto projektů, kde je správná věc udělat, je přepsat většinu kódu skoro od nuly. Pokud jste sotva znát jazyk, který je cílení, nemá smysl v klamou sami sebe do myšlení nebudete dělat chyby, ztrácet čas a zahodit nový kód stejně. To vše je součástí učení.


CleanupStack mechanismus je určen k vám pomohou vypořádat s ničím, co by mohlo pokazit, včetně výpadku napájení az paměťových podmínek. Z technického hlediska, v těchto dnech, to je implementován jako C ++ výjimky, ale pokrývá více než obvyklých případech chybových standardní C ++ kódu normálně rukojeti.


Popisovače (TDesc, TBuf a HBuf všichni patří do hierarchie deskriptor třídy) a šablony (pole, fronty, seznamy ...) existovaly již před jejich ekvivalent ve standardním C ++ při řešení otázek, jako je CleanupStack, kódování norem, správy paměti a integrity .. ,


Odpovídající konektor, pokud se chcete dozvědět o tom: [Rychlé recepty na platformě Symbian OS](http://www.quickrecipesonsymbianos.com) je nedávný pokus explaning to vše v co nejmenším počtem stran jak je to možné.


Také byste měli rozhodně podívat na [nadace](http://developer.symbian.org) webové stránky, abyste mohli začít.


Třídy předponou T mají být dostatečně malý, aby samy o sobě mohou být přiděleny v zásobníku.


Popisovače třídy s příponou C mají být neměnné (A měnitelné deskriptor může být obvykle vytvořena z nich, ačkoli).


HBufC je v podstatě jedinou třídou Symbian předponou H. To by mělo být vždy na haldě.


Metoda s příponou C přidá objekt na CleanupStack kdy úspěšně vrátí (obvykle je to objekt se vrací). Je to až k volajícímu kódu Pop daný objekt.


Třídy předponou R jsou určeny mají být přiděleny v zásobníku, ale spravovat své vlastní haldy založené zdroje. Oni obvykle mají nějaký druh close () metoda, která musí být volána před jejich destruktor.


Typickým způsobem, jak věc, o rozdílech mezi kolekci objektů a sbírka ukazatelů k objektu je, kdo je vlastníkem objektů v kolekci. Buď kolekce vlastní objekty, když jsou přidány a ztrácí je, když jsou odstraněny (a je tudíž zodpovědná za vymazání každý objekt stále obsahuje, když je sama zničena) nebo kolekce nepřevádí vlastnictví a něco jiného je třeba zajistit objekty obsahuje zůstane v platnosti po celou dobu životnosti sbírce má.


Dalším způsobem, jak přemýšlet o sbírkách je o tom, kolik kopírování objektů, které se má stát, když přidáte / získat objekty / z kolekce.


Symbian deskriptor a kolekce třídy jsou určeny k pokrytí všech těchto různých způsobů využití paměti a nechat si vybrat ten, který potřebujete na základě toho, co chcete dělat.


Je to jistě není snadné na to právo, ale to, jak tento operační systém funguje. ORM může být váš nejlepší řešení.   

Nebo použít typ úložiště vzor, s „thingContext“ objekt, který je zodpovědný za státní vytrvalost.


Osobně používám Active Record, kde ušetřit logiku se peče do základní třídy, ale já odjíždím to ve prospěch NHibernate stylu úložiště vzor. Příspěvek na DDD a testování věci bez db je velmi příjemné mít v rámcové typu situace, kdy je moje obchodní logiky nyní získává trakci na novém uživatelském rozhraní. K dispozici jsou 2 standardní způsoby, jak se blíží k testu, která závisí na něčem jiném (namítat, volání funkce, atd).


* Můžete použít vysmívá namísto objekty kód testujete závisí na.
* Můžete načíst přípravek nebo dělat tvorbu / hovor zkušební sestavy.


Někteří lidé mají rádi „klasických“ unit testů, kde je testován jen „jednotka“ kódu. V těchto případech se obvykle používají se vysmívá a pahýly nahradit závislostí.


Jiné podobné více integračních testů, kde je testována většinu nebo všechny zásobníku volání. V těchto případech můžete použít přípravek, nebo možná dokonce dělat hovory / výtvory ve funkci nastavení.


Obecně byste **to** udělat jeden test závisí na druhého. Všechny testy by měly:


* uklidit po sobě
* je spustitelný v izolaci
* být spustitelný jako součást sady
* být konzistentní a opakovatelné


Pokud uděláte jeden test závislý na jiném nemohou být spuštěny v izolaci, a ty jsou také nutí rozkaz testy spustit. Prosazování pořadí v testech není dobré, ve skutečnosti mnoho lidí pocit, že by se náhodně pořadí, ve kterém jsou spouštěny vaše testy. Podle vzhledu,podle toho jaké technické řešení potřebuji a hlavně podle výkonu. Upřímně řečeno, já bych jít s sestavení .NET, jak se zdá být jednodušší řešení a těsněji obsahoval řešení, než zahájit nový proces. Některé z důvodů, proč jsem pocit, že způsob, jakým jsou tyto:


1. S nástrojem příkazového řádku, že jste na trh nový proces. Takže je to zcela samostatný proces ID běh a bude probíhat mimo rozsah a aplikační domény vaší stávající aplikace. Veškerá komunikace mezi aplikací a procesu bude přes hranice procesu a bude muset být provedeno buď s telefonem, jakési sdílené paměti, nebo nějaký jiný přístup, který by mohl být těžkopádný (zejména při řešení otázek).
2. Se zahájením nového procesu, jste v podstatě ztratí kontrolu nad tímto procesem z vaší aplikace. Pokud vaše aplikace zemře nebo se vypne, budete muset tento proces výslovně zabít - jinak budete muset úchyty zůstat otevřené soubory uzamčeny, atd.
3. Včetně sestavení .NET v aplikaci umožňuje vše spustit ve stejném kontextu (obecně), který umožňuje lepší komunikaci mezi složkami, snadnější ladění a odstraňování poruch (obecně), a jediný způsob je řízena.
4. Máte trochu větší kontrolu nad kódu. Zahájení procesu je v podstatě black-box - nemáte ponětí, co se děje uvnitř ní. Je pravda, že se sestavení .NET máte podobný black-box scénář, ale vzhledem k tomu, že je ve stejném procesu, může mít nějaké další vhled do toho, jak jsou hovory byly provedeny, kde jsou výjimky být hozen, atd. V podstatě mít trochu větší vhled do složky s sestavení .NET spíše než zahájit nový proces.


To jsou jen některé myšlenky z vrcholu mé hlavy. Doufám, že to pomůže. Máte-li dotazy, dejte mi vědět a já vám zpracovat mé odpovědi. Hodně štěstí!! výpočty podle teorie druhého řádu zohledňují postupné deformování konstrukce vlivem aplikovaného zatížení. řečeno matematicky působící zatížení je rozděleno na malé části (přírůstky) a pro každý přírůstek se spočte jak konstrukce reaguje. účinky 2. řádu se také někdy nazývají účinky p-δ a p-δ a ve scia engineer (a také jinde) se na ně odkazuje jako na geometrickou nelinearitu. podívejme se na některé opakující se dotazy našich uživatelů. kdy musím provádět výpočty podle teorie druhého řádu? jednotlivé části eurokódů (ec2 ec3 ec4 ec atd.) určují v kapitole 5 (analýza konstrukce) kdy je nutno výpočet podle teorie druhého řádu provádět. u ocelových konstrukcí například nízká hodnota součinitele αcr naznačuje vysokou ohebnost (štíhlost) konstrukce a tudíž citlivost na počáteční imperfekce a příčné deformace. součinitel αcr se určí jako podíl pružného kritického vzpěrného zatížení pro mód globální nestability fcr a návrhového zatížení konstrukce fed. jinými slovy abychom určili zda je nutno provádět výpočet podle teorie druhého řádu musíme se spolehnout na výsledky stabilitního výpočtu. ve scia engineer můžeme vytvořit stabilitní kombinace z vybraných návrhových kombinací a získáme kritické součinitele vzpěru jež odpovídají těmto zatěžovacím scénářům. tyto součinitele jsou vlastně násobiteli zatížení které je obsaženo ve stabilitní kombinaci. a protože naše stabilitní kombinace jsou „návrhové zatížení“ jsou tyto součinitele právě našimi součiniteli αcr které hledáme. je také důležité si uvědomit jaký typ konečně-prvkového výpočtu chceme provádět abychom získali návrhové vnitřní síly: chceme zůstat u pružného výpočtu nebo chceme také použít plastické klouby a redistribuovat momenty? podle ec3 platí že pokud provádíme pružný výpočet a kterýkoli z našich součinitelů αcr je menší než 10 pak musíme konstrukci navrhovat na výsledky výpočtu podle teorie druhého řádu. v případě plastického výpočtu (např. plastických kloubů) je pak limitní hodnotou pro nutnost provádět výpočet podle teorie druhého řádu αcr < 15. jak mohu zohlednit celkové deformace podle normy? geometrické imperfekce v konečně-prvkovém modelu zaručují že účinky druhého řádu jsou při výpočtu správně zohledněny. ti z vás kteří dobře znají kapitolu 5 v ec3 se často ptají jak ve scia engineer zohlednit celkové imperfekce a imperfekce dílce. imperfekce se definují na úrovni nelineární kombinace: každá nelineární kombinace může mít svoji sadu imperfekcí. to je výhodné protože různé zatěžovací scénáře vedou k jinému módu selhání který je naopak větší či menší měrou ovlivněn tvarem konkrétní imperfekce. pro definování rovnoměrného stranového posunu konstrukce použijte zadání typu „jednoduchý náklon“ a zadejte relativní náklon ve směru osy x a y - dx a dy. kapitola 5.3.2 v ec3 obsahuje obrázek 5.2 s úhlem náklonu φ. v dialogu pro zadání nelineární kombinace použijte dx = 1000*φx (nebo dx = 1000*tan(φx) podle toho jakým způsobem obrázek interpretujete). typ imperfekce „jednoduchý náklon“ se hodí pro konstrukce s pravidelným půdorysem i bokorysem. existují pro celkové imperfekce různé způsoby zadání? ano ve scia engineer existuje několik možností. jmenovitě jsou to: funkce náklonu: pokud potřebujete po výšce budovy měnit velikost nebo i směr náklonu použijete pro definování imperfekce funkce. tyto funkce se zadávají ručně jako lomené křivky složené z několika (mnoha) přímých úseků a zadávají se ve funkci knihovny > konstrukce výpočet > počáteční imperfekce. imperfekce odvozené ze zatěžovacího stavu: scia engineer umožňuje spočítat deformaci konstrukce pro daný zatěžovací stav a spočtenou deformaci aplikovat jako počáteční deformaci. pokud víte jaký přibližný tvar imperfekcí chcete získat můžete definovat zatěžovací stav který takovou deformaci způsobí. můžete zadat zatěžovací stav se zlomkem všech návrhových zatížení tak si můžete být jisti že ve výpočtu budou zastoupeny všechny možné stabilitní účinky. vlastní stabilitní tvar jako imperfekce: můžete zvolit stabilitní kombinaci a jeden z jejích vlastních tvarů a ten aplikovat jako imperfekci konstrukce. jak mohu zohlednit lokální deformace podle normy? jak bylo uvedeno již dříve imperfekce se přiřazují nelineární kombinaci. nejpraktičtějším způsobem přiřazení hodnoty imperfekce je odkázat se na nastavení vzpěru (přes nastavení kombinace). tím lze přes nastavení vzpěru určit který z dílců vykazuje imperfekce. je často dobré uvažovat imperfekce na dílcích které chcete analyzovat podrobně raději než přiřadit imperfekce všem dílcům na konstrukci. existují pro lokální imperfekce různé způsoby zadání? ano. namísto odkazu na data o vzpěru umožňuje scia engineer definovat lokální imperfekce přímo pomocí vlastností nelineární kombinace. pamatujte však že zadaná křivost bude pak aplikována na všechny dílce v konstrukci. Nejlepší vysvětlení jsem viděl, je v kapitole 7 volných [Základy programování e-knihy](http://codebetter.com/karlseguin/2008/06/25/foundations-of-programming-ebook/) .


Zjednodušeně řečeno, v **.NET** dochází k nevracení paměti při odkazované objekty kořeny, a proto nemůže být uvolněna. K tomu dochází náhodně, když se držet na referencí mimo zamýšlený rozsah.


Budete vědět, že máte úniky, když začnete dostat OutOfMemoryExceptions nebo vaše využití paměti stoupá rámec toho, co byste očekávali ( **PerfMon** má pěkné čítače paměti).


Pochopení **.NET** model paměti je, je nejlepší způsob, jak se vyhnout to. Konkrétně pochopení toho, jak garbage collector funguje a jak reference práce - opět odkazuji na kapitolu 7 e-knihy. Také mějte na paměti společných úskalí, pravděpodobně nejvíce obyčejné jsoucí události. Pokud objekt je registrována k události na objekt **B** , pak objekt **A** bude držet kolem, dokud objekt **B** zmizí, protože **B** uchovává odkaz . Řešením je zrušení registrace na akce, když budete hotovi.


Samozřejmě, dobrý profil paměť vám umožní vidět vaše objektů grafy a prozkoumat hnízdění / odkazování svých objektů, které mají zjistit, kde reference přicházejí a co kořenový objekt je zodpovědný ( [red-gate mravenci profil](http://www.red-gate.com/products/ants_memory_profiler/index.htm) , JetBrains dotMemory, [memprofiler](http://memprofiler.com/) jsou opravdu dobré volby, nebo můžete použít pouze text **WinDbg** a **SOS** , ale já bych důrazně doporučujeme obchodní / vizuální produkt, pokud jste opravdový guru).


Věřím, že neřízený kód je předmětem jeho typické úniky paměti, že kromě sdílené odkazy jsou řízeny garbage collector. Možná se mýlím o tomto posledním bodě. Nijak, musí to podporovat z výroby. A hlavně musí mít připojení k internetu. dobrý den, dano, vaše přání je naší prioritou, ve které jsme nestranní. podívejte se blíže na stránku [porovnání značek tepelných čerpadel](https://www.topite.cz/porovnani-tepelnych-cerpadel). Pěkný den,   

  

domnívám se, že chyba bude na straně sepisovatele insolvenčního návrhu, který by s vámi měl probrat, zda nedošlo k převodu nemovitého majetku, a pokud ano, kam šel výtěžek. V takovém případě by byla vaše situace uvedena přímo v insolvenčním návrhu.   

  

Doporučuji obrátit se na advokáta, popřípadě bezplatnou právní poradnu ve vašem městě, která se zabývá insolvenčním právem, jejich seznam najdete zde: sako. justice.cz. Právník by Vám měl pomoci sepsat vyjádření na soud, kde bude uvedeno, že jste kupříkladu nebyli sepisovatelem ins. návrhu poučeni o povinnosti nahlásit převod nemovité věci před zahájením ins. řízení, a kam šly peníze z prodeje a dále, že jste chtěli zbytek svých závazků splácet, nicméně vám na to nevycházely finance.   

  

Správce má pravdu v tom, že takto se vaše jednání jeví jako nepoctivý záměr upřednostňování věřitelů, kteří těsně před ins. dostanou 100%, zatímco ostatní budou uspokojováni v oddlužení poměrně.