Сьогодні багато розробників пишуть код, який повинен виконуватися як Silverlight так і .Net Runtime'мамами. Гарним прикладом є перевірка даних, коли ви перевіряєте їх спочатку на стороні клієнта використовуючи Silverlight, а потім на боці сервера використовуючи .Net. До недавніх пір потрібно було компілювати один і той же код в збірки для різних runtime'мов (Silverlight і .Net). Ця модель працездатна, але не ідеальна!
Ми назвали цю нову можливість «можливістю портування збірок», яка дозволяє портувати вами написаний код між Silverlight і .Net, що дозволяє вам зібрати код в збірку за допомогою інструментів Silverlight, а потім використовувати тільки що зібрану збірку в обох runtime'ax.
Хочу звернути увагу, дана можливість не змінює основні механізми виконання коду в Silverlight і .Net runtime'ax! Якщо ви пишете код, який використовує спільні для двох runtime "мов API, то ви можете використовувати один і той же набір збірок для написання програм. Але як же дізнатися які з API загальні?
Ми встановили 5 ключових збірок, які портуються між Silverlight і .Net. (Silverlight UI звичайно ж не є портованим - існують принципові відмінності між механізмами Silverlight UI і WPF.)
Як завжди, ми стояли перед великим вибором який сценарій вибрати. У підсумку було прийнято рішення дозволити портувати збірки з Silverlight в .Net, а не навпаки. Мотивацією для такого рішення послужив факт того, що Silverlight реалізує підмножину збірок .Net і стає очевидно, що збірки використовує це підмножина будуть працювати і в .Net.
Іншим серйозним питанням було питання вибору збірок, які будуть безпечно працювати і в Silverlight і в .Net. Ми розглянули більшість сценаріїв, де може стати в нагоді портованість і вирішили почати з найголовніших. Як результат, для .Net 4 і Silverlight 4 ми вибрали тільки набір низько-рівневих збірок, які, ми думаємо, дозволять зробити вам різні цікаві сценарії.
Для SL 4 і .NET 4, ми зробили загальнодоступними:
- Mscorlib
- System
- Core
- ComponentModel.Composition
- VisualBasic
Приклад у Visual Studio 2010
Створюємо проект
Використовуємо збірку Silverlight в .Net
Хочу ще раз зазначити, що існує безліч типів в .Net, які як і раніше будуть не доступні