私はあなたの質問に答えてみてください。しかし、私はあなたが望んでいた答えを得ることを確信していません...
私は、BorlandがデータベースのInterbaseでコールバックを提供するこの 'callbacks'デルファイ)は、データベースが「アクティブ」になる可能性があると約束された非常に気の利いた新しい技術を介して「通知」を受け取りました。
これは後で 'waste of time theory'と呼ばれました。
これは、DBMSのコンセプトが非常に有望視されていたのは間違いないでしょう。データベースは、スケールアップするだけで水平にすることができない層の1つです。
したがって、レスキューにプログラミング言語。サービス指向アーキテクチャー(SOA)の考え方。多くの人がSOAを「ウェブサービス」と混同していますが、これは実際にこの新しいコンセプトの誇大宣伝でした。
Fiefdom/Emissaryのデザインパターン(またはMaster/Agentパターンの名前を変更してよりクールでプロフェッショナルなものにする)をチェックすると、その主なアイデアはそのリソース(データベースの読み取り)すべてのコールが単一のデータアダプタ経由でファンドネットされていることを確認します。
明らかに、このようなデザインは、トリガーやコールバックフレームワークではまったく機能しません。
しかし、あなたはデザイン全体を再考すべきだと思います。すべてのアクションとすべてのコールを単一の 'DataLayer'(おそらくEntity Frameworkを使用)で、そしておそらくキャッシュメカニズムの上に置くと、メッセージをフードチェーンにバックアップするためにデータベースに依存する必要はありません。
「データベース中心」になると奇妙なことが起こることを示すために、ここでは長い時間前に書かれた電子メールを送信しない方法についての極端な実例があります。感銘を受けた人:
事実1:Sql Serverは電子メールを送信できます。
事実2:これはVBScriptで行うことができるかどうか、どのようにASP3コーダは知りません。
ASP3:、テキストボックスの電子メール・アドレスを読み、COM +層に送信
コム+:電子メールアドレスを取得し、datalayer
Datalayerに転送:電子メールアドレスを取得し、ストアドプロシージャ
に転送SPROC:電子メールアドレスを取得し、SQL関数に
機能を転送:その電子メールアドレスが@を持ってチェックするために奇妙な部分文字列のことを行います。その中に。 trueまたはfalseを返します。
SPROC:そのままテーブルを返す:つの列と1又は0
Datalayerを含む1行のレコードセットを返します。
COM +:最初の列を変換し、真または偽
ASP3に値1または0を持つ行:+
COM + COMに電子メールの件名および電子メールテキストを電子メールアドレスを送信し、真の場合:送信datalayer
Datalayerへの正確な情報:SPROC
...ストアドプロシージャを呼び出します。
府... SQL関数を呼び出しますnction:あなたがここまで読めば、私のアドバイスは、SQL Serverは、テーブル、リレーション、インデックスおよびトランザクションを管理できるようにするためにある電子メールに
を送信するためにSQL Serverのメールエージェントを使用しています。それは非常に良いです。これらのタスクを超えて、ストアドプロシージャにカーソルを含めると、適切なコードを使用して処理する方が効果的です。
あなたのポーリングは、変化があったことをどのように検出しますか?トリガー? –
はい - トリガー。 – SLoret
サイドバーとして。私はこの技術を一度も使用したことはありませんが、それは役に立ちます:http://msdn.microsoft.com/en-us/library/ms130764(v=sql.105).aspx – MarkD