MSDN アプリケーション アーキテクチャ レビュー

.NET による分散アプリケーションの構築

Steve Kirk
Microsoft Corporation

September 2001
日本語版最終更新日 2001 年 11 月 19 日

要約 : Microsoft .NET アプリケーションのアーキテクチャの比較を行います。データ格納、データ アクセス テクノロジ、ビジネス ロジック コードの構造、およびユーザー インターフェイス テクノロジなどのトピックを扱っています。

目次

はじめに
Duwamish 7 (.NET)
Favorites Service
FM Stocks 7 (.NET)
IBuySpy Portal
IBuySpy Storefront
Microsoft.com
Nile Books C#

はじめに

アプリケーション アーキテクチャを、その保守のしやすさ、管理のしやすさ、パフォーマンス、スケーラビリティ、およびセキュリティの観点から比較検討することで、アプリケーション開発者はアプリケーションの設計に関してさまざまな洞察を得ることができます。2001 年 10 月 22 日~26 日にロサンゼルスで開かれる Microsoft Professional Developers Conference (PDC) の MSDN Application Architecture Review Panel は、この種の比較を行うためのヒントを提供してくれるでしょう。この記事と、これに関連するオンライン ディスカッションでは、パネリストたちが討論の対象とするアプリケーションとその問題点を紹介しています。対象となるアプリケーションには、IBuySpy などの「サンプル」アプリケーションと、Microsoft.com などの「現実の」アプリケーションが含まれています。

アーキテクチャに関するその他のディスカッション

アトランタで開かれた Tech Ed 2001 では、これらのアプリケーションが提示する主なアーキテクチャ上の問題を扱うパネル ディスカッションが開催されました。このイベントに関する記事は、Tech Ed 2001: .NET Application Architecture Panel Discussion にあります。ディスカッションの糸口の 1 つとして、.NET アプリケーションの重要なアーキテクチャ上の問題である XML Web サービスの使用方法があります。最近、Microsoft の Web サービス アーキテクトである John Shewchuk は、.NET Show の Robert Hess と、これらの問題に関するディスカッションを始めました。このインタビューを参照してください

ディスカッションへの参加方法

現在、これらのアプリケーションが提起する設計上の問題と、.NET を使った分散型アプリケーションの構築に関するその他のトピックを巡るディスカッションが関連ニュースグループで行われています。ニュースグループにアクセスするには、NNTP ニュースリーダーを使って news://microsoft.public.dotnet.distributed_apps を参照するか、Web ブラウザを使って https://msdn.microsoft.com/newsgroups/default.aspx を参照してください。ぜひこれらのディスカッションに参加してください。

多くの .NET アプリケーションは Microsoft® Windows® DNA アプリケーションから進化したものです。Windows DNA のインプリメンテーションを .NET のインプリメンテーションと比較すると、アプリケーションを論理的な層に分割することによって、保守のしやすさを向上させ、インクリメンタルな移行を可能にするアーキテクチャが実現できることがよく理解できます。また、こうした比較によって、.NET のテクノロジの長所と、移行を促す利点が明らかになります。

以下の例は、保守のしやすさ、管理のしやすさ、およびパフォーマンスの点でのデザイン間のトレードオフを示しています。

Duwamish 7 (.NET)

Duwamish 7.0 は、Microsoft .NET プラットフォーム用に構築された、多層形式の分散型 B2C コマース アプリケーションです。そのデザイン、開発、および導入は、開発者が .NET プラットフォームの多様な機能を使って、信頼の置けるスケーラブルで高性能のアプリケーションを構築する方法に関するヒントを与えてくれます。これは C# と Visual Basic .NET の両バージョンでインプリメントされています。

このアプリケーションは、1 台のマシン、物理的な 2 層 (web、データベース) 構成、または物理的な 3 層 (web、アプリケーション、データベース) 構成に導入することができます。

Code Center でソース コードを表示し、ダウンロードすることができます。

プレゼンテーション

  • ASP.NET Web フォームとサーバー コントロール
  • ASP.NET 出力キャッシング

ビジネス ロジック

  • インプリメンテーションは C# と VB .NET の両方
  • ビジネス ファサード、ビジネス ルール

データ アクセス

  • ADO.NET データセットで SQL プロバイダを使用

データ

  • SQL Server 2000 データベースでストアド プロシージャを使用
  • データベース トランザクション

Favorites Service

Favorites Services は、MSDN Architectural Samples Team が作成した URL の格納/取得を行うサンプルです。このサンプルは、現在のテクノロジをベースにしてスケーラブルで信頼の置けるセキュアな XML Web サービスを構築するときに考慮すべき主な問題点についての実践的なガイダンスを提供しています。このサンプルには、サービスのデザイン、開発、および導入を説明するドキュメンテーションのセットが付属しています。

MSDN Online Code Center で、プロジェクトのドキュメンテーションを読んだり、 アプリケーションのソース コード の表示とダウンロードを行うことができます。

Favorites Service をベースにしたアプリケーションを使用してみたい方は、 http://www.coldrooster.com/favorites.asp を参照してください。

ビジネス ロジック

  • Microsoft® Visual Basic® 6 COM コンポーネントによるインプリメンテーションを、SOAP Toolkit 2.0 を使って Web サービスとして公開しています。
  • キー キャッシュは C++ で書かれています。

データ アクセス

  • ADO 2.6

データ

  • 2つのMicrosoft® SQL Server 2000 データベース
  • ストアド プロシージャ
  • SQL Server 2000 の XML 機能を使って、リレーショナル データを XML に変換

FM Stocks 7 (.NET)

FM Stocks 7.0 は、Microsoft .NET プラットフォーム用に構築された、多層形式の B2C ファイナンシャル サービス アプリケーションです。そのデザイン、開発、および導入は、開発者が .NET プラットフォームの多様な機能を使って、信頼の置けるスケーラブルで高性能のエンタープライズ アプリケーションを構築する方法に関するヒントを与えてくれます。

Beta 2 のC# のソース コードのダウンロードと表示。

プレゼンテーション

  • ASP.NET Web フォームとサーバー コントロール
  • Visual C#

ビジネス ロジック

  • Business Logic Layer (BLL) と Data Access Layer (DAL) の .NET アセンブリのインプリメンテーションは C# で書かれています(アセンブリは .NET Remoting を使って複数のサーバーに分散させることができます)。
  • General Accounting Module (GAM) のインプリメンテーションは、Microsoft® Visual C++® で書かれています。
  • COM+ 分散トランザクションは SQL Server および Oracle データベースをカバーします。

データ アクセス

  • ADO.NET
  • ADO 2.6 (GAM)

データ

  • SQL Server 2000 データベースでストアド プロシージャを使用
  • アカウンティング データには Oracle 8.0 データベースを使用 (オプション)

IBuySpy Portal

IBuySpy Portal Solution Kit は、ASP.NET を使ってポータル サイトを構築する方法を示しています。このキットはモジュール式のデザイン、キャッシング、XML オブジェクトのシリアライズ、Microsoft Windows 認証とフォーム ベースの認証、およびロール ベース セキュリティを扱っています。Windows 認証はオプションとして Active Directory Services を使用します。ロール ベース セキュリティは、ポータル コンテンツへのユーザー アクセスを制御するために使用されます。

IBuySpy Developer Solutions Web サイトを参照する

プレゼンテーション

  • ASP.NET、ユーザー コントロール、サーバー コントロール
  • ページは動的にロードされたユーザー コントロールから作成されます。
  • ページ領域の構成可能な出力キャッシング

ビジネス ロジック

  • ビジネス ロジックは Visual Basic .NET と C# の両方でインプリメントされています。
  • データ アクセスはビジネス クラスに含まれています

データ アクセス

  • ADO.NET、SQL プロバイダ、データセット

データ

  • SQL Server データベースでストアド プロシージャを使用

IBuySpy Storefront

IBuySpy Store Solution Kit は、スパイ機器を販売する架空の電子商店舗です。これは、XML Web サービスの使用方法を含めて、.NET Framework のすべての主要なテクノロジのデモンストレーションとなっています。

IBuySpy Store を参照する

プレゼンテーション

  • ASP.NET、サーバー コントロール
  • カタログ ページの出力キャッシング

ビジネス ロジック

  • ビジネス ロジックは Visual Basic .NET と C# の両方でインプリメントされています。
  • B2B のオーダー入力とステータスには SOAP XML Web サービスが使用されます。

データ アクセス

  • ADO.NET

データ

  • SQL Server データベースでストアド プロシージャを使用

Microsoft.com

Web 上の最大規模のサイトの 1 つである Microsoft.com は、アーキテクチャ デザイン上の問題の実験室として大きな役割を果たしています。現在、Microsoft.com は、XML Web サービスを使って検索サービスとセキュア サービスを公開しています。セキュア サービスは、現時点では Beta 1 が稼働しており、6 月に Beta 2 に移行する予定です。XML Web サービスにより、サイトはユーザー インターフェイス、コード、およびデータを明確に分離することができます。このように分離することによって、コードの再利用を通して保守可能性が向上するという利点があります。セキュア サービスは、現時点で 2700 万人のカスタマに対して認証機能を提供しています。

プレゼンテーション

  • アプリケーションのユーザー インターフェイスを持つ管理部分に は ASP.NET Web フォームが使用されています。

ビジネス ロジック

  • C#
  • XML Web サービス
  • XML Web サービスの背後で .NET Remoting を使用し、コード ファイルを統一することで管理を単純化しています。

データ アクセス

  • ADO.NET (大量のデータが返されるときにはデータセットを使用)

データ

  • SQL Server 2000 データベースでストアド プロシージャを使用 (カスタマ データは、16 個に水平分割された SQL Server 2000 データベースに格納されています)
  • SQL Server レプリケーション

Nile Books C#

Nile Books C# は、Nile Books Doculabs ベンチマーク アプリケーションを、.NET Framework と C# を使って書き換えたものです。これはパフォーマンスとスケーラビリティのデモンストレーションとして設計されています。このアプリケーションは、いくつかの分野 (検索など)で .NET 出力キャッシングを利用して、パフォーマンスを劇的に改善しています。

マネージド コードの C# のインプリメンテーションは、C++ のネイティブ コードによる ISAPI インプリメンテーションとほぼ同じ速度を実現しますが、これは一部には ASP.NET の速度のため、また一部には SQL Server 用のマネージド プロバイダのパフォーマンスのためです。他の Nile インプリメンテーションの詳細については、MSDN Library を参照してください。

プレゼンテーション

  • C# インプリメンテーション。インライン コード/Web フォームを含む。
  • ASP.NET で HTML 3.2 を出力

ビジネス ロジック

  • インプリメンテーションは別の .NET アセンブリ (DLL) に含まれています。

データ アクセス

  • ADO.NET DataReader によって最大限のパフォーマンスを実現
  • SQL Server 用の .NET マネージド プロバイダ
  • Microsoft OLE DB Oracle プロバイダを使用する Oracle インプリメンテーション
  • .NET HTTP ランタイム (HTTP コンテキスト オブジェクト) により、データベースにアクセスするためのグローバルなオブジェクト プールを作成しています (これは本質的にデータベース接続プーリングと同じような動作をします)。

データ

  • インプリメンテーションは SQL Server と Oracle の両方
  • ストアド プロシージャ
  • データベース トランザクション