Tjena! Ska påbörja ett projekt där jag ska göra en winforms klient och en webforms klient. Min tanke är att jag skall använda samma BL och DAL till bägge applikationerna för det borde inte vara några problem väl? När jag jobbar med webforms så lägger jag alltid min databaskoppling i web.config. Hur gör för att DAL skall använda sig av en global koppling för både win och webformsapplikationen? Det va mitt första problem jag stött på. Sen skulle jag gärna vilja ha tips på hur man delar in sin applikation i olika namespaces för att sedan kunna återanvända koden. Hoppas någon kan hjälpa mig lite.
Råd utveckling av webforms och winforms
11 svar · 366 visningar · startad av maqe
Ett exempel på vad du kan göra är att använda web services.
Då låter du ditt BLL och DAL ligga på webservern och sen anropar programmet bara web servicen när du vill göra något.
Vill du ha exempel på hur du bör lägga upp alla olika namespaces för att få bra design över dem eller vii du bara veta hur man använder namespaces?
Jag skulle vilja ha exempel på hur jag bör lägga upp dom olika namespacen för att få bra design på det hela. Jag använder Visual Studio när jag utvecklar kan jag ju berätta.
Skapa ett codelibrary projekt för varje namespace.
I alla projekt ändrar du sedan properties så att du har t.ex.
WWW projekt:
Root Namespace: rootName.Web
Codelib1
Root Namespace: rootName.Codelib1
Codelib2
Root Namespace: rootName.Codelib2
På det sättet får du en hierarki som har rootName namnrymden i botten.
Om vi utgår ifrån att jag har skapat en solution, t.ex. en ASP.NET Application. Sedan skall jag skapa ett classlibrary antar jag eftersom codelibrary inte finns med som val i VS.NET. Skall man sedan skapa nya projekt i samma solution? Skall man ha ett namespace för t.ex. DAL och ett för BL eller hur delar man upp t.ex. ett webbproject för att kunna återanvända koden.
Japp, classlibrary menade jag ju. ;)
Hur man sedan delar in det är lite individuellt.
Jag gör så att jag delar in i applikationsmoduler, eller delar. T.ex. alla klasser som har med produkter att göra ligger i Products. De klasser som används av flera andra projekt ligger i Core.
När det gäller webbprojektet så blir det lite knepigare. Men lägg så mycket du kan i dina klassbibliotek så återanvänder du dessa i dina andra webbprojekt.
När det gäller själva webbdelen så plocka ut alla "standardfiler" som skall återanvändas i andra projekt. När du börjar ett nytt projekt så importerar du dessa standardfiler till projektet och börjar bygga den nya sajten.
Ett tillägg:
Skall man sedan skapa nya projekt i samma solution?
Det beror på. Första projektet kan du skapa klassbiblioteken i samma solution. Men när klassbiblioteken är klara så är det bra om du lägger ut de .dll-filerna i någon mapp. Sedan refererar du till de .dll-filerna från ditt webbprojekt.
Annars finns risken att du i webbprojekt nr 2 gör ändringar i ett klassbibliotek så när du sedan kör webbprojekt nr 1 så funkar det inte för du har inte byggt det webbprojektet för de ändringar du gjorde för nr 2.
Nu kom det en rolig fråga :)
När det gäller aritekturen i .NET så har MS plockat fram en "best practis", och jag måste faktiskt säga att den är riktigt bra.
Vi har använtt oss av denna för att skapa grunden till vår aritektur på jobbet (mindre modifikationer) och har nu använt den i några projekt, vid första anblick så ser det extremt mycket ut och man undrar om man verkligen behöver allt och fy vad jobbigt osv osv..
När man sedan jobbat med det lite så blir man helt lyrisk. Och speciellt om man skall använda sig av både en WinForm och WebForm så är aritekturen perfekt. Om man modifierar aritekturen lite och tänker till så kan man faktiskt göra så att du helt utan modifikationer kan byta ut din winform mot en webform (som givetviss innehåller samma funktionallitet). Man kan även ha flera olika sorters flöden igenom sin applikation beroende på vem som är inne i den just nu. Så om det är en kund så skall 5 sidor visas i en följd, men om det är en administratör så skall 7 sidor visas i en följd för samma procedure.
Det som verkar lite skrämmande är att vi har typ 10 olika projekt för att lösa något som man skulle klara på 3, men flexibiliteten och underhållet blir så bra mycket bättre att det är värt dessa extra projekt, många av lagerna gör inte så mycket utan skickar bara informationen vidare i kjedjan.
Så ta en titt på dokumentet (ganska tungläst) och hör av dig så kan vi diskutera de förändringar som vi gjort.
- M
Tack för svaren ... Jag skall försöka läsa igenom Gladh´s länk och få lite mer insikt.
Jag återkommer med fler frågor så småningom.
PDahlen skrev:
Skapa ett codelibrary projekt för varje namespace.
I alla projekt ändrar du sedan properties så att du har t.ex.
WWW projekt:
Root Namespace: rootName.WebCodelib1
Root Namespace: rootName.Codelib1Codelib2
Root Namespace: rootName.Codelib2På det sättet får du en hierarki som har rootName namnrymden i botten.
Menar du inte att jag ska sätta default Namespace i properties? För jag hittar inte Root Namespace i properties
Såhär ser min solution ut för tillfället
Core
-BLL.cs
-DAL.cs
Web
-BasePage.cs
-default.aspx
-etc
och då skall jag alltså sätta properties i Core till MittProjekt.Core
och MittProjekt.Web som default namespace?
När jag tar upp Properties på mina projekt så heter det Root namespace. Men det kanske är skillnad mellan vb och cs projekt.
Japp, MittProjekt.Core och MittProjekt.Web.
Jo de verkar som att det skiljer sig mellan C# och VB project.