LocalChannel Microsoft द्वारा प्रदान नामित दिखाने के लिए बाध्यकारी एक कस्टम अनावश्यक भूमि के ऊपर बायपास करने के लिए जब एक ही ApplicationDomain में एक सेवा को फोन लागू किया जा सकता एक WCF नमूना है। यह नमूना वर्णन यह कहा गया कि:डब्ल्यूसीएफ में लोकलचनल का उपयोग करते समय सीरियलाइजेशन क्यों किया जाता है?
यह जहां ग्राहक और सेवा एक ही आवेदन डोमेन और ठेठ WCF चैनल ढेर के भूमि के ऊपर (क्रमबद्धता और संदेशों के अक्रमांकन) में चल रहे हैं चाहिए परिदृश्यों के लिए उपयोगी है दूर रहे।
मैंने अपने प्रोजेक्ट में इस कोड का उपयोग किया है, लेकिन दावा के बावजूद ऐसा लगता है कि एक सेवा कहने पर क्रमबद्धता होती है।
इसे और अधिक स्पष्ट मैं कोड बदल दिया है करने के लिए में तो यह आसानी से निर्धारित किया जा सकता है अगर क्रमबद्धता प्रक्रिया चल रही है या नहीं, एक डेटा अनुबंध का उपयोग करने के बाद।
# region Service Contract
[ServiceContract]
public interface IGetPrice
{
[OperationContract]
ProductDTO GetPriceForProduct(int productCode);
}
[DataContract]
public class ProductDTO
{
private string _price;
public ProductDTO(string price)
{
_price = price;
}
#region Overrides of Object
public override string ToString()
{
return string.Format("Price = '{0}'", _price);
}
#endregion
[DataMember]
public string Price
{
get { return _price; }
set { _price = value; }
}
}
public class GetPrice : IGetPrice
{
#region IGetPrice Members
public ProductDTO GetPriceForProduct(int productId)
{
return new ProductDTO((String.Format("The price of product Id {0} is ${1}.",
productId, new Random().Next(50, 100))));
}
#endregion
}
# endregion
internal class Program
{
private static void Main(string[] args)
{
var baseAddress = "net.local://localhost:8080/GetPriceService";
// Start the service host
var host = new ServiceHost(typeof (GetPrice), new Uri(baseAddress));
host.AddServiceEndpoint(typeof (IGetPrice), new LocalBinding(), "");
host.Open();
Console.WriteLine("In-process service is now running...\n");
// Start the client
var channelFactory
= new ChannelFactory<IGetPrice>(new LocalBinding(), baseAddress);
var proxy = channelFactory.CreateChannel();
// Calling in-process service
var priceForProduct = proxy.GetPriceForProduct(101);
Console.WriteLine("Calling in-process service to get the price of product Id {0}: \n\t {1}"
, 101, priceForProduct);
Console.WriteLine("Calling in-process service to get the price of product Id {0}: \n\t {1}"
, 202, proxy.GetPriceForProduct(202));
Console.WriteLine("Calling in-process service to get the price of product Id {0}: \n\t {1}"
, 303, proxy.GetPriceForProduct(303));
Console.WriteLine("\nPress <ENTER> to terminate...");
Console.ReadLine();
}
}
इस कोड चल रहा है इंगित करता है कि की 'कीमत' संपत्ति 'ProductDTO' वर्ग है धारावाहिक और localbinding के माध्यम से कॉल के दौरान deserialized जा रहा है!
किसी को भी करने से पहले इस विधि का इस्तेमाल किया है या अगर कुछ गलत है गया है?
मैं आपकी त्वरित प्रतिक्रिया की सराहना करता हूं – Gholamreza