[C#] Verantwoordelijkheden bij gebruik van PetShop 4

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Hallo,

Na het bekijken van PetShop 4.0 van Microsoft heb ik besloten hier elementen uit te halen welke ik wil gaan gebruik voor een eigen project. Ik heb hiervoor een simpele Solution gestart en alleen die onderdelen uit PetShop gehaald die ik belangrijk vind. Binnen mijn Solution zit één entiteit, namelijk Task. Deze kun je hier downloaden.

Maar nu heb ik een aantal vragen welke ik krijg bij het bekijken van de source:
- Binnen PetShop zit een Model, deze worden door alle lagen gebruikt, is dit wel juist?
- De Business laag is meer een laag met repositories. Opzich niet zo'n probleem, aangezien hier ook mooi business regels in kunnen. Maar nu wil ik dat de eigenschap Description van mijn Task entiteit een bepaalt formaat heeft (bijvoorbeeld eerst de eigenschap Owner ervoor als je hem op het scherm zet). Nu zou dit in het Model moeten i.p.v. in de Business laag?

Misschien dat iemand antwoord weet op deze vragen. Alvast bedankt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Hoe je iets op het scherm print zet je niet in je model, een model is niet meer dan een object dat de data bevat. Wat er met die data gebeurt bepalen andere delen van de applicatie.

Het is prima om door alle lagen gebruik te maken van het model, daar is het voor. ;) De datalaag zorgt dat het model wordt opgeslagen en geladen, de business laag zorgt er voor dat het model gevuld en gelezen wordt op de juiste manier door de juiste persoon.

  • whoami
  • Registratie: December 2000
  • Laatst online: 07-04 22:26
Gert schreef op donderdag 02 maart 2006 @ 10:43:
Hoe je iets op het scherm print zet je niet in je model, een model is niet meer dan een object dat de data bevat. Wat er met die data gebeurt bepalen andere delen van de applicatie.
Hmm, een model is een reeks van entiteiten die jouw probleem-domein 'beschrijven'.
Dat 'model' is eigenlijk je business-laag; die entiteiten bevatten dus het gedrag dat nodig is voor jouw probleem domein.

De repositories gebruiken de data-laag om je entiteiten op te halen / saven.

Tenzij MS dus weer iets anders heeft uitgevonden.

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Oke, bedankt.

Nu wil ik aan mijn probeersel een webservice toevoegen tussen de business laag en de presentatie laag, zodat de business laag remote kan worden benaderd. Maar hoe realiseer ik dit? Misschien iemand een goed voorbeeld hoe je zoiets het beste kunt implementeren in een .NET omgeving?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 07-04 22:26
Je maakt een Webservice die eigenlijk een 'client' is van je Business logica. Je webservice gebruikt jouw business-laag, en stuurt en ontvangt 'domme' data-transfer naar/van de client.

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Maar betekend dat dat ik dan al mijn classes die hiermee te maken hebben moet markeren als [Serializable]?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 07-04 22:26
De classes die jij vanuit je WebService laag stuurt en ontvangt wel ja. Maar daar kan je evt DataSets voor gebruiken; die zijn al serializable.

Aangezien een Webservice de XmlSerializer gebruikt, kan je zowiezo niet zomaar je Business objecten zelf gaan gebruiken om naar je client van je webservice te sturen. Die XmlSerializer serialiseert nl. enkel public read/write properties.
Je zal dus in je web-service je Business Objecten in data transfer objecten moeten gooien, en deze naar je client van je webservice sturen.

https://fgheysels.github.io/


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 22-03 21:36
whoami schreef op donderdag 02 maart 2006 @ 17:09:
De classes die jij vanuit je WebService laag stuurt en ontvangt wel ja. Maar daar kan je evt DataSets voor gebruiken; die zijn al serializable.
Voor de XmlSerializer (webservices) hoef je classes niet te markeren als serializable. Dit hoeft alleen als je de BinaryFormatter of SoapFormatter gebruikt.

Cuyahoga .NET website framework


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Betekend dit ook dat mijn webservice alle methodes van de business classes moet herintroduceren naar buiten toe? Krijg je dan niet heel veel dubbele code?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 07-04 22:26
Jouw client van de webservice hoeft toch helemaal geen business logic te bevatten.
De business logic zit in de BL - layer, en jij geeft geen BL objecten naar je client, enkel 'domme' data-objecten.
Voor de XmlSerializer (webservices) hoef je classes niet te markeren als serializable. Dit hoeft alleen als je de BinaryFormatter of SoapFormatter gebruikt.
Idd, my mistake.

[ Voor 33% gewijzigd door whoami op 03-03-2006 15:24 ]

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Oke, dan ben ik het bij deze even kwijt. Ik heb het geprobeerd op te lossen in dit voorbeeld, en zoals je ziet moet ik in de webservice voor elke methode binnen de business class nog een methode schrijven.

Zou iemand de moeite willen nemen even te kijken naar mijn voorbeeld en hier commentaar op willen geven?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 07-04 22:26
Waarom wil je alle Business Lgoic ook op de client hebben ?
Waarom heb je dan die webservice ? Of eerder; waarom heb je dan een aparte BL laag ?

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik denk dat dat ook niet mijn bedoeling is. Ik wil zeker niet mijn business logic op de client hebben, maar hoe zorg ik ervoor dat deze juist op de server staat en de client via een webservice met deze business logic communiceert?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:02

mulder

ik spuug op het trottoir

Je client communiceert idd met de webservice en niet met de BL er achter, als je dat wilt dan moet je -volgens mij- remoting gebruiken. Je client kan niet van de BL van de server gebruik maken.

oogjes open, snaveltjes dicht


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Oke, bedankt.
Ik ben nog steeds benieuwd naar hoe je dit dan oplost, dus dat je client via een webservice met de busniness layer communiceert. Misschien ergens een best-practice voorbeeld?

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1