---
title: "COM-komponent i VB"
type: "forum-thread"
url: "https://www.webforum.nu/amne/webbutveckling/65056-com-komponent-i-vb"
topic: "Webbutveckling"
topic_url: "https://www.webforum.nu/amne/webbutveckling"
author: "OveRRidE"
published: "2003-01-16T10:16:54.000Z"
updated: "2003-01-17T07:23:37.000Z"
replies: 16
views: 419
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/webbutveckling/65056-com-komponent-i-vb"
---

# COM-komponent i VB

## #1 — OveRRidE, 2003-01-16T10:16Z

Hej på Er!

Jag håller på med en liten komponent och trots mitt ihärdiga studerande av 'komponentarkitektur' i VB och COM, kan jag inte komma fram till en vettigt struktur på mitt gränssnitt. COM är lite nytt för mig fortfarande. :)

Jag har funderat i dessa banor, men jag vill inte börja bygga innan jag är säker på hur jag skall göra implementationen:

**Komponent**

**Klassmoduler**

- Admin
- DataHandler
- News

Tanken är att **Admin** skall innehålla metoder som har med administrationen av applikationen att göra. **Datahandler** skall egentligen bara innehålla två metoder: *getConn* samt *execSql*. Vad de gör är väl ganska uppenbart. **News** innehåller metoder som har med visning, uppdatering, radering och addering av data i applikationen att göra. 

Alla anrop från metoderna i Admin och News går direkt till DataHandler som returnerar önskad data/värde. 

\---

Är tanken helt fel? Skall man tänka i anda banor än i t.ex. ASP-klasser? Är det rätt att ha en DataHandler? Skall jag addera fler lager? :p :)

Permalänk: https://www.webforum.nu/p/65056

## #2 — Erik Juhlin, 2003-01-16T10:38Z

Lite andra banor är det nog. :)

T.ex. så bör DataHandler vara en generell "Module" och inte en "Class Module". Då kan man komma åt modulerna överallt i projektet. :)

Permalänk: https://www.webforum.nu/p/916770

## #3 — OveRRidE, 2003-01-16T10:45Z

> T.ex. så bör DataHandler vara en generell "Module" och inte en "Class Module". Då kan man komma åt modulerna överallt i projektet.

Du menar 'då kan man komma åt *metoderna*'?

Men framför allt.. varför? :D

Permalänk: https://www.webforum.nu/p/916774

## #4 — niko, 2003-01-16T10:50Z

> Är det rätt att ha en DataHandler?

Ja, det beror kanske lite på hur din applikation ser ut i övrigt? Sköts all databaskommunikation i komponenten eller finns det databas/ADO-kod som ligger utanför komponenten i "ren" ASP?

Om *getConn* och *execSql* bara är "tomma" wrappers kring ADO-anropen: *Open* och *Execute* så kanske du lika gärna kan utföra dessa anrop "direkt" i din övriga kod? Och om *getConn* och *execSql* är de enda metoderna i *DataHandler* så kanske den rent av är helt onödig?

Dessutom så har ju din komponent direkt tillgång till alla objekt i din omgivande ASP-kod (globala connectionstrings osv ..) om du länkar till ASP-liben vid kompileringen.

Men som sagt, det beror på syftet med komponenten. Sköter komponenten ensam hela datalagret och ASP-koden *enbart* presentationen? Eller är det lite blandat?

Permalänk: https://www.webforum.nu/p/916776

## #5 — OveRRidE, 2003-01-16T10:56Z

> **niko skrev:**
>
> Ja, det beror kanske lite på hur din applikation ser ut i övrigt? Sköts all databaskommunikation i komponenten eller finns det databas/ADO-kod som ligger utanför komponenten i "ren" ASP?

Det är meningen att alla databas/ADO-kod skall huseras i komponenten och att kommunikation med databasen *skall* gå igenom komponenten, iaf om det har med denna applikation att göra. 

> **niko skrev:**
>
> Om *getConn* och *execSql* bara är "tomma" wrappers kring ADO-anropen: *Open* och *Execute* så kanske du lika gärna kan utföra dessa anrop "direkt" i din övriga kod? Och om *getConn* och *execSql* är de enda metoderna i *DataHandler* så kanske den rent av är helt onödig?

Varför är den onödig? Meningen är att försöka skilja datahanteringen från anropet. 

> **niko skrev:**
>
> Dessutom så har ju din komponent direkt tillgång till alla objekt i din omgivande ASP-kod (globala connectionstrings osv ..) om du länkar till ASP-liben vid kompileringen.

Jag vill helst undvika miljö-specifik kod i komponenten, alltså ingen ASP-kod såvida det absolut inte kan undvikas. 

> **niko skrev:**
>
> Men som sagt, det beror på syftet med komponenten. Sköter komponenten ensam hela datalagret och ASP-koden *enbart* presentationen? Eller är det lite blandat?

Som det är tänkt skall väl komponenten sköta all logik och ASP-filerna skall bara anropa metoderna i komponenten. Datat som kommer tillbaks hanteras i ASP-filerna där miljö-specad kod kan användas utan problem.

Permalänk: https://www.webforum.nu/p/916779

## #6 — niko, 2003-01-16T11:14Z

> **OveRRidE skrev:**
>
> Det är meningen att alla databas/ADO-kod skall huseras i komponenten och att kommunikation med databasen skall gå igenom komponenten, iaf om det har med denna applikation att göra.

OK. Isåf har jag inga direkta invändningar mot ditt uplägg.  :) 

> **OveRRidE skrev:**
>
> Varför är den onödig? Meningen är att försöka skilja datahanteringen från anropet.

Nej, isåf är den inte onödig. Jag avsåg det andra scenariot där komponenten var en *mindre* del av en större webbapplikation och det även skedde databasaccess på andra ställen.

> **OveRRidE skrev:**
>
> Jag vill helst undvika miljö-specifik kod i komponenten, alltså ingen ASP-kod såvida det absolut inte kan undvikas.

Ja. Fast länkning till ASP-liben innebär bara att komponenten har tillgång till/är medveten om globala objekt/inställningar i webbaplikationen/IIS:en *utan* att dessa hela tiden måste skickas in och ut via metodanrop. Mycket smidigt (enligt mig).

Permalänk: https://www.webforum.nu/p/916792

## #7 — OveRRidE, 2003-01-16T11:18Z

> Jag avsåg det andra scenariot där komponenten var en mindre del av en större webbapplikation och det även skedde databasaccess på andra ställen.

Ok, så är inte fallet. Den är ensamstående än så länge. :)

> Fast länkning till ASP-liben innebär bara att komponenten har tillgång till/är medveten om globala objekt/inställningar i webbaplikationen/IIS:en utan att dessa hela tiden måste skickas in och ut via metodanrop. Mycket smidigt (enligt mig).

Mjo, men det har jag allt läst i en *mycket* tjock bok, att man helst skall se till att skilja dessa bitar åt. ;) Men du har rätt i att det är smidigt. 

@nders och jag hade en liten sådan diskussion igår, där jag knappt förstod själv vad jag pratade om. :e ;)

Permalänk: https://www.webforum.nu/p/916796

## #8 — OveRRidE, 2003-01-16T11:20Z

Men Erik, varför i en modul?

Permalänk: https://www.webforum.nu/p/916798

## #9 — niko, 2003-01-16T11:29Z

> **OveRRidE skrev:**
>
> Mjo, men det har jag allt läst i en mycket tjock bok, att man helst skall se till att skilja dessa bitar åt.

Mja, möjligtvis om man avser att skriva en komponent som ska vara *så* generell att den ska gå att använda i helt andra sammanhang? Dvs även i kod som inte kör i IIS:en.

I annat fall är jag nog av den uppfattningen att man ska utnyttja de "finesser" som den miljö man riktar sig emot erbjuder. Annars kan man ju lika gärna koda allt i Java. Och verkligen undvika allt "miljö-specifikt".  ;)

Permalänk: https://www.webforum.nu/p/916807

## #10 — Erik Juhlin, 2003-01-16T12:17Z

Vide: För då har du tillgång till metoderna i hela projektet. Och metoderna finns då inte tillgängliga från ASP-sidorna. Det gör att man då aldrig får för sig att göra ett databasanrop från ASP-sidorna. :)

I vår Databas.bas modul har vi metoder som:
GetConnection
GetRecordset
ExecuteSQL
SaveRecordset

Mycket smidigt att sen använda dem i hela projektet. :)

Permalänk: https://www.webforum.nu/p/916835

## #11 — Erik Juhlin, 2003-01-16T12:19Z

Att använda ASP-objekt från VB kan ibland vara smidigt, men det är undantagsfall.
Generellt sätt så är det något man inte bör göra. :)

Permalänk: https://www.webforum.nu/p/916837

## #12 — Vide, 2003-01-16T12:28Z

> **Erik Juhlin skrev:**
>
> Vide: För då har du tillgång till metoderna i hela projektet. Och metoderna finns då inte tillgängliga från ASP-sidorna. Det gör att man då aldrig får för sig att göra ett databasanrop från ASP-sidorna. :)

Wf är underbart, här slipper man t.o.m att ställa en fråga, man får svar ändå. :e

Permalänk: https://www.webforum.nu/p/916849

## #13 — Pace, 2003-01-16T13:37Z

> **Vide skrev:**
>
> > **Erik Juhlin skrev:**
> >
> > Vide: För då har du tillgång till metoderna i hela projektet. Och metoderna finns då inte tillgängliga från ASP-sidorna. Det gör att man då aldrig får för sig att göra ett databasanrop från ASP-sidorna. :)
>
> 
> Wf är underbart, här slipper man t.o.m att ställa en fråga, man får svar ändå. :e

 :e :e :e

Permalänk: https://www.webforum.nu/p/916902

## #14 — Erik Juhlin, 2003-01-16T15:37Z

Äh, nu ska ni inte vara petiga. Båda är wF:are och båda bor där uppe i norr så det är sak samma. :p

Permalänk: https://www.webforum.nu/p/917008

## #15 — OveRRidE, 2003-01-16T15:43Z

Småland? Uppe i norr?! :e 

Vi kan väl inte rå för att ni håller på att trilla i sjön där nere! ;)

Permalänk: https://www.webforum.nu/p/917012

## #16 — Erik Juhlin, 2003-01-17T07:14Z

Norrlänning! :p

Permalänk: https://www.webforum.nu/p/917570

## #17 — OveRRidE, 2003-01-17T07:23Z

Dansk! :p

Permalänk: https://www.webforum.nu/p/917576

---

Tråden på webben: https://www.webforum.nu/amne/webbutveckling/65056-com-komponent-i-vb
