Thread View: alt.pl.comp.lang.csharp
8 messages
8 total messages
Started by GrzybSon
Fri, 08 Oct 2010 13:33
NHibernate i WCF
Author: GrzybSon
Date: Fri, 08 Oct 2010 13:33
Date: Fri, 08 Oct 2010 13:33
9 lines
1142 bytes
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
Author: Wiktor Zychla
Date: Sun, 10 Oct 2010 17:53
Date: Sun, 10 Oct 2010 17:53
20 lines
1896 bytes
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
Author: GrzybSon
Date: Mon, 11 Oct 2010 09:06
Date: Mon, 11 Oct 2010 09:06
34 lines
2194 bytes
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
Author: Wiktor Zychla
Date: Mon, 11 Oct 2010 09:34
Date: Mon, 11 Oct 2010 09:34
55 lines
2921 bytes
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
Author: GrzybSon
Date: Tue, 12 Oct 2010 09:29
Date: Tue, 12 Oct 2010 09:29
67 lines
3357 bytes
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
Author: GrzybSon
Date: Wed, 13 Oct 2010 17:32
Date: Wed, 13 Oct 2010 17:32
94 lines
4490 bytes
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
Author: TheBest
Date: Wed, 13 Oct 2010 18:38
Date: Wed, 13 Oct 2010 18:38
26 lines
2142 bytes
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
Author: GrzybSon
Date: Thu, 14 Oct 2010 11:20
Date: Thu, 14 Oct 2010 11:20
4 lines
1283 bytes
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