0

私は最近Webサービスプロジェクトに取り組んでいて、アーキテクチャの選択が非常に非効率的であることに気づきました。

私はこれを非常に手続き的な方法で、Pythonを使用したOOPと標準の例外処理のヒントを使って作成しました。基本的には、データを手続き的にステップスルーし、期待されるデータの存在を検証し、正規表現に対してデータを検証し、データベースに対していくつかのデータを検証し、特定のロジックを実行し、エラーをチェックして、最後に応答を返します。すべてのデータがJSONを使用して交換されたことに言及すると役立つ場合があります。

コードをさかのぼって、重複する例外を見つけ、それらの処理をロジックチェーンの最上位にプッシュしようとしました。これは私が望んでいたほど簡単ではなく、実際にはもっと時間がかかりました。また、ユニットテストが困難になり、読みにくくなるため、コードがバグになりやすくなりました。

ユーザーデータを処理するための手続き型コードのこのパラダイムは、Web開発では非常に簡単に理解できることに気づきました。たとえば、PHPでフォームを処理しているときに、データに対して一連のisset()メソッドと!empty()メソッドを連続して実行できます。このコーディングスタイルに関する私の問題は、エラーイベントのコーディングに膨大な時間を費やしているように感じ、この特定の目的のためにコードを一般化して再利用することが難しいことです。

さまざまなフレームワークが、フォームクラス(Djangoなど)を使用してこれを回避する優れた方法を提供します。ただし、検証ロジックの重複を減らすことで時間を節約しながら、予想される入力ごとにフォームを「作成」する必要があることに気付きました。Software as a Serviceを扱う場合、コーディングする必要のあるAPIメソッドが数百に及ぶ可能性があります。OOPはここで利点を提供しますが、クライアントが得られた効率を取り除く奇妙な要件を設定する場合があります。

Webアプリケーションは、MVCなどのパラダイム/アーキテクチャに従うことで大きなメリットを得ることができます。私の個人的な経験では、MVC(およびその原則を使用するフレームワーク)は、このタイプの問題にうまく適合していません。関数型言語の使用を検討しましたが、まだ試していません。

カスタムSASSまたはWebサービスプロジェクトの開発に適した特定の言語、アーキテクチャ/パラダイム、規則、またはサンプルフレームワークはありますか?

4

1 に答える 1

2

この作業の多くを行う人として、OOP と PHP に関する問題の一部は、当初 PHP が OOP 言語ではなかったことが原因であると言えます。OOP は後で言語に追加されました。そのため、コード例を見ると、手続き的な感じがすることがよくあります。

ここ数年は、Spring (Java) または WCF (C#) のどちらかが最も満足しています。これらの言語は両方とも、厳密に型指定された OO 言語です。概念的な観点から、これは私のプロジェクトに適したパラダイムにつながります。概要は次のとおりです。

  1. エンドポイント (REST または WSDL のいずれか) -- MVC での表示と同様
  2. サービス -- これらはエンドポイントにフィードし、必要に応じて DAO を調整します。これらをビジネス ロジックに合わせて整理する
  3. データ アクセス オブジェクト -- データをネイティブ オブジェクトに、またはその逆に変換します。これらをデータ ソースに合わせて整理します。
  4. モデル / API -- アプリケーションをサポートし、サービスのドキュメントを自動的に提供するネイティブ オブジェクト。

それが役立つことを願っています

于 2013-01-01T20:58:33.757 に答える