Вот знаете, может лично вас это и не касается, но почему поборникам отсутствия приватности невдомек следующее.
Все доводы про "нечего скрывать" еще можно было бы применить к государству условно честному, где верховенствует закон.
В котором существуют четкие правила игры, в котором можно (опять же, хотя бы условно) не боятся, если ты не делал ничего незаконного.
К государству же советскому это применять нельзя никак. Вот просто нельзя. Потому что то, что было законным (хотя, возможно, и не одобряемым) сегодня, может легко стать незаконным завтра, а понятие "закон обратной силы не имеет" трактуется законотворцами произвольно.
Сегодня хентай был законен, ты наслаждался тентаклями — а завтра ты уже шьешь рукавицы, потому что он стал цп, а ты стал педофилом.
Сегодня ты переписывался с коллегой в цитадели мирового зла США и жаловался, что пармезан пропал с прилавков, а завтра ты в СИЗО как шпион и разглашатель гостайны.
Соседу-майору не нравится, что у вас одно парковочное место на двоих — и завтра он откапывает в архиве… а что захочет. Как ты докажешь, что ты не заходил на сайт ИГИЛ? Вот сосед по офису по телефону сказал, что Крым не наш, а ты не донес. У суда нет оснований не доверять сотруднику органов. И отправляешься ты дышать свежим морозным воздухом, а твоя машина занимает паркоместо на три года
Вы, граждане-которым-нечего-скрывать, не понимаете простую вещь — сейчас государству от вас ничего не надо. Но уверены ли вы, что так будет всегда? Знаете ли вы, что изолированная и плановая экономика невозможна без бесплатного труда? Что война невозможна без солдат? Вы надеетесь своей лояльностью купить лояльность государства, но купите себе разве что должность стукача.
Скажите, ради общего развития, вот если бы вы им не отдали пароли (ну мало ли, не знали, или забыли от страха), вам что, колено бы прострелили, или в участке в слоника бы поиграли, или подвесили на наручниках на три часа? И ничего бы за это не было этому агенту? Это не сарказм, я просто всегда думал, что европейские правоохранители закона опасаются.
Мы уверены, что из-за давления властей, которым окружен новый закон, некоторых из наших российских серверов недавно были захвачены российскими властями, без каких-либо предупреждений и надлежащих процедур
По их словам, сервера были захвачены "без каких-либо предупреждений". Это смешной момент, прямо представил как прокуратура шлет письмо: "выехали на захват ваших серверов, пожалуйста, оставайтесь на месте".
Мне кажется, дело тут не столько в универсальности.
Я, наверное, уже это писал где-то в комментах, но повторюсь.
У нас есть два, скажем так, вида бизнес логики "для данных".
Первый вид — это ограничения данных, доступных этому клиенту (здесь клиент и как пользователь, и как сценарий бизнес операции). Например, если у нас сервис для витрины веб-магазина, и репозиторий товара, то мы ни в каком виде не должны иметь доступа к неактивным товарам.
Для этих случаев, я считаю, лучше иметь метод в репозитории, который точно не позволит забыть экстеншн метод.
Второй вид — это разнообразные методы для удобства. Это тоже бизнес логика, но она применяется ad-hoc. Это как бы сокращенные записи типовых выборок данных, для них методы расширения — отличное решение.
Распределенные транзакции — это которые через MSDTS? Я думаю, сервер транзакций явно начинает и завершает (или откатывает, в случае неудачи одной из транзакций) транзакции для каждого соединения.
Мне ничего не остается, только согласиться с вами :) Спасибо за идею, выглядит прекрасно.
Но, все-таки есть сценарии, когда я бы использовал методы репозитория:
Фильтрация для текущего пользователя(хотя можно передавать user id)
Методы, потенциально могущие переехать в базу (для оптимизации)
Ну и, опять же, я предпочитаю не давать доступ к "сырой" (нефильтрованной) выборке из таблицы, чаще всего есть непересекающиеся наборы данных (только активные, только доступные для редактирования и т.д.). Это надежнее метода расширения, который можно забыть, и попортить данные.
У бизнес-методов в репозитории, как уже сказано выше, есть фундаментальная проблема: либо их очень много (фактически, по одному на каждый сценарий, которых много), либо они неэффективны (например, классический GetAllCustomers).
Если этих методов много, то их будет много при любом способе реализации, будь то ad-hoc LINQ-запросы, методы расширения, или специализированные методы в репозитории. Вопрос в том, как удобнее сделать с точки зрения разработки и сопровождения.
На мой взгляд, методы в репозитории самые удобные — у них четкий контракт, их легко найти, они могут инкапсулировать сложную логику или разные способы доступа к данным.
Во-первых, отдают не содержимое таблицы, а интерфейс, позволяющий прочитать сущности (или проекции) по заданному выражению.
Вопрос в том, позволяет ли этот интерфейс получить данные, которые не нужны в данном сценарии.
Во-вторых, любая повторно используемая логика прекрасно инкапсулируется в extension-методы, поэтому никакого "в каждом бизнес-методе".
Это понятно, есть больше одного способа инкапсуляции повторно-используемого кода. Но extension методы еще нужно не забыть вызвать, особенно если их несколько, а при добавлении нового нужно не забыть добавить вызов во всех местах. То есть это лучше, чем ручная фильтрация через Where в бизнес методах, но все еще хуже бизнес методов в репозитории.
Использовать-то его можно, но вот для чего?
Я вижу два применения:
ad-hoc обработка данных на стороне источника (базы) как в бизнес логике, так и для выборки данных пользователем. Это нормально, клиент не может получить доступ к неподходящим данному сценарию данным.
Применение бизнес-логики к "сырому" источнику данных — когда отдают полностью содержимое таблицы, и потребитель должен сам отфильтровать и выбрать данные, подходящие под сценарий, и так в каждом бизнес методе. А вот это уже плохо, хотя и позволяет, на первый взгляд, избежать "взрыва" количества методов репозитория. На самом деле, бизнес логика "на данных" никуда не денется, она все равно будет присутствовать, и в еще большем количестве.
Интересно, сколько электричества понадобится для обработки (распознания и индексирования) всего трафика?
И какие технически реалистичные задержки поиска по такому массиву данных?
Знаете, наверное, невозможно искоренить полностью то, о чем вы говорите. На любое действие найдется противодействие, что один человек создал, другой сможет обойти. Борьба с преступностью — это всегда компромисс усилий и результата. В данном случае соотношение настолько мизерное, что просто очевидно, что никакой заботой о гражданах тут и не пахнет.
Ваша ошибка в том, что -чуки и -овичи рулят везде. Человек, имеющий реальную власть, никогда в политику лично не пойдет, ибо народ прямолинеен и виноватым считает того, кого показывают по тв. Поэтому несменяемость в России не означает, что дядя с портрета рулит лично.
Вот именно, да и не бывает затрат телекомов или затрат государства, бывают затраты граждан.
Спасибо за ответ.
Не иметь доступа к полной коллекции данных напрямую.
Вот знаете, может лично вас это и не касается, но почему поборникам отсутствия приватности невдомек следующее.
Все доводы про "нечего скрывать" еще можно было бы применить к государству условно честному, где верховенствует закон.
В котором существуют четкие правила игры, в котором можно (опять же, хотя бы условно) не боятся, если ты не делал ничего незаконного.
К государству же советскому это применять нельзя никак. Вот просто нельзя. Потому что то, что было законным (хотя, возможно, и не одобряемым) сегодня, может легко стать незаконным завтра, а понятие "закон обратной силы не имеет" трактуется законотворцами произвольно.
Сегодня хентай был законен, ты наслаждался тентаклями — а завтра ты уже шьешь рукавицы, потому что он стал цп, а ты стал педофилом.
Сегодня ты переписывался с коллегой в цитадели мирового зла США и жаловался, что пармезан пропал с прилавков, а завтра ты в СИЗО как шпион и разглашатель гостайны.
Соседу-майору не нравится, что у вас одно парковочное место на двоих — и завтра он откапывает в архиве… а что захочет. Как ты докажешь, что ты не заходил на сайт ИГИЛ? Вот сосед по офису по телефону сказал, что Крым не наш, а ты не донес. У суда нет оснований не доверять сотруднику органов. И отправляешься ты дышать свежим морозным воздухом,
а твоя машина занимает паркоместо на три годаВы, граждане-которым-нечего-скрывать, не понимаете простую вещь — сейчас государству от вас ничего не надо. Но уверены ли вы, что так будет всегда? Знаете ли вы, что изолированная и плановая экономика невозможна без бесплатного труда? Что война невозможна без солдат? Вы надеетесь своей лояльностью купить лояльность государства, но купите себе разве что должность стукача.
Скажите, ради общего развития, вот если бы вы им не отдали пароли (ну мало ли, не знали, или забыли от страха), вам что, колено бы прострелили, или в участке в слоника бы поиграли, или подвесили на наручниках на три часа? И ничего бы за это не было этому агенту? Это не сарказм, я просто всегда думал, что европейские правоохранители закона опасаются.
По их словам, сервера были захвачены "без каких-либо предупреждений". Это смешной момент, прямо представил как прокуратура шлет письмо: "выехали на захват ваших серверов, пожалуйста, оставайтесь на месте".
А смысл тогда? Анонимности-то не будет (особенно, если примут постановление о запрете шифрования).
Потому что это его предназначение, блин. Или, по-вашему, государство нужно, чтобы простолюдины чиновникам dolce vita обеспечивали?
А почему нет? Или люди, которые пишут сервис для бронирования гостиниц, приносят меньше пользы?
А в чем у нас неравенство?
Разница в том, что я обогащаюсь своим трудом, принося пользу, а не
воруяперераспределяя чужое в свою пользу.Мне кажется, дело тут не столько в универсальности.
Я, наверное, уже это писал где-то в комментах, но повторюсь.
У нас есть два, скажем так, вида бизнес логики "для данных".
Первый вид — это ограничения данных, доступных этому клиенту (здесь клиент и как пользователь, и как сценарий бизнес операции). Например, если у нас сервис для витрины веб-магазина, и репозиторий товара, то мы ни в каком виде не должны иметь доступа к неактивным товарам.
Для этих случаев, я считаю, лучше иметь метод в репозитории, который точно не позволит забыть экстеншн метод.
Распределенные транзакции — это которые через MSDTS? Я думаю, сервер транзакций явно начинает и завершает (или откатывает, в случае неудачи одной из транзакций) транзакции для каждого соединения.
Действительно, какие странные люди, их государство считает недостойными прав, а они не хотят пользу ему приносить. Ничего не понимаю.
Мне ничего не остается, только согласиться с вами :) Спасибо за идею, выглядит прекрасно.
Но, все-таки есть сценарии, когда я бы использовал методы репозитория:
user id)Если этих методов много, то их будет много при любом способе реализации, будь то ad-hoc LINQ-запросы, методы расширения, или специализированные методы в репозитории. Вопрос в том, как удобнее сделать с точки зрения разработки и сопровождения.
На мой взгляд, методы в репозитории самые удобные — у них четкий контракт, их легко найти, они могут инкапсулировать сложную логику или разные способы доступа к данным.
Вопрос в том, позволяет ли этот интерфейс получить данные, которые не нужны в данном сценарии.
Это понятно, есть больше одного способа инкапсуляции повторно-используемого кода. Но extension методы еще нужно не забыть вызвать, особенно если их несколько, а при добавлении нового нужно не забыть добавить вызов во всех местах. То есть это лучше, чем ручная фильтрация через
Whereв бизнес методах, но все еще хуже бизнес методов в репозитории.Использовать-то его можно, но вот для чего?
Я вижу два применения:
И какие технически реалистичные задержки поиска по такому массиву данных?