Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Flerskikt eller bara två?

Postades av 2008-05-11 20:27:34 - Casper Dino, i forum arkitektur, Tråden har 8 Kommentarer och lästs av 1699 personer

Jag skulle vilja ha lite för och nackdelar från erfarna arkitekter för/mot flerskiktade jämfört med tvåskiktade applikationsarkitekturer.

Vi ska bygga om en .NET applikation som körs på ca 30 klienter på ett LAN idag. Idag är applikationen flerskiktad och lagren kan beskrivas så här:

Klientlager - Win Forms, .NET Remoting
Applikationslager - IIS, entitetsramverk, ADO.NET
Datalager - SQL Server, Store Procedures

Mycket av logiken ligger i SQL och store procs. KLienten hanterar fel, valideringar, i/o, m m. Det enda som app lagret gör är att skyffla data och exception över remoting.

Vad ser ni för anledning att inte skapa en 2-skiktad lösning där vi skippar app lagret och låter klienten prata Linq2SQL direkt med SQL? Flerskiktat skapar ju bara merjobb när vi gör förändringar.

Jag skulle vilja höra lite olika åsikter om vägval.

/Dino


Svara

Sv: Flerskikt eller bara två?

Postades av 2008-05-11 22:46:38 - Johan Djupmarker

Jag är ingen expert på området, så lita inte till 100% vad jag skriver nu... ;)

Rent spontant känns det svårare att hantera rättigheter utan applikationslagret, även om det givetvis går i sp:s.

/Johan


Svara

Sv: Flerskikt eller bara två?

Postades av 2008-05-11 23:23:00 - Martin Adrian

En anledning kanske kan vara att det blir lättare att stödja andra typer av klienter i framtiden.

Mobila enheter, pekskärmar, browserbaserade lösningar.

Du skrev inget om hur ni gör tester. Om ni skall enhetstesta så måste ni väl ändå ha något slags app-lager i klienten. Merjobbet med app-lager lär inte försvinna då.
(Eller tänker ni testa logiken via forms?)


Svara

Sv:Flerskikt eller bara två?

Postades av 2008-05-12 08:53:38 - Casper Dino

Johan:

Ingen fara, det finns nog inget rätt eller fel.

När det gäller authentisering och behörigheter i 2-skiktat så tänkte vi i så fall använda integrerad säkerhet och roller i SQL. Precis som du säger.

Vi har funderat på hur det skulle vara i en flerskiktad, men jag antar att vi då skulle använda WCF och integrerad säkerhet även där. Behörigheterna skulle i så fall kontrolleras i både app lagret och i SQL. Dubbelkoll alltså. Blir mycket dubbel dubbel dubbel när man ska ha app lager ...


Svara

Sv:Flerskikt eller bara två?

Postades av 2008-05-12 09:02:01 - Casper Dino

Martin:

Flera klienter (webparts i SPS) kan bli aktuellt i framtiden. Om vi kör tvåskiktat så ser jag i så fall att vi gör en integrationslösning mha WCF-tjänster som implementeras mha samma ramverk som vi använder på klienten för att göra anrop till SQL. Den integrationslösningen kommer ha andra krav på sig en den som supporterar app lagret.

Testning görs av det ramverk som ska kommunicera med SQL och vi testar även delarna i SQL. Klienten testas av användare. Det är som du säger att app lagret (ramverket) ligger på klienten, så enhetstester sker av det. Merjobbet är väl snarare att det finns hostade binärer i flera lager och underhållet kräver hänsyn till det. Känns drygt ... vad tycker du?


Svara

Sv: Flerskikt eller bara två?

Postades av 2008-05-12 12:49:55 - Ola Lindfeldt

Många teoretiker anser att all affärslogik skall ligga i applikationslagret/affärslagret.
Det är bra om mycket kan ligga där, så att det hela är samlat på ett ställe.
Men det är en utopi att tro att allt ska ligga där. Exempel: Du har en huvudtabell på 10 milj rader och 1000 användare. En användare är i snitt behörig till 1% av raderna. En smart lösning är nu att ha behörighet till vissa objekt/rader i tabellen i en behörighetstabell (M:M).
Genom JOIN mot denna tabell kan 99% av raderna elimieras i sökningar och man får ett system som presterar bra. Om du i detta läge är fundamentalist och gör behörighetskontrollen i applikationskod (eftersom det är "afffärslogik" och "måste" ligga där enligt viss litteratur) så blir resultatet katastrofal prestanda.

Sen kan man också tänka så här: Hårdkodad affärslogik är inte snyggt.
t.ex. If (Belopp > 100000.00)
I stället bör sådana regler tabellstyras i ett system som ska vara möjligt att konfigurera.
I det fallet kommer man närmare databasen hela tiden och man ser fler och fler anledningar att utnyttja databasens möjligheter att joina mot affärsregler för att upprätthålla reglerna.
Exempel: Som användare vill jag oftast bara se produkter av ProduktKategori 'T' [Anv.FavoritKategori] som kostar mindre än 2000 kr [Anv.MaxBelopp]. Det är bara 0,01% av alla poster i en stor tabell. Uppenbarligen vill man nu elimiera alla andra rader så tidigt som möjligt, dvs i en SP. Ju mer data och belastning, desto mer intressant blir detta synsätt. I ett väl designat system är affärslogik samtidigt data, eftersom man inte vill hårdkoda all affärslogik.

Det finns inget rätt eller fel man måste se från fall till fall vilket som funkar bäst!


Svara

Sv:Flerskikt eller bara två?

Postades av 2008-05-12 16:16:33 - Fredrik Malmström

Skulle hålla med ovanstående talare i detta ämne.

Mycket beror på! Man bör ta hänsyn till hur pass enkelt det skall vara att konfigurera systemen. Att sätta affärsregler i databasen är bra, speciellt om man skall se till möjligheterna till ett föränderligt system.

T ex. om man har ett grundsystem som man skapat för försäljning. Företag brukar ha olika affärsregler, det kan bli jobbigt om man alltid skall gå igenom hela affärslagret för att göra dessa ändringar, då är det bekvämt att ha det i ex. 1 eller 2 tabeller i en databas.

Sen är flera skit i många fall att föredra. Ex. om man skall övergå från "WinForm" till "WebForm", då behöver man inte uppfinna hjulet igen, utan bara använda de fina DLL:erna till ex.

Inte så mycket ändringar med andra ord.


Svara

Sv: Flerskikt eller bara två?

Postades av 2008-05-12 20:07:02 - Casper Dino

Fredrik & Ola:

Tack för era svar. Det är sant att det beror på och jag har försökt beskriva vårat scenario. När det kommer till stora datamängder och flera 1000 klienter så sammanfaller det inte med våra krav. Vi har mindre datamängder som hanteras och ca 30 klienter i ett LAN.

Förändringar slår ofta i alla lager, även om det bara är en affärsregel. I de flesta fall har vi märkt att förändringar oftast är nya kolumner eller andra förändringar i datastrukturerna och då måste alla lager ändras.

Underlätta att gå från WinForms till WebForm är en klassisk anledning att köra flerskiktat. Tänket hos oss är väl att man i så fall nyttjar samma assembly som körs i varje klient för data access och affärslogik. Istället för att hosta den på en server för alla klienter så hostar man den direkt på klienten för WinForms och i IIS för WebForms.


Svara

Sv:Flerskikt eller bara två?

Postades av 2008-05-12 20:09:41 - Casper Dino

Vi kommer nog ändå köra flerskiktat, men tyvärr inte av någon logisk förklaring utan mest pga att alla "vill det" för det "känns bäst så". Så vida inte någon här kan komma upp med en bra anledning att köra 3-skiktat så kommer vi förmodligen att investera stora pengar i underhåll av kod som bara kommer skyffla data mellan lager.


Svara

Nyligen

  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 878
27 965
271 772
599
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies