データベースアクセスとサービスの抽象化に関する以前の質問への回答は、SOAではデータベースサービスがパブリックAPIを提供する必要があるが、データベースへの直接アクセス(SQLまたはORM経由)は提供しないことを理解するのに役立ちました。
さて、Erlang / OTPアプリケーションで(SOA)サービスを作成したい場合は、gen_serverまたは他のOTPの動作である必要があると思います。その場合、APIは簡単に定義され、サービス自体を簡単に組み込むことができるからです。アプリケーション。
しかし、サービスからそのコンシューマーにデータを渡すにはどうすればよいですか?
RubyonRailsでは次のようなことができることを知っています
persons = Person.find(all)
persons
その後、サービスコンシューマーに戻ることができます。
Erlang / OTPpersons
で数千レコードの場合、gen_server returnステートメントで渡す必要がありますか?これは、gen_serverがその呼び出し元(サービスコンシューマー)にメッセージを送信し、メッセージが基本的にErlangVMにコピーされることを意味します。私はそれがErlangメッセージパッシングの適切な使用法ではないと思う傾向があります。
だから私の質問は:
- Erlang / OTPでデータベースサービス(SOA)を作成するにはどうすればよいですか?
- このようなサービスのAPIは、OTP標準メカニズム(gen_serverリターンメッセージなど)またはその他のものを使用する必要がありますか?