powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# трехзвенка
125 сообщений из 125, показаны все 5 страниц
C# трехзвенка
    #38249538
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

В C# новичок, надо сделать клиент=-серверное приложение, которое работает с БД
Я думал, что надо сделать некого клиента, который стучится к серваку БД
потом оказалось, что надо сделать трехзвенку:

куча клиентов коннектятся к серверу. Тот в свою очередь шлет запросы на сервер БД и результат отправляет обратно клиентам...

Вопрос: какие технологии использовать? куда копать, чтобы начать делать и раскручиваь тему?
Может пример какой есть?
Хотя бы пример сервера, который слушает порт и ожидает подключений клиентов
И как можно в итоге отправить клиенту результат данных, который вернул сервак?
В общем, если кто может подсказать, буду признателен!!!

Заранее спасибо!
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249542
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249545
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249551
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, я бы уж как-то постыдился на ремоутинг ссылки давать :)

P.S. WCF
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249552
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНарод, я бы уж как-то постыдился на ремоутинг ссылки давать :)

да, зачем нам посредники !? надо сразу в Socket'ах делать.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249555
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erда, зачем нам посредники !? надо сразу в Socket'ах делать.
На голубях тогда уж, запульнул с ноги голубя с вестью и ждёшь респонза. Главное, у соседского мальчуганья рогатки с прящами поотбирать.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249562
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbeg-in-erда, зачем нам посредники !? надо сразу в Socket'ах делать.
На голубях тогда уж, запульнул с ноги голубя с вестью и ждёшь респонза. Главное, у соседского мальчуганья рогатки с прящами поотбирать.

в некоторых системах голубь сразу же возвращает подтверждение о том, что он получил запрос, важно успеть увернуться

;-D
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249566
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ооооооооооо
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249568
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может и вправду на сокетах???
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249570
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я как-то раньше такую байду делал на Java
может оттуда "вспомнить"...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249574
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Galadriel75, сегодня, 20:23 [14264638
>...Я думал, что надо сделать некого клиента, который стучится к серваку БД ...
Вам надо научиться работать с WCF.
Посмотрите для начала здесь и здесь .
Что не понятно - спрашивайте. На время забудте, что есть TCP порты. Вы будете работать с удаленными сервисами.

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249581
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchGaladriel75,
Windows Communication Foundation
fxd
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249680
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Galadriel75, сегодня, 20:23 [14264638
>...Я думал, что надо сделать некого клиента, который стучится к серваку БД ...
Вам надо научиться работать с WCF.
Посмотрите для начала здесь и здесь .
Что не понятно - спрашивайте. На время забудте, что есть TCP порты. Вы будете работать с удаленными сервисами.

С уважением, Владимир.
спасибо! гляну!!! Только делаю то не себе - курсач студенту, а там условие - TCP/IP
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249822
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75спасибо! гляну!!! Только делаю то не себе - курсач студенту, а там условие - TCP/IPВсе перечисленное работает по протоколу tcp/ip.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249958
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

ага, а если его попросят написать сортировку он тоже напишет List.Sort? Боюсь такое объяснение не проканает.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249979
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75ВМоисеев>Galadriel75, сегодня, 20:23 [14264638
>...Я думал, что надо сделать некого клиента, который стучится к серваку БД ...
Вам надо научиться работать с WCF.
Посмотрите для начала здесь и здесь .
Что не понятно - спрашивайте. На время забудте, что есть TCP порты. Вы будете работать с удаленными сервисами.

С уважением, Владимир.
спасибо! гляну!!! Только делаю то не себе - курсач студенту, а там условие - TCP/IPИнтересно... курсач и трехзвенка...
Это где так обучают и спрашивают?
Просто интересно стало... Хорошее наверное заведение...
Самое интересное какой студент выдет из него...?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249986
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СА,

мертвый =))
...
Рейтинг: 0 / 0
C# трехзвенка
    #38249993
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир САGaladriel75пропущено...

спасибо! гляну!!! Только делаю то не себе - курсач студенту, а там условие - TCP/IPИнтересно... курсач и трехзвенка...
Это где так обучают и спрашивают?
Просто интересно стало... Хорошее наверное заведение...
Самое интересное какой студент выдет из него...?
Вот начало задания:
Курсовой проект должен быть выполнен в архитектуре клиент сервер на языке Си шарп. Соединение между клиентами и сервером должно быть реализовано с использованием протокола TCP/IP. Запуск клиентского и сервернго приложения должен осуществляться без использования интегрированных сред разработки...
И еще на поляхз бумажки зачем-то написали "Выполнить в консоле C#"
Значит, как я понял, между СУБД и клиентом должна вырасти консольная прослойка, которая серваку будет слать запросы и результат отправлять клиентам...
Скорее всего это так и надо делать, иначе если бы сделать банальное клиент-сервер, без прослоек, то тут все просто и прозрачно, а в задании упоминается о запуске серверного приложения вне среды разработки, значит все же речь идет о некоей примитивной трезвенке... А как ее реализовать не знаю, так как такое делал только на Java, да и то сильно упрощенно, без сериализаций... А тут C#...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250002
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

ну вот WCf вам в руки. Он может хоститься в консоле, может работать по net TCP :)
У вас будет 2 консоли - один "сервер" , другой "клиент". Я так понимаю БД вам не нужна, ну или возьмите Sqlite для пафоса. Но вообще задание для лабы имхо неоднозначное - можно делать 2 часа, а можно 2 недели...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250004
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanGaladriel75,

ну вот WCf вам в руки. Он может хоститься в консоле, может работать по net TCP :)
У вас будет 2 консоли - один "сервер" , другой "клиент". Я так понимаю БД вам не нужна, ну или возьмите Sqlite для пафоса. Но вообще задание для лабы имхо неоднозначное - можно делать 2 часа, а можно 2 недели...
вот эта неоднозначность и бесит порой...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250007
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

значит сделайте как проще. Возьмите БД как xml файл и ищите в нем сотрудников по ФИО, сделайте 3 метода и все.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250011
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanGaladriel75,

значит сделайте как проще. Возьмите БД как xml файл и ищите в нем сотрудников по ФИО, сделайте 3 метода и все.
не это не прокатит - надо сделать систему учета продаж - я ее или на SQLite или на mdb сделаю...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250013
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanGaladriel75,

ну вот WCf вам в руки. Он может хоститься в консоле, может работать по net TCP :)
У вас будет 2 консоли - один "сервер" , другой "клиент". Я так понимаю БД вам не нужна, ну или возьмите Sqlite для пафоса. Но вообще задание для лабы имхо неоднозначное - можно делать 2 часа, а можно 2 недели...
WCF - это сервис, я не уверен что это надо преподу...
скорее всего банальный сокет
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250078
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так может вы не будете гадать, а у преподавателя спросите, что именно нужно?

Потому что реализовывать руками через сокеты - это приличный гемморой. Который совершенно не нужен, ведь есть вполне себе WCF
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250090
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75
Ты бы сначала уяснил постановку задачи у студента...
А то наделаешь, потом ему разгребать...
Вообще они изучали WCF ?

У меня был случай... Делал так же одному... Очень хорошо сделал... Но потом преподы сами стали спрашивать, а как ты это сделал, а тут как...? Все интересовались...

Не промахнись...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250164
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Потому что реализовывать руками через сокеты - это приличный гемморой.
схера ли?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250171
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75 Курсовой проект должен быть выполнен в архитектуре клиент сервер на языке Си шарп. Соединение между клиентами и сервером должно быть реализовано с использованием протокола TCP/IP. Запуск клиентского и сервернго приложения должен осуществляться без использования интегрированных сред разработки...
Вообще-то тут трехзвенкой и не пахнет.

https://ru.wikipedia.org/wiki/Клиент-сервер Клиент-сервер (англ. Client-server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением.

А вот трехзвенка:

...Многоуровневая архитектура клиент-сервер — разновидность архитектуры клиент-сервер, в которой функция обработки данных вынесена на один или несколько отдельных серверов. Это позволяет разделить функции хранения, обработки и представления данных для более эффективного использования возможностей серверов и клиентов.

Частные случаи многоуровневой архитектуры: Трёхуровневая архитектура

P.S. Лучше пусть препод уточнит, действительно ли имелась ввиду трехзвенка. А то нагородишь огородов.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250212
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

нужно вручную отслеживать границы пакета, не?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250227
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир САGaladriel75
Ты бы сначала уяснил постановку задачи у студента...
А то наделаешь, потом ему разгребать...
Вообще они изучали WCF ?

У меня был случай... Делал так же одному... Очень хорошо сделал... Но потом преподы сами стали спрашивать, а как ты это сделал, а тут как...? Все интересовались...

Не промахнись...
студент понятия не имеет что и как... да т побарабану ему скорее всего :)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250241
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только что пытался все уточнить - бесполезно...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250266
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75netivanGaladriel75,

ну вот WCf вам в руки. Он может хоститься в консоле, может работать по net TCP :)
У вас будет 2 консоли - один "сервер" , другой "клиент". Я так понимаю БД вам не нужна, ну или возьмите Sqlite для пафоса. Но вообще задание для лабы имхо неоднозначное - можно делать 2 часа, а можно 2 недели...
вот эта неоднозначность и бесит порой...


а с чего вы взяли, чот нужан трехзвенка? написано ж клиент-сервер.
Вот и слепите две консоли, одна из них WCF сервис
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250282
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что если за студентов выполнять задания - мир станет хуже.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250308
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМне кажется, что если за студентов выполнять задания - мир станет хуже.
а если студенты сами будут делать все, мир станет лучше?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250311
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhGaladriel75пропущено...

вот эта неоднозначность и бесит порой...


а с чего вы взяли, чот нужан трехзвенка? написано ж клиент-сервер.
Вот и слепите две консоли, одна из них WCF сервис
тоже вариант, только клиент - скорее всего не консоль а винформ...
а как потом от сервака передать клиенту датасет, который вернет СУБД...
непаханное поле для меня...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250326
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75Winnipuhпропущено...
а с чего вы взяли, чот нужан трехзвенка? написано ж клиент-сервер.
Вот и слепите две консоли, одна из них WCF сервис
тоже вариант, только клиент - скорее всего не консоль а винформ...
а как потом от сервака передать клиенту датасет, который вернет СУБД...
непаханное поле для меня...Дак ты сам еще даже не представляешь себе двухзвенку...!?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250364
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75Алексей КМне кажется, что если за студентов выполнять задания - мир станет хуже.
а если студенты сами будут делать все, мир станет лучше?Он будет как минимум не хуже.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250522
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

не занудничайте, помогать людям надо. Только уверез, что если студенту побарабану его завалят вопросами по этой лабе, особенно по WCF)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250530
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

не занудничайте, помогать людям надо. Только уверез, что если студенту побарабану его завалят вопросами по этой лабе, особенно по WCF)
сейчас попытаюсь на сокетах слепить клиента и сервера а вот как передать датасет???
(сериализация??)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250535
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75netivanАлексей К,

не занудничайте, помогать людям надо. Только уверез, что если студенту побарабану его завалят вопросами по этой лабе, особенно по WCF)
сейчас попытаюсь на сокетах слепить клиента и сервера а вот как передать датасет???
(сериализация??)

ага.... на коленке на сокетах датасет передавать

написали же:

WCF
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250539
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhGaladriel75пропущено...

сейчас попытаюсь на сокетах слепить клиента и сервера а вот как передать датасет???
(сериализация??)

ага.... на коленке на сокетах датасет передавать

написали же:

WCF
так он же сервис? или лучше вскопать все же его и не мучить мозг свой?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250544
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ай ладно - покопаю, авось прокатит!
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250551
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

он же технология коммукации :) в МСДН простой пример был. Вам зачем ДатаСет нужен,А? вам нужен контракт данных с результатом обработки уже)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250580
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Galadriel75, сегодня, 14:12 [14267742]
>...тоже вариант, только клиент ...
Преподаватели аккуратно поставили задачу, на лекции ходить надо. У Microsoft в тех. док. подробно расписан процесс создания CalculatorService, но транспорт - HTTP. Так что читай и применяй.

С уважением, Владимир
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250610
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Galadriel75, сегодня, 14:12 [14267742]
>...тоже вариант, только клиент ...
Преподаватели аккуратно поставили задачу, на лекции ходить надо. У Microsoft в тех. док. подробно расписан процесс создания CalculatorService, но транспорт - HTTP. Так что читай и применяй.

С уважением, Владимир
мне на лекции ходить НЕ НАДО - я не себе делаю, а халтурку...
Делать то надо скорее всего через сокет, я бы с радостью сделал как тут советуют, но ниточку уже нашел, теперь тяну и весь клубок распутываю... и второе - и с тем и с тем надо разбираться и сокеты скорее всего ближе к теме... так что один хрен как ваять, абы отдать да чтоб не пудрили мне студенты извилины :)...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250621
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМне кажется, что если за студентов выполнять задания - мир станет хуже.
У нас получается так: делаем за того, кто собирается делать за студента :)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250639
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КМне кажется, что если за студентов выполнять задания - мир станет хуже.
У нас получается так: делаем за того, кто собирается делать за студента :)

Ну дык, российская модель ведения бизнеса: выигрываешь тендер, нанимаешь субподрядчиков... В нашем случае и нанимать не надо :-)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250642
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Galadriel75, сегодня, 16:36 [14269083]
>мне на лекции ходить НЕ НАДО
Извините, не хотел Вас обидеть. Говоря про лекции, имел ввиду не Вас, а того, кому...
Насчет сокетов, будьте осторожнее, если Microsoft, C# и клиент-сервер, то очень может быть - WCF! Это их фундаментальная технология.
В этих условиях легко и два балла заработать.

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250653
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевно транспорт - HTTP.Ну так HTTP тоже поверх TCP/IP работает.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250655
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КМне кажется, что если за студентов выполнять задания - мир станет хуже.
У нас получается так: делаем за того, кто собирается делать за студента :)

и самое забавное то, что ни мы здесь, ни тот, кто делает за, ни тот самый студент - ни кто не в курсе, а что же надо сделать
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250657
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

так можно привязку изменить на netTcp, что рекомендуется для интранет. НО я думаю, что хотят видеть Socket.Read и тд. Я сомневаюсь, что преподы знают WCF.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250661
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, не в курсе и преподаватель. Сам обладает опытом турбопаскаля, а о сишарпе и т.д. знает лишь по книжкам.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250704
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вот же вся лаба решена http://msdn.microsoft.com/en-us/library/bb397809(v=vs.90).aspx
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250735
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор вот это 14267222 так и не прокомментировал. Ну да ладно, какая в принципе разница.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250794
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanда вот же вся лаба решена http://msdn.microsoft.com/en-us/library/bb397809(v=vs.90).aspx

How to: Create a Socket Listener or how to create a Laba for lazy and stupid student
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250831
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhnetivanда вот же вся лаба решена http://msdn.microsoft.com/en-us/library/bb397809(v=vs.90).aspx

How to: Create a Socket Listener or how to create a Laba for lazy and stupid student



It is the simplest ... I need a multithreading Server :)
And I have to implement one...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250837
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75Winnipuhпропущено...


How to: Create a Socket Listener or how to create a Laba for lazy and stupid student



It is the simplest ... I need a multithreading Server :)
And I have to implement one...

Не?
http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.beginaccepttcpclient.aspx

10784492
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250856
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

насчет мультипоточности тут не скажу, не знаю как с сокетами это будет. Но я так понимаю листнер прочитал сообщение, отдал его в пул и дальше слушает.
ЗЫ мля, ну в Wcf это решается 1 атрибутом))
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250872
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Galadriel75, сегодня, 16:36 [14269083]
>мне на лекции ходить НЕ НАДО
Извините, не хотел Вас обидеть. Говоря про лекции, имел ввиду не Вас, а того, кому...
Насчет сокетов, будьте осторожнее, если Microsoft, C# и клиент-сервер, то очень может быть - WCF! Это их фундаментальная технология.
В этих условиях легко и два балла заработать.

С уважением, Владимир.
звонил по скайпу своему другу - он сказал - лучше через сокеты иначе ни одна сатана не поймет "что это такое" :)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250921
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Galadriel75, сегодня, 19:44 [14269965]
>звонил по скайпу своему другу ...

Увы. Как же я отстал от современных вузовских компьютерных технологий...

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250938
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanGaladriel75,

насчет мультипоточности тут не скажу, не знаю как с сокетами это будет. Но я так понимаю листнер прочитал сообщение, отдал его в пул и дальше слушает.
ЗЫ мля, ну в Wcf это решается 1 атрибутом))

зато столько допкода надо создать.
попробывал я тут его. что то как то он очень странно сделан. там контракт, тут создай, сдесь напиши . ему ещё и IIS подавай.
и что то не быстро. согласен, не повар в этих делах, но как то не впечатлило.

а в сокетах плюнул асинхронно в метод и слушай себе дальше. быстро , шустро , на ура.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250949
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)

IIS нужен обязательно, только если используется интеграция с ASP .NET, если не путаю. А так: http://msdn.microsoft.com/ru-ru/library/ms730158.aspx
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250998
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouchbeg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)


не знаю , как насчёт короче, но даже базовый WCF сервис, который описан на мсдн , состоящий из 4 методов, генерит туеву хучу автокода.
хотя ,да лапками, по идее, меньше писать.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251016
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erLelouchbeg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)


не знаю , как насчёт короче, но даже базовый WCF сервис, который описан на мсдн , состоящий из 4 методов, генерит туеву хучу автокода.
хотя ,да лапками, по идее, меньше писать.
почти сделал через сокеты
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251078
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beg-in-erLelouchbeg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)


не знаю , как насчёт короче, но даже базовый WCF сервис, который описан на мсдн , состоящий из 4 методов, генерит туеву хучу автокода.
хотя ,да лапками, по идее, меньше писать.

Hello World для WCF будет размером:
Описание контракта службы: 5 строчек
Реализация службы (консоль): 5 строчек
Реализация клиента (консоль): 5 строчек
Итого: 15 строчек
Получается полноценная система с возможностью обслуживания одновременно нескольких клиентов.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251090
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVИтого: 15 строчек
мы не ищем лёгких путей
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251151
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилSergey TSVИтого: 15 строчек
мы не ищем лёгких путейПуть через сокеты легче?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251240
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простейшая реализация на WCF

Проект ContractWCF
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using System;
using System.Data;
using System.ServiceModel;

namespace ContractWCF
{
  [ServiceContract]
  public interface IMyContract
  {
    [OperationContract]
    DataTable GetTable();
  }
}



Проект ServerWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
using ContractWCF;
using System;
using System.Data;
using System.Data.OleDb;
using System.ServiceModel;

namespace ServerWcf
{
  public class MyService : IMyContract
  {
    public DataTable GetTable()
    {
      OleDbConnection connection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb;Persist Security Info=False");
      OleDbCommand command = new OleDbCommand("select * from People", connection);
      OleDbDataAdapter adapter = new OleDbDataAdapter(command);
      DataTable table = new DataTable("People");
      adapter.Fill(table);
      return table;
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      ServiceHost host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8523"));
      host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");
      host.Open();
      Console.WriteLine("Для завершения нажмите enter.");
      Console.ReadLine();
      host.Close();
    }
  }
}



Проект ClientWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
using ContractWCF;
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Data;

namespace ClientWcf
{
  public class MyServiceClient : ClientBase<IMyContract>, IMyContract
  {
    public MyServiceClient(Binding binding, EndpointAddress endpointAddress) : base(binding, endpointAddress) { }

    public DataTable GetTable()
    {
      return Channel.GetTable();
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      using (MyServiceClient client = new MyServiceClient(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8523")))
      {
        DataTable table = client.GetTable();
        foreach (DataRow row in table.Rows)
          Console.WriteLine(row["surname"]);
      }

      Console.ReadKey();
    }
  }
}
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251297
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVHello World для WCF будет размером:
....
Итого: 15 строчек
Получается полноценная система с возможностью обслуживания одновременно нескольких клиентов.

ну я как то писал дубовый модуль содержащий только TCP+Serialization.

после этого , им можно было пользоваться как и с WPF. оно делало почти тоже самое. только как то понятнее и нагляднее.
в клиенте видел кто отправляет, в сервере видел как принимает. никаких посредников, только хардкор )))
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251619
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>beg-in-er,сегодня, 10:12 [14271638]
>...оно делало почти тоже самое. только как то понятнее и нагляднее.

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

Итак, WCF делает удаленный сервис похожим на локальный класс.
Локально имеем интерфейс (операционный (функциональный) контракт) и локально же строим прокси - класс, реализующий интерфейс.
Локально показываем как работать с методами сервиса
public DataTable GetTable() { return Channel.GetTable(); }
и работаем с прокси, как с обычным классом.

Пожалуйста, если возможно - код в студию.

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251625
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за неточность, спасибо конечно - Sergey TS, право же, он это заслужил.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251709
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVПростейшая реализация на WCF

Проект ContractWCF
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using System;
using System.Data;
using System.ServiceModel;

namespace ContractWCF
{
  [ServiceContract]
  public interface IMyContract
  {
    [OperationContract]
    DataTable GetTable();
  }
}



Проект ServerWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
using ContractWCF;
using System;
using System.Data;
using System.Data.OleDb;
using System.ServiceModel;

namespace ServerWcf
{
  public class MyService : IMyContract
  {
    public DataTable GetTable()
    {
      OleDbConnection connection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb;Persist Security Info=False");
      OleDbCommand command = new OleDbCommand("select * from People", connection);
      OleDbDataAdapter adapter = new OleDbDataAdapter(command);
      DataTable table = new DataTable("People");
      adapter.Fill(table);
      return table;
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      ServiceHost host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8523"));
      host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");
      host.Open();
      Console.WriteLine("Для завершения нажмите enter.");
      Console.ReadLine();
      host.Close();
    }
  }
}



Проект ClientWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
using ContractWCF;
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Data;

namespace ClientWcf
{
  public class MyServiceClient : ClientBase<IMyContract>, IMyContract
  {
    public MyServiceClient(Binding binding, EndpointAddress endpointAddress) : base(binding, endpointAddress) { }

    public DataTable GetTable()
    {
      return Channel.GetTable();
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      using (MyServiceClient client = new MyServiceClient(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8523")))
      {
        DataTable table = client.GetTable();
        foreach (DataRow row in table.Rows)
          Console.WriteLine(row["surname"]);
      }

      Console.ReadKey();
    }
  }
}



Спасибо большущее!!! Сейчас буду в теме разбираться... столько всего.........
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252115
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVПростейшая реализация на WCF

Проект ContractWCF
Код: c#
1.
2.
3.
4.
5.
6.
using System;
using System.Data;
using System.ServiceModel;

namespace ContractWCF
[...]



Sergey TSV, а вы не могли бы солюшен зипованный приложить?
Спасибо.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252324
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
M234Sergey TSV, а вы не могли бы солюшен зипованный приложить?
Спасибо.

Пожалуйста
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252525
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Sergey TSV, вчера, 19:46 [14275683]

У меня будет большая просьба к Вам.
Понимаю, что лучшее враг хорошего, но... методы удаленного сервиса обычно имеют конечное, далеко не нулевое, время исполнения. При задержке исполнения >4 сек пользователю становиться не комфортно работать - возникает ощущение чего то сломалось. Поэтому для обкатки этой ситуации предлагаю ввести в код метода сервиса задержку >5 сек, а в прокси класс - и асинхронную реализацию метода. И показать, что в этом случае UI процесс продолжает работу.
Сие конечно - следующий этап, но думаю - надо, и надеюсь. что дополнительный код не сильно осмыслительно исказит Ваше решение.

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252883
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

а зачем код, при генерации клиента укажите создать асинхронные методы...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252989
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Lelouch, вчера, 21:54 [14277989]
>а зачем код, при генерации клиента укажите создать асинхронные методы...

Извините, не понял. Если можно, поподробнее пожалуйста.
Код клиентского проекта приведен. Что и в каких свойствах проекта VS 2012 клиентского приложения надо задавать для автоматического формирования в прокси классе асинхронных методов?

С уважением, Владимир
...
Рейтинг: 0 / 0
C# трехзвенка
    #38253062
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
проект клиента -> Service References -> Configure Service Reference...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38253385
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Lelouch, сегодня, 11:23 [14278662]
>проект клиента -> Service References -> Configure Service Reference...
Извините, ещё один вопрос.Тема для меня больная.
Решение и его проекты заданы. В проекте клиента хочу определить методы прокси. Что имею - файл прилагаю. Что должно быть задано в полях диалоговых форм?

С уважением, Владимир
...
Рейтинг: 0 / 0
C# трехзвенка
    #38253392
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

Не увидел код Sergey TSV, он не использовал генерацию прокси )

Сделайте сервис по этому гайду: http://msdn.microsoft.com/ru-ru/library/bb386386.aspx
...
Рейтинг: 0 / 0
C# трехзвенка
    #38253781
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch правильно подсказал решение.

Для того чтобы служба могла дать информацию о своих метаданных, необходимо добавить в нее конечную точку MEX, т.е. немного изменить код службы.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
using System.ServiceModel.Description;
…
      ServiceHost host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8523"));
      host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");

      // Добавление точки MEX
      ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
      host.Description.Behaviors.Add(behavior);
      host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
 
      host.Open();



После этого запустить службу, сформировать автоматически прокси-класс с асинхронными методами (например, создать асинхронные операции для VS2012), посмотреть сформированные методы и продублировать их в вышеприведенном примере (я для этого наследую интерфейс контракта службы), т. е. методы
Код: c#
1.
2.
IAsyncResult BeginGetTable(AsyncCallback callback, object asyncState);
DataTable EndGetTable(IAsyncResult result);



Это, естественно, только один из множества возможных методов реализации асинхронных операций.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254051
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Sergey TSV, Lelouch
СПА-СИ-БО!!!

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254113
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVLelouch правильно подсказал решение.

Для того чтобы служба могла дать информацию о своих метаданных, необходимо добавить в нее конечную точку MEX, т.е. немного изменить код службы.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
using System.ServiceModel.Description;
…
      ServiceHost host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8523"));
      host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");

      // Добавление точки MEX
      ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
      host.Description.Behaviors.Add(behavior);
      host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
 
      host.Open();



После этого запустить службу, сформировать автоматически прокси-класс с асинхронными методами (например, создать асинхронные операции для VS2012), посмотреть сформированные методы и продублировать их в вышеприведенном примере (я для этого наследую интерфейс контракта службы), т. е. методы
Код: c#
1.
2.
IAsyncResult BeginGetTable(AsyncCallback callback, object asyncState);
DataTable EndGetTable(IAsyncResult result);



Это, естественно, только один из множества возможных методов реализации асинхронных операций.

Гораздо проще и внятней c task&await
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254116
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

Generate task-based operations недоступно для FW4.0 к сожалению.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254134
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchSeVa,

Generate task-based operations недоступно для FW4.0 к сожалению.

Генерировать прокси для своих сервисов - самый дубовый вариант. Это можно спокойно делать с помощью ChannelFactory .
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254135
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Async Targeting Pack для await в net 4.0
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254137
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

а что мешает сгенерировать прокси и использовать ChannelFactory?
Как такое применение ChannelFactory позволит легко создать асинхронные вызовы (На основе Task или Async, не важно)?

P.S. Самый дубовый вариант это писать руками то, что за тебя может написать среда.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254143
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchSeVa,

а что мешает сгенерировать прокси и использовать ChannelFactory?
Как такое применение ChannelFactory позволит легко создать асинхронные вызовы (На основе Task или Async, не важно)?

P.S. Самый дубовый вариант это писать руками то, что за тебя может написать среда.

1.Среда генерит только никому не нужный мусор
2. При изменениях нужно вручную обновлять reference, когда их кол-во переваливает за десяток, такое пустопорожнее занятие становится весьма утомительным
3. ChannelFactory кэширует прокси и можно добиться увеличения производительности

и тд
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254145
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще не зло замечу, работать с инструментом и не знать всех возможностей - это уровень MCУ
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254148
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

1) Правильно, только хардкод, только руками.
2) Десяток? Зачем? что мешает объеденить их на сервере в 1 контракт? Как это сделано например вот тут: http://microsoftnlayerapp.codeplex.com/

авторИ еще не зло замечу, работать с инструментом и не знать всех возможностей - это уровень MCУ
3) При генерации прокси также создается и ChannelFactory если что.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254149
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

и вы не ответили на вопрос:

авторКак такое применение ChannelFactory позволит легко создать асинхронные вызовы (На основе Task или Async, не важно)?

SeVaAsync Targeting Pack для await в net 4.0
И что, а Taskи руками будете описывать?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254154
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

2) Поправка: не создается, но может быть использована вместе с созданым на клиенте интерфейсом.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254155
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2)3)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254166
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchSeVa,

1) Правильно, только хардкод, только руками.
2) Десяток? Зачем? что мешает объеденить их на сервере в 1 контракт? Как это сделано например вот тут: http://microsoftnlayerapp.codeplex.com/

авторИ еще не зло замечу, работать с инструментом и не знать всех возможностей - это уровень MCУ
3) При генерации прокси также создается и ChannelFactory если что.

1. Ты когда нибудь смотрел, что генериться в результате? Не мешало бы посмотреть, идет тупое дублирование кода и больше ничего.
2. Это на уровне советов mcy устраивать из всего одну большую помойку. Были и есть проекты, где этих сервисов сотни. Есть достаточно большая часть, которая используется совершенно в разных проектах одновременно. Плюс подобные сервисы создаются с помощью кодогенераторов, а потом билдятся на автомате
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254167
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchSeVa,

и вы не ответили на вопрос:

авторКак такое применение ChannelFactory позволит легко создать асинхронные вызовы (На основе Task или Async, не важно)?

SeVaAsync Targeting Pack для await в net 4.0
И что, а Taskи руками будете описывать?

Контракт должен быть с Task/Task<T>. Об этом можно прочитать в разделе what's new net 4.5.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254177
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

1) Смотрел естественно. Там генерится нормальный интрефейс с асинхронными методами, который можно использовать в ChannelFactory.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254178
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

При чем тут 4.5, я про 4.0 говорил. Вопросов про 4.5 изначально и не было. Та ссылка, что вы дали, показывает, как в 4.0 сделать доступным async/await, есть ли возможность в 4.0 использовать в контракте для ChannelFactory Task?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254721
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>SeVa, вчера, 10:00 [14283368]
>Гораздо проще и внятней c task&await

Вы имеете ввиду нечто подобное ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
namespace ClientWcf {
   public class MyServiceClient : ClientBase<IMyContract>, IMyContract {
      public MyServiceClient(Binding binding, EndpointAddress endpointAddress) : base(binding, endpointAddress) { }
      public DataTable GetTable() {
         return Channel.GetTable();
      }
   }

  class Program {
     MyServiceClient client;
     
     public Program() {
        client = new MyServiceClient(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8523"));
     } 
     async Task<DataTable> tGetTable() {
         this.Info=Info;
         Task<DataTable> tdt = new Task<DataTable>(mtd_Запрос);
         tdt.Start();
         await tdt;
         return tdt.Result;
      }
    DataTable mtd_Запрос(){ return client.GetTable();}

    static void Main(string[] args) {
       Program oPrg = new Program();
       Task<byte[]> tdt = oPrg.tGetTable();
       //tdt.Wait();
       while (!xtb.IsCompleted ) {
          //-- Делаем что-нибудь видимое, двигаем ProgressBar к примеру
          . . .
          Thread.Sleep(500);
       }

       DataTable table = tdt.Result;
       foreach (DataRow row in table.Rows)
       Console.WriteLine(row["surname"]);
    }

      Console.ReadKey();
    }
  }
}
но этот вариант не работает в Moder UI (Win 8).

С уважением, Владимир
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254728
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ВМоисеев,сегодня, 08:48 [14285739]
Извините, ошибка, надо так:
. . .
while (!tdt.IsCompleted ) {
//-- Делаем что-нибудь видимое, двигаем ProgressBar к примеру
. . .
Thread.Sleep(500);
}
...
Рейтинг: 0 / 0
C# трехзвенка
    #38254742
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouchесть ли возможность в 4.0 использовать в контракте для ChannelFactory Task?Да, если самому написать генератор. Регуляркой распарсить результат svcutil.exe. Сгенерить нормального клиента с тасками, автозакрытием соединения и прочим. Обернуть всё это в T4 Text Template для удобства.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255791
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Коллеги, требуется помощь.
Крайне нужен пример кода работы с контрактами сервиса из приложения Modern UI (Win 8) с NetTcpBinding.

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255846
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевВМоисеев
Коллеги, требуется помощь.
Крайне нужен пример кода работы с контрактами сервиса из приложения Modern UI (Win 8) с NetTcpBinding.

С уважением, Владимир.


походу технологии приведут к тому, что современное программирование опять станет доступно только избраным, как было тогда, когда все начиналось - перфоленты, перфокарты, персоналок не было... Потом появились просто языки программирования, которые легко было изучить и программировать... Сейчас же сплошные технологии, платформы, иерархии классов, которые надо без конца изучать и изучать...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255876
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75походу технологии приведут к тому, что современное программирование опять станет доступно только избраным, как было тогда, когда все начиналось - перфоленты, перфокарты, персоналок не было... Потом появились просто языки программирования, которые легко было изучить и программировать... Сейчас же сплошные технологии, платформы, иерархии классов, которые надо без конца изучать и изучать...

всё придёт к тому , что будет создан универсальный....язык, не неязык. эсперанто в программировании тоже не прокатит компилятор. который будет жрать всё подрят и переваривать в то что нужно
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255951
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erGaladriel75походу технологии приведут к тому, что современное программирование опять станет доступно только избраным, как было тогда, когда все начиналось - перфоленты, перфокарты, персоналок не было... Потом появились просто языки программирования, которые легко было изучить и программировать... Сейчас же сплошные технологии, платформы, иерархии классов, которые надо без конца изучать и изучать...

всё придёт к тому , что будет создан универсальный....язык, не неязык. эсперанто в программировании тоже не прокатит компилятор. который будет жрать всё подрят и переваривать в то что нужно
ну пожалуй было бы очень неплохо, так как мне нравятся многие конструкции в Delphi в C++ и в C#!
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255952
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в самом деле почему до сих пор не придумали примерно того же что и для DHTML - там же по сути можно на одной странице размещать до кучи разных скриптов....
а вот если бы так можно было бы и в ЯВУ, только нужно будет утрясти все вопросы с пространством имен,и идеологией синтаксиса... вот например

<cpp>
int i;
</cpp>
<Delphi>
for i:= 0 to 300 do
begin
<asm>
Mov Eax,i
Shl Eax,4
Mov Ecx,Eax
Lea Di,Data
....
</asm>
end
</Delphi>
...

Не... как то не нравится мне такое - утопически и тупиково смотрится - идеологии нельзя объединить...





</Delphi>
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255956
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КLelouchесть ли возможность в 4.0 использовать в контракте для ChannelFactory Task?Да, если самому написать генератор. Регуляркой распарсить результат svcutil.exe. Сгенерить нормального клиента с тасками, автозакрытием соединения и прочим. Обернуть всё это в T4 Text Template для удобства.

Все придумано до нас. TaskWsdlImportExtension . исходники
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255960
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>SeVa, вчера, 10:00 [14283368]
>Гораздо проще и внятней c task&await

Вы имеете ввиду нечто подобное ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
namespace ClientWcf {
   public class MyServiceClient : ClientBase<IMyContract>, IMyContract {
      public MyServiceClient(Binding binding, EndpointAddress endpointAddress) : base(binding, endpointAddress) { }
      public DataTable GetTable() {
         return Channel.GetTable();
      }
   }

  class Program {
     MyServiceClient client;
     
     public Program() {
        client = new MyServiceClient(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8523"));
     } 
     async Task<DataTable> tGetTable() {
         this.Info=Info;
         Task<DataTable> tdt = new Task<DataTable>(mtd_Запрос);
         tdt.Start();
         await tdt;
         return tdt.Result;
      }
    DataTable mtd_Запрос(){ return client.GetTable();}

    static void Main(string[] args) {
       Program oPrg = new Program();
       Task<byte[]> tdt = oPrg.tGetTable();
       //tdt.Wait();
       while (!xtb.IsCompleted ) {
          //-- Делаем что-нибудь видимое, двигаем ProgressBar к примеру
          . . .
          Thread.Sleep(500);
       }

       DataTable table = tdt.Result;
       foreach (DataRow row in table.Rows)
       Console.WriteLine(row["surname"]);
    }

      Console.ReadKey();
    }
  }
}
но этот вариант не работает в Moder UI (Win 8).

С уважением, Владимир

Все проще
Код: c#
1.
2.
3.
4.
5.
 
       var table = await oPrg.tGetTable();

       foreach (DataRow row in table.Rows)
       Console.WriteLine(row["surname"]);
...
Рейтинг: 0 / 0
C# трехзвенка
    #38255972
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевВМоисеев
Коллеги, требуется помощь.
Крайне нужен пример кода работы с контрактами сервиса из приложения Modern UI (Win 8) с NetTcpBinding.

С уважением, Владимир.

C win8 не работал сам, но из того, что бегло читал необходимо:

1. Создать сервис как обычно, затем опубликовать его на удаленный хост(в win8 eго запустить не получится)

2. Генерить прокси с опцией Task based(это должно быть по умолчанию)
3. winrt полностью асинхронен и все вызовы тоже, посему если сервис реализует котракт

[ServiceContract]
public interface ItestService
{
[OperationContract]
List<string> GetData();
}
то в клиенте GetData будет с суффиксом Async

var client = new TestClient();
var servicedata = client.GetDataAsync().Result;
...
Рейтинг: 0 / 0
C# трехзвенка
    #38256003
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaАлексей Кпропущено...
Да, если самому написать генератор. Регуляркой распарсить результат svcutil.exe. Сгенерить нормального клиента с тасками, автозакрытием соединения и прочим. Обернуть всё это в T4 Text Template для удобства.

Все придумано до нас. TaskWsdlImportExtension . исходники Видел, не понравилось.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38256020
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaХотя, может и есть смысл сделать по-научному. :-)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38256093
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
off: очередные неумелые наезды на orm, приглашаются все :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
C# трехзвенка
    #38676775
arCHi_1887
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Galadriel75,

можно выложить код того, что получилось? сервер-клиент и сериализация/десериализация
...
Рейтинг: 0 / 0
C# трехзвенка
    #38690863
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arCHi_1887, можно. я сегодня вечером с работы приду, поищу исходники, выложу...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38710731
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75arCHi_1887, можно. я сегодня вечером с работы приду, поищу исходники, выложу...
все еще не могу тот исходник найти... постараюсь найти и выложить
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
C# трехзвенка
    #39265442
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Строю 3-х звенку на TCP/IP протоколе. Сервер слушает определённый порт от клиентов и отправляет ответы, ну всё как обычно. Но у меня возникла проблема, как серверу посылать команды клиенту по одному порту. Ведь клиент только отправляет команды, а не слушает порт. В принципе понятно, что можно после отправки любой команды включать Receive, но если клиент снова отправляет запрос на сервер, как прервать EndReceive(), что он не перехватил ответ от сервер на запрос.

Посоветуй что-нибудь, или я пошёл не по правильному пути. Раньше у меня было на стороне клиента Accept по другому порту, но я думаю это не правильно. Получается на стороне клиента сервер.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39265444
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За ранее спасибо.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39265449
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_leaСтрою 3-х звенку на TCP/IP протоколе.Евгений_leaПосоветуй что-нибудь, или я пошёл не по правильному пути.Вероятно, что лучше было бы использовать что-то более высокоуровневое, например WCF.
Евгений_leaНо у меня возникла проблема, как серверу посылать команды клиенту по одному порту.Задача сомнительной нужности. Но если действительно этого хочется, то можно перейти на WCF и использовать его возможности .
...
Рейтинг: 0 / 0
C# трехзвенка
    #39265460
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня WinForms. Документооборот по локальной сети предприятия. Простой сервер с асинхронными командами.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39265473
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_leaУ меня WinForms.Это не имеет никакого значения.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39265498
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К возможности .
Для меня это ново, надо изучать. К тому же надо весь сервер переписывать с клиентом, очень много, да документооборот в работе. Все наверное будет сложнее переделать.
Спасибо за Ваш вариант.
Пока буду искать более подходящий выход или использовать два порта, если нет другого выхода.

Спасибо.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39265521
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_leaСтрою 3-х звенку на TCP/IP протоколе. .
А что не на Ethernet или IEEE 802.11?
Переходи на wcf!
...
Рейтинг: 0 / 0
C# трехзвенка
    #39265539
Евгений_lea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВ,

Спасибо, буду пытаться.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39266222
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_leaиспользовать два портаЭто вообще не проблема. Если в твоей ситуации так проще, то это решение вполне имеет право на жизнь.
Евгений_leaесли нет другого выхода.Можно, традиционно, устроить опрос сервера с клиента по таймеру.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39266684
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ЕвгенийВEthernet или IEEE 802.11
Издеваетесь над новичком?


Я так думаю, что я бы решал эту задачу

Евгений_leaРаньше у меня было на стороне клиента Accept по другому порту, но я думаю это не правильно.
По другому - не правильно. Правильно - по тому же.
Что мешает Вам сделать всех клиентов серверами?
Наверное мне бы мешало, что клиенты могут не работать в то время, когда сервер посылает им запрос.

Однако в WCF есть способ обмена через очереди.

Я сам их не использовал, проcто нужды не было, и ни чем практически помочь не могу, но в Вашей проблеме это может быть решением.

https://msdn.microsoft.com/ru-ru/library/ms789048(v=vs.110).aspx
...
Рейтинг: 0 / 0
C# трехзвенка
    #39266723
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Что мешает Вам сделать всех клиентов серверами?
обычно NAT мешает.
...
Рейтинг: 0 / 0
C# трехзвенка
    #39266775
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ИзопропилCat2Что мешает Вам сделать всех клиентов серверами?
обычно NAT мешает.

Не все работают через Интернет
...
Рейтинг: 0 / 0
125 сообщений из 125, показаны все 5 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# трехзвенка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]