Найдено результатов: 12

Какой самый простой способ добавить сжатие к WCF в Silverlight?

У меня есть приложение silverlight 2 beta 2, которое обращается к веб-службе WCF. Из-за этого в настоящее время он может использовать только привязку basicHttp. Веб-сервис вернет довольно большие объемы данных XML. Это кажется довольно расточительным с точки зрения использования полосы пропускания, поскольку ответ, если его сжать, будет меньше в 5 раз (на самом деле я вставил ответ в txt-файл и сжал его.).

Запрос действительно имеет "Accept-Encoding: gzip, deflate" - есть ли какой-либо способ получить WCF service gzip (или иным образом сжать) ответ?

Я действительно нашел эту ссылку , но она определенно кажется немного сложной для функциональности, которая должна быть обработана out-of-the-box IMHO.

OK-сначала я отметил решение, используя System.IO.Compression в качестве ответа, поскольку я никогда не мог "seem" заставить работать динамическое сжатие IIS7. Ну, как это получается:

  1. Динамическое сжатие на IIS7 работало все время. Просто плагин Nikhil Web Developer Helper для IE не показал, что он работает. Я предполагаю, что поскольку SL передает вызов веб-службы браузеру, то браузер обрабатывает его "under the covers", и инструмент Nikhil никогда не видит сжатый ответ. Я смог подтвердить это с помощью Fiddler, который отслеживает трафик, внешний по отношению к браузерному приложению. В fiddler ответ был, по сути, gzip сжатым!!

  2. Другая проблема с решением System.IO.Compression заключается в том, что System.IO.Compression не существует в Silverlight CLR.

Таким образом, с моей точки зрения, EASIEST способ включить сжатие WCF в Silverlight-это включить динамическое сжатие в IIS7 и вообще не писать код.

wcf   silverlight   compression   gzip    

1250   4   16:22, 28th August, 2020


Возвращение DataTables в WCF/.NET

У меня есть сервис WCF, из которого я хочу вернуть DataTable. Я знаю, что это часто очень обсуждаемая тема, насколько возвращение DataTables является хорошей практикой. Давайте на минуту отложим это в сторону.

Когда я создаю DataTable с нуля, как показано ниже, нет никаких проблем вообще. Таблица создается, заполняется и возвращается клиенту, и все хорошо:

[DataContract]
public DataTable GetTbl()
{
    DataTable tbl = new DataTable("testTbl");
    for(int i=0;i<100;i++)
    {
        tbl.Columns.Add(i);
        tbl.Rows.Add(new string[]{"testValue"});
    }
    return tbl;
}

Однако, как только я выхожу и нажимаю на базу данных для создания таблицы, как показано ниже, я получаю CommunicationException "The underlying connection was closed: The connection was closed unexpectedly."

[DataContract]
public DataTable GetTbl()
{
    DataTable tbl = new DataTable("testTbl");
    //Populate table with SQL query

    return tbl;
}

Таблица заполняется правильно на стороне сервера. Он значительно меньше, чем тестовая таблица, которую я прокрутил и вернул, а запрос маленький и быстрый - здесь нет проблем с таймаутами или большой передачей данных. Используются те же самые точные функции и DataContracts/ServiceContracts/BehaviorContracts.

Почему способ заполнения таблицы имеет какое-либо отношение к успешному возвращению таблицы?

c#   .net   wcf   web-services   datatable    

542   8   13:59, 13th August, 2020


Каков наилучший способ аутентификации через WCF?

Каков наилучший способ реализации аутентификации через WCF?

Я бы предпочел не использовать WS-*, поскольку он должен быть независимым от транспорта.

Должен ли я "свернуть свой собственный"? Есть ли какие-либо рекомендации для этого (articles/blog сообщений)?
Или есть какой-то способ (и должен ли я) использовать встроенные поставщики членства и профилей ASP.NET на стороне сервера?

.net   asp.net   wcf   authentication   membership    

445   5   02:06, 9th August, 2020


Я хотел бы получить несколько советов по отладке исключений веб-службы WCF

Я создал службу WCF, и когда я просматриваю конечную точку, я получаю следующую ошибку:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <s:Fault>
      <faultcode 
            xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none">
            a:ActionNotSupported
      </faultcode> 
      <faultstring xml:lang="en-GB">
            The message with Action '' cannot be processed at the receiver,
            due to a ContractFilter mismatch at the EndpointDispatcher. 
            This may be because of either a contract mismatch (mismatched
            Actions between sender and receiver) or a binding/security
            mismatch between the sender and the receiver. Check that sender
            and receiver have the same contract and the same binding
            (including security requirements, e.g. Message, Transport, None).
      </faultstring> 
    </s:Fault>
  </s:Body>
</s:Envelope>

Я исправил проблему, но не получил удовольствия от опыта! Есть ли у кого-нибудь советы или инструменты для отладки подобных проблем?

.net   wcf   web-services    

525   1   16:13, 25th August, 2020


Загрузка раздела конфигурации System.ServiceModel с помощью ConfigurationManager

Используя C# .NET 3.5 и WCF, я пытаюсь записать некоторые конфигурации WCF в клиентском приложении (имя сервера, к которому подключается клиент).

Очевидный способ-использовать ConfigurationManager для загрузки раздела конфигурации и записи необходимых мне данных.

var serviceModelSection = ConfigurationManager.GetSection("system.serviceModel");

Кажется, что всегда возвращается null.

var serviceModelSection = ConfigurationManager.GetSection("appSettings");

Работать отлично.

Раздел конфигурации присутствует в App.config, но по какой-то причине ConfigurationManager отказывается загружать раздел system.ServiceModel .

Я хочу избежать ручной загрузки файла xxx.exe.config и использования XPath, но если мне придется прибегнуть к этому, я сделаю это. Просто кажется, что это немного халтура.

Есть какие-нибудь предложения?

c#   .net   xml   wcf   configurationmanager    

526   5   15:48, 14th August, 2020


WCF push к клиенту через брандмауэр?

Смотрите также, Как информирует сервер WCF клиент WCF об изменениях? (Лучше решение тогда простой опрос, например Комент или длинный опрос)

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

Требования:

  • WCF
  • Клиенты подключаются к серверу через порт tcp 80 (netTcpBinding).
  • Сервер возвращает информацию с нерегулярными интервалами (от 1 минуты до нескольких часов).
  • Пользователи не должны настраивать свои брандмауэры, серверные толчки должны проходить через брандмауэры, у которых закрыты все входящие порты. TCP дуплекс на том же соединении необходим для этого, двойная привязка не работает, так как порт должен быть открыт на клиентском брандмауэре.
  • Клиенты посылают сердцебиения на сервер через регулярные промежутки времени (возможно, каждые 15 минут), чтобы сервер знал, что клиент все еще жив.
  • Сервер-это IIS7 с WAS.

Решение, по-видимому, дуплекс netTcpBinding. На основании этой информации:

WCF через брандмауэры и NATs

Сохранение открытых соединений в IIS

Но мне еще предстоит найти образец кода, который работает.. Я попытался объединить образцы "Duplex" и "TcpActivation" из образцов WCF Microsoft, но безуспешно. Пожалуйста, кто-нибудь может указать мне пример кода, который работает, или построить небольшой пример приложения. Большое спасибо!

.net   wcf   firewall   push   duplex    

492   6   16:41, 26th August, 2020


Каким WCF лучшим практикам вы следуете при проектировании объектных моделей?

Я заметил, что несколько WCF приложений выбирают "break" своих объектов отдельно; то есть проект может иметь DataObjects assembly, который содержит DataContracts/Members в дополнение к значимой библиотеке классов, выполняющей бизнес-логику.

Является ли это ненужным уровнем абстракции? Есть ли какое-либо врожденное зло, связанное с прохождением и маркировкой существующих библиотек классов с информацией DataContract?

Кроме того, в качестве отступления, как вы справляетесь с условиями ошибок? Являются ли выброшенные исключения из службы (InvalidOperation, ArgumentException и так далее) общепринятыми или обычно существует уровень вокруг этого?

wcf    

438   1   10:19, 9th August, 2020


Закрытие и утилизация обслуживание WCF

Метод Close на ICommunicationObject может выдавать два типа исключений, как MSDN описывает здесь . Я понимаю, почему метод Close может вызывать эти исключения, но я не понимаю, почему метод Dispose на прокси-сервере службы вызывает метод Close без try вокруг него. Разве ваш метод Dispose не является единственным местом, где вы хотите убедиться, что вы не создаете никаких исключений?

wcf   web-services    

455   2   23:47, 6th August, 2020


Исключение InvalidOperationException при создании экземпляра веб-службы wcf

У меня есть веб-служба WCF, на которую ссылаются из библиотеки классов. После запуска проекта при создании объекта клиента службы из библиотеки классов я получаю сообщение InvalidOperationException with:

Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'MyServiceReference.IMyService' в клиенте ServiceModel раздел конфигурации. Это может быть связано с тем, что файл конфигурации не был найдено для вашего приложения, или потому что нет соответствия элементов конечной точки этот контракт можно найти в элементе клиент.

Код, который я использую для создания экземпляра::

myServiceClient = new MyServiceClient();

где MyServiceClient наследуется от

System.ServiceModel.ClientBase

Как мне решить эту проблему?

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

.net   wcf   web-services    

512   4   09:01, 9th August, 2020


WCF-объекты домена и IExtensibleDataObject

Типичный сценарий. Мы используем старой школы XML internally web-сервисов для обмена данными между серверами фермы и нескольких распределенных и локальных клиентов. Никакие третьи лица не участвуют, только наши приложения, используемые нами и нашими клиентами.

В настоящее время мы размышляем о переходе от модели XML WS к модели WCF/object-based и экспериментируем с различными подходами. Один из них включает в себя передачу объектов домена / агрегатов непосредственно по проводу, возможно, вызывая атрибуты DataContract на них.

Используя IExtensibleDataObject и DataContract с помощью свойства Order на DataMembers, мы должны быть в состоянии справиться с простыми проблемами управления версиями свойств (помните, что мы контролируем всех клиентов и можем легко принудительно обновить их).

Я постоянно слышу, что мы должны использовать выделенные объекты передачи данных только для передачи данных ( DTOs ) по проводу.

Почему? Есть ли еще причина для этого? Мы используем одну и ту же модель домена на стороне сервера и на стороне клиента, конечно, предварительно заполняя коллекции и т. д. только в том случае, когда это считается правильным, и свойства коллекции "necessary." используют принцип Service locator и IoC для вызова либо NHibernate-based "service" для прямой выборки данных (на стороне сервера), либо клиента WCF "service" на стороне клиента для связи с фермой серверов WCF .

Итак-почему мы должны использовать DTOs ?

wcf   serialization   soap   domain-driven-design   soa    

415   2   21:09, 27th August, 2020


guid REST URL для вызова службы данных ado.net?

Попытка использовать guid в качестве идентификатора ресурса в rest url, но не может найти какой-либо ресурс о том, как это сделать. Мой лучший прямо сейчас (не работает, хотя) это: http://localhost:49157/PhotogalleryDS.svc/gallery ('1d03beb3-6d63-498b-aad7-fab0b1480996') (Я пробовал duouble / одинарные кавычки. А также {guid....} с фигурными скобками. Все равно не повезло.

я только получаю: Синтаксическая ошибка '"' в позиции 0.

Вопрос: как бы я (в отношении спецификации) написал url для ресурса, где идентификатор является guid?

rest   wcf-data-services    

470   2   18:10, 15th August, 2020


Трехзвенка на Qt?

Приветствую уважаемых хабровчан!


Разрабатываю новый проект на новом для меня Qt. Стоит задача реализовать трехзвенную архитектуру работы с БД. Связь через сокет. Среднее и верхнее звенья будут написаны на Qt. Идеальным было бы решение вроде WCF в .NET или на худой конец DCOM. Сам DCOM не подходит, т.к. нужна кроссплатформенность.


Ничего похожего в Qt к сожалению не нашел, а изобретать очередной лисапед не хочется.


Посоветуйте, в какую сторону копать?


Также, необходимо оставить возможность склеить все звенья в одном приложении, поэтому планирую воспользоваться «бутербродом» из QSqlRelationalTableModel и QAbstractProxyModel. Вот между ними и хотелось бы при необходимости передавать данные через сокет.

Qt   WCF    

267   2   21:06, 1st October, 2020