2010-09-29 3 views
5

Почему Windows Phone 7 полностью поддерживает спецификацию C#, когда единственным доступным для нее языком является C#? Хорошо, я могу понять отсутствие «динамической» поддержки, но почему не поддерживается противоречие? Почему нет сторонних библиотек, которые нам знакомы и что мы используем в проектах на сервере-рабочем столе, несовместимых с телефоном 7? Какой смысл иметь промежуточный код IL, если мы все еще здесь?Почему Windows Phone 7 не поддерживает спецификацию C#?

+1

код IL может также быть совместим с настольным .NET, но это не имеет значения, если код IL использует модули, которые не присутствуют на WM7. Personlly Я думаю, что библиотеки, разработанные для настольных компьютеров, будут иметь ограниченное использование на WM7, поскольку они, вероятно, слишком большие и голодные. Я изучаю обмен кода между настольным компьютером и silverlight, используя исходные ссылки вместо двоичных ссылок. Таким образом, можно также настроить размер. – FuleSnabel

+1

FYI, C# - * не * единственный язык для WP7. VB поддерживается http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/09/23/visual-basic-comes-to-windows-phone-7.aspx и F #, как известно, работает (даже если не явно поддерживается) – ctacke

ответ

6

Windows Phone 7 не поддерживает полностью все функции .NET Framework, к которым вы привыкли, поскольку он построен на Silverlight.

Silverlight был разработан, чтобы не поддерживать полный набор функций, поскольку он предназначен для легкой работы (вместо того, чтобы каждый пользователь загружал всю платформу .NET Framework для запуска приложения Silverlight).

9

Имейте в виду, что он работает на Compact Framework CLR, который не имеет всех функций настольной CLR.

EDIT: После небольшого траления я обнаружил, что generic variance isn't supported in the Compact Framework (или, по крайней мере, не был в 2005 году, и я подозреваю, что он не был реализован с тех пор, пока его совсем мало пользы до недавнего времени):

Нет поддержки модификаторов дисперсии. Хотя дисперсия/коразмерность является частью общей спецификации ECMA для дженериков и реализована для полной .NET CLR, она не используется в библиотеке базового класса, а также C# и VB.

Хорошо, поэтому он не «полностью поддерживает» C# 4 (абсолютно последняя версия), но знаете ли вы какие-либо функции языка C# 3, которые не поддерживаются?

С точки зрения библиотек, вы имеете дело с каркасом, который примерно основан на Silverlight 3, но с некоторыми четырьмя битами Silverlight и с различными аспектами «рабочего стола» Silverlight. (EDIT: Согласно ссылке в комментариях, она должна содержать всех API-интерфейсов Silverlight 3. Я не уверен, что это точно или нет ...) Другими словами, это его собственный зверь. Несмотря на то, что сам ИЛ может быть переносимым, трудно обеспечить гарантию совместимости при удалении различных API-интерфейсов. Однако во многих случаях вы можете перестраивать библиотеки для назначения WP7. Я согласен, что это надоедает, но это лучше, чем они вообще не доступны.

EDIT: Цитирование для моих требований, которые он использует CF CLR:

Windows Phone 7 Series Developer General FAQ:

Какие технологии и инструменты можно использовать для программы для Windows Phone 7 Series?
В настоящее время вы можете использовать управляемый язык C# с использованием Silverlight и XNA на основе Compact Framework.

Могу ли я использовать Windows Forms?
Нет, форматы Windows не поддерживаются в версии Compact Framework в комплекте с Windows Phone 7 Series.

(и позже)

Могу ли я использовать XNA библиотечные вызовы в Silverlight?
Silverlight и XNA имеют общую базу кода в Compact Framework. Если вызов не основан на графическом интерфейсе, в большинстве случаев он может использоваться совместно с Silverlight и XNA.

CF team member's blog post:

Для разработчиков, приезжающих в Windows Phone 7 (WP7) с рабочего стола Windows, позвольте мне пояснить, что среда выполнения (CLR), который работает на WP7 не то же самое как тот, который работает на рабочем столе. Рабочая среда WP7 известна как .NET Compact Framework (NETCF), и она работает иначе, чем «настольная CLR».

+0

, а как насчет существующих либрилей и явлений IL? – sfedorov1982

+3

Он работает на Silverlight для Windows Phone, который не является ни CF, ни Silverlight 3 или 4. Он пропускает много функциональности, которая присутствует в .NET CF (я говорю в основном о библиотеке), поэтому называть ее CF-based вводит в заблуждение. –

+1

@Eugene: CLR - это CLR Compact Framework, а не обычный CoreCLR Silverlight. Я отредактирую, чтобы уточнить. –

-1

если вы используете SL, ссылки на веб-сервис, то вы можете (должны) держать мобильное приложение тощим и сосать жир на сервере ...

звучит просто я знаю, но многое peeps TRY, чтобы делегировать все обязанности «приложению» - это плохая практика. если ваш «веб-сайт» соответствует требованиям REST, то вы должны выровнять свое приложение, чтобы просто вызвать вызовы json/xml для вашей «дорогой» серверной логики.

в любом случае, это, как мы делаем это :)

+2

Конечно, но как это связано с тем, что вопрос о реализации C# на WinPhone? – ctacke