なぜWebサービスが悪いのか!

はじめに


時々、さまざまなWebサービスに直面したとき、「なぜそんなに複雑だったのか」という質問を自問します。 開発プロセス、コードの清潔さ、テスト、方法論に多くの注意を払っています。 コメントを作成し、ドキュメントを作成します。 しかし、同時に、基本的な外部システムインターフェイスであるWebサービスにはあまり注意を払っていません。

以下のすべては、さまざまなタイプのWebサービスに起因する可能性がありますが、基本的にはSOAP Webサービスについて説明します。

使用する


今日の世界では、Webサービスはどこでも使用されています。 毎日、誰かが世界中のAPIを使い果たしています。 ドキュメントを公開し、訪問者の流入を待っています。

サービス別に、ユーザーは天気を調べ、交通情報を取得し、最新のニュースを読み、イベントについて調べます。 facebook、twitter、vk、googleなどのすべてのソーシャルプロジェクト、ユーザーへのWebサービスへのオープンアクセス。 すぐに多くの便利なクライアントプログラムがあります。 人はいつでもどこでも自分の感情や考えを共有できると誰が考えたでしょう。
ますます多くの政府サービスが同じサービスを取得しています。 彼らのために、罰金を支払い、貴重な情報を受け取り、アプリケーションを書き、サービスを受けることができます。

サービスは、私たちを取り巻く情報システムをますます接続しています。

バラエティ


サービスの実装の基礎となるテクノロジーは非常に多様です。 レストサービス、石鹸、暗号化、さまざまなデータ転送プロトコル、データ圧縮技術、同期/非同期データ転送、保証付き配信があります。

これらはすべて、さまざまなバージョンのテクノロジーとサービスによって悪化しています。 互換性のあるシステムを作成するには、多くの努力をする必要があります。

誰が森の中にいて、誰が...


しかし、この多様性をすべて使用する方法は? ここでは意見が異なります。 しかし、実際には、多くのサービスはそうではないと言うことができます。 これを確認する最も簡単な方法は、一連のステートメントを使用することです。

次の場合、これはWebサービスです。


次の場合、これはサービスではありません。



単一のエントリポイント


適切に設計されたサービスは自給自足です。 彼自身が独自に解釈したインターフェースについて説明しています。 彼にとっては、クラスを作成するだけですぐに使い始めることができます。 クライアントコードでは、リクエスト属性の入力のみが実行され、追加の操作は行われません。 サービスのデータ構造はシンプルで簡単です。

すべてはコードと同じです。 最小のネストレベル、自己文書化可能性、要素および型の論理名のシステム(答えのSampleRequestは衝撃的です...)。

これらの要件を満たさないすべてのサービスは、模倣としか呼べません。 もちろん、これらは似ていますが、誰もサービスを使用できない場合、これはデータプロバイダーの問題です。

圧縮または最適化


ここですべてが発明されました。 base64を渡します。 多すぎる? 次に、MTOMを使用します。 まだたくさん? ギガバイトはWebサービスで転送されません、目を覚まします! 高速ファイルストレージへのリンクを渡します。 クライアントが写真、ドキュメント、アーカイブ、その他のメディア情報を必要とする場合、クライアントはそれをダウンロードします。 彼は、リクエストごとに20メガバイトの追加の負荷を必要としません。 サービスはテキスト情報を送信しますが、それ以外はすべて送信するのが合理的ではありません。

会社が製品を使用しない場合、費用はかかりません


サービスプロバイダー自体がそれを使用しない場合、特別な相互作用ルールを使用する場合、ルールに特定の特権を導入する場合、定義上、このサービスを使用することはできません。 サプライヤは、彼自身が対応できない不可解なサービスを作成しました。 あなたは悲しみなしにそのようなサービスを見ることができません...

おわりに


そのようなサービスはどこで見つけましたか? はい、どこにでもあります! 大規模なプレーヤーでさえ、理解できない技術的解決策を持っています。 適切に構築されたサービスによってのみ、多くの異種システムの高度な統合と安定性を実現できます。

Source: https://habr.com/ru/post/J138470/


All Articles