Пожалуйста, см this и this предыдущий ответ, который я дал на разработке приложений клиент-сервер кросс-платформенной, в частности, с кодовым повторного использования на нескольких клиентов. Это также применимо к вашему серверному приложению Winforms здесь.
Как много ответов говорят, вы можете структурировать свое решение для того, чтобы разделить код следующим образом:
Структура проекта
Solution
.. Общие (сообщения, Datacontracts, Утилиты)
.. Middleware (ссылки Common, предоставляет общие службы)
.. .. Server Exe (ссылки Common, Middlew есть)
.. .. Клиент Exe (Ссылки Общие, Middleware)
архитектура клиент-сервер верхнего уровня
Ваш стек становится
Клиенты:
Клиент имеет сериализацию, клиентские реализации веб-сервисов/промежуточного программного обеспечения и Model-View-Presenter patterns для представления.
Промежуточный:
Промежуточный, т.е. общих услуги и транспортные данных, реализация на рабочем столе клиента/сервера могут быть одинаковым. В качестве альтернативы вы можете позвонить в Службу. Любые конкретные услуги только для клиента (или только для сервера) должны размещаться в отдельных сборках и ссылаться только на конкретный exe (клиент или сервер). т. е. не использовать общий код, который не используется совместно!
сообщение/DataContracts:
общего для всех клиентов/сервера, используя методы, которые я описанные выше. В вашем случае это может быть общие объекты домена разделены между клиентом и сервером
Сервер:
Все бизнес-логики, доступа к БД и на стороне сервера службы реализаций. Для доступа к БД я бы рекомендовал PetaPoco в качестве отличной MicroORM.
Разработка и отладка
Да, решение может иметь более одного ехе, просто используйте set Startup Project правой кнопкой мыши на сервере Exe или клиента Exe для отладки одного или другого.
Если вы хотите запустить клиент и сервер вместе,, вы можете запускать оба из командной строки и присоединить отладчик к обоим процессам.
С наилучшими пожеланиями,
Просто добавьте столько проектов, сколько хотите, и постройте свое решение. –
хорошо, а как насчет threating? –
Я думаю, прежде чем вы сможете ответить на свой вопрос, вы должны быть более конкретным относительно того, какой тип приложения будет выполнять этот клиентский сервер .. это традиционный клиент FAT, тонкий клиент, WPS и т. Д., Затем укажите, что приложение предположим, что можно сделать, и можно предположить, что существует действующая душа. – MethodMan