BLOGas.lt
Pigūs skrydžiai
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Jubiliejinis ITishnikai #10 epizodas

Parašė Sergejus | 2012-01-23 20:27

Jubiliejinis, jau 10-as ITishnikai epizodas prieinamas mūsų Facebook puslapyje bei parsiuntimui. Šį kartą svečiuose – Tautvydas Dagys iš Microsoft Lietuva. Labai laukiam jūsų atsiliepimų bei komentarų!

Minėtos nuorodos:

Rodyk draugams

.gitignore skirtas .NET

Parašė Sergejus | 2012-01-17 00:30

Kadangi DotNetGroup 3.0 platformos kūrimui naudojama Git versijavimo sistema, nusprendžiau pasidalinti savo .gitignore failu, skirtu .NET projektams. Failą patalpinau GitHub Gist, tad siūlykite savo papildymus!

#ignore thumbnails created by windows
Thumbs.db
#ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.lib
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
*.dotCover
*.ReSharper
packages

Rodyk draugams

Asinchroninis Web komunikavimas naudojant Web soketus

Parašė Sergejus | 2012-01-07 13:46

Įvadas į Web soketus

Paskutiniu metu „ant bangos“ asinchroninis komunikavimas Web‘e. Tam egzistuoja skirtingi būdai ir vienas iš jų įeina į HTML5 standartų šeimą – WebSocket API. WebSocket – tai abipusis komunikavimo kanalas grindžiamas TCP soketais. Ryšio užmezgimui naudojamos Web naršyklės ir Web serveriai, todėl komunikavimas dažniausiai vyksta tuo pačiu 80 TCP portu.

WebSocket technologija jau kuriama kurį laiką ir egzistuoja skirtingos jos versijos:

  • Hixie-Draft-76/Hybi-00 (palaiko Safari 5, Chrome < 14, Firefox 4)
  • Hybi-07 (palaiko Firefox 6)
  • Hybi-10 (palaiko Chrome 14-16, Firefox 7)
  • Hybi-13 (palaiko Chrome 17+)

Jau yra paskelbta, kad Internet Explorer 10 irgi palaikys šią technologiją.

WebSocket technologijoja pasižymi API paprastumu, teegzistuoja 4 pagrindiniai metodai:

  • OnOpen - kai ryšis atidaromas
  • OnClose – kai ryšis uždaromas
  • OnMessage – kai gaunamas pranešimas iš kliento
  • Send – pranešimo išsiuntimas klientui

Gera žinia .NET programuotojams, Build konferencijos metu buvo anonsuota, kad Web soketų palaikymas bus įgyvendintas Internet Information Services 8 bei .NET Framework 4.5. Bet jeigu norite pradėti eksperimentuoti su WebSocket technologija jau dabar, siūlau išbandyti atvirojo kodo Web soketų serverį Fleck (prieinamas ir iš NuGet). Fleck parašytas su C# ir palaiko visas pagrindines WebSoket versijas bei turi labai paprastą programavimo API.

WebSocket serverio sukūrimas su Fleck

Žemiau pateiktas pilnai veikiančio WebSocket serverio pavyzdys:

class Server
{
    static void Main()
    {
        var allSockets = new List<IWebSocketConnection>();
        var server = new WebSocketServer("ws://localhost:8181");
        server.Start(socket =>
            {
                socket.OnOpen = () =>
                    {
                        Console.WriteLine("Open!");
                        allSockets.Add(socket);
                    };
                socket.OnClose = () =>
                    {
                        Console.WriteLine("Close!");
                        allSockets.Remove(socket);
                    };
                socket.OnMessage = message =>
                    {
                        Console.WriteLine(message);
                        allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
                    };
            });

        var input = Console.ReadLine();
        while (input != "exit")
        {
            foreach (var socket in allSockets.ToList())
            {
                socket.Send(input);
            }
            input = Console.ReadLine();
        }

    }
}

WebSocket kliento sukūrimas su WebSocket API

Komunikavimas su WebSocket serveriu įmanomas arba iš kito serverio, arba tiesiai iš naršyklės JavaScript ir WebSocket API pagalba. Žemiau pateiktas pilnai veikiančio WebSocket kliento pavyzdys:

<!DOCTYPE>
<html>
<head>
    <title>websocket client</title>
    <script type="text/javascript">
        var start = function () {
            var inc = document.getElementById('incomming');
            var wsImpl = window.WebSocket || window.MozWebSocket;
            var form = document.getElementById('sendForm');
            var input = document.getElementById('sendText');

            inc.innerHTML += "connecting to server ..<br/>";

            // create a new web socket and connect
            window.ws = new wsImpl('ws://localhost:8181', 'my-protocol');

            // when data is coming from the server, this method is called
            ws.onmessage = function (evt) {
                inc.innerHTML += evt.data + '<br/>';
            };

            // when the connection is established, this method is called
            ws.onopen = function () {
                inc.innerHTML += '.. connection open<br/>';
            };

            // when the connection is closed, this method is called
            ws.onclose = function () {
                inc.innerHTML += '.. connection closed<br/>';
            }

			form.addEventListener('submit', function(e){
				e.preventDefault();
				var val = input.value;
				ws.send(val);
				input.value = "";
			});

        }
        window.onload = start;
    </script>
</head>
<body>
	<form id="sendForm">
		<input id="sendText" placeholder="Text to send" />
	</form>
    <pre id="incomming"></pre>
</body>
</html>

Apibendrinimas

Sudėtingėjant Web aplikacijoms vis dažniau atsiranda asinchroninio komunikavimo poreikis tarp klientų ir serverio. Nepaisant fakto, kad Web soketų palaikymas dar nėra masinis, viskas einama link to. Jau dabar egzistuoja pagalbiniai Flash ir Silverlight moduliai, kurie leidžia emuliuoti WebSocket panaudojimą senesnėse naršyklėse. WebSocket – tai daug žadanti ir didelį bendruomenės palaikymą turinti technologija, kuria labai rekomenduoju pradėti domėtis jau šiandien.

Rodyk draugams