Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 9892 

Vývojové prostředky AutoCADu

Použití .NET a ObjectARX v AutoCADu

Vývoj aplikací pro AutoCAD - přehled API, LISP

Vývojové prostředky AutoCADu AutoCAD API

Visual LISP, Visual Basic/VBA, Java, ObjectARX, ActiveX, Skripty
České vysoké učení technické Praha, Fakulta elektrotechnická
Bc. Srník Albert, albert.srnik@mybox.cz

Úvod do technologie .NET

Technologie .NET modifikuje a rozšiřuje AutoCAD a na AutoCADu založené produkty přímým přístupem do databázových struktur AutoCADu, vlastní definicí příkazů a dalším, využitím kteréhokoliv jazyku podporovaného .NET.

Co je .NET?

  • Microsoft technologie web-based infrastruktury
  • Hladká interakce mezi aplikacemi a Internetem
  • Přístupové informace kdykoliv, kdekoliv, z jakéhokoliv zařízení

Součásti .NET

  • NET Framework využívaný pro tvorbu a běh všech druhů softwaru, včetně Web-based aplikací, smart client aplikací a XML webových služeb
  • Vývojové nástroje jako Microsoft Visual Studio .NET
  • Sada serverů, které integrují, spouští, obsluhují, a řídí Webové služby a Web-based aplikace
  • Klientský software pomáhající vývojářům předat obsáhlé a účinné uživatelské zkušenosti díky souboru prostředků a existujících produktů

.NET Framework

Jeho jádro je založené na principech objektově orientovaného programování a všechny základní služby zpřístupňuje široké škále programovacím jazykům. .NET Framework automaticky podporuje třídy, metody, vlastnosti, konstruktory, události, polymorfismus atd. Ve výsledném efektu to znamená, že není podstatné, ve kterém programovacím jazyce komponenty vytváříme případně, jaké komponenty používáme. .NET Framework také řeší některé problémy související s bezpečností. Dalším problémem, který .NET Framework řeší, je nasazování a instalace aplikací (označovaný jako DLL Hell).

CLR – Common Language Runtime

CLR si lze ztotožnit s pojmem virtuálního stroje při použití programovacího jazyka Java. Podobně jako u programovacího jazyka Java, nejsou zdrojové kódy kompilovány přímo do nativního kódu, který lze provádět, ale do intertmediárního jazyka. U programovacího jazyka Java je výsledkem soubor s příponou CLASS a tento je pak prováděn virtuálním strojem Javy. Podobně v prostředí .NET jsou zdrojové soubory libovolného programovacího jazyka zkompilovány do intermediárního jazyka (nazvaného MSIL – Microsoft Intermediate Language). V případě, že má být taková aplikace spuštěna, systém detekuje, že jde o aplikaci v MSIL a spustí Just-In-Time kompilátor. Ten vygeneruje skutečné instrukce cílové platformy

Obrázek 1.2. Common Language Runtime - kompilace a spuštění



Jedním z hlavních cílů při vývoji .NETu je podpora různých programovacích jazyků. Důležitým prvkem CLR je podpora společného typového systému (Common Type Systém – CTS). Vedle CTS definovaném na systémové úrovni, CLR realizuje typovou bezpečnost a obecný objektově orientovaný model.

CTS

CTS je nezávislý na jazykové implementaci. Objektově orientované jazyky a přístup k tvorbě softwaru jsou již léta součástí vývojových nástrojů. Implementace se v různých prostředích ale výrazně liší. Některé programovací jazyky jsou čistě objektově orientované (například Smalltalk), jiné implementují vedle objektově orientovaných principů také některé neobjektové vlastnosti. V čistě objektově orientovaných programovacích jazycích jsou všechny datové typy představovány třídami a všechny proměnné jsou ve skutečnosti objekty. Objektovost dotažena do úplného konce je značně výhodná, ale přináší nemalou daň v podobě poklesu výkonu. Proto přidáváme čistě objektovým jazykům tzv. základní typy a množinu operací, které zlepšují výkonnost daného programovacího jazyka. Typový systém je rozdělen do dvou hlavních kategorií: hodnotové typy a referenční typy. V .NETu je vše (podobně jako v Javě) objektem. Základem každého typu je třída nazvaná System.Object. Výjimku tvoří hodnotové typy. Jak již bylo uvedeno, pro zvýšení výkonnosti jsou i do .NETu přidány některé základní typy jako různé druhy celých nebo reálných čísel. Někdy je ovšem nutné, pracovat i s těmito typy jako s objekty. .NET nám umožňuje provádět automatickou konverzi hodnotového typu na referenční. Operaci, která převod zajistí se říká Boxing. Opačnému procesu - převedení hodnotového typu na referenční - se říká Unboxing. Všechny hodnotové typy mají definovány odpovídající třídu, na kterou jsou konvertovány. Každý základní typ je reprezentován implicitně svou hodnotou, ale v případě potřeby je možné jej převést na odpovídající objekt a pracovat s ním jako s každým jiným objektově orientovaným typem. Díky tomu se daří dosáhnout požadované plné objektovosti typového systému bez zaplacení výkonnostního penále.

Typová bezpečnost

Jedním z nejdůležitějších požadavků kladený na společný typový systém je typová bezpečnost. Můžeme jí také chápat jako garanci, že nad definovanými typy nemohou být provedeny nepovolené operace. Typová bezpečnost odstraňuje chyby pramenící z nekontrolované manipulace s poměnými nebo pamětí. Každý objekt vytvořený v programu je striktně typový a typová je i reference, která se na něj odkazuje. Každý typ je navíc sám zodpovědný za přístupová práva ke svým členům.

Management paměti

Obecným cílem managementu paměti je uvolnit systémové zdroje držené objektem a následně i paměti, kterou zabírá ve chvíli, kdy objekt již nikdo nevyužívá. .NET Framework má technologii Garbage Collection. Ta přináší automatickou správu paměti.

MSIL

Spustíme-li aplikaci o jejíž provádění se stará CLR, hovoříme o řízeném kódu. Pokud je spuštěna aplikace která není napsaná pro prostředí .NET, nebo se výhod řízeného kódu explicitně zřekneme, je kód neřízený. Ne všechny jazyky umí generovat řízený kód. Příkladem jazyka s absolutní volností je jazyk C++. Výsledkem kompilátoru jazyka schopného generovat řízený kód je MSIL - MicroSoft Intermediate Language. MSIL je procesorově nezávislý jazyk podobný assembleru. Oproti asembleru je však mnohem vyspělejší. Umí pracovat s objekty, volat virtuální metody, pracovat s prvky pole nebo zpracovávat výjimky. Důvodem pro zavedení tohoto jazyka je snaha o jednoduché přenášení existujícího kódu mezi různými platformami. V současné době neexistuje procesor, na kterém by šlo provádět instrukce MSIL, proto CLR před vlastním spuštěním kompiluje (pomocí JIT kompilátoru) MSIL instrukce do nativního kódu na dané, konkrétní platformě. Hlavní výhodou použití intermediárního jazyka je platformní nezávislost.

Bezpečnost .NET Framework

Pojem bezpečnosti se dotýká několika oblastí:

  • typová bezpečnost - typová bezpečnost v tomto kontextu se týká pouze bezpečného přístupu k paměti objektů. Během JIT kompilace probíhá verifikační proces zkoumající obsah metadat v manifestu a obsah MSIL kódu a ověřující zda-li je kód typově bezpečný;
  • identita kódu - na základě informací o kódu definuje práva přidělená aplikacím;
  • code access security (přístupová bezpečnost kódu) - tento typ bezpečnosti umožňuje nastavit důvěryhodnost kódu na požadovanou úroveň v závislosti na tom, odkud kód pochází a dalších aspektech daných identitou kódu;
  • povolení (permissions) - CLR umožňuje aplikacím vykonávat jen ty operace, pro která má jejich kód povolení. Běhové prostředí používá speciální objekty zvané permissons pro implementaci omezení, která jsou kladena na řízený kód;
  • bezpečnost založená na rolích - využívá identity asociované s daným exekučním kontextem;
  • kryptografické služby - .NET Framework obsahuje celou sadu kryptografických objektů, které implementují známé algoritmy pro hashování, kryptování a digitální podpisy.
Shrnutí:
  • Common Language Runtime (CLR)
  • Objektově orientované programovací prostředí
  • Společné vykonávací prostředí pro .NET aplikace -podobné Java VM – ale s mnohem silnější součinností
  • Framework Class Library (FCL)
  • Objektově orientovaná sbírka znovu použitelných typů

Inteligentní symbolická prezentace

  • vyzrálá stavba jazyků
  • Společné programming pitfalls addressed
  • anagement paměti, důsledná obsluha vyjímek, jednotné řetězce

Programovací styl

  • Několik podporovacích jazyků

Výhody programování v .NET

  • Pevná objektově orientovaná vývojová platforma
  • Automatický management paměti – Garbage collection
  • Podpora různých jazyků

Automatický management paměti

  • Starý způsob (C++)

    char *pName=(char*)malloc(128);
    strcpy(pName,"Hello");
    //...
    free(pName);
  • Nový způsob - .NET
  • C++ -
    String *pName=new String("Hello")
  • VB -
    Dim Name As String = "Hello"
  • C# -
    String Name="Hello";
  • Garbage collection ovládá dealokaci; žádné ‘delete’!
Důležité pojmy
  • Základní jednotka of rozestavění a výkonu v .NET
    Obsahuje manifest popisující kompletaci
  • Rozhraní pro vykonávání kódu a přístupová oprávnění
Snoop Tools (pro databázi AutoCADu)
  • ArxDbg (C++) ObjectARX SDK
  • MgdDbg(C#) ADN