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

Чак Норрис

Чак Норрис
Карма 3384
Имя Неизвестно
Возраст Неизвестно
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1104 дн., 17 час., 5 мин.
Последняя активность 536 дн., 1 час., 56 мин. назад
О себе ничего не указано

Ответы

Новые Лучшие
1
...
7
8
9
10
11
12
Перейти к вопросу →

На самом деле все проще чем кажется — нужно просто положить файл Settings.StyleCop в ту папку, где расположены все проекты.

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

Нужно использовать свойства из категории Loyout. Значения этих свойств позволяют полностью управлять компановкой элементов. Вот некоторые из них:

Свойство Dock — позволяет задать область контейнера, которую будет занимать данный элемент (весь контейнер или вся верхняя/нижняя/левая/правая часть контейнера).

Свойство Anchor — позволяет задать стратегию изменении размера элемента при изменении размера его контейнера. Можно отметить любой из флагов — Left, Right, Top, Bottom. Комбинируя эти флаги, можно добиться того, чтобы элемент (кнопка, поле ввода и т.п.) был «привязан» к одному из краёв формы или наоборот — занимал область, пропорциональную размеру формы.

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

Нужно пометить enum атрибутом DataContract, а все значения — атрибутом EnumMember:

[DataContract]
public enum SomeEnum
{
    [EnumMember]
    Value1,

    [EnumMember]
    Value2,

    [EnumMember]
    Value3
}
Перейти к вопросу →

Если сервисы работают под .NET 3.5, то проблема обычно решается прописыванием примерно таких строк в web.config:

<system.serviceModel>
    <serviceHostingEnvironment>
        <baseAddressPrefixFilters>
            <add prefix="http://example.org:1234" />      
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>

Где выделенный адрес — это базовый URL для всех сервисов. Подробнее о проблеме можно почитать в статье How can WCF support multiple IIS Binding specified per site ?

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

Самый простой способ — подписаться на событие BeginRequest в файле Global.asax и в теле обработчика выполнить все необходимые действия:

void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext context = HttpContext.Current;
    string currentLocation = context.Request.Path.ToLower();
    string rewritedLocation = GetRewritedLocation(currentLocation); 1
    if (currentLocation != rewritedLocation)
    {
        context.RewritePath(rewritedLocation); 2
    }
}

1 — метод GetRewritedLocation содержит логику подмены (код не приводится);

2 — собственно, подмена URL.

Поскольку код из Global.asax сложно тестировать и повторно использовать, то лучшим решением будет реализация той же логики в http-модуле (IHttpModule). В коде модуля, как и в коде Global.asax, можно подписаться на событие начала обработки запроса и выполнить аналогичную подмену.

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

Найдено такое решение:

pre {
    white-space: pre-wrap;       /* css-3 */
    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
    white-space: -pre-wrap;      /* Opera 4-6 */
    white-space: -o-pre-wrap;    /* Opera 7 */
    word-wrap: break-word;       /* Internet Explorer 5.5+ */
}
Перейти к вопросу →

В jQuery есть специальная функция param, которая

сериализует массив элементов формы или набор пар ключ ↔ значение в строку запроса

Используется так:

var queryString = $.param(keyValueSet);
Перейти к вопросу →

У класса Console есть метод SetCursorPosition, который позволяет переместить курсор в любую точку консоли. При этом следующие методы Write будут выводить текст именно от этой точки. Используя свойства Console.CursorLeft и Console.CursorTop можно задать смещение относительно текущего положения курсора.

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

Вопрос о том, должна ли модель валидировать себя, вызывывает массу холиваров. Так же как вопрос о том, является ли валидация бизнес-логикой. В контексте WPF, возможно, дело обстоит иначе, потому что вид обычно имеет дело не с моделью предметной области, а с моделью вида (если, конечно, используется MVVM или подобный паттерн). Но, все-таки, лучший фреймворк валидации — тот, который минимально затрагивает классы модели и не тянет за собой «хвостов» в виде зависимостей. В частности, требование наследования модели от базового класса из библиотеки валидации кажется очень неприятным.

Для ASP.NET MVC сейчас активно продвигается валидация с помощью Data Annotations. Не знаю, имеется ли в настоящий момент поддержка для WPF, но есть подозрения, что в будущем этот механизм станет стандартным для технологий MS. Достоинство Data Annotations в их легковесности. Отдельная DLL (System.ComponentModel.DataAnnotations.dll) содержит атрибуты, которыми нужно помечать свойства классов предметной области. При этом System.ComponentModel.DataAnnotations — стандартное пространство имен .NET и не тянет за собой никаких зависимостей, так как не включает логику отображения ошибок для какого-то конкретного движка (WinForms, WPF, WebForms, MVC и тд).

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

Известно, что первый вызов WCF сервиса занимает несколько больше времени, чем остальные. Это связано с тем, что в момент первого вызова происходит инициализация стека канала, security и т.п. Но обычно речь идет о задержке порядка 1-3 секунд, а никак не 20 секунд. Если проблема тут в WCF, то можно попробовать облегчить binding, убрав неиспользуемые настройки безопасности для канала. Для wsHttpBinding:

<bindings>
    <wsHttpBinding>
        <binding name="Binding1">
            <security mode="None">
                <transport clientCredentialType="None" />
                <message establishSecurityContext="false" />
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

Для netTcpBinding:

<bindings>
  <netTcpBinding>
    <binding name="PortSharingBinding" portSharingEnabled="true">
      <security mode="None" />
    </binding>
  </netTcpBinding>
</bindings>

Также есть мнение, что первый вызов замедляет процедура поиска настроек прокси, прописанных в системе. Если не нужно использовать системное прокси, то его отключение (useDefaultWebProxy="false") должно повысить быстродействие.

Можно попробовать посмотреть логи WCF, чтобы выяснить, на какую операцию уходит больше времени. Для этого можно использовать стандартный инструмент Service Trace Viewer Tool (SvcTraceViewer.exe). В документации сказано, что уровень логгера Information может быть использован для замеров производительности.


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