Pular para o conteúdo principal

A triste história da compatibilidade das versões do ObjectARX do AutoCAD.

Como já se sabe todas as vezes que muda de versão o AutoCAD vem outra vez o transtorno de se modificar a versão da suas API's. Quando você tem poucas API's isso é até fácil mas a questão é: porque o AutoCAD já não faz-se sempre compatível?



Na verdade são duas compatibilidades: (1) com a versão do ObjectARX e a (2) do ObjectARX com a versão do .NET Framework!

Os aplicativos desenvolvidos usando API's do AutoCAD precisam ser testados (e muitas vezes adaptadas) para se certificar de que eles funcionam com uma nova versão da plataforma AutoCAD, já tive aplicativos bem sucessíveis migrando do 2009 para o 2010, por exemplo. Para várias gerações de AutoCAD eles "quebram" compatibilidade de aplicativos binário uma vez a cada três versões (historicamente isso aconteceu para o AutoCAD 2000, 2004 e agora 2007). Para fazer com que as aplicações funcionam em versões intermédias eles podem precisar de trabalho portabilidade menor para migrar o uso de configurações de registro de estar sob o local certo (por exemplo), segundo o pessoal da Autodesk eles fazem alguns testes para minimizar a nossa dor.

Além disso, aplicativos implementados utilizando diferentes APIs normalmente exigem diferentes esforços para portar de uma versão para outra. Geralmente os aplicativos LISP são bastante portátil entre os lançamentos (embora os nomes e localizações de arquivos de suporte podem mudar de tempos em tempos), assim como os clientes COM (como VBA e VB externo). Os aplicativos que usam a API gerenciado (C # ou VB.NET clientes) são um pouco mais portátil do que ObjectARX (C ++) aplicações, mas como a API gerenciada vem evoluindo rapidamente que até agora não cumpre essa compatibilidade (sendo a exceção entre AutoCAD 2005 e de 2006, que era de outra maneira um release compatível aplicação binário), para a frente eu esperaria ver mais estabilidade e solte-a versão de compatibilidade das API's com a versão do AutoCAD.

Arquitetonicamente aplicações ObjectARX estão mais próximos do núcleo do AutoCAD (em termos de sua aplicação), por isso é realmente para estes módulos que os desenvolvedores - seja interna ou externa para Autodesk - precisa gastar mais esforços de desenvolvimento quando a compatibilidade de aplicativos.

GANHAMOS EM VELOCIDADE MAS PERDEMOS EM COMPATIBILIDADE

Então, por que a Autodesk quebra a compatibilidade em tudo? Bem, existem algumas razões ...
  1. Às vezes, simplesmente desejo maquiavélico de atualizar classes de API, para adicionar novos métodos etc... Enquanto nós podemos adicionar métodos não-virtuais durante um lançamento API compatível, acrescentando métodos virtuais muda v-table e quebra a compatibilidade de um módulo.
    Isso é uma estratégia de mercado, se tem alguém montando em cima do AutoCAD muito comercialmente se quebra quando muda a versão do AutoCAD.
  2. Também é necessário arquitetura interna ou uso da tecnologia. Um exemplo disso é nossa grande uso de Unicode em AutoCAD 2007 Este é um profundo - e de grande alcance - alteração na forma como lida com AutoCAD sequências internamente e, portanto, tem impactado muitas assinaturas de função ObjectARX.
  3. Finalmente, também por aproveitar a tecnologia mais recente do compilador para construir AutoCAD. AutoCAD 2000-2002 foram construídas com Visual Studio 6, AutoCAD 2004-2006 foram construídos com o Visual Studio 2002 e AutoCAD 2007 foi construído com o Visual Studio 2005, é importante para nós para permanecer em uma versão do compilador com suporte, a fim de ser capaz para obter as questões críticas abordadas pela Microsoft, mas para além de que também nos fornece novas capacidades de desenvolvimento, tais como a possibilidade de fazer uso de WinForms em AutoCAD e expor a API gerenciada.
O terceiro ponto tem algumas sutilezas: a API C++ puro pode (em teoria) ser a versão independente, mas sempre que as classes C em tempo de execução ou MFC são usadas em assinaturas de função então você tornar-se mais intimamente ligada à versão específica do compilador usado para construir o provedor API (ou seja, AutoCAD). Então, enquanto os clientes de C ++ API's não precisam automaticamente usar a mesma versão do compilador como o provedor de API, as aplicações que utilizam ObjectARX têm essa exigência.... Isso é quase um tapa na cara de quem desenvolve usando o ObjectARX!!! Mas é verdade!

Então, por que ainda quebrar a compatibilidade cada lançamento? Por causa da dor sentida pelos nossos clientes, e por desenvolvedores. Não disponibilidade de aplicações para a liberação particular tem o potencial de impactar adoção desse lançamento, já que muitos clientes são dependentes uma aplicação independente para realizar seu trabalho. A manutenção de um-release 3 (que agora significa a 3 anos) janela dá aos desenvolvedores mais tempo para se concentrar na condução do valor do cliente através da implementação de melhorias graves aos seus aplicativos quando eles não estão se concentrando esforço de desenvolvimento em matéria de migração para suportar os requisitos básicos do novo plataforma.

Lembre-se que esses desenvolvedores são os "parceiros" oficiais da Autodesk não você que desenvolve independentemente que deve sempre correr atrás do prejuízo toda vez que uma versão nova do AutoCAD sem compatibilidade nenhuma é lançada.... Se não me engando, só para participar da ADN o "parceiro" deve desembolsar a bagatela de 12 mil dólares por ano para um suporte limitado. Aqui tem a tabela de preços.

Mas sabe como é... segundo o Kean Walmsley esse é o trabalho da DevTech, ajudar a minimizar a dor dos desenvolvedores em ambas as frentes, seja ao lidar com questões de migração ou ajudando a explicar as características adicionais e APIs disponíveis em uma nova versão de um dos produtos da Autodesk. Lembre-se por sem uma aplicvação muito grande em cima da plataforma do AutoCAD não só nós aqui fora e os parceiros sofrem como também as frentes de trabalho dos desenvolvedores de aplicação interna deles que tem que adaptar tudo em tempo de lançar o Release novo.


Esse artigo foi baseado na série de artigos do ThroughThe Interface.



Comentários

Postagens mais visitadas deste blog

Numeração Automática no AutoCAD

Sem dúvida esse é uma ferramenta única que fazia falta a tempos e foi introduzida recentemente no AutoCAD, na última década… Em 2013 tinha feito um programa para criar uma bolinhas de numeração automática usando o conceito de Leader eu fazia um controle dos números dos itens na mão mesmo, depois de um tempo resolvi fazer um menuzinho para controlar o conteúdo do número dos bullets, hoje isso não é mais necessário, existe um comando no próprio AutoCAD para isso e faz parte das Ferramentas Expressas do AutoCAD. Gosto de compartilhar ferramentas e dicas que tendem a ser menos conhecidas ou subutilizadas, mas ainda podem fornecer um impulso para sua produtividade e fluxo de trabalho e que eu mesmo me surpreendi quando as encontrei Hoje, quero apresentar outra ferramenta, a numeração automática. Como o nome indica, o comando Numeração automática permite que você adicione automaticamente um número às etiquetas ou texto em um desenho. Vou mostrar como a numeração automática pode ser usada par...

Alterar a cor de fundo do AutoCAD

Eu sou um adepto do fundo preto, tudo que eu posso mudo a cor do fundo para preto. Nas ultimas versões do AutoCAD tenho notado que não é mais o padrão o fundo preto absoluto, é um cinza escuro. As vezes gosto também de mudar a cor do Layout de branco para preto afinal de contas quando trabalhamos com penas e contraste no model space preto, ver um desenho no layout é impossível.  Você pode mudar sua cor de fundo do AutoCAD para a cor que quiser. Definindo cores personalizadas Primeiro, vá para o menu Opções (botão Aplicativo> Opções), selecione a guia Exibição e clique no botão Cores. Agora você deve ver a caixa de diálogo Cores da janela de desenho: Agora você pode atualizar as cores de qualquer elemento da interface. Isso incluí o plano de fundo em qualquer contexto (selecione Model e Layout). Você pode escolher qualquer uma das predefinições, ou você pode escolher a partir de todo o espectro (basta escolher a opção Selecionar Cor ...). Se você não gost...

Unindo blocos em AutoCAD utilizando .NET

Hoje me deparai com uma necessidade de unir blocos com propriedades então resolvi fazer um comando para realizar esses procedimento. A principio esse procedimento não é tão complexo de ser executado individualmente mas por outro lado gostaria também de analisar um pouco melhor as possibilidades de se manipular blocos utilizando o AutoCAD. Abaixo o código que utilizei: using Autodesk.AutoCAD.ApplicationServices ; using Autodesk.AutoCAD.DatabaseServices ; using Autodesk.AutoCAD.EditorInput ; using Autodesk.AutoCAD.Runtime ; using System.Linq ; // This line is not mandatory, but improves loading performances [assembly: CommandClass(typeof(Merging_AutoCAD_blocks.Comandos))] namespace Merging_AutoCAD_blocks { public class Comandos { /// <summary> /// Uni dois ou mais blocos em um unico bloco. /// </summary> [CommandMethod("MERGBLKS")] public static void UnindoBlocos () {...