Как стать автором
Обновить

Комментарии 34

1. Какие преимущества у wcf-сервиса перед приложением Web API?
2. Как-то длинно десериализуете json. Можно же же примерно так:
List appsdata = JsonConvert.DeserializeObject<List>(jsonString);
1. Сравнение доступно здесь: WCF и ASP.NET Web API
2. А если есть что-то невалидное?
1. Спасибо за ссылку.
Там как раз написано «Хотя WCF предоставляет некоторую поддержку написания служб в стиле REST, поддержка REST в ASP.NET Web API более полная и все последующие улучшения функций REST будут вноситься в ASP.NET Web API».
Значит Web API всё-таки больше подходит.

2. Парсер съел немного кода. А как вам такой вариант вспомогательного метода? Тогда в списке гарантированно будут только объекты Timetable.

public static List<T> DeserializeToList<T>(string jsonString)
{
    var array = Newtonsoft.Json.Linq.JArray.Parse(jsonString);

    return array.OfType<Timetable>().ToList();  
}
По поводу того что ASP.NET API больше подходит я согласен (и с вами и с документацией). Но мне по старой памяти знаком WCF, потому и написал о нем.
Касательно сниппета, да, пожалуй длинноват, но он в оригинальном виде пропускал ошибочные элементы.

Спасибо за уточнения/дополнения/исправления!
В любом случае спасибо за статью, буду знать, что из UWP можно к wcf цепляться и как именно это делать.
// ironic mode on

WebApi Client в .Net — это слишком просто.
Twitter — норм, но не для хабра статья :)
var user = new
{    
    UniqUserId = "fsfdsfdsfdsfds",
    PlatformId = 2,    
    Culture_Code = 1033
};
var h = new HttpClient();
var task = h.PostAsJsonAsync("http://hostname.com/api/users", user);

user — анонимная структура? Сомневаюсь, что вы в реальных проектах так пишете.
А что взамен? Или вы просто решили испортить воздух и уйти?
Взамен — для кого? Для пользователя обычное win32 или .net приложение, суть бинарник+ресурсы, файлы то бишь — самое то. UWP — это из разряда «я на айфон скидываю песни, а не файлы»
Вы в пещере живете? Интерфейс win32-приложений как минимум неудобен на тач-экранах. У UWP куча преимуществ, начиная от жизненного цикла и заканчивая поддержкой пушей. Уж не говоря про самую суть UWP — универсальность.

А вы видимо на луне. Так вот у нас тут на земле win32/winforms приложение работает в разы быстрее и жрёт на два порядка меньше мозгов, а доля этого вашего UWP что на десктопе что на тачскринах до смешного мала


UWP — универсальность.

вы о чём сейчас? мстите таким образом за порчу воздуха?

Абсолютно также я думал про Java в начале 2000-х.

Ну так Майкрософт в отличие от Оракла прославились тотальным забиванием на такого рода проекты — WPF, Silverlight, WinRT и COM как бы намекают на будущее UWP. Тем более что выстрелил Electron, который уже сейчас поимел UWP по стоимости разработки, производительности и уровню инструментов. И это при том что Electron действительно кросплатформенный и универсальный, а не только в фантазиях хипстеров, находящихся в плену религиозного дурмана от хайпа, поднятого евангелистами Майкрософт

UWP, вроде, на кроссплатформенность и не претендовал, зачем в одну кучу-то. Так что если сравнивать, то уже, например, Xamarin с Electron'ом…

А можно цифры какие-нибудь про то, куда Electron «выстрелил» и кого «поимел»?

ну так там выше было — "Уж не говоря про самую суть UWP — универсальность." А кросплатформенность — это как бы в довесок, такой нокаут для UWP от конкурента.


Хамарин — это вы вообще не в тему, он не про десктоп совсем.


У меня в W10 разница ощущается и без цифр. Электронвские виджеты и аппы ещё туда сюда, uwp-шные стоят раком. Ну и да, для своих задач я таки тестировал FPS и потребление памяти на виртулизированном GridView с кастомным контентом ячеек для UWP и аналогичное с таблицами на Electron + react. На 90% кэйсах электрон был лучше на 15-20%. И это при том, что uwp нагинает проц на 100% и жрёт под гиг оперативки, электрон ничего подобного и близко не делает. Результат как бы предсказуем, если принять во внимание, что UWP унаследовала все врождённые уродства WPF, а именно MVVM через Data Binding через INotifyPropertyChanged (дыры в типизации, невозможно нормально отлаживать, тормоза) и хамл (неизбежные утечки памяти на темплейтной разметке). Иммутабельный вью? — не, не слышали. Реактивность? — а зачем? и так схавают.

Я как-то радости с Elecron'а, как юзер, не разделяю совсем. Слак у меня на маке частенько сливается в жутчайшую тормозню после недельного аптайма, да и VSCode как-то стабильностью не радует, но это частный случай, конечно. Потому так заинтересовали цифры

А про универсальность вы по-моему недопоняли — имеется ввиду универсальность для любой инкарнации Windows 10: от телефонов и IoT, до Xbox и десктопов. То есть одна аппка на любую Windows 10 среду. Universal Windows Platform. Сравнивать такую универсальность, на мой взгляд, на данный момент, не с чем особо… Андроид, возможно?
Для кроссплатформенности есть Xamarin — macOS-таки десктопная ось
Для линуксей и всяких Unity3D есть .NET Core, который, как правильно заметили ниже, очень близок к UWP. Нам, по-крайне мере, в проектах неплохо получается шарить очень много кода между WPF, Xamarin и и UWP. В принципе, большая часть логики подходит всему (про дотнет отлично здесь расписано (частенько всем подкидываю) — http://www.hanselman.com/blog/WhatNETDevelopersOughtToKnowToStartIn2017.aspx)

UWP и WPF, конечно, прожорливей веба.
И про типизацию, пожалуй, соглашусь. Но это плата за отделение View'ов от логики, которую мы с радостью платим.
А остальное, по ощущениям, основывается у вас либо на опыте с WPF и Silverlight'ом трехлетней давности (там все уже совсем не так плохо и с каждой новой студией становится лучше и лучше), либо на точно таком же новомодном хайпе о реактивности и иммьютабл вьювов, то есть, холиварной теме

да вроде как на маке какие то проблемы с самим хромиумом, по крайней мере очень много issues именно для макоси.


Не, я понимаю что они имели сказать под U. Но тут поинт в том, что майкрософтские телефоны, иксбоксы и железки никому нафик не нужны, их и доля на рынке изначально мизерна и постоянно уменьшается. то есть универсальность у них сводится к десктопной W10, что конечно есть обман чистой воды. Такой банальный комерческий булшэт, которым майкрософтцы постоянно злоупотребляют.


Тут вы меня удивили, я то думал хамарин только про mobile. в любом случае под десктоп это какая-то маргинальная экзотика пока что


Так и я тоже шарю, чего уж. Отсюда и негативные впечатления от опыта с UWP. Там, где у меня перформанс упирался в дно на WPF (и приходилось даунгрейдится в winforms/MFC), там же он упирается на UWP в то же дно.


Силверлайт ушёл в небытие уже боле чем три года тому. А WPF разве что то поменялось за это время? Что там становится лучше, я например в упор не вижу. Оптимизация отрисовки через DirectX как была хуже некуда так и осталась ( https://jeremiahmorrill.wordpress.com/2011/02/14/a-critical-deep-dive-into-the-wpf-rendering-system/ ), memory leaks при разворачивании темплейтов в хамл тоже на месте.


Ну как на хайпе, если я регулярно в рамках борьбы с тормознутостью WPF залажу внутрь её компонентов и наблюдаю там тяжёлые вычисления, тупо повторяющиеся многократно в пределах одной итерации отрисовки? Реактивность — это отнюдь не блажь)


про саппорт net core я пока не понел вообще в чём прикол. Что это даёт, если тулинг там пока ещё на уровне пререлизов и сам net core в новорождённом состоянии? и вообще не понятно что там будет поддерживаться в будущем. К примеру F#-пные сборки под net core UWP отказывается линковать

У вас явно проблемы с проектированием интерфейсов или их реализацией, раз вы всё время куда-то упираетесь. Про виртуализацию списков, асинхронность, x:Bind что-нибудь слышали? Даунгрейдьтесь в дос, чего уж там.

Да, майкрософт непогрешим, их архитектурные решения идеальны, а если что-то пошло не так, разбей зеркало, алилуйа!


Про виртуализацию списков, асинхронность, x:Bind что-нибудь слышали?

что именно даёт вам основание полагать будто бы не слышал кроме спеси?


Даунгрейдьтесь в дос, чего уж там.

обоснуйте

Чтобы упереться в перфоманс нужны тысячи элементов на экране. По моему опыту это могут дать только списки со сложными шаблонами и без виртуализации. Ну или совсем уж кривая верстка с кучами наслоений. Уменьшить пожирание памяти позволяют как раз таки компилируемые байндинги. Покажите пример, который расставит все по местам. Пока я вижу лишь брызганье слюной. Про выстреливший электрон вообще смешно читать. Он выстрелил не больше чем Adobe Air в свое время. Это ваше заявление, кстати, иллюстрирует как минимум вашу профдеформацию, а как максимум — некомпетентность.
Чтобы упереться в перфоманс нужны тысячи элементов на экране

Да-да. Именно так всё и происходит в глазах хипстоты. А чего не 500 или не 100500? Ну и где ваши цифры, отражающие, что именно вы в данном случае понимаете под критической производительностью?


Покажите пример, который расставит все по местам.

VS2010+, MS Oficce


Пока я вижу лишь брызганье слюной.

так и я от вас ничего не вижу кроме раздутого ЧСВ и агрессии


Он выстрелил не больше чем Adobe Air в свое время.

Мы с вами видимо в разных параллельных вселенных живём. В моей на Adobe Air не написана ни одна IDE

У рефита есть одна странная, но серьезная проблема. Во-первых он не работает искаропки с queryStrings, а во-вторых он урлэнкодит гет-параметры и с этим походу ничего не сделать. Там где надо &param=blabla он заменяет на "%**", который сервер, к сожалению не может распознать. Да, возможно это проблема сервера, но гибкости в клиенте мне не хватило. Ковырялся несколько дней и вернулся на рестшарп.
Спасибо. Я в свое время поигрался. Проблем не было.
По сути UWP тот же .NET, но с некоторыми ограничениями. Это как минус привычному для разработчиков функционалу, так и плюс безопасности и масштабируемости. Зато платформа определенно гораздо более современна и близка кроссплатформенной .NET Core.
плюс безопасности и масштабируемости

в чём именно проявляется этот плюс?


близка кроссплатформенной .NET Core.

на основании чего вы пришли к такому выводу?

1. Попробуйте получить из приложения UWP доступ к системным файлам. Да к любым файлам на диске, которые не выбраны пользователем лично и не относятся с самому приложению.

2. Обратите внимание на пакет Microsoft.NETCore.UniversalWindowsPlatform который устанавливается автоматически с каждым приложением.
ну так uwp с большого .net на .net core перевели уже
http://ru.stackoverflow.com/questions/514358/%d0%92-%d1%87%d0%b5%d0%bc-%d1%80%d0%b0%d0%b7%d0%bd%d0%b8%d1%86%d0%b0-%d0%bc%d0%b5%d0%b6%d0%b4%d1%83-netframework-%d0%b8-netcore/592758#592758

Наконец, .NET Core — это нижележащая инфраструктура, от которой зависит .NET Native. Когда проектировали .NET Native, стало понятно, что .NET Framework не подойдет в качестве фундамента для библиотек классов этой инфраструктуры. Дело в том, что .NET Native статически связывает инфраструктуру с приложением, а затем удаляет все лишнее, что не нужно приложению. (Здесь я сильно упрощаю общую картину, но идею вы уловили. Подробнее на эту тему см. «Inside .NET Native» по ссылке bit.ly/1UR7ChW.)

И в чём тут цимес? что здесь есть по вашему полезного или познавательного чтобы вчитываться в приведенный вами бойлерплейт с унылыми конфигами?


Напрямую данные получить нельзя. Работа с базами данных у UWP приложений требует настроенного REST сервиса.

Кто вам такое сказал? Элементарно можно получить без WCF, Azure и прочих костылей .

Расскажите как, а лучше статью напишите.
https://marketplace.visualstudio.com/items?itemName=FrankTvandeVen.VenturaSqlServerforWindows10UWPApps и не мучайтесь.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.