Giter VIP home page Giter VIP logo

Comments (19)

azhidkov avatar azhidkov commented on September 15, 2024

Done d4d0a6a

from vk.

Inok avatar Inok commented on September 15, 2024

А в чем был смысл перехода на версию 3.5, если можно сделать 4.0?
У 3.5 и 4.0 те же поддерживаемые платформы, то есть совместимость ни с чем не теряется.
При этом TPL и другие приятные штуки остаются, поэтому в будущем добавить асинхронные версии не составит никакого труда.

from vk.

azhidkov avatar azhidkov commented on September 15, 2024

Вопрос в том, чего мы добьемся добавив асинхронности?
Главным минусом я вижу - раздутие API, будет непонятно какой метод использовать синхронный или асинхронный. Как вариант, добавить проект VkNet.Async который будет реализовать тот же набор API, но только асинхронные версии.

Смысл перехода в поддержки наименьшей версии фраемворка. Второй уже мало где используется, а вот 3.5 еще достаточно часто, это касаемо моего опыта.

В идеале настроить нугет чтобы он билдил для каждой версии фраемворка отдельную версию библиотеки.

from vk.

qart2003 avatar qart2003 commented on September 15, 2024

Думаю что для данной либы 3.5 и 4.0 не будут иметь разницы, на 2.0 можно и нужно забить. Из позиций оптимизации лучше две версии либы для синхронного и асинхронного. Готово? :) Подскажите как фейсбук делает превью сайта и есть ли сервис "условно-бесплатный" для этого? Например, 10,000 превью в месяц бесплатно, а сто тысяч за $10-20/mo ?!

from vk.

Inok avatar Inok commented on September 15, 2024

Я заранее прошу прощения за такую простыню текста :)
Начну со второго:
3.5 еще часто используется, это да, но на мой взгляд, есть разные ситуации.
Если бы это был не VkNet, а какой-то логгер или вроде того, было бы понятно, зачем совместимость с 3.5. Ну мало ли в давно существующий проект нужно этот логгер добавить.
А VkNet, на мой взгляд, в некотором роде ядро, на котором пишется что-то новое.
Начинать новый проект на 3.5 - это как-то странно.
Добавлять VkNet в некий существующий проект на 3.5 - честно говоря, я пока не могу представить ситуацию, где это может понадобиться.

Что касается асинхронности, есть две заинтересованные стороны:

  • Мы получаем больше проблем с поддержкой двух версий методов. Хотя можно вручную писать одну, а для другой написать генератор. Не самая тривиальная задача, но с некоторыми допущениями вполне решаемая.
  • Пользователя это избавляет от кучи проблем. Опять же специфика VkNet: я бы использовал ее для мессенджера, аудиоплеера или типа того, других вариантов как-то не вижу. В любом случае подавляющее большинство - приложения с GUI. А там асинхронность критически важна. Особенно учитывая, что мы работаем с сетью, что уже гарантирует относительно долгое выполнение. Кстати, сейчас я пока не знаю, что будет, если с сетью проблемы. Может быть exception, а может и тупо поток зависнуть в некоторых ситуациях. Или просто связь такая, что любой ответ загружается еле-еле. В итоге:
    • С асинхронными версиями пользователь имеет средства ручной отмены, таймауты, и вообще выполняет долгие операции в фоне. Опять же TPL довольно умная и умеет не создавать особых накладных расходов, связанных с потоками.
    • С синхронными версиями пользователь либо сам пишет обертки для каждого метода, что, кроме кучи кода, выливается в еще некоторые специфические проблемы, очень-очень неприятные, либо его проклинают пользователи, у которых пока новые сообщения грузятся - интерфейс висит.

Кстати, я не особо разбирался, но можно сейчас VkNet использовать из Metro-приложений? Мне почему-то кажется, что нельзя, там вроде нет синхронных методов для работы с сетью.

Раздутие API - а это проблема? Дублирование кода есть, но в конце концов это просто пары методов, Name и NameAsync. Использовать будут подходящий по ситуации. Пользователь наберет Wall.Get и увидит две строки в подсказке, Get и GetAsync соответственно. Выбор вроде не так сложен.
Мое и только мое личное мнение вообще в том, что имея возможность легко писать асинхронный код (спасибо MS за TPL), синхронные версии вообще не нужны. Особенно учитывая, что скорее всего пользователю библиотеки нужна асинхронность.

В любом случае, варианта два:

  • 3.5 и только синхронные методы
  • 4.0 и асинхронные версии методов. Или даже 4.5. При этом теряется совместимость с Win XP, но на мой взгляд, аудитория, которой VkNet нужна на XP, очень мала и стабильно падает.

Что касается настройки nuget, вроде как это не особо сложно. Я так понял, в репозитории нет его конфигурации?

from vk.

Inok avatar Inok commented on September 15, 2024

Добавлю еще, что если 3.5 кому-то была бы нужна, были бы такие запросы. Я слежу за проектом еще с анонса на хабре, и не помню, чтобы кто-то просил 3.5 Максимум - 4.0 было. Если я не прав, прошу прощения. Кстати, на хабре, помнится, многие комментарии были про то, что async-await нужен.

Вообще, я бы поступил радикально, и версию VkNet 1.0 оставил бы как есть, исправляя только баги и добавляя только самое нужное. А параллельно перенес бы весь код в 4.5, и делал бы версию вообще без синхронных методов. Туда уже добивать все методы из API, поддерживать актуальность и т.д. И это было бы VkNet 2.0

from vk.

azhidkov avatar azhidkov commented on September 15, 2024

Хорошая идея про VkNet 2.0!

На метро она не работает, т.ч. думаю лучше всего сделать Portable Library и добавить туда только асинхронные версии.

from vk.

Inok avatar Inok commented on September 15, 2024

Тогда, наверное, лучше новый репозиторий создать рядом с этим? Я в ближайшие пару дней мог бы набросок сделать, вы не создадите рядом пустой репозиторий?

from vk.

azhidkov avatar azhidkov commented on September 15, 2024

Да, хорошо!

Т.к. главная фича асинхронность, то вот новый проект https://github.com/vknet/vknet-async

from vk.

Inok avatar Inok commented on September 15, 2024

Спасибо!

from vk.

Inok avatar Inok commented on September 15, 2024

У меня вроде доступа к новому репозиторию нет )

from vk.

azhidkov avatar azhidkov commented on September 15, 2024

Поправил, уже есть)

from vk.

Inok avatar Inok commented on September 15, 2024

Спасибо )

from vk.

qart2003 avatar qart2003 commented on September 15, 2024

Люди, мне тоже интересно участвовать в проекте, возьмете? Я C# web dev у меня startup http://qstoma.com с дизайна не ржать, те для кого он не знают :) мне он нравится. Планирую встроить интеграцию с социальными сетями т. е. буду использовать vknet. С ФБ чуть-чуть разобрался (http://qstoma.ru/fbGetInsertCode.aspx), надо с вк разобраться. Чем хотел бы заниматься - писать удобные в использовании небольшие либы над vknet. Мне все равно придется это делать в своем проекте когда начну в него внедрять vknet. Пусть это юзают и другие...

from vk.

azhidkov avatar azhidkov commented on September 15, 2024

@qart2003 Вы можете подключиться к разработке https://github.com/vknet/vknet-async :)

from vk.

azhidkov avatar azhidkov commented on September 15, 2024

Результаты

  1. Текущая версия библиотеки будет разрабатываться на 4ом .net framework'e
  2. Асинхронная версия библиотеки разрабатывается в проекте https://github.com/vknet/vknet-async

from vk.

qart2003 avatar qart2003 commented on September 15, 2024

Ребята, готов, работаю один, как подключиться к svn? :)

from vk.

qart2003 avatar qart2003 commented on September 15, 2024

и дайте установку - партийное поручение, что писать? :)

from vk.

azhidkov avatar azhidkov commented on September 15, 2024

Всё просто :)

Учиться лучше на решении практических задач, поэтому, если есть желание, то можно взяться за эту #28

Вот порядок действий:

  1. Сделать форк проекта.
  2. Скачать исходники к себе на компьютер.
  3. Разобраться как реализованы методы в категории PhotosCategory.
  4. Посмотреть как написаны тесты для этих методов, класс PhotosCategoryTests.
  5. Посмотреть почему не передаются данные, поправить, и написать тест.
  6. Сделать pull-request в проект.
  7. Profit :)

from vk.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.