Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совет по реализации взаимодествия 
:(
    Опции темы
LittleCat
Дата 2.8.2012, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.4.2012

Репутация: нет
Всего: нет



Доброго дня. Подскажите плииз, может кто сталкивался с такой задачей. Пишу проект на Шарпе. В проекте представлены несколько сервисов системных рабочих и сервис, который является как бы фасадом для остальных, обеспечивая взаимодействие с клиентом Сильверлайта или любым другим. Рабочий сервис является клиентом OPC к указанному ему серверу OPC и одновременно архивирует данные в базу. Реализован как отдельный класс КлиентОПС( например). Рабочих сервисов несколько. Пока 3.  Необходимо для взаимодействия с фасадным сервисом прикрутит к рабочему сервису реализацию WCF c контрактом pipeDuplex. Сделал библиотеку WCF - работает. Но как связать два объекта класса обьектКлиентОПС и обьектWCFбиблиотека в классе рабочего сервиса не могу придумать. Подписал WCF как IObserver к обьектКлиентОПС но это связь односторонняя. ОбьектWCFбиблиотека получает данные извне, которые обрабатываются в обьектКлиентОПС и тот должен начать генерировать данные для callback вызова в объекте обьектWCFбиблиотека на основе полученных данных. Писать один класс на все - повешусь.
Как обеспечить взаимодействие объектов разных классов, которые не должны знать о существовании друг-друга?
Прошу прощения за возможно, детский вопрос, но я недавно начал работать Шарп.
PM MAIL   Вверх
LittleCat
Дата 5.8.2012, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.4.2012

Репутация: нет
Всего: нет



Может никто не делал а может я сумбурно описал ситуацию. Уточню тогда - как и куда копать, чтобы реализовать взаимодействие с сервисом WCF, реализованном в виде библиотеки в службе винды? Как передать ему параметры и как получить от него каике либо параметры не прибегая к реализации клиент-сервера. Я, например, хочу вернуть в лог сервиса ошибки WCF сервиса и передать ему какие либо параметры для возврата клиенту, который в данный момент подключен к WCF. 
  
PM MAIL   Вверх
mrbrooks
Дата 6.8.2012, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Цитата(LittleCat @  5.8.2012,  22:49 Найти цитируемый пост)
Как передать ему параметры и как получить от него каике либо параметры не прибегая к реализации клиент-сервера.

ну как бэ клиент- сервер кошерный подход в wcf. городить какой то свой маршаллинг не православно. тем не менее попробуй некий разделяемый ресурс. возможно это выход.
PM MAIL   Вверх
LittleCat
Дата 6.8.2012, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.4.2012

Репутация: нет
Всего: нет



Код

using(ServiceHost host= new ServiceHost(typeof(FFFFF))
{
   host.Open();
}


Ну так и что - мне запускать сервис WCF из сервиса винды а потом и создавать клиента в сервисе винды для доступа к сервису WCF? К тому-же точка доступа net-pipe уже занята дуплексом для общения с внешним сервисом винды. Разделяяемый ресурс? ну так тут можно и через очередь сообщений подвязаться к службе. Может есть способ кошернее чем обвешивать WCF интерфейсами как араба динамитом?



PM MAIL   Вверх
mrbrooks
Дата 6.8.2012, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



wcf является христианским продуктом под .net для распределенных приложений. оно понятно - порою несколько избыточно и тяжеловесно - зато гламурно. просто если менее монстроообразное - можно .NET Remoting, но это уже старье. я бы выбрал, то что проще и удобней, нежели костылеобразное и фееричное.
PM MAIL   Вверх
LittleCat
Дата 8.8.2012, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.4.2012

Репутация: нет
Всего: нет



Гм. Дас трабл в том, что связь должен инициализироватьклиент  Wcf в данном случае и поддерживать. Однажды отправив запрос в обьект при подключении клиента к нему мне нужен вариант, чтобы сам клиент генерировал данные и присылал а тут получается необходимо выполнят ьпостоянные запросы от клиента. Но как информировать клиента  о смене протокола обмена или точнее сказать о необходимости смена набора данных от клиента к сервису.



PM MAIL   Вверх
erm0l0v
Дата 9.8.2012, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: 1
Всего: 1



Wcf есть возможность реализации callback тогда не только клиент будет обращаться в сервису но сервис сможет обратиться к клиенту. Вам ведь это нужно? И к тому же WCF это все лишь общий подход реализующий взаимодействие между некоторым клиентом и сервером, то есть что на клиенте что на сервере будет один общий интерфейс, а уже как будут передаваться данные между клиентом и сервером зависит только от вашей фантазии: по сети, через разделяемую память, да хоть по голубиной почте, нужно только найти Голубь SDK)))
PM MAIL   Вверх
LittleCat
Дата 9.8.2012, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.4.2012

Репутация: нет
Всего: нет



Господа. Прошу прощения сразу за мою неосведомленность. Опыта мало еще в этом вопросе. Но мне не удается обьяснить точно что я хочу. Я знаю что есть колбэк и использую его. Описываю ситуацию.
Есть сервис винды. Написан мной. Работает как OPC( берет данные из определнного источника)  клиент и складирует данные в базу. Сам работает прекрасно. Теперь есть необходимость отобразить эти данные "в режиме реального времени" на клиентах. Ок. для этого используем TCP и дуплекс( в данном конкретном используется дуплекс канальный, так как клиентом является другой сервис - фасад). Клиент выполняет запрос о том, какие данные ему нужны. Клиенту отображается лишь допустим 2 элемента массива данных, которые сервис архивирует в базу. Итак имеем - нужно отображать 2 элемента массива  для клиента. Ок. Прислали от клиента параметр выбора. Сформировали ( должны сформировать ответ от сервиса и выкинуть через WCF обратно клиенту. ВОт тут и жопа. Напрямую передать от WCF  к сервису винды данные и соответственно получит я не могу( не умею). А использовать канал связи клиент-сервер муторно. Учитывая что это только часть, а сервисов работает на машине уже 3 штуки.

Код

// window service class   
 public partial class SyncSiemensService : ServiceBase
    {
        private OpcServiceClass opcServer = new OpcServiceClass();
        
        public SyncSiemensService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
                  // OPC client- database client object
                  opсServer.Start();

                 // WCF interface for external communication 
                 // with this windows service
                  using (ServiceHost host = new ServiceHost(typeof(DuplexPipeWcfService)))
                             {
                                 host.Open();
                              }
        }
}


собственно я так понимаю что после поднятия интерфейса в OnStart вы предлагаете связывать opcServer обьект с сервисом WCF дуплексом. вот и вопрос - есть ли способ проще.
Ну или посоветуйте господа другую концепцию. Сижу уже 3 день -  не могу придумать нифига и в нете не нашел пока.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1124 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.