現在、会社で使用するアプリケーションを計画しています。デスクトップアプリケーションをビルドするために必要です。現在のところ、近い将来、アプリケーションがモバイルまたはブラウザーで利用可能になるかどうかは不明です。
私には2つの可能性があります。
デスクトップアプリケーションから直接データベースにアクセスする
REST APIを作成し、これに接続します
REST APIを使用できますか?可能であることはわかっていますが、「正しい」方法ですか?(ベストプラクティス)
REST APIを直接作成することには、いくつかの(可能な)利点と欠点があります。
欠点:
利点:
数百万のレコードを含む巨大なデータベースを備えた大規模なアプリケーションの場合、すぐに、単純な選択、更新、挿入、削除だけでは十分ではないことに気付くでしょう。
だからあなたは別の方法で考え始めます。プロシージャとトリガーを作成して、より複雑なものをデータベースで直接処理しますが、これはあまり良くありません。 CRUD操作を実行すると、データベースは優れたパフォーマンスを発揮します。長い手順?それほどではありません。
プロシージャの概念をサポートしないデータベースに切り替えると想像してみてください。何をする?代わりにプロシージャをコードベースに移動する必要があり、Javaでプログラムすると、どのデータベースエンジンを選択しても、常にそこに留まることが確実になります。
言うまでもなく、プロシージャは通常ビジネスロジックの一部であり、コードベースとデータベース全体にビジネスロジックを適用することはお勧めできません。
理想的には、データベースと独自のビジネスルールを実装するクライアントとの間に常に仲介者がいる必要があります。データベースへの直接アクセスを提供することは良い考えではありません。これを行うと、アクセス権を持つユーザーはテーブルに直接アクセスでき、そこにあるデータでほとんど何でもできるからです。
これについての私の意見は次のとおりです。あなたはウェブサービスを使いたいという正しい考えを持っていますが、あなたは間違った技術を使うことを計画しているかもしれません。
RESTと言うとき、私はあなたがAsp.Net WebApiについて話していると想定しています。これは、イントラネットアプリケーションでは不適切な技術です。 REST&WebApiは素晴らしいですが、誤解しないでください。しかし、どんな内部アプリケーションにとっても、WCF Webサービスは私の控えめな意見に行く方法です。クライアントはクラスライブラリと同じようにサービスエンドポイント。つまり、デスクトップクライアントでXMLやJSONを処理するのではなく、クラスとオブジェクトを操作します。
とにかく、はい。あなたは正しい考えを持っています。 Webベースのクライアントが必要かどうかがわからない場合は、後で必要になったときに簡単に追加できるようにシステムを設計する必要があります。サービス指向アーキテクチャーを使用すると、さまざまなタイプのクライアントを追加する方がはるかに簡単です。
このように見てください、それは間違いなくが一般的なパターンであり、ベストプラクティスとして合理的に説明されているかもしれません。
プラットフォームによっては、ほとんど問題を解消するツールが見つかる可能性があります。Microsoftは接続されたアプリに対してODATAをサポートしており、学習曲線を上ると、データを簡単にフォーム化できます。
より実用的に-デスクトップアプリケーションのデータレイヤーに必要なAPIを定義し、そのAPIをコード化します。すべてのデータベースアクセスをそのAPIの背後に配置します。これにより、実際にアプリケーション開発の観点から物事が改善されます。その後、実際のデータベースアクセスコードの場所はそれほど重要ではなくなります(データベースに直接通信するコードによって同じAPIを実装できます)または、残りのエンドポイントを介してデータベースと間接的に対話するコードによって)。直接実装から始める場合、RESTバージョンは実質的に同じAPIのラッパーになるため、あまりペナルティが課されることはありません...
それはおそらく私がそれを作りたいほど単純ではありません-しかし、それは良いパターンです [〜#〜] yagni [〜 #〜] ルート。