Avatar billede cynosure Nybegynder
02. december 2004 - 20:16 Der er 2 kommentarer og
1 løsning

Arkitektur DDL - DAL, over en webservice

Hej !!

Jeg har et arkitekturspørgsmål... Jeg er ved at udvikle et større system, hvor jeg har oprettet et repository, som indeholder min BLL (Business Logic Layer).
Derudover har jeg en webservice (webservices) som fungerer som mit DAL (Data Access Layer). Ideen er nu den at både webservicen og min applikation kan benytte repositoriet. Det vil sige at webservicen gerne må kende repositoriet. Dette gør ikke noget, idet jeg gerne vil modtage/sende komplekse objekter igennem webservicen.

Mit problem er nu :

Lad os antage at jeg har oprettet et object : FooBar i repositoriet
Når jeg nu kalder en funktion i mit DAL (webservice) og forventer et objekt tilbage af typen FooBar, som oprindeligt er defineret i repositoriet, så får jeg ikke FooBar tilbage, men en type som er defineret i min Proxy, via Serialization. Lad os kalde det XBar

Dette objekt (XBar) kan jeg selvfølgelig ikke blot caste til et FooBar objekt, selvom det rent faktisk er samme objekt (data medlems-mæssigt).

I den perfekte verden gav proxyen mig et objekt magen til det som jeg har defineret i mit repository, og ikke et XBar objekt.
Jeg ser 2 muligheder at løse problematikken på :

1. Jeg laver min egen proxy, hvor jeg benytter objektet defineret i mit repository, men dette vil kræve at alle objekter i mit repository er angivet med XML attributter, for hvordan jeg ønsker et objekt serialiseret... Dette er ikke optimalt, idet jeg også igennem assemblyniveau ønsker at bruge mit objekt. Derfor vil XML attributterne være ganske overflødige.. Udarbejdelsen af Proxyobjektet er ikke triviel, og jeg ønskede selvfølgelig at Visual Studio generede denne for mig...


2. Den anden løsning jeg ser er ved at bruge en delegate, til at populere mine objekter FooBar med...
Det vil sige at når jeg får et XBar objekt fra min proxy så laver jeg en kopi, member for member..Så har jeg godt nok mit FooBar objekt.... meeeeen.

Mit spørgsmål er derfor... (langt om længe) :

Er der en fornugtig anden måde at jeg kan løse denne problematik på. Er delegate metoden den mest optimale, jeg ønsker en så løs kobling som muligt.. Hvordan beholder jeg den...

Der er forhåbentligt et menneske mere fornuftigt end jeg selv, der kan besvare dette spørgsmål !!!

/TLP
Avatar billede cynosure Nybegynder
13. december 2004 - 16:02 #1
Hmmm.. Ingen mange kommentarer man får herinde.. Skræmmende !!!

Nå, men efter at have kigget lidt på mulighederne ser det ud til at jeg bygger min egen proxy.. Har valgt ikke at benytte CodeDOM (DOM over c# koden) metoden, og vil heller ikke ændre en nyoprettet automatisk oprettet proxy. Så metoden må være selv at oprette en proxym, der giver mig det objekt jeg skal bruge tilbage...

Microsoft har heller ikke noget reelt svar på dette spørgsmål...

Ved at gøre som jeg gør skal det blot ihukommes at alle de members der ønskes serialiseret skal eksistere som public (No go), eller som en property med både get og set metoder.. Men ikke fedt at udstille et private ID som en property.. Først i C# 2.0 bliver det muligt at dele en property i accessibility : en get der er public og en set der internal.... Bedre sent end aldrig...
Så i C# 2.0 kan jeg få nøjagtig det jeg gerne vil ha, men må leve med at udstille mit objekt via properties, for at kunne lave min egen proxy, der udstiller mine serialiserede data...

nå, men jeg ville nok bare snakke lidt med mig selv.. Som sagt ingen bud på hvad jeg har skrevet i første indlæg...

www.eksperten  ...... Hmmm, jeg ved snart ikke !!!

/TLP
Avatar billede burningice Nybegynder
13. december 2004 - 16:22 #2
det skal du ikke være ked af... det er heller ikke alverdens svar der kommer på mine spørgsmål, men det er nu meget hyggeligt at futte rundt og hjælpe andre med deres problemer :)
Avatar billede burningice Nybegynder
13. december 2004 - 16:24 #3
ang at dele en property i accessibility, burde du så ikke kunne hacke dig til den funktionalitet direkte i IL-coden.

en Property bliver jo fortoklet om til getID og setID i IL'en, og her burde du så kunne ændre dens accessibility
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester