🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
8 messages
8 total messages Started by GrzybSon Fri, 08 Oct 2010 13:33
NHibernate i WCF
#21773
Author: GrzybSon
Date: Fri, 08 Oct 2010 13:33
9 lines
1142 bytes
Witam,

czy ktoś z Was przetarł ścieżkę integracji NH w WCF?
Jakie wystąpiły problemy podczas tej integracji?
Jak najlepiej zabrać się do zagadnienia?

--
Pozdrawiam,
 Maćko 
Re: NHibernate i WCF
#21774
Author: Wiktor Zychla
Date: Sun, 10 Oct 2010 17:53
20 lines
1896 bytes

Użytkownik "GrzybSon" <grzybson@poczta.fm> napisał w wiadomości grup 
dyskusyjnych:i8n6iu$83s$1@news.onet.pl...
> Witam,
>
> czy ktoś z Was przetarł ścieżkę integracji NH w WCF?
> Jakie wystąpiły problemy podczas tej integracji?
> Jak najlepiej zabrać się do zagadnienia?

nie ma czego przecierać, bo to oczywiste połączenie dwóch RÓŻNYCH warstw 
aplikacji. w odpowiedzi na żądanie inicjujesz sesję Hibernate i wyciągasz 
dane.
jedyne na co zwykle zwraca się uwagę, to nie udostępnianie obiektów 
utrwalanych wprost, tylko przez pośrednią warstwę, która dzięki temu może 
być wspólna dla klienta i serwera - poczytaj o wzorcu DTO (Data Transfer 
Object).

pozdrawiam uprzejmie,
Wiktor Zychla 
Re: NHibernate i WCF
#21775
Author: GrzybSon
Date: Mon, 11 Oct 2010 09:06
34 lines
2194 bytes
Witam,

>> Witam,
>>
>> czy ktoś z Was przetarł ścieżkę integracji NH w WCF?
>> Jakie wystąpiły problemy podczas tej integracji?
>> Jak najlepiej zabrać się do zagadnienia?
>
> nie ma czego przecierać, bo to oczywiste połączenie dwóch RÓŻNYCH warstw 
> aplikacji. w odpowiedzi na żądanie inicjujesz sesję Hibernate i wyciągasz 
> dane.

Cieszy mnie ta bezbolesność, tylko mam pytanie czy u Ciebie usługi działają
w trybie PerCall?
jeśli tak to pewnie dla każdej metody usługi powołujesz nową sesję ISession,
którą pobierasz z fabryki.

> jedyne na co zwykle zwraca się uwagę, to nie udostępnianie obiektów 
> utrwalanych wprost, tylko przez pośrednią warstwę, która dzięki temu może 
> być wspólna dla klienta i serwera - poczytaj o wzorcu DTO (Data Transfer 
> Object).

Z DTO jest tylko problem, że pewnie część klas na potrzeby działania NH
(może nie w całości) musiałeś powielić dla potrzeb DTO.
Obiło mi się o uszy jakaś biblioteka do mapowania modelu klas chyba to się
nazywa AutoMapper. Korzystałeś może z tego?

>
> pozdrawiam uprzejmie,
> Wiktor Zychla

--
Pozdro,
 Maćko
Re: NHibernate i WCF
#21776
Author: Wiktor Zychla
Date: Mon, 11 Oct 2010 09:34
55 lines
2921 bytes
>> nie ma czego przecierać, bo to oczywiste połączenie dwóch RÓŻNYCH warstw 
>> aplikacji. w odpowiedzi na żądanie inicjujesz sesję Hibernate i wyciągasz 
>> dane.
>
> Cieszy mnie ta bezbolesność, tylko mam pytanie czy u Ciebie usługi 
> działają
> w trybie PerCall?
> jeśli tak to pewnie dla każdej metody usługi powołujesz nową sesję 
> ISession,
> którą pobierasz z fabryki.

tak właśnie napisałem - dla każdego żądania nowa sesja hibernate. inaczej 
się nie opłaca, bo niepotrzebnie zajmujesz zasoby serwera.

> Z DTO jest tylko problem, że pewnie część klas na potrzeby działania NH
> (może nie w całości) musiałeś powielić dla potrzeb DTO.

tak właśnie wygląda DTO, powielasz strukturę w tych obszarach które 
interesuje kontrakt między klientem a serwerem.
dodatkowo do klas DTO można dołożyć właściwości niedostępne wprost z 
obiektów.

przykładowo:

encje biznesowe:
class Parent {
  public string ParentName;
}
class Child {
  public Parent Parent;
  public string ChildName;
}

DTO:
class ParentDTO {
   public string ParentName;
}
class ChildDTO {
  public string ChildName;
  public string ParentName;
}

tu ChildDTO ma dołożoną właściwość ParentName, dzięki czemu po stronie 
klienta nie trzeba pamiętać referencji do Parenta (i dociągać Parenta do 
każdego Childa).

> Obiło mi się o uszy jakaś biblioteka do mapowania modelu klas chyba to się
> nazywa AutoMapper. Korzystałeś może z tego?

nie, projekty w których mógłbym go używać są dużo starsze niż Automapper i 
dopracowały się jakichś własnych rozwiązań. w nowych projektach nie 
wykluczam, opinie społeczności są pozytywne.

pozdrawiam
Wiktor Zychla 
Re: NHibernate i WCF
#21777
Author: GrzybSon
Date: Tue, 12 Oct 2010 09:29
67 lines
3357 bytes
Użytkownik "Wiktor Zychla" <wzychla@nospam.com> napisał w wiadomości 
news:4cb2da7d$0$22805$65785112@news.neostrada.pl...
>>> nie ma czego przecierać, bo to oczywiste połączenie dwóch RÓŻNYCH warstw 
>>> aplikacji. w odpowiedzi na żądanie inicjujesz sesję Hibernate i 
>>> wyciągasz dane.
>>
>> Cieszy mnie ta bezbolesność, tylko mam pytanie czy u Ciebie usługi 
>> działają
>> w trybie PerCall?
>> jeśli tak to pewnie dla każdej metody usługi powołujesz nową sesję 
>> ISession,
>> którą pobierasz z fabryki.
>
> tak właśnie napisałem - dla każdego żądania nowa sesja hibernate. inaczej 
> się nie opłaca, bo niepotrzebnie zajmujesz zasoby serwera.
>
>> Z DTO jest tylko problem, że pewnie część klas na potrzeby działania NH
>> (może nie w całości) musiałeś powielić dla potrzeb DTO.
>
> tak właśnie wygląda DTO, powielasz strukturę w tych obszarach które 
> interesuje kontrakt między klientem a serwerem.
> dodatkowo do klas DTO można dołożyć właściwości niedostępne wprost z 
> obiektów.
>
> przykładowo:
>
> encje biznesowe:
> class Parent {
>  public string ParentName;
> }
> class Child {
>  public Parent Parent;
>  public string ChildName;
> }
>
> DTO:
> class ParentDTO {
>   public string ParentName;
> }
> class ChildDTO {
>  public string ChildName;
>  public string ParentName;
> }
>
> tu ChildDTO ma dołożoną właściwość ParentName, dzięki czemu po stronie 
> klienta nie trzeba pamiętać referencji do Parenta (i dociągać Parenta do 
> każdego Childa).
>
>> Obiło mi się o uszy jakaś biblioteka do mapowania modelu klas chyba to 
>> się
>> nazywa AutoMapper. Korzystałeś może z tego?
>
> nie, projekty w których mógłbym go używać są dużo starsze niż Automapper i 
> dopracowały się jakichś własnych rozwiązań. w nowych projektach nie 
> wykluczam, opinie społeczności są pozytywne.

Właśnie udało mi się zintegrować NH z WCF i Automapperem i muszę powiedzieć, 
że działa to dość przyzwoicie.
Faktem jest całość hostowana w konsoli zajmuje na dzieńdobry 60 MB, ale czas 
integracji jest porażająco szybki.

Jeszcze raz dzięki za info.

>
> pozdrawiam
> Wiktor Zychla 
Re: NHibernate i WCF
#21778
Author: GrzybSon
Date: Wed, 13 Oct 2010 17:32
94 lines
4490 bytes
Witam,

dzisiaj dostałem ciekawe pytanie na rozmowie dotyczące porównania
wydajności zapytania SQL kontra wywołanie NHibernatea:

mamy tabelę produktów, w której obok nazwy produktu jest też kolumna z
ceną brutto. Teraz chcemy zaktualizować ceny wszystkich produktów, ze
względu na zmianę stawki VAT. I teraz jak to rozwiązać w NHibernacie i
bez (czyli zwykłe zapytanie SQLowe).

Dla wersji bez NH można to zrobić poprzez
UPDATE set cena_brutto = ... from produkty

Ale NH jak to będzie?
Powiedziałem, że pobieramy listę wszystkich produktów z tabeli produkty
a potem w pętli aktualizujemy właściwość klasy CenaBrutto, a następnie
wykonujemy session.Save(produkt), tyle że zostanie wykonanych n
updatetów gdzie n-to liczba produktów w tabeli. Takie rozwiązanie jest
jak dla mnie mało wydajne.

Czy da to radę jakoś wydajniej zaimplementować w NH?




W dniu 2010-10-12 11:29, GrzybSon pisze:
> U�ytkownik "Wiktor Zychla" <wzychla@nospam.com> napisa� w wiadomo�ci 
> news:4cb2da7d$0$22805$65785112@news.neostrada.pl...
>>>> nie ma czego przeciera�, bo to oczywiste po��czenie dw�ch RӯNYCH warstw 
>>>> aplikacji. w odpowiedzi na ��danie inicjujesz sesj� Hibernate i 
>>>> wyci�gasz dane.
>>>
>>> Cieszy mnie ta bezbolesno��, tylko mam pytanie czy u Ciebie us�ugi 
>>> dzia�aj�
>>> w trybie PerCall?
>>> je�li tak to pewnie dla ka�dej metody us�ugi powo�ujesz now� sesj� 
>>> ISession,
>>> kt�r� pobierasz z fabryki.
>>
>> tak w�a�nie napisa�em - dla ka�dego ��dania nowa sesja hibernate. inaczej 
>> si� nie op�aca, bo niepotrzebnie zajmujesz zasoby serwera.
>>
>>> Z DTO jest tylko problem, �e pewnie cz�� klas na potrzeby dzia�ania NH
>>> (mo�e nie w ca�o�ci) musia�e� powieli� dla potrzeb DTO.
>>
>> tak w�a�nie wygl�da DTO, powielasz struktur� w tych obszarach kt�re 
>> interesuje kontrakt mi�dzy klientem a serwerem.
>> dodatkowo do klas DTO mo�na do�o�y� w�a�ciwo�ci niedost�pne wprost z 
>> obiekt�w.
>>
>> przyk�adowo:
>>
>> encje biznesowe:
>> class Parent {
>>  public string ParentName;
>> }
>> class Child {
>>  public Parent Parent;
>>  public string ChildName;
>> }
>>
>> DTO:
>> class ParentDTO {
>>   public string ParentName;
>> }
>> class ChildDTO {
>>  public string ChildName;
>>  public string ParentName;
>> }
>>
>> tu ChildDTO ma do�o�on� w�a�ciwo�� ParentName, dzi�ki czemu po stronie 
>> klienta nie trzeba pami�ta� referencji do Parenta (i doci�ga� Parenta do 
>> ka�dego Childa).
>>
>>> Obi�o mi si� o uszy jaka� biblioteka do mapowania modelu klas chyba to 
>>> si�
>>> nazywa AutoMapper. Korzysta�e� mo�e z tego?
>>
>> nie, projekty w kt�rych m�g�bym go u�ywa� s� du�o starsze ni� Automapper i 
>> dopracowa�y si� jakich� w�asnych rozwi�za�. w nowych projektach nie 
>> wykluczam, opinie spo�eczno�ci s� pozytywne.
> 
> W�a�nie uda�o mi si� zintegrowa� NH z WCF i Automapperem i musz� powiedzie�, 
> �e dzia�a to do�� przyzwoicie.
> Faktem jest ca�o�� hostowana w konsoli zajmuje na dzie�dobry 60 MB, ale czas 
> integracji jest pora�aj�co szybki.
> 
> Jeszcze raz dzi�ki za info.
> 
>>
>> pozdrawiam
>> Wiktor Zychla 
> 
> 
Re: NHibernate i WCF
#21779
Author: TheBest
Date: Wed, 13 Oct 2010 18:38
26 lines
2142 bytes
W dniu 2010-10-13 19:32, GrzybSon pisze:
> Witam,
>
> dzisiaj dostałem ciekawe pytanie na rozmowie dotyczące porównania
> wydajności zapytania SQL kontra wywołanie NHibernatea:
>
> mamy tabelę produktów, w której obok nazwy produktu jest też kolumna z
> ceną brutto. Teraz chcemy zaktualizować ceny wszystkich produktów, ze
> względu na zmianę stawki VAT. I teraz jak to rozwiązać w NHibernacie i
> bez (czyli zwykłe zapytanie SQLowe).
>
> Dla wersji bez NH można to zrobić poprzez
> UPDATE set cena_brutto = ... from produkty
>
> Ale NH jak to będzie?
> Powiedziałem, że pobieramy listę wszystkich produktów z tabeli produkty
> a potem w pętli aktualizujemy właściwość klasy CenaBrutto, a następnie
> wykonujemy session.Save(produkt), tyle że zostanie wykonanych n
> updatetów gdzie n-to liczba produktów w tabeli. Takie rozwiązanie jest
> jak dla mnie mało wydajne.
>
> Czy da to radę jakoś wydajniej zaimplementować w NH?
>
>
  session.CreateSQLQuery("update produkty set 
cena_brutto=25").ExecuteUpdate();
Re: NHibernate i WCF
#21780
Author: GrzybSon
Date: Thu, 14 Oct 2010 11:20
4 lines
1283 bytes
>  session.CreateSQLQuery("update produkty set 
> cena_brutto=25").ExecuteUpdate();

dzięx :) 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads