Designing the Physical Architecture
The goal of the physical model is to produce an application architecture that best meets the requirements identified in each of the other submodels of the Enterprise Application Model.
Physical Model Tasks
In the physical model design phase, you put the requirements of the other models into concrete form in order to create a physical architecture for your application. In many ways this is the most complex part of the design process, because it is here that you define the pieces and the way they work together. This is where the issues of performance, bandwidth, scalability, reliability, and maintainability are resolved and implemented.
The most important physical model design tasks include the following.
Defining Object Roles
Component-based applications provide resources and services through COM-based objects, which can assume different roles. Examples of object roles include:
- WorkSpace Objects, which provide a container for other objects to work in. They can provide visual containment, as in a form or browser that contains controls, or a nonvisual process that provides an execution space for business or data service objects, such as Microsoft Transaction Server (MTS). Workspace objects allow for pooling, queuing, scaling, and security services.
- Worker Objects, which simply provide an active thread of execution. On the server, MTS provides the worker objects.
- Service Objects, which implement the business rules and services defined by the logical model.
- State Objects, which provide state information and type conversion handling.
- Job Scheduler Objects, which are special kinds of Worker objects that provide asynchronous job scheduling services to normal worker objects. Job Scheduler objects are critical for creating applications that are easily scalable.
Defining Work Delegation
There are two Work Delegation Options — personal and delegated.
- Personal An object performs a task serially with its own skill, time, and resources. (The object is the worker.)
- Delegated A task may require a degree of resources, supervision, or expertise that is beyond the limits of a particular object, so it hands it over to expert agents (workers) to do for it, giving them its specific parameters, and then setting them free to complete the task. (Analogies may be calling upon a job supervisor, car mechanic, doctor, and so on.)
Defining Call/Message Concurrency and Delivery
Components call each other for various reasons. Calls and messages between components can be either synchronous or asynchronous, and can use various messaging options that affect performance, throughput, and security.
Defining State Options
Components may need to store many kinds of state information, including computer state, user state, job state, and transaction state. State can be stored in memory or on disk in database or file system storage. All of these choices have performance and integrity implications.
Defining Access Latency and Bandwidth Approaches
Performance is crucial in a distributed environment, where low bandwidth and multiple servers can strain throughput enormously. Careful design consideration needs to be given to performance issues that may be difficult to predict in advance. Various throughput handling options such as local and remote caches and connection pooling need to be considered and tested.
Physical Model Tools
Visual Studio, Enterprise Edition provides several powerful tools for designing, deploying, and testing various physical architecture options.
Application Performance Explorer (APE)
Application Performance Explorer is an application modeling tool that tests the performance of a distributed architecture in many different configurations. APE provides a visual interface for quickly setting up architectures using multiple clients and servers, over different protocols, using different database parameters, object queues, and different numbers of users and transaction volumes. By setting up test architectures that parallel your application, you can quickly run them on multiple computers under many different conditions to evaluate relative performance and efficiency.
For more information For more information about Application Performance Explorer, see https://msdn.microsoft.com/en-us/library/aa277411(v=vs.60) online in MSDN Library Visual Studio 6.0.
Visual Studio Analyzer
Visual Studio Analyzer is a distributed application profile and debugging tool. It collects information about your application while it is running, and is capable of producing reports that help you understand structure and performance issues, as well as isolating faults, identifying bottlenecks, and detecting bugs.
For more information For more information about Visual Studio Analyzer, see https://msdn.microsoft.com/en-us/library/aa235062(v=vs.60) online in MSDN Library Visual Studio 6.0.
Visual Database Tools
Microsoft Visual Database Tools are a set of database design components for creating and maintaining database objects that implement live connections to Microsoft SQL Server, Oracle, and other ODBC-compliant databases. These tools include four components that are integrated directly into the Visual Studio development environments: a Data View component, a Database Designer, a Query Designer, and a stored procedure Source Code Editor.
For more information For more information about Visual Database Tools, see online in MSDN Library Visual Studio 6.0.
Build Package and Deployment tools
New application platforms like the Internet and intranets give developers much greater flexibility in packaging and deploying distributed, component-based enterprise applications. Visual Studio's solution building, packaging, and deployment tools can package your components in flexible ways and create a variety of distribution units for deployment.
These tools operate within the Microsoft development environment (for Visual J++™ and Visual InterDev™) to create setup executable (.exe) files, cabinet (.cab) files, or Zip Archive (.zip) files for remote deployment. You can also digitally sign setup or cabinet files for additional security in unprotected environments.
For more information For more information about the build, package, and deployment tools, see https://msdn.microsoft.com/en-us/library/aa234550(v=vs.60) and https://msdn.microsoft.com/en-us/library/aa234569(v=vs.60) online in MSDN Library Visual Studio 6.0.