Avatar billede oo Nybegynder
23. maj 2006 - 09:52 Der er 6 kommentarer og
1 løsning

Placering af fælles objecter i multi tier applications

Postede forleden dette:
http://www.eksperten.dk/spm/710571

Mit spørgsmål er nu, hvordan man håndterer og hvor man placerer alle objekter der er fælles for alle 3 lag/tier.

Jeg overvejer at bruge et DataSet da dette er meget let at gå til, men kender fra PCMEF kun til et lag ved navn Aquaintency, der indeholder interfaces af alle Entity klasser.

Hvordan håndterer man typisk dette i .NET windows forms multi tier applikationer, der kommunikerer gennem .NET remoting?

Mvh. OO
Avatar billede arne_v Ekspert
24. maj 2006 - 02:44 #1
Du kan vælge flere approaches:

1)  lave en common/shared project/assembly med alle de fælles klasser

2)  gør dine lag mere uafhængige ved at lade hver lag definere sine egne
    dataklasser

Ved løsning 2 så indeholder et lag:
  - et eller flere public interfaces
  - et antal public klasser med kun data
  - resten er gemt i internal implementations klasser
Avatar billede arne_v Ekspert
24. maj 2006 - 02:47 #2
DataSet er meget praktisk og nemt at bruge, men det har ADO.NET og relationel database
med i bagagen og er derfor ikke den mest optimale adskillelse af lag.

Jeg ville finde det fristende at lade interfacet til lag bruge
egne data klasser og type stærke collections af samme.
Avatar billede oo Nybegynder
24. maj 2006 - 08:32 #3
Ok..Tak..

Det var faktisk også en Common assembly jeg arbejdede på, men er blevet lidt skiløjet over hvor jeg skal placere mine klasser.

Her er som jeg ser det nu: (simpelt eksempel, ikke mit program)

Client tier
  * Presentation Layer - Customer.exe
    - Form_MngCustomer.cs  //Form til CRUD af kunde.

Server tier
  * Bussiness Logic Layer - Server.exe
    - Customer.cs          //Kunde entitets klasse, arver fra IKunde.

  * Data Access Layer - DAL.dll
    - DataSetCust          //DataSet til håndtering af kundedatabasen.
    - CustomerDB.mdb      //Databasen.

Common - Common.dll
    - BusinessServices.cs  //Modtager alle kald fra klienten, er remoting objektet.
    - ICustomer.cs        //Interface til Customer.cs


Har du nogle kommentarer/ændringer til det?

I ovenstående eksempel vil jeg bruge .NET Remoting, men hvordan ville ovenstående se ud hvis vi kører server delen på IIS og Web Services ?

Bliver BussinessServices så ikke bare til en WebService hvor ICustomer vil blive defineret i WSDL og hvordan vises dette i et klassediagram?
Avatar billede arne_v Ekspert
25. maj 2006 - 02:26 #4
jeg mener helt klart at de 2 klasser du angiver i common hører hjemme i BLL

common er klasser som f.eks. skal bruges både PL-BLL og BLL-DAL eller på
anden vis er meget geriske og bruges overalt
Avatar billede arne_v Ekspert
25. maj 2006 - 02:27 #5
remoting eller web service gør ikke den store forskel design mæssigt

det betyder meget for performance og interoperabilitet
Avatar billede arne_v Ekspert
02. juni 2006 - 20:11 #6
og et svar
Avatar billede oo Nybegynder
03. juni 2006 - 09:16 #7
Tak..! :-)
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