外部投票サービス、別名嫌いな機能

こんにちは、Habrasociety!



私のプロジェクトの1つ(ブラックジャックおよびその他すべてのソーシャルチャーム)を実装するプロセスでは、プロジェクトドメインの一部のエンティティに対してユーザーの投票機能 (いいね/嫌い、評価など)を実装する必要がありました。



免責事項:残念なことに、いくつかの抽象的な外部投票サービスの機能についての議論のみが行われ、コードや有用なリンクはありませんが、知識のある人々からフィードバックを得る必要があります。



既製のソリューションをGoogleで検索した後、適切なものは見つかりませんでした。 基本的に、ソリューション(さまざまなWebフレームワークのプラグイン)は、既存のテーブル(またはMongoDBの場合はコレクションオブジェクト)に追加のフィールドを追加することになります。このフィールドは、好き/嫌いの数、および既に投票したユーザーの数を書き込みます。 このようなソリューションには重大な欠点があります。一方で、投票アルゴリズムを簡単に変更するための十分な柔軟性がないため(適切なモデルを見つけるプロセスの新しいプロジェクトにとって非常に重要です)、他方では既存のコードの変更が必要であり、さらに悪いことに、レベル投票機能を追加するためのデータストレージ。



同時に、 cackle.medisqus.comなど、サイトにコメントを追加する機能を提供するサービスが多数あります。サービスは開発中のプロジェクトの外部にあり、最小限の労力でサイト上のあらゆるものにコメントする機能を追加できます。ウェブサイト(またはアプリケーション内)。



あなたのサイトに投票を追加するための同様のサービスがないのはなぜですか?



投票サービスに必要な機能




したがって、いいねや評価の処理のメインロジックは、外部サービスを引き受けます。 たとえば、特定のオブジェクトに対するユーザーの「いいね」が繰り返されているかどうかを確認し、そのような投票を許可しないようにします。 同時に、誰が自分のプロジェクトの側ですでに実装できるものに投票できるかというビジネスロジック。



私が見たい追加機能のうち:



サービスとウェブサイトの統合


バックエンドとフロントエンド(Webクライアントまたはモバイルクライアント)からの2つの方法があるはずだと思います。 投票に関する情報をまったくあなたの側に保存しないことが可能であるため、あなたはクライアントから好きなものを作成したり、好きなものの数を取得したりするリクエストをクライアントから直接行うことができます。 したがって、ページは複数のソースから収集されます。 また、バックエンドでの投票に関する情報を収集し、結果をデータに挿入してからクライアントに送信して、外部APIにリクエストを送信することもできます。 おそらく非同期であっても、応答を待っている間に他のデータ処理を実行できます。



人気のある言語(Ruby、PHP、JS)用のプラグインが必要です。ミックスインやプロジェクトへの新しいモジュールの追加により、サブジェクト領域のオブジェクトを好きになったり嫌いにしたり、評価したりする機能を簡単に追加できます。



メリット






結論の代わりに


これは私の夢投票サービスのようなものがどのように見えるかです。 回答を受け取りたいのですが、誰かが同様のことをアドバイスできますか? それとも、そのようなサービスが必要でしたか?



All Articles