31 | 2 | 0 | /produkter | Produkter | Produkter | | | |
<h1>Produkter</h1>
<hr />
<div class="row">
<div class="col-md-6 left">
<h3>Microsoft SQL Web Framework</h3>
En SQL-server er ekspert på å håndtere og utveksle data, men er ofte ikke det best egnede verktøyet for å håndtere
komplekse webportaler og bygge opp tekststrenger, som en webside består av. Dette har vi gjort noe med, og laget et verktøy
som gjør at du får utnyttet databasen til det som MSSQL er best på, og at du allikevel kan lage kraftfulle webportaler med
liten, men effektiv T-SQL kode.<br />
</div><div class="col-md-6 left">
Stort sett alle Publiseringsverktøy på markedet benytter en database i bakkant til å lagre både html-maler og innhold.
Problemet med MSSQL er at man ofte ikke ønsker å bruke databaseserveren til å flette dette sammen, slik at du får fyllt
malene med det innholdet du ønsker. Derfor har vi bygget en generelt rammeverk som gjør at dette flettes sammen utenfor
databaseserveren. På denne måten får du benyttet både MSSQL og web-serveren til hva de er best egnet til.<br />
</div>
</div>
<div class="row">
<div class="col-md-6 left">
<br />
<h3>Portal-bygger INTRO</h3>
Tenk deg at du har lageret en html-mal i en tabell, og at du ønsker å fylle denne med innhold. Hele koden består da av
to ulike spørringer, en SELECT-spørring for å hente ut malen, og en SELECT-spørring for å hente ut innhold.<br />
<br />
To tabeller for demo<br />
<pre class="SQLCode"><span class="SQLKeyword">CREATE</span> <span class="SQLKeyword">TABLE</span> Template <span class="SQLOperator">(</span>
TemplateID <span class="SQLKeyword">INT</span> <span class="SQLKeyword">PRIMARY</span> <span class="SQLKeyword">KEY</span>
<span class="SQLOperator">,</span>html <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span><span class="SQLFunction">max</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span>
<span class="SQLKeyword">CREATE</span> <span class="SQLKeyword">TABLE</span> WebContent <span class="SQLOperator">(</span>
webpath <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span>50<span class="SQLOperator">)</span> <span class="SQLKeyword">PRIMARY</span> <span class="SQLKeyword">KEY</span>
<span class="SQLOperator">,</span>Title <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span>200<span class="SQLOperator">)</span>
<span class="SQLOperator">,</span>Description <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span><span class="SQLFunction">max</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span>
</pre>
En enkel mal:<br />
<pre class="SQLCode"><span class="SQLKeyword">INSERT INTO</span> Template <span class="SQLOperator">(</span>templateid<span class="SQLOperator">,</span>html<span class="SQLOperator">)</span>
<span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span>1<span class="SQLOperator">,</span><span class="SQLString">'<html>
<head>
<title>{$Content.Title$}</title>
</head>
<body>
{$WebContent.Description}
</body>
</html>'</span><span class="SQLOperator">)</span></pre>
</div><div class="col-md-6 left">
To enkle sider:<br />
<pre><span class="SQLKeyword">INSERT INTO</span> WebContent <span class="SQLOperator">(</span>webpath<span class="SQLOperator">,</span>Title<span class="SQLOperator">,</span>Description<span class="SQLOperator">)</span>
<span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span><span class="SQLString">'/om-oss'</span><span class="SQLOperator">,</span><span class="SQLString">'Om oss'</span><span class="SQLOperator">,</span><span class="SQLString">'SQLExpert AS, Gullrisveien 8, 1715 Yven'</span><span class="SQLOperator">)</span>
<span class="SQLKeyword">INSERT INTO</span> WebContent <span class="SQLOperator">(</span>webpath<span class="SQLOperator">,</span>Title<span class="SQLOperator">,</span>Description<span class="SQLOperator">)</span>
<span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span><span class="SQLString">'/produkter'</span><span class="SQLOperator">,</span><span class="SQLString">'Produkter'</span><span class="SQLOperator">,</span><span class="SQLString">'Prøv vårt nye web-verktøy'</span><span class="SQLOperator">)</span></pre>
</div><div class="col-md-6 left">
Så selve T-SQL koden:<br />
<pre class="SQLCode"><span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span><span class="SQLOperator">,</span>1 <span class="SQLKeyword">AS</span> WebContent<span class="SQLComment">-- Referanse, WebContent er tabell 1</span>
<span class="SQLKeyword">FROM</span> Template
<span class="SQLKeyword">WHERE</span> TemplateID <span class="SQLOperator">=</span> 1
<span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span>
<span class="SQLKeyword">FROM</span> WebContent
<span class="SQLKeyword">WHERE</span> webpath <span class="SQLOperator">=</span> @webpath
</pre>
Slik ble resultatet: <a href="/websqldemo/intro/om-oss">/om-oss</a> (<a href="/websqldemo/intro/om-oss?getrawdata=true">raw</a>) - <a href="/websqldemo/intro/produkter">/produkter</a> (<a href="/websqldemo/intro/produkter?getrawdata=true">raw</a>)<br />
<br />
Du kan legge til så mange tabeller du ønsker, og du kan hente ut data fra samtlige. Systemet støtter også repeatere, så du f.eks. kan bygge en meny.
Det er også støtte for if-statements i malen. Dette var veldig overfladisk i forhold til hvordan dette fungerer. Hvorfor ikke teste det ut?<br />
<br />
Som en referanse er nettsiden du er inne på nå bygget opp med dette verktøyet. Bevis? Legg på /?getrawdata=true bak hvilken som helst side, så ser du hvordan
den er bygget opp. For eksempel <a href="/produkter?getrawdata=true">denne</a>.
</div>
</div>
<div class="row">
<div class="col-md-6 left">
<br />
<h3>Portal-bygger INTRO 2</h3>
La oss gjøre det litt mer spennende. Vi bruker de samme tabellene, men legger til en "repeater".
<br />
La oss legge til en ny mal:<br />
<pre class="SQLCode"><span class="SQLKeyword">INSERT INTO</span> Template <span class="SQLOperator">(</span>templateid<span class="SQLOperator">,</span>html<span class="SQLOperator">)</span>
<span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span>2<span class="SQLOperator">,</span><span class="SQLString">'<html>
<head>
<title>{$Content.Title$}</title>
</head>
<body>
{$WebContent.Description$}<br />
<br />
<sql repeat="r in Pages" filter="">
<a href="{$a.webpath$}">{$a.Title$}</a><br />
</sql>
</body>
</html>'</span><span class="SQLOperator">)</span></pre>
</div><div class="col-md-6 left">
Så selve T-SQL koden:<br />
<pre class="SQLCode"><span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span><span class="SQLOperator">,</span>1 <span class="SQLKeyword">AS</span> WebContent<span class="SQLComment">-- Referanse, WebContent er tabell 1</span>
,</span>2 <span class="SQLKeyword">AS</span> Pages<span class="SQLComment">-- Referanse, Pages er tabell 2</span>
<span class="SQLKeyword">FROM</span> Template
<span class="SQLKeyword">WHERE</span> TemplateID <span class="SQLOperator">=</span> 2
<span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span>
<span class="SQLKeyword">FROM</span> WebContent
<span class="SQLKeyword">WHERE</span> webpath <span class="SQLOperator">=</span> @webpath
<span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span>
<span class="SQLKeyword">FROM</span> WebContent
</pre>
Slik ble resultatet: <a href="/websqldemo/intro2/om-oss">/om-oss</a> (<a href="/websqldemo/intro2/om-oss?getrawdata=true">raw</a>) - <a href="/websqldemo/intro2/produkter">/produkter</a> (<a href="/websqldemo/intro2/produkter?getrawdata=true">raw</a>)<br />
<br />
Det er også støtte for if-statements, noe vi ikke går i detalj på nå. Se mer om dette i dokumentasjonen.
</div>
</div>
<div class="row">
<div class="col-md-6 left">
<br />
<h3>AJAX</h3>
Med samme komponent som Portal-byggeren, kan du også kommunisere med en webklient ved bruk av AJAX-kall. Systemet støtter alle web-kall som
POST, DELETE, GET, PUT og lignende.<br />
<br />
</div><div class="col-md-6 left">
<h4>Input</h4>
Alt bygges opp med en felles STORED PROCEDURE. Denne får en god del inputparametere fra klienten, slik at du kan bearbeide data og gi en
ønsket tilbakemelding tilbake til klienten. Input-parametere på prosedyren er @SessionID, @Ip, @UrlParts, @UrlParams, @Xml, @Method og @ContentType. Basert på
dette vet du domenet, hvilken url som hentes, og data som klienten sender inn. Ved å benytte @SessionID kan du også benytte session-handling, og
rettighetsstyre innholdet. <br />
<br />
<h4>Output</h4>
Output kan bygges opp på mange måter, men den vanligste er å bare returnere en tabell. Denne tabellen blir konvertert til JSON før den sendes
tilbake til webklienten. <a href="/websqldemo/response">Eksempel: </a>
<pre class="SQLCode"><span class="SQLKeyword">SELECT</span> <span class="SQLString">'ok'</span> <span class="SQLKeyword">AS</span> Response
<span class="SQLOperator">,</span><span class="SQLString">'Dataene er lagret'</span> <span class="SQLKeyword">AS</span> [Description]
</pre>
</div>
</div>
<br /><br />
<div class="container">
<div class="row">
<h3>Priser</h3>
</div>
</div>
<div class="container">
<div class="row">
<div id="no-more-tables">
<div class="left">
<h4>Bedrift</h4>
<b>Bedrift:</b> Kommersiell virksomheter, inklusive kommune og stat.<br />
</div>
<table class="col-md-12 table-bordered table-striped table-condensed cf">
<thead class="cf">
<tr><th>Server</th><th>Kjøp versjon 2.x</th><th></th></tr>
</thead>
<tbody>
<tr><td data-title="Server">Enkelt domene, enkel web-server</td><td data-title="Etablering">14.900,- eks mva</td><td data-title="Per mnd"><a class="just-do-in" href="/getlicense/register">Kjøp</a></td></tr>
<tr><td data-title="Server">Mange domener, enkel web-server</td><td data-title="Etablering">39.000,- eks mva</td><td data-title="Per mnd"><a class="just-do-in" href="/getlicense/register">Kjøp</a></td></tr>
<tr><td data-title="Server">Enkelt domene, flere web-servere</td><td data-title="Etablering">39.000,- eks mva</td><td data-title="Per mnd"><a class="just-do-in" href="/getlicense/register">Kjøp</a></td></tr>
</tbody>
</table>
</div>
</div>
</div>
<br /><br />
<div class="container">
<div class="row">
<div id="no-more-tables">
<div class="left">
<h4>Nonprofit, med referanse</h4>
Private og ikke-kommersielle virksomheter.<br />
<b>Referanse:</b> Alle sider hvor komponenten benyttes må ha link til http://www.sqlexpert.no <br />
</div>
<table class="col-md-12 table-bordered table-striped table-condensed cf">
<thead class="cf">
<tr><th>Server</th><th>Kjøp versjon 2.x</th><th></th></tr>
</thead>
<tbody>
<tr><td data-title="Server">Enkelt domene, enkel web-server</td><td data-title="Etablering">Gratis med referanse</td><td data-title="Per mnd"><a class="just-do-in" href="/getlicense/register">Last ned</a></td></tr>
<tr><td data-title="Server">Mange domener, enkel web-server</td><td data-title="Etablering">Gratis med referanse</td><td data-title="Per mnd"><a class="just-do-in" href="/getlicense/register">Last ned</a></td></tr>
<tr><td data-title="Server">Enkelt domene, flere web-servere</td><td data-title="Etablering">Gratis med referanse</td><td data-title="Per mnd"><a class="just-do-in" href="/getlicense/register">Last ned</a></td></tr>
</tbody>
</table>
</div>
</div>
</div>
| class="active" | Produkter | 20 | | |