Symbol eXtension » image/x-icon

Címkék: ‘image/x-icon’

3. HTML eredmény és Intranet

posted in: SaaS és Intranet (Tags: , , , , , , , , , , ) - No Comments

A WebMethod attribútummal ellátott metódusok meghívhatóvá válnak a kiválasztott TCP porton, HTTP kommunikációt használva. Kézenfekvő az igény, hogy a SaaS szolgáltatások ne csak primitív és összetett adatokat hanem HTML tartalmat is ki tudjanak szolgálni.

Az URL alapú szolgáltatás kezelés lehetővé teszi, hogy böngészőben használjuk a WebMethod-okat, ha azok HTML tartalmat is elő tudnának állítani. A WebMethod, amely string típusú adatot ad vissza, alapértelmezetten TEXT/PLAIN mime típussal kerül visszaküldésre. Ennek megoldására vezettük be a HtmlResponse osztályt. Az osztály segítségével tetszőleges mime típus visszadható és az alapértelmezett string adatok küldése helyett lehetőség van byte[] eredmény visszaadására is. Ez használható képek vagy letölthető tartalom kiszolgálására. Pl.: http://localhost:8800/?pluginicon=true (amennyiben a plugin-nek van ikonja)

Egy teljes Intranet portál megvalósíthatóvá válik a HtmlResponse eredmény típus használatával. Nézzük erre néhány példát:

HTML tartalom létrehozása

A HTML tartlom létrehozása a programozó vagy a designer feladata. A HTML stípusok, DIV-ek, TABLE-k kezeléséhez a SyX SDK nem nyújt támogatást. A létrehozott HTML tartalom megfelelő megjelenítéséhez használható a HtmlResponse osztály.

Nézzük az alábbi példát, ahol egy StringBuilderben összeállított HTML tartalmat szolgálunk ki a böngésző felé. (SaaS módban valószínüleg a hívó fél nem tud mit kezdeni a HTML formázott szöveggel)

        [WebMethod(“Példa web metódus V.”)]
        public HtmlResponse SampleWebMethodHTML()
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(“<html>”);
            sb.AppendLine(“<body>”);
            sb.AppendLine(“<center>Példa szöveg”);
            sb.AppendLine(“<img src=’http://www.symboltech.hu/images/slide_easy.jpg’></center>”);
            sb.AppendLine(“</body>”);
            sb.AppendLine(“</html>”);
            return new HtmlResponse(sb.ToString());
        }

A HtmlResponse alapértelmezetten Text/HTML MIME típusú adatot ad vissza UTF8 kódolással, az átadott HTML formátumú szövegen túl, semmilyen paraméter nem szükséges.

 

Képek, dokumentumok kiszolgálása

Képek vagy dokumentumok kiszolgálhatóak a HtmlResponse osztály konstruktorának byte[]-bel való meghívásával. Az eredmény típusának megadása fontos, mert a böngésző a MIME típus alapján fogja kiválasztani a megjelenítés vagy letöltés módját.

Készítsünk egy képet futási időben, írjunk rá egy szöveget és adjuk vissza a böngészőnek JPEG formátumban:

        [WebMethod(“Kép létrehozása”)]
        public HtmlResponse SampleWebMethodImage()
        {
            using (Bitmap bmp = new Bitmap(320, 160))
            using (Graphics g = Graphics.FromImage(bmp))
            using (MemoryStream stream = new MemoryStream())
            {
                g.Clear(Color.Gray);
                g.DrawString(“Példa kép”, new Font(“Arial”, 28), new SolidBrush(Color.Orange), 20, 20);

                bmp.Save(stream, ImageFormat.Jpeg);
                stream.Position = 0;
                return new HtmlResponse(stream.ToArray(), null, System.Net.Mime.MediaTypeNames.Image.Jpeg);
            }
        }

Állítsunk elő egy letölthető dokumentumot (lehetne az adatbázis csatolt dokumentumai közül is kiválasztani egyet):

        [WebMethod(“Dokumentum letöltése”)]
        public HtmlResponse SampleWebMethodDocument()
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(“Első sor”);
            sb.AppendLine(“Második sor”);
            sb.AppendLine(“3. sor”);

            return new HtmlResponse(sb.ToString(), “sample.txt”, MediaTypeNames.Application.Octet);
        }

Vegyük észre, hogy az előző példában szereplő kép létrehozás is letöltésre kínálja fel a képet, ha a NULL érték helyett megadunk egy fájlnevet!

 

Átirányítás kezelése

Intranet portálok esetén előfrodulhat, hogy a HTML tartlom helyett valamely más (belső) oldalra kell átirányítani a böngészőt. Ezt szintén a HtmlResponse eredmény használatával érhetjük el:

        [WebMethod(“Példa web metódus REDIRECT”)]
        public HtmlResponse SampleWebMethodRedirect()
        {
            return HtmlResponse.Redirect(“/SampleWebMethodHTML”);
        }

 

Alapértelmezett főoldal beállítása

Nyilvánvaló az igény, hogy ha Intranet portált üzemeltetünk, akkor egy főoldalon ne az elérhető szolgáltatások listája jelenjen meg, hanem a fő szolgáltatás. Ezt megadhatjuk a SyX WebStartPage attribútumával. Ennek paramétere a főoldal lekérésekor (http://localhost:8800) megjelenő szolgáltatás, amelynek tipikusan metódus nélkülinek és HtmlResponse visszatérésű értékünek kell lennie.

[WebStartPage(“SampleWebMethod2a”)]

 

404-es hibaoldal beállítása

A nem elérhető, rosszul címzett oldalak helyett lehetőség van (az alapértelmezett főoldalhoz hasonlóan) egy hibaoldalt megadni. A hibaoldal lehet egy erre a célra létrehozott oldal vagy egy létező, működést megvalósító oldal, például a főoldal. A 404-es hibaoldal minden esetben átirányítással valósul meg. Az erőforrások, képek hibás URL-jei nem kerülnek átirányításra, ilyen esetben HTTP 404-es hibát kapunk (kép helyett piros X jelenik meg a böngészőben).

[Web404Page(“SampleWebMethod4”)]

 

A favicon.ico kezelése

A rendszer automatikusan kezeli a favicon.ico image/x-icon típsuként való kiszolgálását. A SyX beépülő iconja alapján hoz létre egy ICO formátumú képet, amelyet a kérés beérkezésekor kiszolgál.