Ответы пользователя Чак Норрис - CodeHelper

Чак Норрис

Чак Норрис
Карма 3384
Имя Неизвестно
Возраст Неизвестно
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1103 дн., 22 час., 55 мин.
Последняя активность 535 дн., 7 час., 46 мин. назад
О себе ничего не указано

Ответы

Новые Лучшие
1
...
3
4
5
6
7
...
12
Перейти к вопросу →

Вообще считается, что есть 3 способа сжатия WCF трафика. Вот перевод источника:

  • На транспортном уровне, используя message encoder, который сжимает все данные проходящие через канал. Есть пример такого подхода в WCF SDK, [SDK Folder]TechnologySamples/Extensibility/MessageEncoder/Compression
  • На уровне сообщений, добавляя определенные метаданные к SOAP-сообщению и сжимая тело этого сообщения. Можно использовать специфический WCF binding или MessageInspector Behavior чтобы модифицировать тело сообщения. Вот пример такого подхода: WS-Compression for WCF.
  • Только для транспорта на протоколе Http (не наш случай) можно использовать поддержку сжатия самого протокола.

Ну и конечно не следует забывать про оптимизацию на уровне приложения а не на уровне WCF. Сами классы DataSet и DataTable довольно-таки тяжеловесные, хотя не могу сказать относится ли это к сериализации для передачи через WCF. Где-то попадалось, что для оптимизации сериализации датасетов нужно задать пару свойств:

ds.SchemaSerializationMode = SchemaSerializationMode.ExcludeSchema;
ds.RemotingFormat = SerializationFormat.Binary;
Перейти к вопросу →

Да, можно. Нужно использовать те же методы, что и для обычных заглушек, только с окончанием MultiMock:

MockRepository.CreateMultiMock(...);
MockRepository.DynamicMultiMock(...);
MockRepository.PartialMultiMock(...);
MockRepository.StrictMultiMock(...);

И это является одной из фишек Rhino Mocks, потому что многие другие фреймворки такой возможности не предоставляют. Однако, в сообществе ведутся споры о целесообразности мокирования нескольких интерфейсов. В частности, говорится о том, что интерпретация одного и того же объекта в разных формах вредит читабельности теста, усложняет его и тд. Ведь если тест интерпретирует один объект как две разные сущности, значит он выполняет (как минимум) две операции над этим объектом, а отсюда следует что тест может быть разбит на 2 теста.

Перейти к вопросу →

Самой зрелой считается реализация от Yahoo:

Есть один минус — нужно использовать весь Javascript-стек от Yahoo.

Перейти к вопросу →

Похоже, что нельзя. Перегрузка операторов достапна только для классов и структур. Как альтернатива, можно определить extension method, выполняющий нужное действие. Или использовать структуру вместо enum, структуры дают больше возможностей кастомизации поведения.

Перейти к вопросу →

Можно использовать какие-нибудь rich контролы, например telerik.

Перейти к вопросу →

Очень важная фича — MVC 2 не конфликтует с первой версией! Значит на одном компьютере можно установить обе версии. При этом в Visual Studio можно создать проект, использующий любую из установленных версий.

Перейти к вопросу →

Наличие Silverlight обычно проверяется на клиенте с помощью Javascript (Silverlight.js). Для этого нужно проверить значение флага:

Silverlight.available

Если true, то Silverlight установлен, в противном случае — нет.

Перейти к вопросу →

Есть мнение, что если MARS не включен, то при высокой нагрузке могут вылетать исключения:

Exception: There is already an open DataReader associated with this Command which must be closed first.
Stack Trace:
at System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)
at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at NHibernate.Impl.BatcherImpl.ExecuteReader(IDbCommand cmd)
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, RowSelection selection, ISessionImplementor session)
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.LoadCollection(ISessionImplementor session, Object id, IType type)

Соответственно, лучше добавить в строку подключения активацию MARS:

MultipleActiveResultSets=true
Перейти к вопросу →

Есть класс HttpValueCollection, который используется в ASP.NET. Служит этот класс как раз для того, чтобы преобразовывать коллекцию элементов ключ-значение в строку запроса URI. К сожалению, напрямую инстанцировать объект этого класса не получится, потому что он является внутренним. Но можно вызвать статичекий метод System.Web.HttpUtility.ParseQueryString, возвращающий экземпляр базового класса — NameValueCollection:

var paramsCollection = System.Web.HttpUtility
    .ParseQueryString(string.Empty);        1

paramsCollection["param1"] = "paramValue1"; 2
paramsCollection["param1"] = "paramValue1";
//...
var uri = new Uri("http://example.com");
uri.Query = paramsCollection.ToString();    3

1 — метод ParseQueryString возвращает обычную коллекцию NameValueCollection, в которую можно добавлять ключи и значения. Но на самом деле это объект класса HttpValueCollection и при вызове ToString ключи-значения будут преобразованы в строку запроса.

2 — заполняем коллекцию.

3 — устанавливаем строку запроса для объекта URI.

Перейти к вопросу →

В общем случае эта задача кажется нерешаемой. Ведь если не доверять расширению, то определить тип можно только заглянув внутрь файла и сделав выводы на основе его содержимого. Эту задачу можно решить для какого-то класса файлов, но не в общем случае. Например, файл картинки можно попробовать программно преобразовать в объект Image. Если получилось, то считать что в файле действительно «лежит» изображение.


1
...
3
4
5
6
7
...
12
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.