Ja odważę się spróbować odpowiedzieć na twoje pytanie. Ale nie jestem pewien, czy dostaniesz odpowiedź, na którą miałeś nadzieję ...
Pamiętam, jak wspominałem na początku lat 90., kiedy Borland promował tę nową, wielką funkcję "wywołań zwrotnych" w bazie danych Interbase, która dawała dzwoniącemu (Delphi) "powiadomienia" za pośrednictwem całkiem sprytnej nowej technologii, gdzie złożono obietnice, że baza danych może być "aktywna".
To było później znane jako "waste of time theory".
I wydaje mi się, że nigdy nie wzięło się tego pod uwagę, chociaż koncepcja DBMS wyglądała bardzo obiecująco, baza danych to jedna z twoich poziomów, którą można rozbudować, a nie poziomo.
Tak więc języki programowania na ratunek. A raczej pomysł architektury zorientowanej na usługi (SOA). Wiele zmyliło SOA za "Webservices", który był rzeczywiście zawarty w tej nowej koncepcji.
Ale jeśli sprawdzisz wzór projektu Fiefdom/Emissary (lub przemianowany wzorzec Master/Agent, aby brzmiał bardziej cool i profesjonalnie), odkryjesz, że głównym pomysłem jest wyłączna kontrola jego zasobów (czytaj bazy danych) oraz że wszystkie połączenia są kierowane za pośrednictwem jednego adaptera danych.
Oczywiście taki projekt nie działa w ogóle z wyzwalaczami ani żadnymi ramami zwrotnymi.
Ale myślę, że powinieneś przemyśleć cały swój projekt.Jeśli kierujesz wszystkimi akcjami i wszystkimi połączeniami za pomocą pojedynczej "DataLayer", być może za pomocą Entity Framework, a może na górze, na mechanizmie buforowania, nie będziesz musiał polegać na bazie danych, aby przekazywać wiadomości z powrotem do łańcucha żywnościowego.
Aby pokazać, jak dziwne rzeczy, które można uzyskać, gdy będąc na „baza-centric”, tutaj jest skrajnym rzeczywisty przykład na żywo, jak nie należy wysłać e-mail, napisany dawno dawno temu, przez koder nie było tak dużo pod wrażeniem:
Fakt 1: Serwer Sql może wysyłać wiadomości e-mail.
Fakt 2: Koder Asp3 nie wie, czy i jak można tego dokonać w VbScript.
Asp3: czytaj pole tekstowe adres email, wyślij do COM + warstwy
Com +: wziąć adres email i przekazania do dataLayer
dataLayer: wziąć adres email i przekazania do procedury przechowywanej
Sproc: przyjmij adres e-mail i prześlij do funkcji sql
funkcja: wykonaj dziwne czynności podłańcuchowe, aby sprawdzić, czy adres e-mail ma @. w tym. return true lub false.
sproc: zwraca zestaw rekordów z jednej kolumny oraz jeden rząd zawierający 0 lub 1
dataLayer: powrotu stołu postaci.
Com +: konwersja pierwszą kolumnę i wiersz o wartości 1 lub 0 do prawdziwej lub fałszywej
Asp3: Jeśli to prawda, wysłać adres mailowy z tematem e-mail i tekst e-mail do COM +
Com +: wysyła dokładne informacje na dataLayer
dataLayer: wywołuje procedurę przechowywaną ..
sproc: nazywa sql-function ...
fu nction: używa serwera poczty e-mail serwera SQL do wysłania wiadomości e-mail
Jeśli czytasz tak daleko, moja rada jest taka, aby serwer SQL zarządzał tabelami, relacjami, indeksami i transakcjami. W tym jest bardzo dobrze. Wszystko, co wykracza poza te zadania, a także to, że włączam kursory w procedurach przechowywanych, jest lepiej obsługiwane za pomocą odpowiedniego kodu.
W jaki sposób Twoje ankiety wykryją zmiany? Wyzwalacze? –
Tak - wyzwalacze. – SLoret
Jako pasek boczny; Nigdy nie używałem tej technologii, ale może się okazać, że jest ona przydatna: http://msdn.microsoft.com/en-us/library/ms130764(v=sql.105).aspx – MarkD