2011-08-17 7 views
6

Mam urządzenie klienckie (POS handheld), które komunikuje się przez TCP/IP lub RS232 z serwerem. Protokół jest podanym formatem binarnym, którego nie mogę zmienić. Muszę zaimplementować serwer dla tego urządzenia. Mam wrażenie, że WCF byłby lepszym wyborem niż wdrażanie czegokolwiek ręcznie. Ale ponieważ potrzebowałoby to trochę czasu, aby spróbować, chciałbym zapytać o radę, czy to dobry pomysł i czy jest możliwe, aby dostroić WCF do takiego poziomu szczegółowości.Czy należy używać WCF do wdrożenia danego binarnego protokołu sieciowego?

Znalazłem kilka pytań, które są podobne do moich, ale w tych przypadkach OP miał zawsze pełną kontrolę nad klientem i serwerem. Tak nie jest w przypadku mojego scenariusza.

Jeśli WCF jest dobrym pomysłem - co zakładam - niektóre punkty wyjścia byłyby bardzo doceniane. Większość dokumentacji skupia się na SOAP, REST, ... a nie na niższych poziomach, nad którymi będę pracował.

Odpowiedz

4

Pracując z WCF przez wiele lat (i lubię to), nie sądzę, że jest to najlepsza opcja dla twoich potrzeb. Jak wspomniał Phil, to słodkie miejsce jest wokół usług sieciowych, a nie komunikacji niskiego poziomu. Aby to zaimplementować w WCF, trzeba napisać niestandardowy transport, który, jak w przypadku niemal całego niskiego poziomu (programowanie kanałów), wymaga dużej ilości kodu. Ten transport wymagałby użycia gniazd, aby zrozumieć protokół urządzenia, i musiałbyś w jakiś sposób przekonwertować komunikaty z protokołu na komunikaty WCF.

Jeśli protokół jest prosty, myślę, że najlepszym rozwiązaniem będzie "czysta" implementacja oparta na gniazdach. Kod obsługi gniazd (do komunikacji z urządzeniem) byłby i tak potrzebny w rozwiązaniu WCF, ale można tworzyć własne typy komunikatów, zamiast dostosowywać się do protokołu wiadomości (raczej przyjaznego SOAP) używanego przez WCF.

Jedną z korzyści, które przydałoby się, gdyby przejść całą drogę i zaimplementować niestandardowy transport WCF, który "omawia" ten protokół, gdyby ujawnić go wielu różnym osobom, które już używają WCF -wdrożenie usług - będziesz musiał ponieść początkowy (bardzo wysoki) koszt napisania transportu WCF, ale później ludzie mogą pisać usługi dla tego urządzenia, korzystając z modelu umowy, który zapewnia WCF.

2

WCF ma taką samą charakterystykę uczenia się, a jeśli potrzebujesz dostosować wiele rzeczy bardzo niskiego poziomu, krzywa będzie bardziej stroma.

Powodem, dla którego utworzono WCF, było umożliwienie programistom nie martwić się szczegółami implementacji niższego poziomu. Wygląda na to, że chcesz najlepszego z obu światów, co oznacza, że ​​prawdopodobnie spędzasz większość swojego czasu walcząc z WCF, aby sprawić, by działał tak, jak chcesz.

Nota prawna: Chociaż mam podstawową wiedzę na temat WCF, nie jestem ekspertem i mogę się mylić.

Powiązane problemy