WCF(学习笔记)【参见WCF教程】
?WCF:基于SOA(面向服務編程 )的一個.net框架產品 ? 一種分布式通訊的統一模型(分布式通訊就是對多種 操作系統和平臺的的兼容) 通信范圍比較廣
? Web service???????????? .net Remoting
其他?????????? WCF????? 其他
?? 定義一個wcf服務后? 它會對外發布一個
? 端點? 協議? 綁定
?
? 宿主程序:asp.net? exe? wpf?? window? forms......
WCF可以支持的協議:TCP? HTTP? 跨進程?? 自定義協議
?在WCF框架下? 開發基于SOA的分布式系統
??? .net Remoting? :能夠高性能的實現.net 和.NET之間的通訊?? 受語言限制, ??? Web Service:基于SOAP(協議), 可以跨平臺調用:
????? ? WCF 是面向服務的產品 ,
?那么WCF也是基于SOAP的通訊機制 ,這保證了系統之間的互操作性
?
???????? WCF最重要的是能夠快捷的額創建一個服務, ?? WCF 包括三部分:
?1,Service Class :一個標記了[ServiceContract]Attribute的類[契約標簽]
?? [ServiceContract]? [OperationConstract] 服務契約
?? [DataContract]? [DataMember]? 數據契約
?2,Host(宿主):可以使應用程序? 它是WCF Service運行的環境
?也就是說? 服務器上(的程序)
?
?3,Endpoints:可以使一個 也可以是一組? wcf實現通訊的核心要素
?WCF 由一組Endpoints集合組成? 每個endpoint就是用于通信的入口?
? 客 服 通過endpoint交換信息
??
??? 一個endpoint(端點) 由三部分組成? : ? ?? (where)address(地址):是endpoint的網絡地址 它標記了消息發送的目的地?
? ?(what)? contract (契約):描述消息包含的內容? 以及消息的組織和操作方式
? (how) Binding? (綁定):描述如何發送消息? ,例如消息發送的傳輸協議(如TCP,HTTP) ?安全(如ssl,soap消息安全)?
? opration操作
?
????? 那么WCF是怎樣通訊的呢????
? WCF管理的是服務端和客戶端的通信??
?? 對于服務端? WCF提供了類ServiceDescription用于描述一個WCF Service
?? 對于客戶端? WCF管理的是發送消息 時 需要使用到得通道Channel, ?????? 類channelDescription描述了這樣一個通道
ServiceDescription ????????? Service Type ????????? ISerciceBehavor ?????????? ServiceEndpoint ???????????????? EndpointAddress ???????????????? Binding ???????????????? ContractDescription
?
?
?????????? 下面要寫一個wcf的程序 ?首先要添加引用? system.ServiceModel
一般我們要定義wcf服務時 先把一個接口定義為一個服務 ?這樣為了更好的面向對象(服務)編程 ? 在接口中添加[ServiceContract] [OperationContract] [DataContract] [DataMember]
在實現接口類中就不需要 在添加標簽啦 ? ????????
?? 接下來:一個WCF Service 必須有host作為它的運行環境 ,這個host可以是
? ASP.NET? Windows Service? 不通的應用程序? 例如控制臺程序
??? host實現
?????????? using System.ServiceModel
??????????? //創建一個SerciceHost對象?? 參數(服務實現類的類型typeof,url對象)
?? ServiceHost host =new ServiceHost(typeof(MyMethod),new Url("http://localhost:8080/HelloService"));
?
?
?
?
?
新建兩個項目 ?一:wcf服務應用程序 服務端 二:控制臺?? 客戶端
?
?服務端:接口? 服務契約:標簽
1,ServiceContract??? 聲明接口或類在客戶端可見? 2,OperationContract?? 聲明具體的方法在客戶端可見
?? 數據契約:標簽
1,DataContract??? 把某個類或結構聲明為數據契約? ,這個類就可以再客戶端可見并可用來聲明變量
2, DataMember????? 把服務端類中的變量? 字段 標記為在客戶端可見
??
???????? 客戶端:
?在客戶端 控制臺程序中????? 添加服務引用?
?? 在? 發現 中會去尋找可用的服務
?在最下面會有服務引用的命名空間? ServiceReference1
?
?????? 在客戶端調用服務? ? 1,定義通信管道 client? 就是通過它來調用服務端提供的方法的
?? ServiceReference1.ServiclClient? client =new ServiceReference1.ServiclClient ();
?? ?client.studentlClass();
2,服務端提供給客戶端使用的類
? ServiceReference1.student1(服務端的類) stu==
?
?
?? 問題:
?? 1,要想在客戶端使用服務端里自定義的類型,除了用 [DataContract]聲明之外 還要有一個服務契約(方法)[OperationContract]的返回值是這個類型的。 ?? 2,在接口類中(對客戶端開發并可以調用的類型),在接口該類中,定義一個字段并賦默認值
? 定義一個屬性并給它賦默認值?
?? 那么在客戶端調用時? 輸出該類中的屬性值?
?? 為空????? 默認值丟失???????
?序列化的問題?????? ? ??
總結
以上是生活随笔為你收集整理的WCF(学习笔记)【参见WCF教程】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ResNet Keras实现
- 下一篇: 在VS2010下运行Qt程序