WCF創建WebService正確操作步驟詳解
其實,運用WCF對WEB進行相關的操作是一個比較簡單的操作技術,我們可以通過這篇文章介紹的具體操作步驟來充分的掌握這一應用技巧。希望對此有需要的朋友們可以通過這里介紹的內容獲得一些幫助。#t#
例子:
WCF創建WebService第一步: 添加WCF名稱域:
using System.ServiceModel;
using System.ServiceModel.Description;
ServiceModel 是.NET當中用來實現WCF服務功能的名稱域。
WCF創建WebService第二步: 定義服務。
- [ServiceContract()]
- public interface IServiceInterface
- {
- [OperationContract]
- string sayHello( string text );
- }
- public class Service1 : IServiceInterface
- {
- public string sayHello(string text)
- {
- return "hello" + text;
- }
- }
一般來講,將服務定義為接口,然后由它衍生出多中服務的類。這樣做的一個好處是可以在接口級別定義屬性,而在服務的類的級別看不到任何屬性信息。只需要實現預先定義好的方法就可以。
WCF創建WebService第三步: 建立宿主,WCF的Service可以運行在程序,Windows 服務或者ASP.NET上面,我們使用Console來建立宿主:
- internal class MyServiceHost
- {
- internal static ServiceHost mySvcHost = null;
- internal static void StartService()
- {
- ……
- }
- internal static void StopService()
- {
- ……
- }
- }
- static void Main(string[] args)
- {
- MyServiceHost.StartService();
- Console.ReadLine();
- MyServiceHost.StopService();
- Console.Read();
- return;
- }
這里,我們定義了一個宿主 MyServiceHost,其中包含一個ServiceHost類的成員,ServiceHost類是ServiceModel當中用來創建通信對象的類。我們可以通過它來創建一個監聽的對象,成為EndpointListener.
WCF創建WebService第四步:創建WCF運行時。
- internal static void StartService()
- {
- //首先,創建一個ServiceHost對象,傳入的參數是Service對象的類型和服務的地址。
- Uri address = new Uri("http://localhost:8080/service1");
- mySvcHost = new ServiceHost( typeof(Service1),address );
- //在創建的ServiceHost對象當中查找,看是否存在ServiceMetadataBehaviour的元數據行為
- //描述,如果沒有找到,創建一個新的ServiceMetadataBehaviour對象。
- ServiceMetadataBehavior behaviour = mySvcHost.Description.
Behaviors.Find<ServiceMetadataBehavior>();- if (behaviour == null)
- behaviour = new ServiceMetadataBehavior();
- //設置允許進行HttpGet操作。
- behaviour.HttpGetEnabled = true;
- //設置MetadataExporter導出Metadata時遵循WS-Policy 1.5規范。
- behaviour.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
- //將創建好的behaviour加入到宿主實例的行為描述組當中。
- mySvcHost.Description.Behaviors.Add(behaviour);
- //加入MetadataExchange endpoint.
- mySvcHost.AddServiceEndpoint(
- ServiceMetadataBehavior.MexContractName,
- MetadataExchangeBindings.CreateMexHttpBinding(),
- "mex"
- );
- //加入應用程序 endpoint
- WSHttpBinding binding = new WSHttpBinding();
- mySvcHost.AddServiceEndpoint(typeof(IServiceInterface),
binding, address);- //打開 ServiceHost 實例。
- mySvcHost.Open();
- }
以上就是我們為大家介紹的WCF創建WebService所有操作步驟。