Сегодня я бы никогда не опустился до такого низкого уровня, как сокеты, если бы вам не пришлось этого делать. Работа с абстракциями высокого уровня намного продуктивнее и креативнее. Лучше потратить 2-3 дня на изучение WCF или .Net Remoting, а затем 2 недели на отладку низкоуровневых сокетов.
У нас было похожее решение сделать несколько недель назад. Мы решили использовать Remoting, так как вы можете работать на уровне объектов, это чертовски просто в настройке и довольно эффективно. Мы могли бы использовать WCF, но это было не так просто настроить.
Большое преимущество Remoting или WCF заключается в том, что вы можете передавать объекты между сервером и клиентом и вызывать методы для них на каждой стороне.
Предположим, вы написали абстракцию для вашей камеры, например:
class Camera
{
public CompressedImage GetFrame()
{
....
return image;
}
}
Затем вы можете создать удаленный объект на сервере и написать что-то вроде:
var cam = SomeClientObject.GetCamera(); //get proxy object for the cam
....
var frame = cam.GetFrame();
, который вызовет метод GetFrame () на клиенте и передаст вам изображение через (меж) сеть, если изображение сериализуемо. Единственное, что вы должны иметь в виду, это то, какие объекты создают прокси на другой стороне, а какие объекты копируются на другую сторону.
Это действительно мощно и работает для нас как очарование. Так что освободите свой разум от розеток:)