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