webForumDet fria alternativet

Updatera en domänentitet via webbgränssnitt?

.NET

22 svar · 1 423 visningar · startad av Lukaspojken · sida 2 av 2

Frågan, av Lukaspojken

Det är så här att jag har ett webbgränssnitt för uppdatering av en kund (Customer-entitet). Hur ser ett bra uppdateringsflöde ut? Ett exempel på en variant av uppdateringsflöde 1\. Hämta en specifik kund från databasen (CustomerService -\> CustomerRepository) 2\. Mappa önskvärda properties mot webbkontroller (textboxar m.m.) 3\. Användaren gör ändringar på kunden. Tex byter adress på kunden. 4\.

Läs frågan i sin helhet →
Medlem sedan maj 20011 312 inlägg
#21

-> Gladh
Tack för en bra redogörelse!

Medlem sedan aug. 20003 575 inlägg
#22

Lukaspojken skrev:

Jag förstår syftet med presentationsobjektet. Det jag inte riktigt förstod var varför man är tvungen att implemetera INotifyPropertyChanged. På vilket sätt är databinding beroende av detta, dvs hur använder man sig av kollektionen med propertyn som blivit ändrade?

Du skriver enligt dig får ett presentationsobjekt vara mer intelligent men vad säger de som inte håller med dig? Dvs varför bör man inte ha det så? Det som jag gillar med intelligenta objekt är att man samlar ihop funktionalitet som hör till objektet. Det blir lättare att hitta det man söker efter. Men det har sina nackdelar också rent spontant känner jag att risken för dubblicering av kod ökar när man kapslar in "extern" intelligens i sina objekt eftersom det blir svårare att återanvända funktionalitet när den kapslats in. Det finns nog också risk för att objekten blir hårdare knutna till andra objekt genom beroenden vilket också borde påverka testbarheten en aning negativt. En annan sak är väl att intelligenta objekt inte riktigt speglar verklighten vilket påverkar "ubiquitous language". Tänker vi oss tex en klassisk user-entitet så har användaren inte en spara-metod i sig själv utan det är oftast en tjänst som man anropar. Det var några spontana tankar kring intelligenta objekt.

Det du gör är inte att kapsla in funktionaliteten i presentationsobjektet utan tillåter anrop till objekt utanför t.ex.

public class UserViewModel
{
    private User innerUser;
    private IUserService userService;

    public UserViewModel(User innerUser, IUserService userService)
    {
       this.innerUser = innerUser;
       this.userService = userService;
     }
     
/* en massa kod */
     public void Save()
     {
          userService.Persist(innerUser);
     }
}
Medlem sedan maj 20011 312 inlägg
#23

-> Nickemannen
Ok, men varför tror du inte det är vanligt att man gör så?

275 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)