2009-04-19 9 views
1

私は今、開発者用APIのの機能に取り組んでいます。APIの開発:新機能と互換性のバランス

最初のバージョンがリリースされ、現在のところ少数のユーザーしかいません。私が2番目のバージョンを開発し始めてから、一部の部品が再加工され、APIをより洗練されたものにするために一部が削除されました。

しかし、2番目のバージョンの展開は、古いバージョンのユーザーにとっては苦労する可能性があります。 私たちのマーケティング部門は、API製品を多く強化し、より多くの機能を追加する予定です。私はシステムを構築する必要がありますどのように

、そう
1)我々は新しい興味深い機能
を追加するための「旧バージョン」に拘束されない 2)現在のAPIのユーザーがいるため不満はありません変更されたAPIに準拠するためにシステムを修正する必要があるかどうか

公開される前にAPI製品をかなり長い間サンドボックスでテストする必要があります。仕様では?

答えて

6

すでにいくつかのユーザーがいるAPIを変更する必要がある場合は、古いAPI呼び出しを非推奨にして新しい呼び出しを使用することをお勧めします。

古いAPIの機能を削除すると古いコードの機能が損なわれる可能性があります。そのため、古いAPIを使用している一部の開発者には多少不満が感じられます。

特定の機能が廃止予定であることを示す方法を提供している場合は、ユーザーが古いAPI呼び出しの使用を停止して新しい呼び出しに切り替えることを示す指標として使用できます。 Javaでは、@deprecated javadoc tagは機能が廃止されたことを文書に記録することができます。または、Java 5から@Deprecated annotationを使用して非推奨のAPI機能の呼び出し時にコンパイル時の警告を発生させることができます。

また、古いAPIから新しいAPIに移行する際のヒントやヒントを提供して、人々がAPIとやりとりする新しい方法を使用するよう促すのは良い考えです。何をすべきか、何をしないかに関するサンプルとサンプルコードがあれば、APIのユーザーは新しい、好きな方法でコードを書くことができます。

パブリックAPIを変更することは困難ですが、古いものから新しいものへの移行には注意が必要ですが、APIのユーザーに与えられる痛みの量を特定のエクステント。

ここには、SunのHow and When to Deprecate APIsに関する記事があります。これは、APIの一部を廃止することが適切な場合の詳細を示しています。

また、.NETのObsolete attributeがJavaの@Deprecatedアノテーションに似ていると付け加えたDavid Schmittに感謝します。 (私たちは、両方同時にこの回答を編集していたとして残念ながら編集は、私の編集によって上書きされました。)それはあなたがあなたのコミュニティと打つ必要がありますバランスです

2

  • の古い機能を維持するにはaeonsとWin32 API(30000公開 関数)で終わるでしょうか?

  • APIを常に書き直してください。新しいリビジョンが頻繁に出てきて(1.0,2.0,3.0,3.5 ...)、既存のプログラムが破損したり、新しいそして

コミュニティは、変更の寛容と実験に開いている場合

、あなたはリーン、現在のAPIのために努力し、いくつかの破損、別名ビット腐敗は、つながることを知っているだろうなどのUIを行う方法)を改善しました。一方、コミュニティにレガシーコードがたくさんあり、リソースや最新のバージョンへの欲求がない場合は、下位互換性を保たなければなりません。あるいは、そのすべてのものが新しいAPIで動作しないだけです。他の回答の一つに


注:非推奨APIは、「道うちに」ある機能を示すのよく使われる方法ですが、限り、彼らは仕事として、多くの開発者はでさえそれらを使用します新しいコードは、それらが慣れ親しんだ関数であるためです。実際に "廃止予定"の警告に気づく意識と、古いAPIの他のインスタンスを検索して更新する時間の両方を持つ、啓発された開発者はごくわずかです。

2

マイクロソフトは非常に奇妙な後方互換性で有名です。彼らがしたことの1つは、旧式の廃止された呼び出しをすべて保持しておき、新しいAPIが古いAPIには使えない拡張機能にアクセスするために新しいプログラムを追加することでした。

使用するプログラミング言語は指定していませんが、.NETとJavaの両方で特定のAPI呼び出しを廃止とマークするメカニズムがあります。下位互換性が非常に重要な場合は、同じルートを使用することをお勧めします。

1

デフォルトとする必要があります。この原則を妥協しなければならない唯一の理由は、APIが何らかの形で安全でないためにユーザーがより安全な方法に変更するように強制する場合です。

1

元のAPIに書かれたIdealyのアプリケーションは、引き続き新しいバージョンで動作します。

新しい機能を追加する一方で、古いアプリケーションを引き続き実行する方法の1つは、API呼び出しを2つのバージョンにすることです。

たとえば、API内で2つのパラメータ(引数)を取る関数Fooがあるとしますが、新しいバージョンで実際に3つのパラメータを取る必要があると判断したとします。 Fooのようにして、新しい機能を追加してくださいFoo2これは3つのパラメータをとります。

そうすればユーザーは、下位​​互換性のためにフーに対してコードを継続するか、彼らは新しい機能が必要な場合は、新しいfoo2は機能を使用することができます。

このテクニックは、MicrosoftがWindows APIによく使用されています。