Я попробовал это в чистом JS, задаваясь вопросом, как вышеперечисленные плагины выполнили свою работу. Вот мой результат. Я предопределю это, сказав, что я понятия не имею, насколько стабильным это будет в IE и тому подобное. Это просто быстрый макет.
init();
function init() {
var one = [0, 1, 2, 3];
var two = [4, 5, 6, 7];
var three = [8, 9, 10, 11, 12];
var four = zip(one, two, one);
//returns array
//four = zip(one, two, three);
//returns false since three.length !== two.length
console.log(four);
}
function zip() {
for (var i = 0; i < arguments.length; i++) {
if (!arguments[i].length || !arguments.toString()) {
return false;
}
if (i >= 1) {
if (arguments[i].length !== arguments[i - 1].length) {
return false;
}
}
}
var zipped = [];
for (var j = 0; j < arguments[0].length; j++) {
var toBeZipped = [];
for (var k = 0; k < arguments.length; k++) {
toBeZipped.push(arguments[k][j]);
}
zipped.push(toBeZipped);
}
return zipped;
}
Это не пуленепробиваемый, но это все еще интересно.
Вы можете сделать, чтобы сервис реализовал все контракты на обслуживание, которые Вы хотите. Я имею в виду, я не знаю, существует ли предел, но я не думаю, что существует.
Это - аккуратный способ разделить операции, которые будут реализованы тем же сервисом в нескольких концептуально различных интерфейсах контракта на обслуживание.
Сервис может теоретически иметь любое количество Конечных точек, и каждая Конечная точка связывается с конкретным контрактом или интерфейсом, таким образом, для концептуального сингла (и настроенный) сервис возможно разместить несколько интерфейсов через несколько конечных точек или альтернативно для нескольких конечных точек для хостинга того же интерфейса.
При использовании класса ServiceHost для хостинга сервиса, тем не менее, вместо IIS, можно только связать единственный интерфейс на ServiceHost. Я не уверен, почему дело обстоит так, но это.
@jdiaz
Конечно, необходимо стремиться иметь совсем другие деловые вопросы в различных сервисах, но рассматривать случай, в котором Вы хотите это, например, все Ваши сервисы реализуют GetVersion () операция. Вы могли сделать, чтобы сервис заключил контракт только на ту операцию и сделал, чтобы каждый сервис реализовал его, вместо того, чтобы добавить GetVersion () операция к контракту на все Ваши услуги.
Сервисы WCF могут иметь несколько конечных точек, каждая из которых может реализовать различный контракт на обслуживание.
Например, Вам можно было объявить сервис следующим образом:
[ServiceBehavior(Namespace = "DemoService")]
public class DemoService : IDemoService, IDoNothingService
Который имел бы конфигурацию вдоль этих строк:
<service name="DemoService" behaviorConfiguration="Debugging">
<host>
<baseAddresses>
<add baseAddress = "http://localhost/DemoService.svc" />
</baseAddresses>
</host>
<endpoint
address =""
binding="customBinding"
bindingConfiguration="InsecureCustom"
bindingNamespace="http://schemas.com/Demo" contract="IDemoService"/>
<endpoint
address =""
binding="customBinding"
bindingConfiguration="InsecureCustom"
bindingNamespace="http://schemas.com/Demo" contract="IDoNothingService"/>
</service>
Надежда, которая помогает, но если Вы были после теоретических максимальных интерфейсов, которые Вы можете иметь для сервиса, я подозреваю, что это - некоторые безумно большие несколько из 2.