¿Por qué Windows Phone 7 no es totalmente compatible con la especificación C# cuando el único idioma disponible es C#? De acuerdo, puedo entender la falta de soporte "dinámico", pero ¿por qué no se admite la contracovarianza? ¿Por qué las bibliotecas de terceros que nos son familiares y las que utilizamos en los proyectos de escritorios de servidores no son compatibles con el teléfono 7? ¿Qué sentido tiene tener un código de IL intermedio si seguimos aquí?¿Por qué Windows Phone 7 no es totalmente compatible con la especificación C#?
Respuesta
Windows Phone 7 no es totalmente compatible con todas las características de .NET Framework a las que está acostumbrado porque está construido en Silverlight.
Silverlight fue diseñado para no admitir el conjunto completo de características, ya que está destinado a ser un tiempo de ejecución ligero (en lugar de requerir que cada usuario descargue todo el .NET Framework para ejecutar una aplicación de Silverlight).
Tenga en cuenta que se ejecuta en Compact Framework CLR, que no tiene todas las funciones del escritorio CLR.
EDITAR: Después de un poco de pesca de arrastre, encontré que generic variance isn't supported in the Compact Framework (o al menos no estaba en 2005, y sospecho que no se ha implementado ya que ha habido poco uso hasta hace muy poco):
No es compatible con los modificadores de varianza. Aunque la varianza/co-varianza forma parte de la especificación general de ECMA para genéricos, y se implementa para el .NET CLR completo, no se usa en la Biblioteca de clases base ni en C# y VB.
Bien, entonces no es "totalmente compatible" con C# 4 (la última versión), pero ¿conoce alguna característica del lenguaje C# 3 que no es compatible?
En términos de bibliotecas, se trata de un marco que se basa aproximadamente en Silverlight 3 pero con algunos Silverlight 4 bits, y con varios aspectos del "escritorio" Silverlight eliminado. (EDITAR: Según un enlace en los comentarios, debe contener todos de las API de Silverlight 3. No estoy seguro de si eso es correcto o no ...) En otras palabras, es su propia bestia, realmente. Aunque la propia IL puede ser portátil, es difícil garantizar la compatibilidad cuando se han eliminado varias API. Sin embargo, en muchos casos puede reconstruir las bibliotecas para apuntar a WP7. Estoy de acuerdo en que es molesto tener que hacerlo, pero es mejor que ellos no estar disponibles en absoluto.
EDIT: Las citas de mis reclamos que utiliza el CF CLR:
Windows Phone 7 Series Developer General FAQ:
¿Qué tecnologías y herramientas puedo utilizar para programa para Windows Phone 7 Series?
Actualmente puede utilizar el lenguaje administrado C# utilizando Silverlight y XNA en base a Compact Framework.¿Puedo usar Windows Forms?
No, Windows Forms no es compatible con la versión de Compact Framework incluida con Windows Phone 7 Series.
(y más adelante)
¿Puedo usar llamadas a las bibliotecas de XNA en Silverlight?
Silverlight y XNA comparten una base de código común en Compact Framework. Si una llamada no está basada en GUI, en la mayoría de los casos se puede compartir entre Silverlight y XNA.
Un CF team member's blog post:
Para los desarrolladores que vienen a Windows Phone 7 (WP7) desde el escritorio de Windows en primer lugar quisiera aclarar que el tiempo de ejecución (CLR) que se ejecuta en el WP7 no es lo mismo como el que se ejecuta en el escritorio. El tiempo de ejecución de WP7 se conoce como .NET Compact Framework (NETCF) y funciona de manera diferente que el "escritorio CLR".
y ¿qué pasa con libriries existentes y la presencia de IL? – sfedorov1982
Se ejecuta en Silverlight para Windows Phone, que no es ni CF ni Silverlight 3 o 4. Falta gran cantidad de funcionalidades que están presentes en .NET CF (estoy hablando principalmente de la biblioteca), por lo que llamarlo basado en CF es engañoso. –
@Eugene: El CLR es el Compact Framework CLR, en lugar del CoreCLR normal de Silverlight. Editaré para aclarar –
si está utilizando SL, ligarse a un servicio web, a continuación, puede (debe) mantener la aplicación móvil delgado y succionar la grasa en el servidor ...
suena simple sé, pero muchos píos TRATE de delegar todas las responsabilidades a la 'aplicación'; esta es una mala práctica. si su 'sitio web' cumple con REST, entonces debe alinear su aplicación para realizar simplemente llamadas json/xml a su 'costosa' lógica basada en el servidor.
de todos modos, así es como lo hacemos :)
Claro, pero ¿cómo se relaciona esto con el hecho de que la pregunta es sobre la implementación de C# en WinPhone? – ctacke
- 1. ¿Es compatible MD5 en Windows Phone 7?
- 2. NUnit con Windows Phone 7
- 3. ¿Windows Phone 8 es compatible con Qt?
- 4. Windows Phone 7 - Generador de iCal - C#
- 5. Windows Phone 7 botones
- 6. Windows Phone 7: SQLite
- 7. WCF + Windows Phone 7
- 8. Windows Phone 7 SDK
- 9. Windows phone 7 button "borders"
- 10. Windows Phone 7: ¿Tombstoning con URI?
- 11. ASCIIEncoding En Windows Phone 7
- 12. Problema con Windows Phone 7 scrollviewer
- 13. MessageBox.Show para Windows Phone 7
- 14. DataContractJsonSerializer en Windows Phone 7
- 15. Windows Phone 7 - Silverlight - Entrada táctil - TouchPoint.Size siempre es 1,1
- 16. App.config en Windows Phone 7?
- 17. Lista desplegable Windows Phone 7
- 18. Windows Series Phone 7 "Cloud"
- 19. Windows Phone 7 - SQLite con cifrado
- 20. Windows Phone 7 WebBrowserTask problem
- 21. ¿Cuál es la plataforma de desarrollo para Windows Phone 7
- 22. ¿Windows 7 realmente es compatible con el protocolo central SMB?
- 23. Windows phone 7 config/appSettings?
- 24. ¿Por qué C++ es compatible con C? ¿Por qué no hay algún lenguaje C++ "puro"?
- 25. posición: arreglado en Windows Phone 7
- 26. HttpUtility.UrlEncode en Windows Phone 7?
- 27. Desarrolle Windows Phone 7 en Windows XP
- 28. Windows 7 phone - close keyboard
- 29. ¿Por qué ninguna base de datos es totalmente compatible con los estándares ANSI o ISO SQL?
- 30. Buliding Windows Phone 7 proyectos en Windows Server 2008
El código IL bien podría ser compatible con el escritorio .NET, pero eso no importa si el código IL utiliza módulos que no están presentes en WM7. Personlly Creo que las bibliotecas desarrolladas para escritorio serían de uso limitado en WM7 ya que probablemente sean demasiado grandes y tengan mucha memoria. Estoy explorando el uso compartido de código entre escritorio y Silverlight utilizando referencias de origen en lugar de referencias binarias. De esa manera, uno también puede ajustar el tamaño. – FuleSnabel
FYI, C# es * no * el único idioma para WP7. Se admite VB http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/09/23/visual-basic-comes-to-windows-phone-7.aspx y se sabe que F # funciona (incluso si no explícitamente compatible) – ctacke