Net Dynamics Application Server was an early Java-based integrated software platform. Product was developed by Net Dynamics, a Silicon Valley start-up company founded in 1995 by Zack Rinat and Ofer Ben-Shachar. Other early application server competitors, Net Dynamics chose Java as development language for platform.
The DynamicObject class enables you to define the dynamic behavior for an object at run time. This class cannot be instantiated directly; therefore, to implement the dynamic behavior, you must inherit from the DynamicObject class and override the necessary methods. It allows you to define the specific operations that can be performed on dynamic objects as well the methods to perform those operations.
The difference between the var and dynamic data types is that the var data type is strongly type checked at the compile time; whereas, the dynamic data type is type checked by the compiler only at run time. After declaring a var data type, you cannot explicitly change its type throughout the execution of the program; however, a variable of the dynamic data type can be changed during runtime. Another major difference between the two is that dynamic type can also be used as the return type for methods, for which var cannot be used.
The ExpandoObject class refers to a class whose members can be explicitly added and removed at runtime. In other words, the ExpandoObject class allows dynamic binding of the objects, which enables you to use standard syntax, similar to the dynobj.Method method instead of using more complex syntax, such as dynobj.getAttribute("Method").
The System.Convert class provides a complete set of methods for converting the data types.
Python Binder enables to communicate with IronPython.
Ruby Binder enables to communicate with IronRuby.
COM Binder enables to communicate with COM.
Object Binder enables to communicate with .NET objects.
.NET Framework 4.0 provides the following binders:
✰ Object Binder
✰ Python Binder
✰ Ruby Binder
✰ COM Binder
Enables the DLR to provide a set of classes and interfaces that represent dynamic objects and operations. These classes and interfaces can be used to create classes for dynamic libraries, which can be used in static and dynamic type languages.
Enables the DLR to store the information of the operations and characteristics of the variables, such as their data type. The call site caching services also enables to check whether such operations have been performed previously to retrieve all the information about the variable. The place where DLR stores these values is called a call site.
Refers to the representation of code in a data structure similar to a tree. However, expression trees in DLR are the advanced version of the expression trees that were introduced with LINQ in .NET 3.5. Therefore, DLR has extended the functionalities of Language Integrated Query (LINQ) expression trees, such as control flow, assignment, and other language-modeling nodes to a dynamic language. These expression trees define the semantics of a language in form of an abstract syntax tree (AST). AST enables the DLR to dynamically generate code, which the CLR executes at runtime.
Call sites refer to the area in the code where logical and mathematical operations, such as a + b or a.b() are performed on dynamic objects.
Binders are used by DLR to communicate with not the .NET Framework but also with various other services, such as Silverlight and COM. These services represent language-specific semantics and specify how a particular operation can be performed at the call site.
✰ Allows you to easily implement the dynamic languages to the .NET Framework.
✰ Provides dynamic features to statically-typed languages. The statically-typed .NET Framework languages, such as C# and Visual Basic can create dynamic objects and use them together with statically-typed objects.
✰ Implements sharing of libraries and objects, which means that the objects and libraries implemented in one language can be used by other languages using DLR. The DLR also enables inter-operation between statically-typed and dynamic languages.
✰ Enables fast execution of dynamic operations by supporting advance caching.
The System.Dynamic and System.Runtime.CompilerServices namespaces are used to hold the classes for DLR. It also provides dynamic features to statically-typed languages, such as C# and Visual Basic to enable their interoperation with dynamic languages.
DLR is a runtime environment that allows you to integrate dynamic languages with the Common Language Runtime (CLR) by adding a set of services, such as expression trees, call site caching, and dynamic object interoperability to the CLR.
Both reflection and dynamic are used when we want to operate on an object during runtime.
Reflection is used to inspect meta-data of an object. It also has the ability to invoke members of an object on runtime.
Dynamic is a keyword which was introduced in .NET 4.0. It evaluates object calls during runtime. So until the method calls are made compiler is least bothered if those methods / properties etc exist or not.
Dynamic uses reflection internally. It caches the method calls made thus improving performance to a certain extent.
Reflection can invoke both public and private members of an object while dynamic can only invoke public members.
NetDynamics Application Server was the first Java-based integrated software platform. The product was developed by NetDynamics Inc. As Java became the dominant development language for web-based applications, NetDynamics experienced significant revenue growth in 1997 and 1998. However, the product soon encountered problems due to the relative immaturity of Java and the rush to release new product versions in a rapidly changing marketplace