Jag skulle behöva lite åsikter om hur affärs-logik ska behandlas...
Jag utvecklar ett system som ska köras på flera datorer på ett nätverk.
Gällande affärs-logiken, var tycker Ni att den ska läggas? På en server och sedan anropa med Remoting, eller på en server och använda Webservices? ...eller lokalt på varje klient?
Delar av systemet ska sedan köras via ASP.NET. Servern i detta fallet är den samma som Web-servern.
Helt klart är ju att underhållet och uppdatering av affärs-logik blir enklare om den läggs centralt....fast å andra sidan blir det ju en massa nätverks-trafik + att programmet antagligen blir långsammare. Dessutom är ju iaf Remoting ganska "meckigt" att få till bra (tycker jag det verkar som...).
System körs för övrigt i en 4/5-skiktad lösning där varje del är fristående i sig.
Kan väl ta och redogöra lite för hur mina skikt är tänkta...
1. Presentations-lager
Här körs klient-baserad kod, dvs winform-kontroller, valideringar och anrop till affärs-logik. Även ASP.NET klienten ligger här.
2. "Fasad-lager
Då Winforms och ASP.NET ofta behöver bearbeta data från affärs-lagret olika implementeras här olika metoder för att returnera data till presentations-lagret på rätt sätt.
3. Affärs-lager
Här läggs all logik, bearbetning av data, parametrar och logik för DB-anrop m.m. Log-hantering, Exception-hantering osv.
4. Data-kommunikations-lager
Här "Wrappas" ADO.NET in så att alla anrop från Affärs-lagret går via detta lager istället för att gå via ADO.NET. Detta för att underlätta Exception-hantering och underlätta underhåll vid nya .NET-providers eller ny logik för ADO.NET.
5. Data-lager
SQL-server 2000 där alla frågor körs som Stored Procedures.
Huruvida man ska använda tunna eller "tjocka" klienter beror väl i hög grad på hur många klienter det finns? Har man 5 st klienter inom gångavstånd så behöver man kanske inte vara så rädd att baka in affärslogik/finesser i dessa (om det finns ett syfte). Det är ju inte så jobbigt att hålla ett litet antal klienter uppdaterade och buggfria.
Har man nåt hundratal klienter, och dessutom på olika plattformar, så ska man nog försöka vara så tunn (helst anorektisk) som möjligt.
Är det inte rätt smidigt att skippa Winforms och köra allt via browsern? om det är möjligt dvs. Apropå det här med winforms klienter så behöver det inte bli jobbigt att underhålla och byta version på dem, bara att köra dem via nätverket?
Sedan om vi återgår till vart man bör placera affärlogiken så tycker jag det borde göras centralt och att klienter får data genom antingen WebServicer, Remoting eller egen tcp lösning.
Du skriver om "en massa nätverkstrafik", för t.ex orderbehandling tror jag inte nätverkstrafiken blir något större problem.
Om man tycker att .NET Remoting är krångligt kan Web Services vara intressant. Men ser man till prestanda så är Remoting snabbare i vissa konfigurationer. Dock vet jag inte riktigt hur mycket det skiljer i utvecklingstid för de olika alternativen.
Web Services och Remoting har inte riktigt samma mål och används lite olika. Se Remoting som ett sätt att kommunicera mellan (dina egna) olika appdomains (exempelvis mellan två applikationer) och web services som ett sätt att prata med andra applikationer (exempelvis när du vill lämna ut information till andra).
I de flesta fall tror jag Asp.Net är ett bättre val än remoting, framförallt för att implementationen blir enklare. Krävs högre prestanda och man kan släppa kravet på att kommunicera med andra typer av plattformar är Remoting ett alternativ där man kan använda ett effektivare binärt protokoll direkt på TCP.
Apropå det här med winforms klienter så behöver det inte bli jobbigt att underhålla och byta version på dem, bara att köra dem via nätverket?
Ja, kanske i teorin .. om alla klienter vore identiska. Men i praktiken brukar klienter skilja sig åt lite grann vad gäller: operativversion, service packs, installerade komponenter, rättigheter, mappningar osv .. Detta brukar ha en tendens till att ställa till det mer än man först tror.
Är det inte rätt smidigt att skippa Winforms och köra allt via browsern?
Tyvärr är det inte möjligt, då en massa windows-specifika funktioner används för drag-n-drop, tree-views osv. Jag vet att det finns vissa kontroller för asp.net med....men det passar inte riktigt.
Systemet jobbar mot affärs-logiken hela tiden som i sin tur jobbar mot data-källan, därav att det borde bli nätverks trafik om affärs-logiken läggs på en server.
Ja, antingen får det nog bli webservices eller att affärslogiken får hänga med till klienten.
(Vissa delar kommer ändå att köras som Webservices för annan kommunikation).
Tack för alla inlägg!
262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2