Ответ @ user3025064 - правильный ответ. Принятый ответ непреднамеренно переворачивает внутренние MAX и MIN звонки. Нам также не нужно сначала проверять, пересекаются они или нет, если мы используем представленную формулу MAX (0, x) в отличие от ABS (x). Если они не пересекаются, MAX (0, x) возвращает ноль, что делает область пересечения 0 (то есть непересекающейся).
Я предлагаю, чтобы @Yves Daoust исправил его ответ, потому что он принят, который появляется любому, кто ищет эту проблему. Еще раз, вот правильная формула для пересечения:
SI = Max(0, Min(XA2, XB2) - Max(XA1, XB1)) * Max(0, Min(YA2, YB2) - Max(YA1, YB1))
Остальное как обычно. Союз:
SU = SA + SB - SI
и соотношение:
SI/SU
Потребление веб-сервиса без файла конфигурации очень просто, поскольку я обнаружил. Просто необходимо создать объект привязки и объект адреса и передать их или конструктору клиентского прокси или к универсальному экземпляру ChannelFactory. Можно посмотреть на значение по умолчанию app.config для наблюдения что настройки использовать, затем создать статический вспомогательный метод где-нибудь, который инстанцирует прокси:
internal static MyServiceSoapClient CreateWebServiceInstance() {
BasicHttpBinding binding = new BasicHttpBinding();
// I think most (or all) of these are defaults--I just copied them from app.config:
binding.SendTimeout = TimeSpan.FromMinutes( 1 );
binding.OpenTimeout = TimeSpan.FromMinutes( 1 );
binding.CloseTimeout = TimeSpan.FromMinutes( 1 );
binding.ReceiveTimeout = TimeSpan.FromMinutes( 10 );
binding.AllowCookies = false;
binding.BypassProxyOnLocal = false;
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
binding.MessageEncoding = WSMessageEncoding.Text;
binding.TextEncoding = System.Text.Encoding.UTF8;
binding.TransferMode = TransferMode.Buffered;
binding.UseDefaultWebProxy = true;
return new MyServiceSoapClient( binding, new EndpointAddress( "http://www.mysite.com/MyService.asmx" ) );
}
Это не снисходительно относится к серверу сторона ..
Для стороны клиента, можно использовать ChannelFactory
Вся конфигурация WCF может быть реализована программно. Таким образом, возможно создать и серверы и клиенты без файла конфигурации.
я рекомендую книге "Programming WCF Services" Juval Lowy, который содержит много примеров программируемой конфигурации.
Это очень легко сделать как на стороне клиента, так и на стороне сервера. Книга Ювала Лоуи имеет прекрасные примеры.
Что касается вашего комментария о файлах конфигурации, я бы сказал, что файлы конфигурации являются второстепенными для человека, делающего это в коде. Конфигурационные файлы хороши, когда вы контролируете каждого клиента, который будет подключаться к вашему серверу, и убедитесь, что они обновлены, и что пользователи не могут их найти и что-либо изменить. Я нахожу модель файла конфигурации WCF ограничивающей, слегка сложной для разработки и кошмаром обслуживания. В общем, я думаю, что MS приняла очень плохое решение сделать файлы конфигурации стандартным способом выполнения действий.
РЕДАКТИРОВАТЬ: Одна из вещей, которую вы не можете сделать с файлом конфигурации, - это создавать службы с не конструкторы. Это приводит к статическим / глобальным переменным и синглетонам и другим бессмысленным типам в WCF.
С помощью файла конфигурации нужно создавать сервисы с конструкторами не по умолчанию. Это приводит к статическим / глобальным переменным и синглетонам и другим бессмысленным типам в WCF. С помощью файла конфигурации нужно создавать сервисы с конструкторами не по умолчанию. Это приводит к статическим / глобальным переменным и синглетонам и другим бессмысленным типам в WCF.Я нашел сообщение в блоге по ссылке ниже около эта тема очень интересная.
Одна идея, которая мне нравится, заключается в том, что я могу просто передать секцию привязки или поведения или адреса XML из конфигурации в соответствующий объект WCF и позволить ему обрабатывать присвоение свойств - в настоящее время вы не можете этого сделать.
Как и у других пользователей в Интернете, у меня возникают проблемы, связанные с необходимостью моей реализации WCF использовать файл конфигурации, отличный от файла моего хост-приложения (которое является службой Windows .NET 2.0).
http://salvoz.com / blog / 2007/12/09 / programmatics-setting-wcf-configuration /
Если вы хотите исключить использование раздела System.ServiceModel в web.config для хостинга IIS, я опубликовал пример того, как это сделать, здесь ( http://bejabbers2.blogspot.com/2010/02/wcf-zero-config-in-net-35-part-ii.html ). Я показываю, как настроить ServiceHost для создания как метаданных, так и конечных точек привязки wshttp. Я делаю это универсальным способом, не требующим дополнительного программирования. Для тех, кто не сразу обновляется до .NET 4.0, это может быть очень удобно.