7. Architecture Alpha Five Application Server & IIS 7 Content Handlers Alpha Five Application Server Core IIS 7 Integrated Pipeline Security Providers Session State Provider Alpha Five Handlers Security/ Session/ Persistent Data Storage Alpha Five Application Server Core
14. Architecture Why Session Storage is Key to Scale-ability Session storage in folders on a single server. That’s fine if you have a single server. Session Data How does that work across servers? It doesn’t. Session Data Session Data
17. The View From XBasic Alpha Five Web Server IIS 7 Content Handlers HostContext Context Request Response Security Session Context Request Response Security Session Context Request Response Security Session Context Request Response Security Session Context Request Response Security Session Context Request Response Security Session
18.
Hinweis der Redaktion
Microsoft’s Internet Information Services™ version 7 introduces a number of features that increase its attractiveness as a platform on which to run Alpha Five Web Applications. IIS 7 is readily available on Windows servers IIS 7 has a very large installation base and lots of well trained administrators to deploy and manage installations There are a large number of Microsoft and 3 rd party tools to help in management of servers IIS 7 introduces a lot of extensibility enhancements that make it possible to integrate application servers such as Alpha Five directly in to the request pipeline: Security Session State Logging Configuration
Alpha Five makes novices productive and experts more effective. Rapid application development cycles are enhanced by rich abstractions that minimize or eliminate coding, while creating rich web interfaces. Support for multiple web clients makes deployment to mobile platforms not only natural, but painless. Alpha Five’s SQL database neutrality makes it possible to build an application that can easily be deployed on a variety of databases without the need to code around the subtle (and often painful) differences in SQL database implementation. Unlike many other development tools, Alpha is not pitching our own SQL engine, so we do not limit your choices for deployment. Because the cost of development, deployment and iteration is reduced, your total cost of ownership (including maintenance) is far lower and the time to market for solutions is much shorter than with other tools and environments.
In order to participate fully in the IIS 7 environment, we need to integrate tightly and make use of well tested and extensible features in IIS. This also makes it easier for administrators to adopt Alpha Five Web Applications as a part of a larger server environment. With few exceptions, the Alpha Five Web Application will look and feel like any other web application running under IIS 7. We also want to take advantage of the many tools and APIs provided by Microsoft to automate deployment. With sufficient privileges, you should be able to remotely create sites and applications and publish your applications from within the development environment. If you prefer to create an installation file, we want you to be able to do that as well. IIS 7 has been tuned for very high scale-ability and we want to take advantage of that ability by supporting single and multiple process and single and multiple server environments. IIS 7 is a different server than Alpha Five’s Web Server. The problem being solved however is the same. As a result, most of the settings and options available when using the Alpha Five Web Server are also available in IIS7. Our intention is to have the fewest number of changes required in order to run your application under IIS 7, and to make it possible to code your application so that it will run in either environment without the need for conditional coding.
IIS 7 introduces something called the Integrated Pipeline. As a web request is processed, multiple handlers have access to the request to provide such services as authentication, authorization, page serving, session state management and membership services. Alpha Five Application Server integrates with IIS 7 through a set of plug-ins and handlers that take advantage of other providers so that Alpha Five Web Applications participate fully in the IIS 7 Integrated Pipeline. This means that common functions behave as they would with any other IIS 7 web application, and Alpha Five Application Server, and user scripts are able to take advantage of rich set of functionality provided by Microsoft and other 3 rd parties. IIS 7 also includes the ability to extend the XML configuration definitions and to include user interfaces to maintain those configurations. Alpha Five Application Server will be able to read and honor configuration settings of its own and of other facilities through a standard set of configuration files recognized by IIS 7 and IIS Manager (the Microsoft tool for configuring servers and applications). IIS Manager extensions for Alpha Five Web Applications will make it possible to configure and manage Alpha Five Web Applications locally or remotely using IIS Manager.
The Alpha Five Application Server has been reworked extensively so that it can be run from a “managed” (.Net code) handler under IIS. As a result, each worker process in IIS (w3wp.exe) has its own copy of the Alpha Five runtime environment. IIS 7 sees the Alpha Five Application Server just like any other plug-in and set of page handlers. The Alpha Five environment is integrated through a managed/unmanaged interface implemented in C++/CLI; which allows C# code to call into the C runtime. An Alpha Five web page or web component is able to interact with the IIS environment, including access to Roles, User information and Session values shared with other servers.
Developers and IIS administrators can use IIS Manager (free from Microsoft) to manage and configure IIS 7 applications directly on the server or remotely. In order to integrate tightly with IIS, Alpha Five Application Server includes configuration extensions and user interface components that run under IIS Manager, and are available when doing remote administration and configuration as well.
Here is an example of using IIS Manager to set the XBasic logging for Thread Transition logs and for XBasic Errors. Note that the configuration information is being accessed from the web.config file (the XML configuration file for the application) on the server.
After saving changes through the user interface, the contents of the web.config file are updated to look like this. Note: You can hand edit the web.config file as well – if you really want to.
IIS 7 comes with a host of changes in the architecture of application configuration, deployment tools and programming APIs. We are in the process of doing proofs of concept, but intend to make full use of those tools to make automated deployment an integral part of the development environment.
In order to automate deployment from the development environment of Alpha Five, we plan to integrate calls to .Net APIs made available by Microsoft that allow us to deploy locally, remotely and to create deployment packages that can be imported into IIS 7 using IIS Manager.
There are several fundamental concerns associated with scaling a web application. On a single server, with multiple threads, as long as data isn’t accessed at the same time, it is available to all scripts. On a single server with multiple processes (Web Garden), files can be shared, but anything stored in memory is not available to other servers. On multiple servers (Web Farm), files may not be shareable and it may be necessary to create an additional server from which to get session state, security information and generated files. Session state and security information, and any persistent data must be available to all servers from a common store. Once these dependencies are removed, it is possible to move beyond a single server to multiple servers (a Web Farm)
In order for applications to scale well, session data (values that are saved between web requests) must be available no matter which server processes subsequent requests. If data is stored on a local disk that is inaccessible to another server, the session state is effectively lost. Even if two servers could share a single disk, contention problems would need to be addressed. If the server with the disk on it fails, the session is also lost. IIS 7 provides an extensible and configurable service that saves data between requests and makes it available to all servers.
Here you can see the three basic configurations for scaling a web application with Alpha Five Application Server and IIS 7. Single Process – Here a single server has a single process configured to run multiple threads in a similar fashion to the Alpha Five Web Server. Web Garden – This configuration is similar (and identical in configuration to Single Process) with one small exception. The Process count in the application pool is set to a number greater than 1. Web Farm – Microsoft provides a rather extensive infrastructure to support publishing an application to multiple servers and sharing configuration information. While we do not plan to offer automated deployment to Web Farms in the immediate future, there is no reason why you can not use XCopy deployment or the Web Farm tools provided by Microsoft to scale your application.
In order to minimize the impact on existing applications being published to IIS 7, we need to make as much of the existing user code work as possible. For our own software, we are working to remove any assumptions about the existing environment (session state, security, server data structures) that would prevent proper functioning under IIS 7. As part of this effort, we are creating a set of objects common to both environments. This will be discussed in more detail later. While some of the configuration settings for security and web services do not apply in the IIS 7 environment, many do. Any settings that have analogues in the IIS 7 environment will be converted into configuration file settings for deployment on IIS 7. Although the new objects will be replacing existing functions in Alpha Five, and those functions will be deprecated, we don’t want to break applications using the existing functions. Wherever possible, those functions will automatically call into the newer objects and functions. You are encouraged to convert any scripts using deprecated function calls to the newer model as soon as possible because new features will depend on them. If you use the new objects, you will not have to write any tests in your code to determine which server you are running under. These tests slow down your application and increase the load on the server.
Alpha Five Application Server version 11 introduces a new set of objects that provide a consistent set of services whether you are running under IIS7 or under the Alpha Five Web Server. The object interfaces are identical, but the implementations are specific to the environment under which your application is running. If you need to access services that Alpha Five does not abstract and you are willing to commit to one platform or the other (or write conditional code), you can access the HostContext property of the context object for a platform specific set of objects. For example, if the application is running under IIS 7, the HostContext property will return the HttpContext object passed in to the page handler. From this object, you can also access the HttpRequest, HttpResponse, and other objects available from the HttpContext.