2016-09-02 11 views
2

私はMicrosoft Orleansを学んでいるだけで、私たちのシナリオの1つをどのように処理するのが最善だろうと思います。要求を受け取るRESTサービスがあり、最終的に外部システムに新しいレコードが作成されます。このレコードは長いId値を持ちます。このIDを呼び出し元に返します。オルレアン・キーとデータベース・レコード

このシナリオの推奨事項は何ですか?外部システムの呼び出しとIDの取得を処理するステートレスなグレインがあるはずです。私はこの "ファクトリ"グレインがIDでグレインを作成し、そのグレインに初期情報を提供すると考えています(外部ストアからデータを取得する必要はありません)。しかし、初めて外部の店舗からこの情報を読み取ろうとはしません。

Microsoft Orleansグレインを使用してこれを処理する方法に関する推奨事項はありますか?

答えて

2

このレコードのデータをグレイン内でどのように処理するかによって異なります。 しかし、一般的には、あなたのサービスは普通の穀粒(ステートレスワーカーの穀粒ではない)を呼び出す必要があり、長いid値を穀粒の主キーとして使用する必要があります(「穀粒を作成する」というものはありません。自動的にインスタンス化されます)。 グレインは外部ストレージからデータを読み取るか、明示的にそのデータの一部を渡すことができます。そして、あなたがこのデータに関する先物の要求をメモリから提供する必要があれば、それらをこの穀物に導き、それを提供します。グレインは、このデータが変更可能であれば、周期的に(または何らかの外部メッセージによって)このデータをリフレッシュ/無効化することもできます。

+0

最初のリクエストが到着したとき、Idはありません。代わりに、外部システムへの呼び出しは新しいインスタンスを作成し、外部システムは新しいIDを返します。だから私は外部システムへの最初の呼び出しの後まで、Idを持っていないでしょう。 私のグレインはこのIDをクライアントに返します。したがって、将来、クライアントはステータスを取得したり、編集の変更を加えることができます。 –

+0

このような場合は、ステートレスワーカーグレインを使用して、最初の呼び出しを外部システムに渡し、その後のアクセスに通常のグレインを使用することができます。 –

関連する問題