Wstęp
W poprzednich dwóch wpisach, przedstawiłem ogólne zasady tworzenia aplikacji multiplatformowych, pokazałem jak można zapisywać i odczytywać dane z socketów. Oparłem się przy tym mocno na przykładzie Johna Papa. W tym przykładzie pójdę dalej tym tropem i pokażę jak można uruchomić komunikację klient serwer. Jak sprawić, żeby sockety zaczęły nasłuchiwać i ze sobą rozmawiać.
Odczyt/zapis socketa
W poprzednim wpisie przedstawiłem dwie klasy do odczytywania poleceń przesyłanych przez sockety (kody źródłowe dostępne są tutaj), Ponieważ nasze sockety będą miały komunikować się dwustronnie dla uproszczenia sprawy wprowadźmy jeszcze dodatkową klasę opakowującą CommandReaderWriter.
public class CommandReaderWriter
{
public Socket Socket { get; protected set; }
public delegate...
niedziela, 5 lutego 2012
Multiplatforomowe aplikacje w .NET, Silverlight i Windows Phone Cz.2 - Wstęp do komunikacji socketami

Wstęp
W
poprzednim wpisie przedstawiłem wstęp oraz kilka problemów, które
napotykamy przy rozpoczęciu zabawy z aplikacji wieloplatformowych. Tak
jak zapowiedziałem, w tym wpisie przedstawię kolejny krok do utworzenia
gry multiplayer w Kuku. Tym razem na warsztat wzięte zostają metody
komunikacji klient-serwer, serwer-klient przy pomocy socketów. Dlaczego
przy pomocy socketów, a nie WCF? Szczegóły później. Najpierw się
zastanówmy czego tak naprawdę potrzebujemy.
Naszą wersję Kuku można opisać następująco:
- zbierają się gracze,
- każdemu z nich rozdajemy karty, pierwszy gracz dostaje 4, resta 3,
- jeżeli któryś z graczy ma 3...
Multiplatforomowe aplikacje w .NET, Silverlight i Windows Phone Cz.1 - Współdzielenie klas

Wstęp
W kilku najbliższych wpisach postaram się przybliżyć tematykę tworzenia aplikacji multiplatformowych. Środowisko .NET dostarcza nam rozwiązań, które pozwalają tworzyć zarówno aplikacje okienkowe (WinForms, WPF), strony internetowe (ASP.NET, Siverlight) jak i programy na telefony komórkowe (Windows Phone). W dzisiejszych czasach rozpowszechniło się tworzenie aplikacji w architekturze trójwarstwowej. Dzięki niej zostaje rozdzielony dostęp do danych, logika biznesowa oraz warstwa kliencka. Ułatwia to bardzo stworzenie systemów, które będą mogły "wystawiać" środowiska klienckie na różne platformy technologiczne. Brzmi prosto, ale w praktyce...