日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

wcf 例子

發布時間:2024/7/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wcf 例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開發環境是vs2005 (需要安裝對wcf和wpf的擴展支持)。
1建立控制臺應用程序作為服務端。

///這是接口
??? [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
??? public interface ICalculator
??? {
??????? [OperationContract]
??????? double Add(double n1, double n2);
??????? [OperationContract]
??????? double Subtract(double n1, double n2);
??????? [OperationContract]
??????? double Multiply(double n1, double n2);
??????? [OperationContract]
??????? double Divide(double n1, double n2);
??? }

//實現契約和接口
?public class CalculatorService : ICalculator
??? {
??????? public double Add(double n1, double n2)
??????? {
??????????? double result = n1 + n2;
??????????? Console.WriteLine("Received Add({0},{1})", n1, n2);
??????????? Console.WriteLine("Return: {0}", result);
??????????? return result;
??????? }

??????? public double Subtract(double n1, double n2)
??????? {
??????????? double result = n1 - n2;
??????????? Console.WriteLine("Received Subtract({0},{1})", n1, n2);
??????????? Console.WriteLine("Return: {0}", result);
??????????? return result;
??????? }

??????? public double Multiply(double n1, double n2)
??????? {
??????????? double result = n1 * n2;
??????????? Console.WriteLine("Received Multiply({0},{1})", n1, n2);
??????????? Console.WriteLine("Return: {0}", result);
??????????? return result;
??????? }

??????? public double Divide(double n1, double n2)
??????? {
??????????? double result = n1 / n2;
??????????? Console.WriteLine("Received Divide({0},{1})", n1, n2);
??????????? Console.WriteLine("Return: {0}", result);
??????????? return result;
??????? }
??? }
//在main函數中執行
static void Main(string[] args)
??????? {
??????????? Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service");
??????????? ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
??????????? try
??????????? {
??????????????? // Add a service endpoint
??????????????? serviceHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");
??????????????? // Enable metadata exchange
??????????????? ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
??????????????? smb.HttpGetEnabled = true;
??????????????? serviceHost.Description.Behaviors.Add(smb);
??????????????? serviceHost.Open();
??????????????? Console.WriteLine("The service is ready.");
??????????????? Console.WriteLine("Press <ENTER> to terminate service.");
??????????????? Console.WriteLine();
??????????????? Console.ReadLine();

??????????????? // Close the ServiceHostBase to shutdown the service.
??????????????? serviceHost.Close();
??????????? }
??????????? catch (CommunicationException ce)
??????????? {
??????????????? Console.WriteLine("An exception occured: {0}", ce.Message);
??????????????? serviceHost.Abort();
??????????? }
????????????
??????? }
然后服務器端就ok了。運行以后。在運行狀態下,把http://localhost:8000/ServiceModelSamples/Service在瀏覽器中運行。會看到頁面信息,提示使用svcutil.exe 工具。在vs2005命令提示符中運行這個命令。就會生成兩個文件,一個是cs文件一個是config文件。這個兩個需要在客戶端代碼中使用。生成的位置在dos窗口中都有提示。我還不知道怎么更改位置。但是可以使用out參數給這兩個文件改名字。
還有應該知道服務端的契約是request和reply模式。默認就是這個信息交換模式。

2客戶端。
也是建立一個控制臺應用程序,把前面生成的兩個文件都添加到這個項目里面。config可以改名成app.config。
在客戶端的main函數中實現代碼:
static void Main(string[] args)
??????? {
??????????? //Create an instance of the WCF Client.
??????????? System.ServiceModel.EndpointAddress epAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/Service/CalculatorService");
??????????? CalculatorClient client = new CalculatorClient(new WSHttpBinding(), epAddress);

???????????

??????????? // Call the Add service operation.
??????????? double value1 = 100.00D;
??????????? double value2 = 15.99D;
??????????? double result = client.Add(value1, value2);
??????????? Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

??????????? // Call the Subtract service operation.
??????????? value1 = 145.00D;
??????????? value2 = 76.54D;
??????????? result = client.Subtract(value1, value2);
??????????? Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);

??????????? // Call the Multiply service operation.
??????????? value1 = 9.00D;
??????????? value2 = 81.25D;
??????????? result = client.Multiply(value1, value2);
??????????? Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result);

??????????? // Call the Divide service operation.
??????????? value1 = 22.00D;
??????????? value2 = 7.00D;
??????????? result = client.Divide(value1, value2);
??????????? Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);

??????????? //Closing the client gracefully closes the connection and cleans up resources
??????????? client.Close();

??????????? Console.WriteLine();
??????????? Console.WriteLine("Press <ENTER> to terminate client.");
??????????? Console.ReadLine();
??????? }
然后運行服務端程序。再運行客戶端程序就可以看到正確的結果。

這個例子沒有使用配置文件格式來寫契約和節點這些東西,是通過程序方式來實現契約,地址,節點等等,他們的效果是一樣的。

轉載于:https://www.cnblogs.com/lilyzhang/archive/2012/06/14/2549747.html

總結

以上是生活随笔為你收集整理的wcf 例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。