Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Все тот же клиент-сервер.


Автор: CityAC 18.9.2007, 16:49
Нас двое я и шеф. Шеф шарит в делфи, но щас занят другими делами. Дал задание и свалил.
Надо написать серверную прогу, которая будет клиентским прогам слать данные, которые будет считывать с базы данных

С базами данных и их подключению я разобрался. А как сделать так чтоб сервер "ждал" подключения клиента.

Походил по форуму, толком для себя ничего не уяснил.
ХОтел было начать писать MFC приложение. Только мне нужно будет потом в клиентской проге в реальном времени отображать постоянно обновляемую таблицу базы данных(диспетчерская такси). На С-шарпе это просто - есть контрол DataGridView. В MFC такого не нашел(может плохо искал). И вообще хочу в будущем на C# писать. Поэтому отдал предпочтение С#.
Подскажите есть аналог СОКЕТА в С#. Или какой другой вариант построения взаимодействия клиент-сервер. Слыхал предлагают юзать АСП.НЕТ. Только нет времени изучать.

Автор: yar 18.9.2007, 17:08
Сокет, он и в C# сокет: System.Net.Sockets.Socket.
Но проще клиент-серверное взаимодействие организовать с помощью Remoting или Веб-сервисов. Remoting предпочтительнее при "сильном" взаимодействии, и только приложений на платформе .NET. При помощи веб-сервисов ASP.NET, или WCF можно организовывать взаимодействие между клиентами, написанных на разных языках.

Автор: CityAC 18.9.2007, 18:47
Так новое слово  - remoting. Интересно, что в Троелсоне про это почти ничего не написано. Встречается в книге всего два раза.
С чем его едят? 
И одно уточнение, клиенты с сервером будут общаться по локалке.
Если можно, какие нибудь куски кода, чтоб было понятнее

Автор: tol05 18.9.2007, 20:35
Цитата(yar @  18.9.2007,  17:08 Найти цитируемый пост)
Но проще клиент-серверное взаимодействие организовать с помощью Remoting или Веб-сервисов.

гм. с помощью remoting - не уверен, что проще.
С помощью веб-вервисов - уверен, что не получится. Ограничения уж больно большие на "взаимодействие"...

Цитата(yar @  18.9.2007,  17:08 Найти цитируемый пост)
Remoting предпочтительнее при "сильном" взаимодействии

а именно, в чем предпочтение?

CityAC, на форуме полно примеров. Ты в "Распределенные приложения и сеть" загляни. Тебе туда.
Кстати, кой-какой ремоутинг пример и список книг http://forum.vingrad.ru/forum/topic-171650/anchor-entry1252124/0.html

Автор: yar 18.9.2007, 21:06
Цитата(tol05 @  18.9.2007,  20:35 Найти цитируемый пост)
гм. с помощью remoting - не уверен, что проще.

Ну, зависит от задачи, конечно. Вместо того, чтобы придумывать свой протокол, иногда легче воспользоваться готовым каркасом. 


Цитата(tol05 @  18.9.2007,  20:35 Найти цитируемый пост)
а именно, в чем предпочтение?

Я имел в виду более "связанном" взаимодействии. Вот как я это понимаю. Remoting позволяет междоменно и удалённо взаимодействовать объектам CLR. Мы можем использовать все конструкции языка с удалёнными объектами, например, конструкторы, делегаты, обратные вызовы событиями, и так далее. Мы можем использовать любые транспортные протоколы.
В веб-службах же понятие объекта более абстрактно, привязанности к платформе нет. В этом их и преимущество и недостаток smile.

Автор: tol05 18.9.2007, 21:52
я могу возразить так:

Цитата(yar @  18.9.2007,  21:06 Найти цитируемый пост)
иногда легче воспользоваться готовым каркасом. 

всегда легче smile только "готовый" каркас тянет жрет много и медленно тянет. Потому что он "на все и ко всему готовый", так задумывался.

Цитата(yar @  18.9.2007,  21:06 Найти цитируемый пост)
 Remoting позволяет междоменно и удалённо взаимодействовать объектам CLR

сокеты тоже. Ты в ремоутинге случайно урлы нигде не указываешь? А при создании сокета?
К тому же как раз сокеты обеспечивают кроссплатформенность, а ремоутинг (да и Web-Servises, по большому счету ) "идут в сад"

Цитата(yar @  18.9.2007,  21:06 Найти цитируемый пост)
Мы можем использовать все конструкции языка с удалёнными объектами, например, конструкторы, делегаты, обратные вызовы событиями, и так далее
как я понял нужно данные гонять с места на место... Тогда упомянутые тобой "страшные фичи" тоже идут в сад  smile 
Кроме того, серилизация и маршаллинг данных в ремоутинге занимают времени и ресурсов поболее, чем потоки байтов. К тому же, напоминаю, база данных участвует. Может даже немалая...

кстати, случайно http://www.gotdotnet.ru/LearnDotNet/XMLWebServices/30619.aspx в топик

Автор: yar 19.9.2007, 06:33
tol05, я не буду спорить, поскольку согласен. Вообще, одно другому не мешает. Хотя, зачастую, и взаимоисключает. Нужно гонять данные -- серелизуем, кидаем в сокет; обеспечиваем  самостоятельно параллельность потоков и так далее. Хотим юзать "фичи" и не хотим париться -- используем карсас, на то он и каркас, ему положено быть более медленным. Если технологии сочиняют, значит они кому-нибудь нужны smile 
Так или иначе, спасибо за диалог, он позволил мне взглянуть на всё это с другой стороны.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)