WCF之Windows宿主(可安裝成服務(wù)自動并啟動)
創(chuàng)新互聯(lián)是一家專注于做網(wǎng)站、網(wǎng)站制作與策劃設(shè)計,崇左網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:崇左等地區(qū)。崇左做網(wǎng)站價格咨詢:13518219792圖1:圖2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace WCFService.Models
{
[DataContract]
[Serializable]
public class Book
{
[DataMember]
public string Name { get; set; }
[DataMember]
public double Price { get; set; }
}
}
Bookusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCFService.Models;
namespace WCFService
{
public class BookService : IBookService
{
List list = new List();
public bool Add(string name, double price)
{
list.Add(new Book() { Name = name, Price = price });
return true;
}
public List GetList()
{
return list;
}
}
}
BookServiceusing System;
using System.ServiceModel;
namespace WCFService
{
[ServiceContract]
public interface IBookService
{
[OperationContract]
bool Add(string name, double price);
[OperationContract]
System.Collections.Generic.List GetList();
}
}
IBookService
圖3:圖4:
在Service1的設(shè)計界面中右擊,選擇“屬性”,把其中的(Name)和ServiceName都改為BookServiceHost
編寫代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceModel;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using WCFService;
namespace WindowsServiceHost
{
public partial class BookServiceHost : ServiceBase
{
ServiceHost _Host= new ServiceHost(typeof(BookService));
public BookServiceHost()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
_Host.Open();
}
protected override void OnStop()
{
_Host.Close();
}
}
}
BookServiceHost圖5:
Http(高級Web服務(wù)互操作性)
圖20: 圖21: 圖22:
到目前為止我們配置好了兩個http通道下的兩個終結(jié)點,但這兩個終結(jié)點的地址我們都使用的是相對地址,它們是相對于當(dāng)前ServiceHost地址,所以我們還需要配置當(dāng)前ServiceHost的地址.
圖23:
這樣我們兩個終結(jié)點算是配置完成了。
“自運行WCF服務(wù)”與“在IIS布運行WCF服務(wù)”不一樣的是,“自運行WCF服務(wù)"除了可以使用Http方式發(fā)布WCF服務(wù),可以使用TCP、命名管道和微軟消息隊列進(jìn)行信息傳輸。
下面我們再配置兩個終結(jié)點,一個是使用TCP通信模式,另一個使用命名管道通信模式。
TCP:
圖24:圖25:
命名管道:
圖26:圖27:
到此為至,我們已經(jīng)為該WCF服務(wù)建立了四個數(shù)據(jù)傳輸?shù)慕K結(jié)點
下面我們?yōu)樵揝erviceHost程序配置“元數(shù)據(jù)終結(jié)點”,以向客戶端發(fā)送服務(wù)元數(shù)據(jù)信息
圖28:圖29:
圖30:
圖31:圖32:
圖34:圖33:
圖35:圖36:
圖37:圖38:
最終頁面:到目前為止我們已經(jīng)將Window服務(wù)宿主配置完畢,現(xiàn)在保存,關(guān)閉WCF配置工具,并打開App.Config
App.Config然后把下面代碼刪掉:
最終的App.config
App.Config以上所寫不僅適用與Windows宿主,同時適用IIS、控制臺,因此后面關(guān)于IIS以及控制臺宿主的發(fā)布不再重復(fù)以上配置
在Service1設(shè)計界面中右擊,選擇“添加安裝程序”
圖40:圖41:
圖42:圖43(此圖網(wǎng)絡(luò)引用):
進(jìn)入vs2012 開發(fā)命令提示,進(jìn)入項目對應(yīng)的盤符并進(jìn)入exe所在文件夾,執(zhí)行命令 :installutil WindowsServiceHost.exe
圖44:
圖45:
圖46:
圖
在VS2008命令窗口中輸入:wcftestclienthttp://localhost:8081/Service 出現(xiàn)下面的界面
47::
Demo下載