मैं सेवा कपड़े के लिए नया हूं और विषय को कवर करने वाले एमएसडीएन लेखों को देखकर शुरू किया। मैंने हैलो वर्ल्ड नमूना here को लागू करके शुरू किया।सेवा फैब्रिक - स्टेटफुल सेवा सेवा
मैं करने के लिए उनके मूल RunAsync कार्यान्वयन बदल दिया है:
var myDictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<int, DataObject>>("myDictionary");
while (!cancellationToken.IsCancellationRequested)
{
DataObject dataObject;
using (var tx = this.StateManager.CreateTransaction())
{
var result = await myDictionary.TryGetValueAsync(tx, 1);
if (result.HasValue)
dataObject = result.Value;
else
dataObject = new DataObject();
//
dataObject.UpdateDate = DateTime.Now;
//
//ServiceEventSource.Current.ServiceMessage(
// this,
// "Current Counter Value: {0}",
// result.HasValue ? result.Value.ToString() : "Value does not exist.");
await myDictionary.AddOrUpdateAsync(tx, 1, dataObject, ((k, o) => dataObject));
await tx.CommitAsync();
}
await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
}
मैं भी एक DataObject प्रकार शुरू की है और उस प्रकार पर एक अद्यतन किया संपत्ति उजागर कर दिया है।
[DataContract(Namespace = "http://www.contoso.com")]
public class DataObject
{
[DataMember]
public DateTime UpdateDate { get; set; }
}
जब मैं एप्लिकेशन (विजुअल स्टूडियो 2015 में F5), एक dataObject उदाहरण (1 के रूप में keyed) चलाने के लिए, शब्दकोश तो मैं एक बनाने के लिए, सेट अद्यतन किया में नहीं पाया जाता शब्दकोश में जोड़ने और लेनदेन प्रतिबद्ध करें। अगले लूप के दौरान, यह डेटा ऑब्जेक्ट (1 के रूप में की गई) पाता है और अपडेटडेट सेट करता है, शब्दकोश में ऑब्जेक्ट को अपडेट करता है और लेनदेन करता है। उत्तम।
मेरा प्रश्न यहां है। जब मैं सेवा प्रोजेक्ट को रोकता हूं और पुनरारंभ करता हूं (विजुअल स्टूडियो 2015 में F5) मैं उम्मीद करता हूं कि RunAsync के पहले पुनरावृत्ति पर डेटाऑब्जेक्ट (1 के रूप में की गई) पाए जाएंगे लेकिन ऐसा नहीं है। मैं उम्मीद करता हूं कि सभी राज्य अपनी प्रतिकृति में फंस जाएंगे।
क्या मुझे राज्य की सेवा के लिए अपनी आंतरिक प्रतिकृति में अपने आंतरिक राज्य को फ्लश करने के लिए कुछ भी करना है?
जो मैंने पढ़ा है, उससे यह अच्छा लगता है कि यह सब सेवा कपड़े द्वारा संभाला जाता है और कॉलिंग प्रतिबद्ध (लेनदेन पर) पर्याप्त है। यदि मैं प्राथमिक प्रतिकृति (सेवा फैब्रिक एक्सप्लोरर-> एप्लिकेशन व्यू में) का पता लगाता हूं तो मैं देख सकता हूं कि रिमोटरप्लिकेटर_xxx LastACKProcessedTimeUTC को लेनदेन करने के बाद अपडेट किया जाता है (जब चरणबद्ध हो)।
किसी भी मदद की बहुत सराहना की जाती है।
धन्यवाद!
मार्क
धन्यवाद शॉन। मेरी परियोजना गुण (sfproj प्रोजेक्ट पर) गुण विंडो में कोई अनुप्रयोग समूह नहीं दिखाते हैं। क्या मुझे संभवतः एक बनाम 2014 अपडेट या ... चाहिए? मेरे पास विजुअल स्टूडियो सर्विस फैब्रिक टूल्स स्थापित हैं (प्रारंभ पृष्ठ से एसडीके)। एक बार फिर धन्यवाद! – markondotnet
आपने एसडीके कब इंस्टॉल किया? यह सुविधा सार्वजनिक पूर्वावलोकन रिलीज में नई है जो कल लाइव हो गई थी। –
मैंने इसे पिछले रविवार को स्थापित किया और आज ही देखा (बनाम2015 अधिसूचनाओं में) कि v2.8 बाहर था (कल के रूप में) इसलिए मैंने इसे स्थापित किया। अभी भी परियोजना के गुणों पर "प्रारंभ पर डेटा संरक्षित करें" विकल्प नहीं है। – markondotnet