Figure 1 illustrates how a deployment with VisiBroker for .NET-powered applications might look. The left and right sides of the figure show two .NET application environments, the top ones running stand-alone .NET applications, and the others running ASP.NET hosted applications. In the middle of the diagram the J2EE and CORBA server environments are shown.You must explicitly declare class SampleServerLoader using the keyword "public" in order for .NET runtime to access it. If you do not do so, an exception is raised and you cannot possibly access the default constructor.Stubs and skeletons are required for VisiBroker for .NET-powered applications to invoke methods on J2EE and CORBA objects. Stubs and skeletons are interface-specific objects that provide parameter marshaling and communication for an application to invoke methods on an object that is running in a different execution environment. The VisiBroker for .NET developer tools provide you with compilers to generate the stubs and skeletons needed to communicate with your CORBA and J2EE server objects.
• Marshaling—a high-performance, scalable engine for reading and writing IIOP packets.
• Connection management—controls the allocation of TCP connections and other communication resources.
• Security—encryption and authentication of messages based on the widely adopted standards: SSL, TLS, X.509, etc. (Note that this enables secure connectivity to any J2EE 1.3 compatible product.)
• Objects-by-value—allows arbitrarily complex data types to be passed across client-server boundaries (for J2EE 1.3 products).
• Invocation context propagation—provides the ability to augment IIOP packets with system-level data.
• Portable interceptors—provides the ability to augment IIOP packets with user- or system-level data. This is particularly important for products that provide distributed transaction support based on the OTS and XA specifications. (Note that interoperable transaction support is optional in J2EE 1.3, and is therefore only provided by a subset of J2EE vendors.)
• High Performance: VisiBroker for .NET provides binary data formatting by using IIOP for client-server networking.
• Stateful services: VisiBroker for .NET provides a full distributed object model, which can support arbitrary server-side components and arbitrary life-cycle requirements.
• Advanced security support: Encryption, authentication and authorization are all supported in VisiBroker for .NET, based on the latest security standards.
• Support for complex data types: Using VisiBroker for .NET, data conversions are handled automatically, which is both more efficient and less error prone.
• Enterprise Quality of Service: VisiBroker for .NET provides advanced QoS out of the box, including:
• Load balancing: The ability to fan-out requests to a collection of service providers.
• Fault tolerance: The ability to redirect requests from a failed server to an alternate provider.
• Transactions: The ability to propagate two-phase-commit transaction contexts across application boundaries and start transactions on the client side.
• Scalability: The ability to control the lifetime of connections, multiplex over connections, etc., for optimizing resource utilization.The .NET Framework consists of the .NET Framework class library (FCL), for building .NET applications, and the common language runtime (CLR), for running them. The .NET Framework is available as a free download from Microsoft.The common language runtime (CLR) is the runtime engine in the Microsoft .NET Framework for executing applications. The CLR also provides managed applications with services such as cross-language integration, code access security, object lifetime management, and debugging and profiling support.When it is compiled using a compiler in a .NET language, the code written in your programming language of choice is compiled into an assembly-like language called common intermediate language (CIL). The CIL is compiled down to executable code by the common language runtime at execution time.The VisiBroker for .NET runtime provides a managed code implementation of IIOP for the .NET Framework. VisiBroker for .NET allows you, the developer, to locate and call methods on remote objects using .NET Remoting-style calls, shielding you from having to learn how to write CORBA or Java RMI-style calls. See application development examples in “Developing VisiBroker for .NET client applications” and “Developing VisiBroker for .NET Remoting servers”.The .NET Framework supports what it calls managed and unmanaged applications. Managed applications are programs that you create using a supported .NET language, such as C#, and which adhere to various rules imposed by the Framework. All VisiBroker for .NET code is managed code.A common model of a CORBA application is a typical client-server model, with the exception that it uses a middle layer, known as middleware, or more specifically, an Object Request Broker (ORB). An ORB is a collection of services that manage interactions between distributed applications.The Interface Definition Language (IDL) is a descriptive language you use to describe your CORBA interfaces to remote objects. You use an IDL compiler to generate a client stub file and a server skeleton file in your implementation language, usually C++, Java, C#, or another high-level language. The Object Management Group (OMG) has defined specifications for language mappings to a variety of programming languages. VisiBroker for .NET provides a language mapping for IDL in C#. See “IDL to C# mapping” for more information.VisiBroker for .NET allows you to bootstrap to the CORBA middleware, and locate objects using either CORBA-style calls or .NET Remoting calls in your client code. See examples of application development in “Developing VisiBroker for .NET client applications” and “Developing VisiBroker for .NET Remoting servers”.