2010-08-03 18 views
6

मैं एक संग्रहीत प्रक्रिया (एक सेवा ब्रोकर इंफ्रास्ट्रचर के भीतर) को कार्यान्वित करना चाहता हूं जो एक वेब सेवा कहता है। मैंने सेवा ब्रोकर पर असचेनब्रेनर की पुस्तक से कुछ उदाहरण देखा। हालांकि मुझे कोई वेब सेवा कॉल नहीं मिला है। क्या कोई मदद कर सकता है?सेवा ब्रोकर और वेब सेवाएं

धन्यवाद Sqlbs

उत्तर

0

अध्याय 10 में पहली उदाहरण देखें अपने प्रश्न वेब सेवा कॉल को लागू करने के विवरण के बारे में है, तो सेवा दलाल के बजाय उचित वेब सेवा टैग के साथ सवाल से टैग करें।

+0

हाय, आपके नोट्स के लिए धन्यवाद। मैंने उदाहरण को देखा। यह सेवा ब्रोकर आधारभूत संरचना के भीतर एक वेब servie के आह्वान के बारे में है। मुझे वास्तव में क्या चाहिए: पंक्ति तालिका में डाला/अपडेट किया गया -> ट्रिगर आग डालें/अपडेट करें -> ट्रिगर सेवा ब्रोकर कतार में संदेश लिखता है -> एसक्यूएल सर्वर द्वारा संग्रहीत संग्रहित प्रो -> संग्रहीत प्रो कॉल वेब सेवा -> वार्तालाप समाप्त होता है। कोई उपाय? एसकब्स – user409679

0

मैं सेवा ब्रोकर के अंत में विंडोज सेवा बनाउंगा (और किसी भी जीत ऐप के रूप में वेब सेवा कॉल करें)। किसी भी तरह से नहीं लगता कि डीबी से वेब सेवा कॉल करना अच्छा विचार है।

बाहरी बाहरी सक्रियकर्ता here को ढूंढ सकता है। और सेवा ब्रोकर इंटरफ़ेस/बाहरी सक्रियकर्ता here डाउनलोड करें। सेवा ब्रोकर इंटरफेस बस महान है! प्रयोग करने में आसान।

4

हमारे पास मेरी कंपनी में एक समान कार्य था और यह पता लगाया गया कि बाहरी एक्टिवेटर के साथ एसिंक्रोनस ट्रिगर्स का उपयोग करने का एक इष्टतम समाधान था जो सफल कॉल के बाद .NET और de-queues संदेशों से webservices को कॉल करता था। यह माप क्या है कि आप एक नियमित डेटाबेस ट्रिगर बनाते हैं जो एसिंक्रोनस प्रोसेसिंग के लिए सेवा ब्रोकर कतार में एक संदेश भेजता है। एकेए असिंक्रोनस ट्रिगर। यहाँ Klause की किताब

-- Create the trigger written with T-SQL 
CREATE TRIGGER OnCustomerInserted ON Customers FOR INSERT 
AS 
DECLARE @conversationHandle UNIQUEIDENTIFIER 
DECLARE @fromService SYSNAME 
DECLARE @toService SYSNAME 
DECLARE @onContract SYSNAME 
DECLARE @messageBody XML 

SET @fromService = 'CustomerInsertedClient' 
SET @toService = 'CustomerInsertedService' 
SET @onContract = 'http://ssb.csharp.at/SSB_Book/c10/CustomerInsertContract' 

-- Check if there is already an ongoing conversation with the TargetService 
SELECT @conversationHandle = ConversationHandle FROM SessionConversations 
    WHERE SPID = @@SPID 
    AND FromService = @fromService 
    AND ToService = @toService 
    AND OnContract = @onContract 

IF @conversationHandle IS NULL 
BEGIN 
    -- We have to begin a new Service Broker conversation with the TargetService 
    BEGIN DIALOG CONVERSATION @conversationHandle 
     FROM SERVICE @fromService 
     TO SERVICE @toService 
     ON CONTRACT @onContract 
     WITH ENCRYPTION = OFF; 

    -- Create the dialog timer for ending the ongoing conversation 
    BEGIN CONVERSATION TIMER (@conversationHandle) TIMEOUT = 5; 

    -- Store the ongoing conversation for further use 
    INSERT INTO SessionConversations (SPID, FromService, ToService, OnContract, ConversationHandle) 
    VALUES 
    (
     @@SPID, 
     @fromService, 
     @toService, 
     @onContract, 
     @conversationHandle 
    ) 
END 

-- Construct the request message 
SET @messageBody = (SELECT * FROM INSERTED FOR XML AUTO, ELEMENTS); 

-- Send the message to the TargetService 
;SEND ON CONVERSATION @conversationHandle 
MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/CustomerInsertedRequestMessage] (@messageBody); 
इसके बजाय संग्रहित प्रक्रियाओं जो प्रबंधित कोड (आंतरिक सक्रियण) हमने तय किया है कि यह SQL सर्वर के बाहर है कि प्रसंस्करण ऑफलोड करने के लिए बेहतर है के माध्यम से वेब सेवाओं कहेंगे का उपयोग करने का

के 10 अध्याय से एक नमूना है। और माइक्रोसॉफ्ट द्वारा निर्मित यह अच्छा छोटा टूल मिला - External Activator जो सक्रियण कतार को सुनेंगे और कतार में एक नया संदेश होने पर एक एप्लिकेशन लॉन्च करेगा। कार्यान्वयन के लिए कृपया पुस्तक में क्लाउस के अध्याय 4 का संदर्भ लें।

संबंधित मुद्दे