Windows 8 Runtime (WinRT / Windows Store / Windows 10 Universal App tətbiqləri) Silverlight və WPF ilə müqayisə necədir?

Metro stil tətbiqləri yaratmaq üçün istifadə edilən Windows 8 Runtime yeni versiyasını yerləşdirməyə çalışıram. XAML ilə istifadə edə biləcəyinizi bilirəm və bu .NET əsasında qurulmuşdur, belə ki, C # və VB.NET tətbiqləri yazmaq üçün istifadə oluna bilər, lakin sonra HTML, CSS, DOM və JavaScript ilə əlaqəli bir şeyə bənzəyir.

Kimsə bu bir neçə bənddə olduğunu izah edə bilərmi, bu mənada? .NET UI proqramçı anlaya bilər? (Bunu anlamaq üçün lazım olan "əsas" bir şey yoxdur).


Hamımız bilirik ki, WPF, Silverlight , Windows Forms və s. Windows 8 (və Windows 10) altında ən az Intel sistemində işləyəcək, buna görə də mənə bunu söyləməyin ...

342
14 сент. Ian Ringrose tərəfindən təyin edilən Sep 14 2011-09-14 16:08 '11 'də 16:08' da 2011-09-14 16:08
@ 5 cavab

Ən aşağı səviyyədə WinRT ABI səviyyəsində müəyyən olunan obyekt modelidir. Baza olaraq COM istifadə edir (hər bir WinRT obyekti IUnknown həyata keçirir və yenidən hesablama aparır) və oradan qurur. Çoxları birbaşa .NET-dən gələn köhnə COM ilə müqayisədə çox yeni anlayışlar əlavə edir - məsələn, WinRT obyekt modeli nümayəndələrə malikdir və hadisələr. NET-üslubunda icra olunur (nümayəndələri ilə birlikdə və abunə üsullarını əlavə edin ), amma köhnə COM-model mənbələri və hadisələrin batareyaları deyil. Digər əhəmiyyətli xüsusiyyətlərdən də WinRT parameterləşdirilmiş ("ümumi") interfeyslər də var.

Başqa bir böyük dəyişiklik, bütün WinRT komponentlərinin, meta verənin mövcud olduğu kimi, eyni zamanda .NET yığınlarıdır. COM-də, sözsüz ki, bu tipelib ilə var idi, lakin hər bir COM komponenti onları yox idi. WinRT üçün, metadata .winmd fayllarında saxlanılır - Preview Preview-də "C: \ Program Files (x86) \ Windows Kits \ 8.0 \ Windows Metadata \" daxilində baxın. Əgər siz cansıxıcı olsanız, həqiqətən kod olmayan CLI yığınları olduğunu görürsünüz, ancaq sadəcə metadata masaları. Onları ILDASM ilə aça bilərsiniz. Qeyd: Bu WinRT özünün idarə olunduğunu deyil, yalnız fayl formatını yenidən istifadə edir.

Sonra, bu obyekt modeli çərçivəsində WinRT interfeyslərini və siniflərini müəyyən edən bir neçə kitabxana tətbiq olunur. Yine, orada olanları görmək üçün yuxarıda göstərilən Windows Metadata qovluğuna baxın; və ya sadəcə VS-də Object Browser-i işə salın və çərçivə seçimində "Windows 8.0" seçin. Çox var və yalnız istifadəçi interfeysi ilə bağlı deyil - Windows.Data.Json və ya Windows.Graphics.Printing və ya Windows.Graphics.Printing kimi ad boşluqları da əldə edə bilərsiniz.

Daha sonra istifadəçi interfeysi ilə məşğul olan bir neçə kitabxananı alırsınız - əsasən bu Windows.UI və ya Windows.UI.Xaml altında müxtəlif adlar olacaq. Onların bir çoxu WPF / Silverlight adlarına çox oxşardır - məsələn, Windows.UI.Xaml.Controls yaxından System.Windows.Controls ; Windows.UI.Xaml.Documents , və s. üçün eyni

İndi. NET, WinRT komponentlərini birbaşa .NET kompilyatorları kimi səciyyələndirir. Bu, COM Interop-dan fərqli olaraq işləyir - interap yığınları kimi heç bir ara əsərlərə ehtiyacınız yoxdur, yalnız /r .winmd faylına sahibsiniz və onların metadata olan bütün növləri və onların üzvləri, obyektlər kimi, görünən kimi görünür WinRT kitabxanalarının özləri tamamilə doğma olduğuna diqqət yetirin (WinRT istifadə edən yerli C ++ proqramları CLR-ə ehtiyac duymur) - idarə olunan hər şeyi açan sehr CLR-nin özündədir və olduqca aşağı. İldasm sizə aid bir .NET proqramı istifadə edirsə .winmd, həqiqətən xarici bir qurğunun bir linki kimi göründüyünü görürsünüz - əlavələr növü yerləşdirmə kimi əl bacarıqları yoxdur.

Bu da sadə bir ekran deyil - CLR, mümkünsə, WinRT növlərini onların ekvivalentlərinə uyğunlaşdırmağa çalışır. Beləliklə, məsələn, GUID, tarix və URI- System.Uri müvafiq olaraq System.Guid , System.DateTimeSystem.Uri ; IIterable<T>IVector<T> kimi WinRT toplama interfeysləri IEnumerable<T>IList<T> ; və s. IEnumerable<T> tətbiq IEnumerable<T>IEnumerable<T> geri keçirən bir .NET obyekti varsa, bu hər iki istiqamətdə də olur, bu IIterable<T> kimi IIterable<T> .

Nəticədə, bu, .NET Metro tətbiqləriniz mövcud standart .NET kitabxanalarının, eləcə də (yerli) WinRT kitabxanalarının bir qisminə daxil olmaq deməkdir. Bunlardan bəziləri - xüsusilə Windows.UI - Silverlight API-yə çox oxşar görünür. Siz hələ də istifadəçi interfeyinizi müəyyən etmək üçün XAML-yə sahibsiniz və hələ də Silverlight ilə eyni əsas anlayışlarla məşğul olursınız - məlumatların bindings, resurslar, üslublar, şablonlar və s. Bir çox hallarda, sadəcə yeni ad boşluqlarını using və API-nin konfiqurasiya edilən kodunda bir neçə yer quraraq bir Silverlight tətbiqini köçürə bilərsiniz.

WinRT özünün HTML və CSS ilə heç bir əlaqəsi yoxdur və bu, yalnız .NET üçün olduğu kimi orada göstərildiyi mənada da JavaScript ilə bağlıdır. .NET Metro proqramında WinRT UI kitabxanalarından istifadə edərkən HTML / CSS / JS ilə məşğul olmalısınız (yaxşı düşünüyorsanız, bu, həqiqətən, bunu istəyirsinizsə, WebView nəzarətini yerləşdirə bilərsiniz ...). Bütün .NET və Silverlight bacarıqları bu proqramlaşdırma modelində çox vacibdir.

467
15 сент. Cavab Pavel Minaev tərəfindən 15 sentyabrda verilir . 2011-09-15 02:14 '11 saat 02:14 'da 2011-09-15 02:14

Açar sözləri yaratmaqdan :

2019

63
14 сент. RandomEngy tərəfindən verilmiş cavab 14 sentyabr 2011-09-14 20:03 '11 saat 20:03 'də 2011-09-14 20:03

Əsas fikir indi İnkişafın iki yolu - Desktop və Metro var.

  • Masaüstünde köhnə tətbiqlər var.
  • Yeni bir tətbiq sinfi, Metro tətbiqləri, VB.NET, C # və ya C ++ istifadə edərək, bir neçə yolla inşa edilə bilər. Bu üç dil variantları bir istifadəçi interfeysi yaratmaq üçün XAML istifadə edə bilər. Alternativ olaraq, UI kodunu və tətbiq kodunu inkişaf etdirmək üçün JavaScript / HTML5 / CSS-ni istifadə etməkdir.

Bəzi vacib məsələlər:

  • Windows 8 ölçeklenebilir mobil telefon OS kimi.
  • Metroda mobil telefonda olmadığı kimi üst səviyyəli bir pəncərələr də üst-üstə düşür. Bir MDI stil tətbiqindən istifadə etmək istəyirsinizsə, masaüstünüzdə qalmaq lazımdır.
  • Metro tərzi tətbiqləri görünməzsə avtomatik olaraq dayandırılır. Bu batareyanın ömrünü uzatmaq üçün edildi. Bunun anlamı, istifadəçinin onlarla qarşılıq verməsə də, arxa planı işləyən bir çox mövcud masa üstü tətbiq üçün Metroya köçürmək məntiqli deyil.
  • Windows 8-in ARM versiyası masaüstü proqramlarını dəstəkləməyəcək. Buna görə də, bir proqram yazmaq və istənilən Windows versiyası ilə işləmək istəyirsinizsə, bu Metro proqramı olmalıdır.
36
15 сент. cavabı dodgy_coder 15 sep verilir . 2011-09-15 08:52 '11 at 8:52 2011-09-15 08:52

Mimarlığın değiştirilmiş bir versiyası vardır ki, bu da şeylerin tam olaraq harada olduğunu anlamanıza kömək edəcəkdir. Telinik ninjalardan bir dənəsi komanda ilə danışdı

Burada CLR'nin dayanacağı yerləri görə bilərsiniz. .NET quruluşu artıq iki profilə malikdir

1- .NET Metro profili (CLR, Metro tətbiqi ilə işləyən)

2. NET İstemci Profili (C # ve VB.NET Uygulamaları üçün CLR Runtime)

Ümid edirəm bu daha aydın bir şəkil verir. Bad Picture- də tam məqaləni oxuyun, uzun müzakirələrə minlərlə dəyər verin. .

23
17 сент. cavab vendettamit 17 sep verildi . 2011-09-17 10:16 '11 at 10:16 'da 2011-09-17 10:16

Microsoft-un bir çox detalları burada .

Windows runtime API metadata (.winmd faylları) istifadə olunur. Bu,. NET platformasının (Ecma-335) istifadə etdiyi eyni formatdır. Əsas ikili müqavilə, Windows Runtime API'larına seçdiyiniz inkişaf dili ilə birbaşa əlaqə yaratmaq üçün asanlaşdırır. Windows Runtime API'larının forması və quruluşu C # kimi statik dillərdə və JavaScript kimi dinamik dillərdə başa düşülə bilər. IntelliSense JavaScript, C #, Visual Basic və C ++-da mövcuddur.

Bir sözlə, Windows Runtime Windows funksionallığını əks etdirən və JavaScript / C # / VB / C ++ üçün mövcud olan yeni bir kitabxana dəsti. Hər bir dil birbaşa zəng etmək və bir növ thunking qat keçmək deyil anlamaq və olmaq üçün yaradılmışdır.

Silverlight və WPF CLAM'da çalışan XAML tatlardır. Digər funksiyalar arasında, Windows Runtime Silverlight'a çox oxşar olan XAML versiyasını təqdim edir, lakin CLR vasitəsilə yox, öz növbəsində edir. Bu CLR-dən, həm də C ++-dan əldə edilə bilər.

16
15 сент. Cavab 15 sentyabrda Steve Rowe tərəfindən verilir . 2011-09-15 04:34 '11 'də 4:34' də 2011-09-15 04:34 'da

etiketləri haqqında digər suallar və ya bir sual