InfoQ

News

基本クラスライブラリに対する変更および改善

作者 Jonathan Allen , 翻訳者 編集部 投稿日 2008年11月17日 午前12時36分

コミュニティ
.NET
トピック
.NETフレームワーク

2005年以来、基本クラスライブラリは停滞している。他の.NETフレームワークは、進化しCLRの2.0バージョンにビルドされたが、基本クラスライ ブラリチームは、ゆっくりと希望リストを大きくしている。.NET 4では、CLRの新バージョンおよびBCLが準備段階に入り、最終的にこれらの拡張機能は実現可能となっている。

新しい型

IronPythonやF# のような言語には、単純だが真の整数型であるコア.NET言語に完全に適合しないものがある。整数を指定された設定ビットに適合するものに限定するVBや C#と異なり、これらの言語は事実上、どんな値も保持することができる。しかし、その2者間で値を共有するためには、他の言語は言うまでもなく、共通の実 装が必要である。基本クラスライブラリは、BigIntegerを追加することになっている。この高性能の実装はBCLチームおよびMicrosoft Solver Foundation(リンク)によって共同開発された。

主としてF#およびIronPythonに追加されたその他の型は、Tuplesである。Tuples自体は、たいしたものではない。元来固定長の一連の値を保持するデータ構造である。ある意味では、配列のようであるが、各値はさまざまな型を取ることができる。BigIntegerのように、BCLレベルにそれを組み込む理由は、重複した、互換性のない実装を避けることである。

コレクションの下に、SortedSetがある。これは別のクラスであるが、各ソートキーが固有でなければならない保管された一連のオブジェクトをサポートする。重複を許可する保管されたリストが、未だに欠けている。

管理されていないメモリサポート

非常に大きなファイルを扱っている場合、ネイティブデベロッパはMemory-Mappedファイルとして知られる技法に頼っている。その名前が示唆して いるように、メモリーマップされたファイルは、ファイル状の構造をメモリ内のアドレスにマップする。実際のファイルの他に、デバイスや共有オブジェクトを マップできる。メモリマップされたファイルの最も一般的な使用用途の1つに、プロセス間通信がある。このために、各アプリケーションが同様のファイル記述 子を開く。BCLの次バージョンでは、.NETデベロッパは、プラットフォーム起動呼び出しの代わりに、メモリマップされたファイルを直接使用することが できる。

国際化対応

.NET 4およびSilverlight 2のResource Managerは、CurrentUICultureのチェーンへのデフォルトではなく、UI言語に対するユーザの好みをサポートする。ユーザが複数の言語を好んで使用している場合に、特に重要である。

変化をもたらす

複数のSystem.Stringメソッド向けのデフォルトの比較ロジックが、変更されている。これは、英語のみのアプリケーションに影響を与えないが、国際的なアプリケーションに影響を与える可能性がある。

System.String(StartsWith、EndsWith、IndexOfおよびLastIndexOf)でのデフォルトの部分的なマッチングの過負荷は、デフォルトで国別環境に無関係である(原型)ように変更された。また、System.StringやSystem.CharのToUpperおよびToLowerが変更され、現在の国別環境の代わりに、不変の国別環境を使用する。StringComparisonパラメータを取る過負荷をつねに使用するよう推奨する、ガイダンスやFxCopの ルールがあるのだが、注意が足りないデベロッパはしばしばデフォルトの過負荷を使用する。.NETの以前のバージョンでは、これらのデフォルトの過負荷 は、現在の国別環境を使用し、国別環境に依存した比較をおこなう。無意識なデベロッパがデフォルトの過負荷を使用して、セキュリティ依存のストリング比較 をする場合、しばしばこれは微妙なバグを誘発する。最も顕著なのは、セキュリティの脆弱性である。

パフォーマンスの改善

現在、DirectoryおよびDirectoryInfo上のメソッドは配列を返す。これは、1つのエントリーがアクセスされる前に、ファイルの配列のすべてが追加される必要があることを意味する。DirectoryおよびDirectoryInfoへのIEnumerableのサポートが追加されたので、他のリストが追加されている間にも、ディレクトリの最初のファイルが即座にアクセス可能である。

 

原文はこちらです:http://www.infoq.com/news/2008/11/BCL-4

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
slashdot+
Hatena

特集コンテンツ一覧

Agile Japan 2009

2009年4月22日、東京千代田区にある放送会館で「アジャイルジャパン2009」が開催されました。本イベントは「ソフトウェア開発の次世代リーダーをつくる」ことを合い言葉に、200人以上の参加者を集めてスタートしました。

Flex 4の新機能トップ10

今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumboというコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。

Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ビジネス領域の深い理解を反映したドメインモデルを設計するための、ヴィジョンとアプローチです。この本は、Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約しました。

JavaプログラマがFlexとBlazeDSを学んだ方がいい13の理由

この記事ではJavaプログラマがなぜFlexとBlazeDSを学ぶべきなのかについて13の理由を述べています。なぜ高度にインタラクティブなWeb サイトからJavaで開発されたバックエンドをもつエンタープライズ・アプリケーションまでを含む、リッチ・インターネット・アプリケーション(RIA)の開発にFlexとBlazeDSの組み合わせが最適な選択肢となるのかについて述べています。

仮想パネル: バックログは重要な成果物とプラクティスか、それとも無駄か?

Mary Poppendieck氏、Ron Jeffries氏、Jeff Patton氏、David West氏、Steve Freeman氏、Jason Yip氏が、バックログに関する彼らの意見とアジャイルチームを成功させるために必要な事を語った。

Perf4Jを使ったパフォーマンス解析とモニタリング

この記事ではAlex Devine氏が、Java開発者がPerf4Jをどのように利用できるかと、タイミングステートメントにコードを追加し、ロギング、結果の解析とモニタリングを行うオープンソースツールセットの説明をします。

複雑な外部DSLを開発する

本稿では、Vaughn Vernon氏が内部DSLと外部DSLの違いを説明し、複雑な外部DSLを開発する際のステップを示します。

J2EEアプリケーションにおけるAOPを使ったフェッチ戦略の実装

この記事では低レベルのサービス・レイヤやリポジトリ・レイヤを肥大化させることなく、フェッチング・ストラテジによってモジュール化された方法でバックエンドにあるシステムからデータを取得する処理を最適化する方法について説明します。