無廢話WCF入門教程六[一個簡單的Demo]
一、前言
前面的幾個章節介紹了很多理論基礎,如:什麼是WCF、WCF中的A、B、C。WCF的傳輸模式。本文從零開始和大家一起寫一個小的WCF應用程式Demo。
大多框架的學習都是從增、刪、改、查開始來學習的,我們學習WCF也是一樣的。從簡單來看(不包括安全、優化等相關問題),WCF的增刪改查和WebForm相差無幾。WCF只是把具體“實現”寫在“Service端”,而“呼叫”放在了“Client端”。覺得有幫助別忘了點個贊哈,謝謝哦~
二、Demo說明
1)Demo的 “Service端”以本機IIS為宿主,“Client端”以WebForm專案為例。
2)Demo的“Service端”提取資料採用初學者比較容易接受的分層結構進行搭建,分別分為服務層、實體層、資料層。
引用關係如下圖所示:
3)Demo以資料庫為SqlServer,表User為例(sql語句在下載的壓縮包中Init.sql),表結構如下所示:
欄位名 |
列名 |
資料型別 |
約束 |
生成方式 |
使用者編號 |
UserID |
int |
主鍵,必須輸入 |
自動增+1 |
姓名 |
Name |
varchar(200) |
非必須輸入 |
人工輸入 |
密碼 |
Password |
varchar(200) |
非必須輸入 |
人工輸入 |
描述 |
Discribe |
varchar(800) |
非必須輸入 |
人工輸入 |
提交時間 |
SubmitTime |
datetime |
非必須輸入 |
人工輸入 |
三、建立Service端宿主
1)建立WCF應用程式命名為:WCF.Demo.Service,如下圖:
2)刪除預設檔案IService.cs與Service.svc。並分別建立增、刪、改、查”Add.svc”、“Save.svc”、“Remove.svc”、“Get.svc,Search.svc”,分別對應4個功能的服務應用程式
3)增加實體層和資料操作層程式碼,如下所示:
1 //使用者實體 2 [DataContract] 3 public class User 4 { 5 [DataMember] 6 public int UserID { get; set; } 7 [DataMember] 8 public string UserName { get; set; } 9 [DataMember] 10 public string Password { get; set; } 11 [DataMember] 12 public string Discribe { get; set; } 13 [DataMember] 14 public DateTime SubmitTime { get; set; } 15 } 16 //資料操作,呼叫SqlHeler 17 public class User 18 { 19 private static readonly string connectionString = "server=.;database=wcfDemo;uid=sa;pwd=123456;"; 20 21 //新增 22 public static bool Add(Model.User user) 23 { 24 string sql = string.Format("INSERT INTO [dbo].[User]([UserName],[Password],[Discribe],[SubmitTime]) VALUES('{0}','{1}','{2}','{3}')", user.UserName, user.Password, user.Discribe, user.SubmitTime); 25 int result = SqlHelper.ExecuteNonQuery(connectionString, CommandType.Text, sql); 26 if (result > 0) 27 return true; 28 else 29 return false; 30 } 31 32 //修改 33 public static bool Save(Model.User user) 34 { 35 string sql = string.Format("UPDATE [dbo].[User] SET [UserName] = '{0}',[Discribe] = '{2}',[SubmitTime] = '{3}' WHERE UserID = {4}", user.UserName, user.Password, user.Discribe, user.SubmitTime, user.UserID); 36 int result = SqlHelper.ExecuteNonQuery(connectionString, CommandType.Text, sql); 37 if (result > 0) 38 return true; 39 else 40 return false; 41 } 42 43 //刪除 44 public static bool Remove(int UserID) 45 { 46 string sql = string.Format("DELETE FROM [dbo].[User] WHERE UserID = {0}", UserID); 47 int result = SqlHelper.ExecuteNonQuery(connectionString, CommandType.Text, sql); 48 if (result > 0) 49 return true; 50 else 51 return false; 52 } 53 54 //獲取使用者 55 public static Model.User Get(int UserID) 56 { 57 Model.User user = new Model.User(); 58 string sql = string.Format("SELECT * FROM [dbo].[User] WHERE UserID = {0}", UserID); 59 DataSet ds = SqlHelper.ExecuteDataset(connectionString, CommandType.Text, sql); 60 if (ds != null && ds.Tables.Count > 0) 61 { 62 foreach (DataRow dr in ds.Tables[0].Rows) 63 { 64 user.UserID = Convert.ToInt32(dr["UserID"]); 65 user.UserName = dr["UserName"].ToString(); 66 user.Password = dr["Password"].ToString(); 67 user.Discribe = dr["Discribe"].ToString(); 68 user.SubmitTime = Convert.ToDateTime(dr["SubmitTime"]); 69 } 70 } 71 return user; 72 } 73 74 //獲取使用者列表 75 public static List<Model.User> GetUsers() 76 { 77 List<Model.User> Users = new List<Model.User>(); 78 string sql = string.Format("SELECT * FROM [dbo].[User]"); 79 DataSet ds = SqlHelper.ExecuteDataset(connectionString, CommandType.Text, sql); 80 if (ds != null && ds.Tables.Count > 0) 81 { 82 foreach (DataTable dt in ds.Tables) 83 { 84 foreach (DataRow dr in dt.Rows) 85 { 86 Model.User user = new Model.User(); 87 user.UserID = Convert.ToInt32(dr["UserID"]); 88 user.UserName = dr["UserName"].ToString(); 89 user.Password = dr["Password"].ToString(); 90 user.Discribe = dr["Discribe"].ToString(); 91 user.SubmitTime = Convert.ToDateTime(dr["SubmitTime"]); 92 Users.Add(user); 93 } 94 } 95 } 96 return Users; 97 } 98 }
4)修改Add介面的程式碼和實現,如下所示:
1 [ServiceContract] 2 public interface IAdd 3 { 4 [OperationContract] 5 bool DoWork(Model.User user); 6 } 7 8 public class Add : IAdd 9 { 10 public bool DoWork(Model.User user) 11 { 12 return DAL.User.Add(user); 13 } 14 }
5)修改Save介面的程式碼和實現,如下所示:
1 [ServiceContract] 2 public interface ISave 3 { 4 [OperationContract] 5 bool DoWork(Model.User user); 6 } 7 8 public class Save : ISave 9 { 10 public bool DoWork(Model.User user) 11 { 12 return DAL.User.Save(user); 13 } 14 }
6)修改Remove介面的程式碼和實現,如下所示:
1 [ServiceContract] 2 public interface IRemove 3 { 4 [OperationContract] 5 bool DoWork(int UserID); 6 } 7 public class Remove : IRemove 8 { 9 public bool DoWork(int UserID) 10 { 11 return DAL.User.Remove(UserID); 12 } 13 }
7)修改Search介面的程式碼和實現,如下所示:
1 [ServiceContract] 2 public interface ISearch 3 { 4 [OperationContract] 5 List<Model.User> DoWork(); 6 } 7 8 public class Search : ISearch 9 { 10 List<Model.User> ISearch.DoWork() 11 { 12 return DAL.User.GetUsers(); 13 } 14 }
8)修改Get介面的程式碼和實現,如下所示:
1 [ServiceContract] 2 public interface IGet 3 { 4 [OperationContract] 5 Model.User DoWork(int UserID); 6 } 7 8 public class Get : IGet 9 { 10 public Model.User DoWork(int UserID) 11 { 12 return DAL.User.Get(UserID); 13 } 14 }
四、部署服務端程式
1)將程式釋出,並部署到IIS上,設定埠:8080,如下圖所示:
2)以Add.svc服務應用程式為目標,測試部署是否成功,成功後如下圖所示:
五、建立Client端Web應用程式
新建WebForm專案WCF.Demo.Client,並建立增刪改查檔案,Add.aspx,Save.aspx,SearchAndRemove.aspx。如下圖所示:
六、使用SvcUtil.exe生成客戶端程式碼和配置
SvcUtil.exe是一個VS命令列工具,該工具位於:C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin 或 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\一般情況下我們將SvcUtil.exe新增到VS開發工具中方便以後的運用(也可直接使用該命令列工具)。
1)在VS中的 Tools選單---選擇External Tools,開啟管理視窗如下圖所示:
在Title中輸入SvcUtil,Command中選擇SvcUtil.exe全路徑,Initial directory欄選擇生成的客戶端程式碼和配置檔案所放的目錄(此處為解決方案所在目錄),選上Prompt for arguments,不選上Close on exit。點選OK.
2)新增完成後,在VS的工具下會出現這個選單。如下圖所示:
3)在Client端新增對服務的引用。開啟SvUtil工具,在Arguments裡填寫服務的地址,如下圖:
點選OK後出現下圖,說明程式碼類和配置檔案生成成功(在解決方案目標下),如下圖所示:
相關推薦
無廢話WCF入門教程六[一個簡單的Demo]
一、前言 前面的幾個章節介紹了很多理論基礎,如:什麼是WCF、WCF中的A、B、C。WCF的傳輸模式。本文從零開始和大家一起寫一個小的WCF應用程式Demo。 大多框架的學習都是從增、刪、改、查開始來學習的,我們學習WCF也是一樣的。從簡單來看(不包括安全、優化等相關問題),WCF的增
無廢話MVC入門教程六[Model中的驗證規則]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話WCF入門教程三[WCF的宿主]
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <system.serviceModel> 4 <services> 5 <service
無廢話WCF入門教程一[什麼是WCF]
1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WCFTest.aspx.cs" Inherits="WCFClient.WCFTest" %> 2 3 <!DOCTYPE html PUBLIC "-//W
無廢話WCF入門教程四[WCF的配置檔案]
1 <?xml version="1.0"?> 2 <configuration> 3 <system.serviceModel> 4 5 6 <!--服務--> 7 <services>
無廢話WCF入門教程五[WCF的通訊模式]
1 //配置檔案中的 binding 指定 2 <endpoint address="" binding="wsDualHttpBinding" contract="WCFService_DualPlex.IUser"></endpoint> 3 4 //服務端介面
無廢話WCF入門教程二[WCF應用的通訊過程]
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!-- 4 有關如何配置 ASP.NET 應用程式的詳細訊息,請訪問 5 http://go.microsoft.com/fwlink/?LinkId=169433 6
無廢話MVC入門教程二[第一個小Demo]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話SharePoint入門教程二[SharePoint發展、工具及術語]
一、前言 1.由於上一篇文章的標題命名失誤,此篇標題寫給百度搜索”什麼是SharePoint”。 2.關於什麼是SharePoint,請參見本人的第一篇文章:http://www.cnblogs.com/iamlilinfeng/p/3026332.html 二、目錄 1.Share
無廢話SharePoint入門教程一[SharePoint概述]
一、前言 聽說SharePoint也有一段時間了,可一直處在門外。最近被調到SharePoint實施專案小組,就隨著工作一起學習了一下實施與開發。但苦於網上SharePoint入門的東西實在太少,導致自學入門很難,不知道SharePoint這東西到
無廢話SharePoint入門教程四[建立SharePoint母版頁]
一、前言 文章成體系,如果有不明白的地方請檢視前面的文章。 二、目錄 1.建立HTML頁面 2.將HTML檔案轉換為SharePoint母版頁 3.在 SPD中修改母版頁“PlaceHolderMain程式碼段”位置 4.釋出母板頁 5.使用母版頁 6.最終效果
無廢話SharePoint入門教程三[建立網站集和網站]
一、前言 前兩篇文章講解了什麼是SharePoint,並且介紹了在SharePoint中一些常用的概念。但概念終究是概念,我們還是要腳踏實地的去動手實踐。下面的文章對於瞭解SharePoint的人來說過於簡單,但由於本系列是入門教程,所以從最簡單的入手並一步一步深入
無廢話SharePoint入門教程五[建立SharePoint頁面佈局]
一、前言 文章成體系,如果有不明白的地方請檢視前面的文章。 二、目錄 1.建立頁面佈局 2.首次使用頁面佈局 3.修改頁面佈局 4.使用頁面佈局 5.最終效果 1.建立頁面佈局 (1)開啟設計管理器,並點選【建立頁面佈局】如下圖所示: (2)填寫名稱、
無廢話MVC入門教程八[MvcPager分頁控制元件的使用]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話MVC入門教程九[實戰一:使用者註冊與登陸]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話MVC入門教程一[概述、環境安裝、建立專案]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話MVC入門教程七[Control中使用AOP]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話MVC入門教程十[實戰二:使用者管理]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話MVC入門教程三[路由設定及檢視入門]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、
無廢話MVC入門教程五[Control與View互動]
MVC入門系列教程-視訊版本,已入駐51CTO學院,文字+視訊學效果更好哦。視訊連結地址如下: 點我檢視視訊。另外,針對該系列教程博主提供有償技術支援,群號:226090960,群內會針對該教程的問題進行及時解答,公用性問題統一講解。學習.NET MVC 只看在《無廢話系列》足夠了,《無廢話系列》簡單、快速、