Sunday, February 20, 2005

Application Blocks for .NET

Designing distributed applications is no simple task. Before finalizing architecture many decisions need to be taken keeping in view about applications abilities in terms of the security, scalability, availability, and maintainability, to name a few. Application blocks do play a vital role and will have an impact on the architecture, design and implementation of the target infrastructure.
There are various application blocks discussed in Microsoft patterns & practices site that would help you design & build your system. I tried to consolidate so as to help to understand choices set of layers of components that would be used to model your application.

Major application blocks are

· User Interface Process Application Block
· Aggregation Application Block
· Data Access Application Block
· Exception Management Application Block
· Asynchronous Invocation Application Block
· Caching Application Block
· Configuration Management Application Block
· Updater Application Block


User Interface Process Application Block

A base class (ControllerBase) and User Interface Process Manager component that allows to separate logic & state of a user process from the UI needed to collect data and navigate. It includes a set of persistence managers that allows saving the state of the process in database viz., SQL Server, an ASP.NET session, or a custom store.

Where to use
Use it when you need to implement the same process in different types of applications (Windows Forms, Web forms) or want to allow users to resume a session at a later time. Also good for wizard-based applications.

Aggregation Application Block

A component that dispatches Service Agents to collect information from various sources for the application. The application then makes requests to the aggregate component and it returns a single XML document of the collected data. It uses the Exception Management Block and can be used with both the Asynchronous Block and the Caching Block.

Where to use
Use it when your application needs to bring together data from various sources and those sources may change over time. The Aggregation Block serves to abstract the underlying data sources.



Data Access Application Block

Implements a data access helper component, SqlHelper, which helps execute statements against SQL Server 7.0 and higher by exposing a set of static methods and reduces the amount of data access code you have to write. V2.0 supports the .NET Framework v1.1.

Where to use
Use it if you are using SQL Server as the database and wish to reduce the amount of data access code you write. Can use it internally in your own data access classes. Versions of SqlHelper for OleDb and Oracle written in C# are included in the Nile 3.0 sample application.

Exception Management Application Block

Provides a simple and flexible mechanism for publishing exception information through an ExceptionManager class. Also supports filtering and creating your own exception publishers to publish data to sources other than files and event logs using text and XML. Also provides a BaseApplicationException class from which to derive, that collects additional environmental information.

Where to use
Use it as the basis for your exception-handling framework. Ideal for applications that use exception chaining or wrapping and pass exceptions up the call stack. Custom publishers can be used to log exception information to shared databases.

Asynchronous Invocation Application Block

A component that dispatches requests on background threads and then notifies the application when complete. It uses the Exception Management and Data blocks. This block is meant to be used with the Aggregate Block and can work with the Caching block.

Where to use
Use it when the data sources your application communicates with may require a lengthy call. Using the Async Block makes it appear as if the application is more responsive by allowing Web pages to be built incrementally.


Caching Application Block

Allows applications to make requests of a CacheManager object that either returns the data or invokes a Service Agent to retrieve it. Allows items to be expired from cache and cached data to be stored in a variety of format including SQL Server, memory mapped files, or a Singleton object. It uses both the Exception Management and Data Blocks. Can also be used with the Async and Aggregation blocks.

Where to use
Use it when you need to cache data in Windows Forms or other non-Web based applications. ASP.NET provides its own cache and so would not typically be required for Web applications. Important to use for improving performance.


Configuration Management Application Block

A component that abstracts the location of configuration information used in an application and adds features including encryption, caching, and extensibility. It also adds the ability to both read and write the configuration data.



Where to use
Use it when your application might require its configuration data to be stored in different locations at different times. Also take advantage of it for encrypting sensitive information.


Updater Application Block

A component that can be used to download new versions of applications to client machines (using BITS for example). Includes a manifest to specify all the related files and ensure the entire application is downloaded. Provides optional file verification and support for custom downloading and verification components. It uses the Exception Management Block.

Where to use
Use it when your application needs to auto-update with new assemblies or when you are writing a service to provide client machines with updates to a variety of applications.


Next step
I hope these would help while designing & building applications to architect or developer lead. Hell lot of information with code sample are given at Microsoft patterns & practice website which would help you for in-depth understanding of each blocks.


References

Microsoft released Latest Enterprise Library in January 2005 which included all these Application Blocks.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp

User Interface Process Application Block can be downloaded from
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/uipab.asp

Friday, February 18, 2005

Code Names of various Microsoft Product

Most of the Microsoft products are internally code named. Often these code names are very interesting but do not really indicate the nature of the product. In general Microsoft code names fall in to categories like name of the cities, ski resorts, species of trees, famous poets, celestial bodies etc.Some of the code names are:

Interface Manager :GUI for MS-DOSGraphical and multitasking user interface for MS-DOS, released as "Windows 1.0"
Chicago: Windows 95
Daytona: Windows NT 3.5
Impala:Windows NT Embedded 4.0
Memphis:Windows 98Designed as Windows 97, but finally made available as Windows 98
Neptune:Windows Millenium sucessor, cancelled to merge with NT into Whistler
Cairo :Windows 2000Also included document centric shell based on OLE3, but that part have been dropped, and Windows NT unified distributed file system, which didn't make it for this release
Odyssey:Windows 2000 sucessor, cancelled to merge with 9X into Whistler
Mantis: Windows XP Embedded 5.1
Whistler: Windows XP / Server 2003Finally join Windows NT and Windows 9X into a single operating system.New user interface, skins support, everything available from the Start menu.
Longhorn : Windows XP successor
Cedar:Windows CE 3.0
Blackcomb:Upcoming Windows Server(Windows Longhorn server counterpart)
Avalanche:Microsoft IIS 5.0
Hydra:Microsoft SQL Server 6.5
Sphinx:Microsoft SQL Server 7.0
Shiloh: Microsoft SQL Server 2000
Liberty:Microsoft SQL Server 2000 (64 bit Version)
Yukon:Microsoft SQL Server 2000 successor(supposed to include unified storage engine)
Platinum: Microsoft Exchange 2002
Titanium: Microsoft Exchange Server 2003Outlook Web Access 2003, Outlook Mobile Access (WAP, iMode, light HTML), Server ActiveSync
Kodiak: Exchange 2003 Server successor(supposed to include unified storage engine)
Denali: Active Server Pages
Falcon:Microsoft Messaging Queue
Office 10:Microsoft Office XP
Tahoe:Microsoft Share Point Portal
Greenwich :Microsoft Instance Messenger
Everett:Microsoft Visual Studio.NET 2003
Whidbey:Microsoft Visual Studio.NET 2004.This release of Visual Studio and the Microsoft .NET Framework will offer innovations and enhancements to the class libraries, common language runtime (CLR), programming languages, and the integrated development environment (IDE). In addition, this product will provide deep support for SQL Server code name “Yukon” by enabling developers to write stored procedures using managed code.
Orcas:Microsoft Visual Studio.NET 2005.This version of Visual Studio and the .NET Framework will provide tools support for the Windows operating system, code name “Longhorn.”
Agro:Microsoft English Query
Babylon:Microsoft Search Service (Full-Text Search)
Coyote:The Distributed Partitioned Views Feature of SQL Server 2000
DART:Setup for Oracle, SQL Server, ODBC Driver
kagera:OLEDB Provider for ODBC Data source
Luxor:Microsoft SQL Server OLEDB Provider
Plato:Microsoft SQL Server 7.0 OLAP Services
Slate:Microsoft Management Console(MMC)
Davinci:Database Design and Query Tools
Starfighter:Enterprise Manager of SQL Server 6.0
Starfighter I:SQL Server Agent
Stinger :Microsoft data engine(MSDE)
Stingary:Microsoft Internet Security And Acceleration(ISA)Server 2004
Jupitor:Microsoft e-Business server
Tripoli:icrosoft Search Server
Voyager:Microsoft BizTalk Server 2004
Catapult:MS Windows NT Based Proxy Server
Bobcat:Microsoft Windows Small Business Server 2003
Trinity:Visual Studio Tools For Office
Tungsten:Microsoft Right Management Services(RMS)
Hydra:Terminal technology for Windows (RDP) / Remote Desktop ServiceAvailable as "Windows NT 4.0 Terminal Server Edition" and integrated in next versions.
Nashville:"True Web Integration" technologyWeb based shell for Windows.Designed as Windows 96 but finally available as Internet Explorer 4 "Active Desktop Update" for Windows 95 and NT and integrated in next versions.
Detroit:USB services for Windows 95Made available as an USB upgrade for Windows 95 OSR
Corona:Windows Media 9 Series (3rd generation)Including Fast Stream and Dynamic Content Delivery
Lonestar:Windows XP Tablet PC Edition 2004 (Ink services)Update of Windows XP Tablet PC Edition
Ozone:Windows Mobile 2003 for Pocket PC & Smart phoneUpdated Pocket PC and Smart phone platforms based on Windows CE 4.2
HailStorm:.NET My Services.NET Personal information services from Microsoft.
Wolfpack:Load balancing service for Windows (Microsoft Cluster Server)
Snowball:Windows for Workgroups 3.11
Janus:Windows for Workgroups 3.1
Mira:Microsoft Smart Display
Slalom:Windows Longhorn - Media Center (eHome shell and services)Media Center components for Windows Longhorn
Palladium:Windows Longhorn - Digital Rights ManagementAllows documents and software digital rights management and copyright protection
WinFS:Windows Longhorn - Windows Future StorageFile system based on SQL Server Yukon (allow for complex file searches and cross-referenced files)
Avalon:Windows Longhorn - DirectX-based graphics subsystem
Indigo:Windows Longhorn - Communications Technologies(Unified WebServices-like interface for local and remote services)
Aero:Windows Longhorn - New visual style (3D)(I think this is the 3D GUI provided by Avalon)
Slate:Windows Longhorn - New visual style (gray)(default visual style of the PDC build of Longhorn)
Plex:Windows Longhorn - New visual style (blue)(More uniform than Windows XP Theme, all blue, no more green and red items, removed from PDC build and might be dropped for RTM build)