Observing the User Experience: A Practitioners Guide to User Research

The question that now arises is what services make sense for the ISAPI DLL. The answer is any service that stores some form of global state and is unlikely to change its functionality often. One good question to ask yourself is Do I need to access/update this information over multiple requests ? If the answer is yes, then an ISAPI service may be the right solution for you.

Good examples of services that meet the criteria for exposing an ISAPI service include the following:

Because the ISAPI DLL runs on a single thread, doesnt often get reset, and handles all incoming requests, its capable of meeting all the requirements that these types of services demand. It also makes sense because these services are unlikely to change regularly. Session state is an example of a service thats designed into the application. Caching and logging are good examples of services that are honed during the develop-test cycle and therefore see little change once the application goes into production.

These are also all good reasons for why your ISAPI services should be some of the most carefully scrutinized code in your entire application. Services should be well designed so they provide the functionality required today and so they can be modified with minimal effort to extend that functionality in the future. Regularly called services are likely to be a bottleneck in your application, especially if theyre processor intensive . You should examine the code carefully for security and reliability issues.

Code in your ISAPI DLL also falls into the category of being some of the only code in a Web application that needs to be thread-safe. Because you have multiple worker threads running, and all these threads are capable of calling your service at any time, you need to ensure that locking is carefully used on update commands and that information returned to callers is valid.

Категории