У нас есть много приложение уровня с asp.net и интерфейсом winform, который также поддерживает дистанционную работу. У меня не было проблем с использованием никакого obfuscator за исключением типа шифрования, который генерирует загрузчик, который может быть проблематичным во всех видах неожиданных путей и просто не стоить того, по-моему. На самом деле мой совет был бы больше вроде, "Стараются не шифровать тип загрузчика obfuscators как эпидемия".:)
, По моему опыту, любой obfuscator будет хорошо работать с любым аспектом .net включая asp.net и дистанционную работу, просто необходимо стать близкими с настройками и изучить, как далеко можно продвинуть его в который области кода. И не торопитесь для попытки инженерного анализа на том, что Вы получаете и видите, как он работает с различными настройками.
Мы использовали несколько за эти годы в наших коммерческих приложениях и обосновались на Специях obfuscator с 9rays.net, потому что цена является правильной, она делает задание, и у них есть хорошая поддержка, хотя нам действительно не была нужна поддержка в годах больше, но быть честным я не думаю, что она действительно имеет значение, какой obfuscator Вы используете, проблемы и кривая обучения являются всеми одинаковыми, если Вы хотите иметь ее работа правильно с дистанционной работой и asp.net.
, Поскольку другие упомянули все, что Вы действительно делаете, эквивалент замка, не пуская в других отношениях честных людей и или делая его тяжелее для простой перекомпиляции приложения.
Лицензирование обычно является ключевой областью для большинства людей, и необходимо определенно использовать некоторую снабженную цифровой подписью систему сертификата для лицензирования так или иначе. Ваша самая большая утрата прибудет из случайного совместного использования лицензий, если Вы не будете иметь в распоряжении умную систему, люди, которые повреждают систему лицензирования, никогда не собирались покупать во-первых.
действительно легко взять это слишком далеко и оказать негативное влияние на Ваших клиентов и Ваш бизнес, сделать то, что просто и разумно, и затем не волнуйтесь об этом.
Нет, но есть планы по поддержке аналогичной функции в JavaScript 2. Следующий синтаксис объектного литерала был предложен для ошибки Mozilla 312116 , и кажется, что это может быть как это будет сделано для объектных литералов:
({
get * (property) {
// handle property gets here
}
})
Я предполагаю, что set также будет поддерживаться (как set * (property, value) {...}
).
Можно ли реализовать поведение __setitem__ в JavaScript?
Нет. В JavaScript нет геттеров / сеттеров для произвольных свойств.
В Firefox вы можете использовать геттеры и сеттеры JavaScript 1.5+ для определения свойств x
и y
, которые возводят в квадрат свои значения при назначении, например :
var obj= {
_x: 0,
get x() { return this._x; },
set x(v) { this._x=v*v; }
};
obj.x= 4;
alert(obj.x);
, но вам нужно будет заранее объявить установщик для каждого именованного свойства, которое вы хотите использовать. И он не будет работать в кросс-браузере.
вы можете сделать это (поскольку объекты в javascript также являются ассоциативными массивами):
var obj = {};
obj._ = function(key, value){
this[key] = value * value;
}
obj._('x', 2); // 4
obj._('y', 3); // 9
alert(obj.x + "," + obj.y); //--> 4,9
Я не думаю, что вы можете переопределить оператор [] в текущей версии Javascript. В текущем Javascript объекты в основном представляют собой просто ассоциативные массивы, поэтому оператор [] просто добавляет пару ключ / значение к массиву, являющемуся объектом.
Вы можете написать методы, которые устанавливают определенные значения или даже возводят число в квадрат и добавляют значение в качестве пары ключ / значение, но не путем перегрузки оператора [].
Javascript2 имеет некоторые спецификации для перегрузки оператора, но это спецификация MIA.
В обычно реализуемых версиях Javascript нет настоящих сеттеров и получателей, поэтому, если вы хотите имитируя эффект, вы должны использовать другой синтаксис. Для свойства obj.x
использование obj.x ()
для доступа к значению свойства и obj.x (123)
для установки значения кажется как довольно удобный синтаксис.
Его можно реализовать так:
// Basic property class
function Property(value) {
this.setter(value);
}
Property.prototype.setter = function(value) {
this.value = value * value;
}
Property.prototype.getter = function() {
return this.value;
}
Property.prototype.access = function(value) {
if (value !== undefined)
this.setter(value);
return this.getter();
}
// generator function to add convenient access syntax
function make_property(value) {
var prop = new Property(value);
function propaccess(value) {
return prop.access(value);
}
return propaccess;
}
Теперь свойства, генерируемые make_property
, поддерживают желаемый синтаксис и присвоенные им квадратные значения:
var obj = {
x: make_property(2)
};
alert(obj.x()); // 4
obj.x(3); // set value
alert(obj.x()); // 9