English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
.NET
Colin Fahey

1. Definição de .NET

O termo refere-se ao seguinte “.NET” coleção de tecnologias:
(1) Framework Class Library (FCL)
(2) Intermediate Language (IL)
(3) Common Language Runtime (CLR)

1.1 Framework Class Library (FCL)

O Framework Class Library (FCL) é um extenso conjunto de classes para apoiar:
* Contentores (Array, String, List, ...)
* Multithreading (threads, thread pools)
* Redes (sockets, protocolos, clientes, servidores)
* Arquivo operações
* Dados córregos
* Parsing (expressões regulares, XML manipulação)
* Operações matemáticas
* Excepção manipulação
* Língua características (reflexão, stack trace, código dinâmico)
O Framework Class Library (FCL) é aplicado para as mais diversas plataformas ( Windows, Linux, MacOS, ...  ).
Assim, um único programa que usa o Framework Class Library (FCL) pode ser desenvolvida sem grandes conhecimentos sobre as diferenças entre as plataformas alvo.
O Framework Class Library (FCL) contém modelos de utilidade conceitos fundamentais de ciências da computação (tais como “rosca, socket, fluxo,” etc.)
Em certo sentido, o Framework Class Library (FCL) dá a cada um apoiou sistema operacional moderno, de alto nível, consistente programação interface.
O Framework Class Library (FCL) é um dos mais avançados, abrangente, de modo uniforme-concebidos, bem documentada coleções de funções e de tipos de dados disponíveis para programadores.
Infelizmente, os seguintes aspectos multimídia não são parte do Framework Class Library (FCL): gravação áudio, a reprodução de áudio, vídeo-gravação, reprodução vídeo, renderização 3D, joystick de entrada, dispositivos ( CD/DVD, ...  ) controle, etc
Microsoft tem um .NET versão do DirectX bibliotecas para Windows seu sistema operacional.
Não há C# envoltórios para OpenGL, OpenAL, GLUT, SDL, etc, mas esse não é tão conveniente como tendo essas funções multimédia, ser incluídos no núcleo Framework Class Library (FCL) e incluídos no utilizador final, “em tempo de execução” bibliotecas.
Um dos problemas do desenvolvimento de programas que usam bibliotecas especial é o facto de a intenção de definir os utilizadores finais, será necessário o apoio ao selecionado bibliotecas.
Caso não seja conveniente fazer o download e instalar bibliotecas necessárias, um fim-usuário pode optar por não utilizar um programa que exija essas bibliotecas.
Um utilizador final, também poderia ser relutantes em aguardar uma biblioteca on-line para fazer o download a partir de uma localização.
Se um programa exige um desenvolvedor de usuários finais de encontrar, adquirir e instalar bibliotecas, todos sem o apoio de um programa em particular, então o usuário final possa optar por não usar o programa.
Por exemplo, muitos projetos de código aberto exigem os utilizadores finais de encontrar, fazer download e instalar, muitas bibliotecas de diversos outros projetos de código-fonte aberto (exemplos: openssl, zlib, libpng, libjpg, glut, ...), o que é tempo - consumir, complicado, frustrante, e poderá resultar na escolha dos utilizadores finais para a procura de programas alternativos ou de produtos.
O serviço “Windows Update” aparentemente ajuda a implantar 1.1 versão do .NET run-time Windows bibliotecas para os usuários.
Estes run-time bibliotecas estão incluídas Windows XP com o sistema operacional.
Por isso, a criação de Windows programas que exigem .NET 1.1 parece muito razoável.
Além disso, o tempo de execução para bibliotecas Microsoft's implementações do .NET Framework Class Library (FCL) pode ser livremente redistribuído, de modo que os desenvolvedores podem fornecer essas bibliotecas para os usuários finais que já não tem as bibliotecas.
O Windows Vista navios com o sistema operacional em tempo de execução .NET 3.0 bibliotecas (uma combinação dos .NET Framework Class Libraries e várias novas bibliotecas como a “Windows Presentation Foundation” (WPF)).
Por isso, implantar .NET 2.0 e .NET 3.0 programas para Windows Vista não exige a instaladores para o .NET run-time bibliotecas.

1.2 Intermediate Language (IL)

O Intermediate Language (IL) é um pequeno conjunto de simples, independente de processador, operando-sistema independente de instruções que são suficientes para expressar completamente as estruturas de dados e de muitas funções diferentes linguagens de alto nível programação ( C++, C#, F#, Visual Basic, Java, Ocaml, ...  ).
O código fonte escrito em uma linguagem de alto nível pode ser compilado para baixo para uma “Intermediate Language” formulário correspondente.
Código “Intermediate Language” em um formulário pode ser facilmente combinado com outro código de uma forma “Intermediate Language”.
Um programa de computador (também chamado “de software)” pode incluir código fonte escrito em várias linguagens de alto nível (por exemplo, C#, C++, e Visual Basic).
Todos código-fonte pode ser compilado (convertidos) para um formato “Intermediate Language” para permitir a fácil conjugação com outros código compilado.
Programas no “Intermediate Language” uma forma geralmente é convertida em máquina de instruções específicas (por exemplo, CPU instruções) muito pouco antes da execução (por exemplo, “Just-In-Time” (JIT) conversão de IL a CPU instruções).
Mas um programa também pode ser executado no contexto de uma Virtual Machine (VM) visa interpretar Intermediate Language (IL) instruções.
Código escrito em várias línguas ( C#, F#, Ocaml, C++, Visual Basic, ...  ) de alto nível, pode ser compilado para Intermediate Language (IL) forma apropriada utilizando um compilador em qualquer plataforma suportada ( Windows, Linux, MacOS X, ...  ), eo arquivo resultante, com embutidos Intermediate Language (IL) código, é independente de plataforma e podem executar em qualquer plataforma com um implementação do .NET Common Language Runtime (CLR).
O Intermediate Language (IL) código gerado pelo compilador é essencialmente independente da plataforma em que o compilador foi executada.

1.3 Common Language Runtime (CLR)

O Common Language Runtime (CLR) é o mecanismo responsável pela execução do código apresentado em Intermediate Language (IL) formulário.
O Common Language Runtime (CLR) oferece diversos serviços.
O Common Language Runtime (CLR) maio converter Intermediate Language (IL) código de instruções que são nativos para a plataforma (por exemplo, CPU instruções).
A conversão a partir do Intermediate Language (IL) a específico de plataforma (por exemplo, CPU-específico) instruções pode acontecer antes de qualquer execução (ou seja, uma “Ahead-Of-Time” (AOT) conversão), ou pode acontecer de forma gradual, como o programa executa (ou seja, “Just-In-Time” (JIT) conversão) .
O Just-In-Time (JIT) conversão pode usar estatísticas sobre o programa evolutivo de execução dinamicamente convertidos otimizar o código (exemplo: identificação freqüentemente utilizada-loops e ramos, e otimizando-os de acordo com o comportamento observado (que depende de si próprio dados atuais e eventos)).
O Common Language Runtime (CLR) gere atribuídos em nome da memória do programa.
Por isso, o CLR garante que o programa não deixará de acesso atribuídos memória enquanto referências a essa memória persistir, memória e assegura que as dotações são canceladas, e que a memória está disponível novamente para as futuras atribuições após o programa dispõe de todas as referências a tais atribuições .
O Common Language Runtime (CLR) detecta quando o programa já não tem uma referência a uma alocação de memória, a memória ea atribuição está marcado para deallocation.
O Common Language Runtime (CLR) usa qualquer de uma variedade de “coleta seletiva de lixo” algoritmos (exemplo: “mark-and-sweep”) para identificar e recuperar blocos de memória não pode mais ser acessada por um programa.
O programa se encarrega Common Language Runtime (CLR) excepções.
O Common Language Runtime (CLR) aplica políticas de segurança.
O Common Language Runtime (CLR) usa o “P/Invoke” mecanismo específico de plataforma para carregar as bibliotecas e invocar (chamada) funções dentro dessas bibliotecas.

2. .NET ( FCL, IL, CLR ) implementações por Microsoft

2.1 Introdução

O .NET paradigma ( FCL, IL, CLR ) foi aplicada por Microsoft.
A última versão, “3.0”, foi libertado em 2006.10.
.NET 3.0 é composto dos .NET 2.0 Framework Class Libraries e várias novas bibliotecas, tais como a “Windows Presentation Foundation” (WPF) associados à “Silverlight” (anteriormente WPF/E, anteriormente Sparkle, ...) browser plugin para Firefox e Internet Explorer.
Microsoft divide o .NET 2.0 software em diferentes para dois pacotes:
(1) .NET Framework Version 2.0 Redistributable Package
O pacote redistribuível é exigido dos utilizadores finais a executar programas construídos para o .NET paradigma.  Este pacote deve também ser instalado por desenvolvedores antes de instalar e usar o .NET Software Development Kit (SDK) abaixo mencionados.
(2) .NET Framework Version 2.0 Software Development Kit
(SDK) kit de desenvolvimento de software é exigido por desenvolvedores de código fonte para compilar C# programa Intermediate Language (IL) arquivos.
Este pacote contém diversos instrumentos de desenvolvimento e de documentação.

2.2 .NET Framework Version 2.0 Redistributable Package

O pacote redistribuível é exigido dos utilizadores finais a executar programas construídos para o .NET paradigma.
Este pacote deve também ser instalado por desenvolvedores antes de instalar e usar o .NET Software Development Kit (SDK) abaixo mencionados.
A seguinte página Internet é o principal .NET download página:
http://msdn.microsoft.com/netframework/downloads/updates/default.aspx
A seção denominada “.NET Framework Version 2.0 Redistributable Package” tem ligações para hardware três plataformas: “Download x86 version”, “Download x64 version”, “Download IA64 version”.
Por exemplo, na sequência da ligação “Download x86 version”, leva a uma página intitulada “Microsoft .NET Framework Version 2.0 Redistributable Package (x86)”
(Nome do arquivo: dotnetfx.exe; Versão: RC1; Data de Publicação: 3/22/2006; Idioma: Inglês; Tamanho da Transferência: 22.4 MB)
Localmente versão em cache (somente para referência; potencialmente obsoletos):
microsoft_dot_net_runtime_libraries_v2_0.exe
.NET Framework Version 2.0 Redistributable Package
23510720 bytes
MD5: 93a13358898a54643adbca67d1533462
(O nome do arquivo tenha sido alterado aqui a partir do nome do arquivo original “dotnetfx.exe” para evitar confundir-lo com a versão 1.1 instalador também chamado “dotnetfx.exe”.)

2.3 .NET Framework Version 2.0 Software Development Kit (SDK)

(SDK) kit de desenvolvimento de software é exigido por desenvolvedores de código fonte para compilar C# programa Intermediate Language (IL) arquivos.
Este pacote contém diversos instrumentos de desenvolvimento e de documentação.
A seguinte página Internet é o principal .NET download página:
http://msdn.microsoft.com/netframework/downloads/updates/default.aspx
A seção denominada “.NET Framework Version 2.0 Software Development Kit” tem ligações para hardware três plataformas: “Download x86 version”, “Download x64 version”, “Download IA64 version”.
Por exemplo, na sequência da ligação “Download x86 version”, leva a uma página intitulada “.NET Framework 2.0 Software Development Kit (SDK) (x86)”
(Nome do arquivo: setup.exe; Versão: 2.0; Data de Publicação: 11/7/2005; Idioma: Inglês; Tamanho da Transferência: 354.0 MB)
Localmente versão em cache (somente para referência; potencialmente obsoletos):
microsoft_dot_net_sdk_v2_0.exe
.NET Framework Version 2.0 Software Development Kit (SDK) (x86)
371230904 bytes
MD5: 1a52cb6000c4390b6265671e031f9d64
(O nome do arquivo tenha sido alterado aqui a partir do nome do arquivo original “setup.exe” para evitar a confusão com ela todos os outros arquivos de instalação denominada “setup.exe”.)

3. Microsoft Visual C#: um programa Integrated Development Environment (IDE)

3.1 Introdução

Integrated Development Environment (IDE) um programa que permite um desenvolvedor de editar o código fonte e executar várias ferramentas (exemplos: compilador, depurador, ...) dentro do contexto de um único e unificador programa, cheio de indicações úteis visual e controles.
“Microsoft Visual C# 2005 Express Edition” é um não-custo (sem pagamento obrigatório) IDE disponível para download a partir de Microsoft.
Para banco de dados não-desenvolvimento, é quase impossível distinguir este custo não-produto de venda a retalho homólogo, “Microsoft Visual C# 2005”.
Eu uso com freqüência ambos os produtos, profissionais e de lazer, e eu ainda não tenha notado nenhuma diferença prática entre os produtos.
microsoft_vcsharp_2005_express_ide.gif

3.2 Jornal Links

O sítio Internet da página principal:
http://msdn.microsoft.com/vstudio/express
A página em matéria “Visual C# Express Edition”:
http://msdn.microsoft.com/vstudio/express/visualcsharp
“Download Now” Clique no botão do lado direito da página, para escolher uma opção download.
(Um método é o de lançar um programa instalador que irá fazer o download de ficheiros do Microsoft durante cada instalação.
Um segundo método é o download de uma imagem completa CD-ROM “ISO”, que permite a futura instalação off-line.
O ISO imagem, “VCS.iso” (451,837,952 bytes; CRC 55884F2C) para 32-bit x86 Inglês, pode ser queimado para um CD-ROM usando “Nero 7 Ultra”, por exemplo.  )

4. .NET ( FCL, IL, CLR ) execução pela Mono Project

4.1 Introdução

O .NET paradigma ( FCL, IL, CLR ) foi implementada pelos participantes em um grupo conhecido como o Mono Project.

4.2 Jornal Links

Projeto site:
http://www.mono-project.com
Software download página:
http://www.mono-project.com/Downloads

4.3 Localmente versão em cache

Localmente versão em cache do instalador (apenas para referência; potencialmente obsoletos):
mono-1.2.4-gtksharp-2.8.3-win32-3.exe
Mono 1.2.4 with Gtk# 2.8.3 Installer for Windows 2000 and above
51323790 bytes
MD5: 95cbd476c0555a9a40f47e58e2283cbe

4.4 .NET 2.0 desenvolvimento com Mono

O “mcs” compilador, e da documentação, como 2006 de novembro, na sua maioria dizem respeito a C# 1.0 e FCL 1.1.
No entanto, o “mcs” compilador é capaz de compilar C# 2.0 código que não contém genéricos, com base em características genéricas, mas limita o API a 1.0.
Para fazer C# 2.0 pleno desenvolvimento, com FCL 2.0 bibliotecas, “gmcs” usar o compilador.
Consulte a página a seguir sobre a Mono site:
http://www.mono-project.com/CSharp_Compiler

5. SharpDevelop: uma de fonte aberta Integrated Development Environment (IDE) programa

5.1 Introdução

Um Integrated Development Environment (IDE) programa permite que um desenvolvedor de editar o código fonte e executar várias ferramentas (exemplos: compilador, depurador, ...) dentro do contexto de um único e unificador programa, cheio de indicações úteis visual e controles.
SharpDevelop é uma excelente e de código aberto IDE programa para C# / .NET desenvolvimento.
Este IDE perto assemelha a Microsoft Visual C# IDE, e, em certos aspectos, a SharpDevelop IDE tenha melhorado a partir da Microsoft produto.
No entanto, Microsoft Visual C# tem algumas características (por exemplo: depuração) SharpDevelop que o programa não tem (no momento da redação deste texto).
sharp_develop_2_ide.gif

5.2 Jornal Links

O sítio Internet simples página principal:
http://www.sharpdevelop.com
A página em matéria “The Open Source Development Environment for .NET”:
http://www.sharpdevelop.com/OpenSource/SD/Default.aspx
O download de página, que tem detalhes sobre o 1.1 e 2.0 versões de SharpDevelop:
http://www.sharpdevelop.com/OpenSource/SD/Download

5.3 Localmente versão em cache

Localmente versão em cache do instalador (apenas para referência; potencialmente obsoletos):
SharpDevelop2_2.0.1.1710_Setup.exe
SharpDevelop2 (2.0.1.1710)
4338287 bytes
MD5: 6626832c202a6c25a399c9e9081f20d4

6. Útil C# / .NET / IL ferramentas

6.1 SciTech Software “.NET Memory Profiler”

dot_net_memory_profiler_graph.gif
dot_net_memory_profiler_table.gif
Isto mostra a memória profiler atribuições, e de outros recursos atribuições, de que um programa compilado .NET ou montagem ao mesmo tempo torna a execução.
O gráfico em tempo real permite que uma pessoa a ver, em pormenor, o modo como as acções do programa (como as acções desencadeadas por informações fornecidas pelo usuário ou outras manifestações) afetam alocação de memória e coleta seletiva de lixo.
O tempo real tabela lista permite visualizar uma pessoa para saber detalhes sobre as alocações de memória.
Este profiler instantaneamente, e de forma dramática, revelou um desperdício na utilização de memória em tempo real Direct3D programa eu tinha desenvolvido.
Um padrão de rampas para cima e de forma inesperada gotas (devido a “coleta seletiva de lixo),” no uso da memória do gráficos com períodos de correspondência perfeita, muito breve pausa-no meu programa de desenho em 3D.
O profiler me permitiram descobrir que frequente atribuição de objetos temporários foi acumulando uma grande quantidade de memória, desencadeando coleta seletiva de lixo com freqüência, e tendo tempo suficiente para cada coleta seletiva de lixo para causar alguns períodos desenho a ser perdida.
O profiler da tabela de tempo-real atribuídos objeto tipos revelou os tipos de objectos que consumiu a maior parte memória, e que verbas consumidas em memória a taxa mais alta (bytes por segundo), e que tinha o mais alto atribuições taxa de eliminação.
Estudar os gráficos em tempo real, e em tempo real de tabelas, permitiu-me a concentrar-se em estudar a maneira pela qual certos tipos de dados estavam sendo usados no meu código.
Modificando código para evitar frequentes atribuições temporárias de objetos pode reduzir muito a taxa global de alocação de memória e de eliminação, e pode, portanto, reduzir a freqüência de coleta seletiva de lixo desencadeamento.
(Penso “Bytes/sec” é uma estatística muito revelador de memória em tempo real de uso, para além de “Live instances”.
) Diante de todas essas sendo atualizada muito rapidamente em um formato de tabela, e ser capaz de escolher o modo como as linhas são ordenadas, e alterar o parâmetro triagem, a qualquer momento, torna a experiência de estudar em tempo real de um programa muito atraente e informativo.
Memória atribuição respostas a interação do usuário com um programa em execução podem ser estudadas, e os testes podem adaptar rapidamente ao feedback para limitar o aspecto mais interessante.
http://memprofiler.com/download.aspx
(Por exemplo, a versão 2006 July teve os seguintes atributos: versão 2.6.89; 4.3 MB; USA $127.00; Download 14-dia-limite versão, sem nenhum custo, para a avaliação.)

6.2 FxCop: .NET código analisador / crítico

FxCop analisa .NET compilado um programa (ou compilados montagem) e gera um relatório listagem eventuais problemas com o código fonte original.
Possíveis problemas de performance e segurança sejam identificados problemas.
Codificação convenção são possíveis violações identificadas.
FxCop não requer acesso ao código fonte original para realizar a análise.
Apenas o programa compilado .NET (que contém IL) é necessária.
No entanto, o relatório oferece FxCop hyperlinks para os números de linha específica no código fonte original.
Se o Microsoft Visual C# 2005 IDE está ativa, clicando no hyperlink no FxCop relatório irá provocar a IDE a teia relevantes para o arquivo fonte eo número da linha.
FxCop tem, na minha opinião, um pouco estranha forma de integração com o Microsoft Visual C# 2005 IDE.
No entanto, uma vez que é criado, FxCop produz uma muito interessante-e potencialmente valioso relatório.
O relatório contém informação detalhada sobre a forma de melhorar o código fonte original.
Penso que é útil para analisar um programa usando FxCop numa base periódica.
Eu não ficaria surpreso se alguns projectos de desenvolvimento de software ou de empresas exigido código escrito por todos os desenvolvedores de rendimento nenhum aviso ou críticas por FxCop.
As regras podem ser acrescentadas ou retiradas da FxCop banco de dados, de acordo com as necessidades.
FxCop é um open-source, programa gratuito.
http://www.gotdotnet.com/team/fxcop

6.3 “Reflector for .NET”: decompiler / Analyzer

De Lutz Roeder's sítio Internet:
"Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL."
“Reflector” pode ajudar uma pessoa estudar como bibliotecas de terceiros são escritos.
Às vezes, seria muito útil saber exactamente como um método é aplicado em uma montagem.
Se um método comporta em uma misteriosa forma inesperada ou, então “Reflector” pode ser usado para ver a execução.
Ao vermos a implementação, o programador pode trabalhar em torno de problemas causados por métodos específicos implementações de biblioteca.
Um amigo me contou que ele ajudou “Reflector” saber mais sobre o comportamento de mal-documentado métodos Microsoft na execução do Framework Class Libraries (FCL).
“Reflector” poderia ser útil quando a documentação para uma biblioteca método consiste em apenas algumas palavras, como “estabelece o valor” ou “evento manipulador.”
Se uma biblioteca electrónica invocação está na falta de uma razão desconhecida (quando todos os parâmetros parecem válidos) e, em seguida, usando “Reflector” de olhar para a execução da função da biblioteca possa revelar o motivo do fracasso.
“Reflector” realiza cerca “de engenharia reversa” de um programa .NET ou montagem.
Outros serviços de utilidade pública, incluindo possivelmente “Reflector” si só, pode gerar código fonte para programas ou assembléias obfuscated construída baseada em código fonte.
Isto é, obviamente, uma fonte de preocupação para alguns programadores e seus investidores.
http://www.aisto.com/roeder/dotnet
(2006 July: Reflector.zip versão foi 4.2.45.0)

7. Internet fóruns de discussão

Google pesquisar é a melhor maneira de encontrar respostas a perguntas específicas sobre qualquer assunto, mas os sites abaixo repetidamente aparecer nos resultados de pesquisa para C# e .NET perguntas.
Os sites abaixo são fantásticos para explorar as muitas coisas que as pessoas tenham feito arrefecer a C# e .NET.
“The Code Project” site possui milhares de artigos interessantes e úteis, por C#, C++, e de outras línguas e de programação paradigmas.
http://www.codeproject.com
“MSDN Code Gallery” O site tem muitos artigos interessantes e relacionadas com o código amostras Microsoft tecnologias.
http://code.msdn.microsoft.com
Outros sites relacionados com a Internet C# e .NET:
http://www.c-sharpcorner.com
http://www.dotnetfun.com
http://www.programmersheaven.com

8. Notas gerais

8.1 Plataforma independência

O Intermediate Language (IL), como Java “byte código,” é plataforma independente.
Qualquer .NET-compliant compilador irá gerar plataforma independente Intermediate Language (IL) código para formar programas ou assembléias.
Programas embalado como executáveis (“*.exe” arquivos) deve ter algum código dependente de plataforma específica para um sistema operacional, com a finalidade de ser devidamente interpretados e lançado como software executável, no contexto de um determinado sistema operacional.
No entanto, os nativos parte do software executável arquivo só serve para invocar o .NET CLR motor, a apresentação do IL código contido dentro do arquivo de software para a execução pela CLR motor.
Microsoft oferece uma implementação do .NET utilitários (compilador, ...), e de uma implementação do Framework Class Library (FCL), só para o Windows sistema operacional.
O Mono Project oferece implementações do .NET utilitários (compilador, ...), e implementações do Framework Class Library (FCL), para os seguintes sistemas operacionais: Windows, Linux, MacOS X, e BSD.

8.2 Velocidade comparada com non-CLR C / C++

O Common Language Runtime (CLR) aspecto da .NET é o contexto em que executa um programa C#.
O CLR realiza “coleta seletiva de lixo” e permite que programas de invocar em funções “não gerenciado” bibliotecas (de todas as bibliotecas não executadas em Intermediate Language (IL)).
Todas as funções faz mais do que pura matemática, pura manipulação corda, ou pura memória cópia, irá chamar funções nas bibliotecas “não gerenciado.”
Todas as operações arquivo, socket operações, desenho operações, operações de entrada (mouse, teclado), operações de saída (console), plataforma thread operações de precisão temporizador operações, janelas operações, etc, irá chamar funções nas “bibliotecas não gerenciado.”
Infelizmente, o mecanismo de invocar “não gerenciado” funções a partir do CLR requer uma quantidade significativa de tempo.
Por isso, a velocidade de um programa global de execução no contexto da CLR é noticably mais lento do que um programa que possa invocar “não gerenciado” funções diretamente.
Para determinados tipos de software, a velocidade pode ser importante.
Para determinados tipos de software, a velocidade pode fazer uma diferença importante na experiência subjetiva ou psicológica de uma pessoa que utiliza o software.
Para determinados tipos de software, a velocidade pode fazer a diferença entre conseguir um objetivo e de fracasso.
Multithreading, aumentando CPU velocidades, e melhorias para a CLR código gerando facilidade, irá ajudar a execução de software no contexto da CLR executar mais rápido.
No entanto, qualquer código que executa fora do CLR, e invoca plataforma bibliotecas diretamente, irá inevitavelmente executar significativamente mais rápido do que o software que executa no contexto da CLR.
As garantias feitas pelo CLR a C# software, tais como a segurança colmatar o fosso entre código gerenciado e não gerenciado código, chega a um custo que não é provável que seja reduzida.
Por conseguinte, qualquer programa que é muito intenso plataforma (exemplos: simulação ou jogos em 3D, arquivos de processadores, servidor de rede, etc) é provável que a execução de uma ordem de grandeza fora dos CLR mais rápido do que quando executados no âmbito do CLR.
A diferença é enorme.
Além disso, qualquer programa que executa uma quantidade significativa de baixo nível de manipulação de dados irá executar significativamente mais rápido do que no exterior da CLR dentro do CLR.
Programas de execução no contexto da CLR executar rapidamente o suficiente para ser útil para muitos efeitos práticos.
Como aumentar CPU velocidades, e como melhor código leva vantagem dos múltiplos CPUs, executando programas no contexto da CLR vai poder ser utilizado para mais tarefas que exigem uma alta taxa de computação.
No entanto, no meio de 2008 a CLR ainda não é adequado para jogos 3D de qualquer sofisticação, muito agressivo, a menos que um esforço é feito para reduzir o número de chamadas para a função em 3D biblioteca (OpenGL ou Direct3D), possivelmente através de conceitos como “shader programas” e “exibir listas;” alguma coisa para reduzir o número de funções chamadas.
colinfahey.com
informações para contato
English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية