Мне нужно написать программу, которая будет взаимодействовать с другими программами .NET ... но также и унаследованную программу VFP через TCP.Мне нужно выбрать довольно простой формат сообщений TCP, который может использовать программист VFP.Это может быть так же просто, как последовательность небольших блобов XML, разделенных ... Я не знаю, нулевой символ?Как бы то ни было.
Мне нужно выбрать между TcpListener / TcpClient и WCF.Я начал исследовать WCF, но его архитектура кажется непрозрачной, а встроенные шаблоны Visual Studio сильно склоняются к созданию "веб-сервисов", которые действуют как своего рода механизм RPC, но требуют специального "хоста" или веб-сервера, внешнего по отношению к приложению.,А 6-этапное руководство Microsoft делает звук WCF довольно громоздким (с использованием генераторов кода, командной строки и дерьма XML только для удаленного вычитания или умножения двух чисел).
Я хочу автономныйприложение (без «хоста»), я хочу контролировать проводной протокол и я хочу понять, как он работает. WCF, кажется, не облегчает эти вещи, поэтому я отказался от него, учитывая фактор TcpListener /TcpClient.
Тем не менее, программа должна служить посредником между одним (VFP) сервером и многими (.NET) клиентами, и будет связь в обоих направлениях и между разными соединениями.Используя TcpListener
и TcpClient
, работа по манипулированию соединениями и потоками становится немного грязной, у меня нет опыта работы с IAsyncResult
, и я не просто не уверен в качестве своего кода.
Итак, я хотел бы еще раз запросить мнения: должен ли я по-прежнему рассматривать WCF?Если да, можете ли вы указать мне ответы на следующие вопросы?
- Где в Интернете хорошее объяснение архитектуры WCF?Или мне нужна книга?
- Как осуществляется двунаправленная связь в WCF, где любая сторона (одного соединения TCP) может отправлять сообщение в любое время?
- Как я могупройти через все веб-сервисы и RPC mumbo-jumbo и управлять проводным протоколом?
- В WCF как мне аккуратно завершить работу приложения, параллельно закрывая все соединения без хакерских команд Thread.Abort ()?
Если нет, как я могу настроить свой код (который использует TcpListener / TcpClient / NetworkStream), чтобы я мог читать сообщения из NetworkStream, но также принимать запросы от других подключений, завершать работучисто в любое время и не тратить время процессора на опрос очередей и NetworkStreams, которые неактивны?