Har utvecklat ett DAL som jag kör i GAC'en på en server (A). Funkar kanon. Gör om ditt DAL till en services. Som du kan accessa från flera maskiner. Jobba med Interface är fortfarande överkurs för mig, måste få mer grepp om det innan jag gör någonting skarpt. Med remoting. Ja det är faktiskt deployment jag oroar mig mest för, vilket jag kanske inte borde när det rör sig om max 4 servrar som kommer använda den här komponenten. Men det underlättare helt klart att ha den på ett ställe, speciellt eftersom det är andra än jag som skall utveckla i miljön. Om det mest är deployment du är bekymrad över kanske du i stället ska försöka hitta en lösning för att auomatisera det. I ditt fall har du antagligen inget övrigt att vinna på att köra remoting. Precis. Vad gör du i machine.config? Du behöver inte göra nåt där för att installera i GAC. Kolla på NAnt, CruiseControl.Net, Group Policies. Där kan du automatisera den här typen av jobb. F.ö. kan du uppdatera Machine.Config med ett vbscript om det skulle behövas, men jag har aldrig varit med om att man måste göra ngt i den för att få gacen att rulla?? "Vad gör du i machine.config? Du behöver inte göra nåt där för att installera i GAC." Det är ju bra att inte det behövs. Klart det funkade utan inblandnign av machine.config. Här kommer några länkar om remoting:Komma åt DAL från flera ställen...?
Nu vill jag bygga en applikation (eller webservice) som skall köras på en annan server (B) och som jag vill skall använda DAL som finns på den första servern (A).
Visst, det är inga större problem att publicera DAL'en i GAC'en (vilka jäkla ord!) på den andra servern (B). Men helst skulle man vilja ha DAL endast på ETT ställe/server. Speciellt då man kanske har 3-4 servrar att jobba med, som alla behöver samma generella DAL.
Hur kan man göra, annat än att installera DAL'en på flera maskiner?
I mitt fall är det ett intrnät vi pratar om.
Tacksam för lite råd.Sv: Komma åt DAL från flera ställen...?
Om det är ett intranet (endast .NET) så föreslår jag att du använder dig av Remoting och binary som protokoll.
Definera ett Interface för ditt DAL som du låter DAL:et implementera och sedan så kan du använda dig av det interface på dina andra maskiner när de vill skapa kopplingar till ditt DAL.
- MSv:Komma åt DAL från flera ställen...?
Men göra om DAL till en service (inte webservice! som jag läste först) är kanske en bra idé. Hur kommer jag åt servicen från andra maskiner då?
(Ska googla lite)Sv: Komma åt DAL från flera ställen...?
Du har egentligen fyra kommunikations vägar att välja på i .NET, Web Service, Remoting, MSMQ, TcpClient / Server.
Där, för ditt scenario, Remoting lämpar sig bäst. Ett varnande finger dock. Om deployment av din DAL är det enda du oroar dig för så är distribution på det här sättet inte bra i ditt projekt. Du kommer hur du än gör att skapa overhead och sänka prestandan i din applikation.
Läs mer om distribution här: http://www.lowendahl.net/showShout.aspx?id=90Sv:Komma åt DAL från flera ställen...?
Web Service vill inte köra till detta. Ska kolla upp remoting.Sv: Komma åt DAL från flera ställen...?
Sv:Komma åt DAL från flera ställen...?
Så nu har egentligen min fråga svängt.
Utvecklar mot en utvecklingsserver. Så hur automatiserar med ett deployment när jag (eller någon annan) vidareutvecklat DAL komponenten?
Antar att det går att fixa med en BAT-fil som:
1. Kompilerar koden
2. Installerar komponenten i GAC på servrarna (med gacutil.exe)
3. Lägger ny version i machine.config
Sista steget (3), svårt att lösa i en BAT-fil.
Eller finns det smidigare sätt...hoppas jag?Sv: Komma åt DAL från flera ställen...?
Sv:Komma åt DAL från flera ställen...?
Sv:Komma åt DAL från flera ställen...?
Lägger till komponenten i <assemblies><add assembly...>.
Trodde man behövde det för att köra komponenten i tex ASP.NET?Sv:Komma åt DAL från flera ställen...?
Läste det i en wrox bok (ado.net programming) för ganska länge sedan. Tog en del ideér från den när jag byggde mitt DAL. I samma kapitel gick man igenom GAC. Avslutningsvis addade man komponenten i machine.config. Kommer inte ihåg varför faktiskt och jag har inte reflekterat över detta då de komponnenter jag lagt i GACen alltid fungerat när jag gjort på detta vis.
Men att hålla på dona i machine.config har jag alltid tyckt varit ett aber.
Glad att slippa det...ska självklart testa. Tack!Sv: Komma åt DAL från flera ställen...?
[quote]
Gör om ditt DAL till en services. Som du kan accessa från flera maskiner.
Om det är ett intranet (endast .NET) så föreslår jag att du använder dig av Remoting och binary som protokoll.
Definera ett Interface för ditt DAL som du låter DAL:et implementera och sedan så kan du använda dig av det interface på dina andra maskiner när de vill skapa kopplingar till ditt DAL.
[/quote]
Tycker detta låter intressant. Förklara gärna mer runt interfacet!
Vet någon läsvärde artiklar/länkar (förurom dom bra inläggen här på detta forum som jag redan läst).Sv:Komma åt DAL från flera ställen...?
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=62
http://www.codeproject.com/csharp/absoluteremoting.asp
http://www.c-sharpcorner.com/Remoting.asp
http://www.csharphelp.com/archives2/archive460.html
Du måste inte använda Interface när du använder Remoting, men det är att föredra då du inte vill ha en stark koppling mellan din klient och server, utan du vill ha en koppling klient till interface till server.
Det man gör är att man gör en server där man implemeterar interfacet, och på klient sidan så skapar man sedan en proxy klass ("görs automatiskt") som är av typen interfacet. Vilket gör att om du på server sidan har en metod som heter int Add(int a, int b), så kan du på klient sidan skriva:
...
IServer server = (IServer)Activator.GetObject(
typeof(Iserver),
"tcp://localhost:8085/Server");
int svar = server.Add(10,15);
...
Och eftersom man jobbar mot interfacet och inte server objektet direkt så får man ingen start koppling mellan klient och server, vilket är att föredra, då man säkert kommer att ändra sitt server objekt, och glömma att kopiera över den senast versionen till klienten :)
- M