サードパーティのモジュールをアプリに統合するためのベスト プラクティス

StackOverflow https://stackoverflow.com/questions/48322

  •  09-06-2019
  •  | 
  •  

質問

私たちには、おそらく 50% のカスタム機能で構成されるアプリケーションの構築を伴うプロジェクトがいくつかありますが、その後、たとえば、ウィキ、フォーラム、および私たちが発明していないすでに発明されている「車輪」であるその他のコンポーネントを取り込みます。最初から書き直したい。

これらのサードパーティ アプリケーションには通常、独自のデータベース、テーマ、認証システムがあります。私の経験では、シングル サインオンや共通のテーマ、複数のサブアプリ内のエンティティ全体のタグ付けや検索などを機能させることは、かなり難しい問題です。この種の統合プロジェクトのベスト プラクティスにはどのようなものがありますか?

これまでの私たちのアプローチは、コンポーネントを慎重に選択し、できれば HTTP (REST や SOAP など) 経由で、明確に定義された API を持つものを選択することでした。ただし、それは常に可能であるとは限りません (適切なコンポーネントは見つかりませんでした)。そのように機能するフォーラム)。私たちの多くは最近、そのようなことがますます頻繁になっていると思いますが、これを行おうとしている人にできる提案はありますか?

役に立ちましたか?

解決

アプリケーションとサードパーティのアプリケーションまたはライブラリの間のインターフェイスが、万が一に備えて他のものに簡単に置き換えられるものであることを確認してください。場合によっては、サードパーティ ソフトウェアが標準 API の実装にすぎない場合があります (Java は、JDBC、JMS、JNDI などでこれを頻繁に実行します)。他の場合には、これは、自分で考えた API でサードパーティのライブラリをラップすることを意味します。

もちろん、そのアイデアを窓から捨てて、サードパーティ ソフトウェアと緊密に統合する場合もあります。アプリケーションを本当にそのサードパーティにバインドする必要があることを確認してください。一度この道を進んでしまうと、戻って考えを変えるのは本当に難しいです。

他のヒント

オープンソース ライブラリを使用する場合は、適切なライセンスを持つライブラリを選択してください。(アプリケーションを OEM しようとする場合に) 多くの企業が LGPL のようなライセンスを忌避するという難しい方法があることがわかりました。理由については詳しく説明しませんが、彼らは Apache、BSD、または MIT スタイルのライセンスを好みます。

しばらく使用されているツールを選択してください。コミュニティをチェックしてアクティブであることを確認してください。他の人が何を使用しているかを確認し、それらのツールを使用してください。

連携してうまく機能するテクノロジーを選択してください。ORM と Web サービスを使用するアプリケーションをまとめました。ORM 用の Spring Framework + Apache CXF + JPA により、優れたテクノロジー スタックが作成されました。私が使用するすべてのツールは Spring で簡単に結合できるため、一緒に使用するのが簡単になります。一緒に使用するためだけに大量のコードを書かなければならないツールを選択することは最も避けたいことです。

標準に基づいたテクノロジーを選択してください。そうすれば、ライブラリやツールが使用できなくなった場合でも、同じ標準を使用する別のライブラリやツールに簡単に切り替えることができます。

Donald Knuth 氏は、再利用可能なコードよりさらに優れているのは、変更可能なコードであるため、API がない場合は、適切に記述され、カスタマイズ可能なオープンソース アプリを探す必要があると述べています。

データベースやログイン システム、その他のプログラミング部分については (例: どのように実行するのかわかりません)テーマ設定が役立つ可能性があります)、状況に応じて、モジュールがそれ自体を単独で実行していると信じながら、実際にはコードと通信するようにラップすることを試すこともできます。

私のアプローチは、いくつかのコア機能にサードパーティのコードを使用することでした。たとえば、データ アクセスには Subsonic、UI には Devexpress コンポーネント、データ入力と検証には Peter Blum Data Entry Suite を使用しています。Subsonic はオープンソースであり、Devexpress Peter Blum のコントロールには追加料金でソース コードが入手可能です。これらのコントロールを自分で作成しようとしても、その機能を取得することは不可能でしょう。

このアプローチにより、データベースへのアクセス方法や、見栄えの良い編集可能なツリーリストの作成方法を気にすることなく、アプリケーションのカスタム機能に集中できます。確かに、完全に構成されて機能するフォーラムはありませんが、アプリに SQL データベースを使用することはわかっているので、連携するためにさまざまなデータ ストレージ コンポーネントを取得しようとする必要はありません。私は wiki を持っていませんが、devexpress ui コンポーネントの使用方法を知っていますし、Peter Blum のコントロールを使用するとデータ入力のフォーマットと検証が簡単に行えます。言い換えれば、すべてのプロジェクトの開発をスピードアップするツールを学習し (もちろん慎重に選択してください)、そうすればアプリケーションのカスタマイズが必要な部分に集中できるようになります。

ソースコードが利用可能であれば、それがオープンソースかどうかはあまり気にしません。オープンソースであれば、私はプロジェクトに寄付します。商用コンポーネントであれば、正当な価格を支払います。いずれにせよ、これらのツールはプログラミングを楽しくするのに役立ち、結果はデー​​タの整合性が保たれ、見栄えも良くなります。Wiki やフォーラムを開発すれば、それらをシームレスに連携させることができるとわかっています。最後に、私が言及したツールはすべて長い間存在しており、高い評価を得ている優れた開発者によって作成されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top