🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #22361

Re: ServiceLayer - rozważanie, best practice

#22361
From: Łukasz 'Maly' Ostrowski
Date: Wed, 22 Feb 2012 18:04
49 lines
2999 bytes
On Wed, 22 Feb 2012 18:02:20 +0100, MarlonB wrote:
> Mógłbyś napisać coś więcej w jaki sposób / ze względu na co rozdzielasz 
> funkcjonalność na Service i Repository?

Behavior i Composite Actions - Service
Data Access - Repository

Ale w uproszczeniu, wszystko można traktować jako Service. Zostajesz
wtedy przy "Data Services". Ale tak jak napisałem:
> /Podział ideologiczno-nomenklaturyowy jest czysto syntetyczny/

Przykładowo w wersji #A z której korzystam, jest overkill bo
kontroler nigdy nie korzysta bezpośrednio z repository,
tylko z serwisów, które z kolei "importują" sobie repozytoria. 
Dochodzi do sytuacji w której
  IUserService.Get(int id);
jest bezpośrednim forwardem do
  IUserRepository.Get(id);
Nie zauważyłem żadnego zysku z takiego rozwarstwienia, więc 
zacząłem także importować repozytoria bezpośrednio do kontrolerów.

Wszystko jest umowne, wybiera się ścieżkę najsensowniejszą z Twojego
punktu widzenia.

> Repository wykorzystuje między warsta dataAccess a businessLogic. Jak 
> rozumiem repository ma tylko operacje CRUD? Dlatego nie bardzo widzę 
> zastosowania repository w serviceLayer, jako że potrzebuje konkretnych 
> akcji. Być może coś źle rozumiem...

Dobrze rozumiesz. Repository pattern to CRUD.

> Ciekawi mnie bardzo opinia kogoś już doświadczonego, czyli co powinno 
> znaleźć się w serviceLayer? Jakie patterny? W serviceLayer korzystam z unity 
> do pozyskania konkretnej implementacji danego serwisu.

ServiceLocator.Resolve<T>() będzie prawdopodbnie w zupełności jedynym
wymaganym callem kontenera IoC, defacto, ewentualnie wystarczy
sforwardować podstawowe calle Unity.

> Może jakieś ciekawe artykuły jak dobrze zaprojektować to wszystko?

Przyjrzyj się SharpArchitecture, nie jest doskonałe, ale tak do
poglądowego ogarnięcia jest całkiem niezłe. Ostatnim razem jak
widziałem #A, było nieźle, nie wiem w jakim dokładnie stanie
architekturalnym jest wersja aktualna.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Technical Details
Message-ID: <1mt437iq9a6yz.1vti2z6dbuetk.dlg@40tude.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
References: <ji2pdf$ht6$1@mx1.internetia.pl> <12b400yh5lb3r.mg3vhkurgug9.dlg@40tude.net> <ji373f$i9m$1@mx1.internetia.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: ServiceLayer - rozważanie, best practice
Date: Wed, 22 Feb 2012 19:04:43 +0100
Organization: Acme
Lines: 49
Message-ID: <1mt437iq9a6yz.1vti2z6dbuetk.dlg@40tude.net>
References: <ji2pdf$ht6$1@mx1.internetia.pl> <12b400yh5lb3r.mg3vhkurgug9.dlg@40tude.net> <ji373f$i9m$1@mx1.internetia.pl>
NNTP-Posting-Host: static-78-9-71-129.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1329933887 8440 78.9.71.129 (22 Feb 2012 18:04:47 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Wed, 22 Feb 2012 18:04:47 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.15.1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit