WCF学习之旅—WCF第二个示例(六)

第五步,创建数据服务

  1. 在“解决方案资源管理器”中,使用鼠标左键选中“SCF.WcfService”项目,然后在菜单栏上,依次选择“项目”、“添加新项”。
  2. 在“添加新项”对话框中,选择“Web”节点,然后选择“WCF 服务”项。
  3. 在“名称”文本框中,输入 BookService,然后选择“添加”按钮。如下图。

 WCF学习之旅—WCF第二个示例(六)_第1张图片

       4.Visual Studio 2015会同时添加一个IBookService接口文件。这个接口代码文件中的代码如下:

[ServiceContract] public interface IBookService {  [OperationContract] string GetBook(string Id); [OperationContract] string AddBook(string book); [OperationContract] string EditBook(string book); [OperationContract] string Search(string Category, string searchString); } 

 

     5. 在“解决方案资源管理器中”中,定位BookService.svc.cs文件,双击在“代码编辑器”中打开,并编写如下代码。

public class BookService : IBookService { Entities db = new Entities(); public string AddBook(string mbook) { try { Books book = XMLHelper.DeSerializer<Books>(mbook); db.Books.Add(book); db.SaveChanges(); } catch (Exception ex) { return ex.Message; } return "true"; } public string EditBook(string mbook) { try { Books book = XMLHelper.DeSerializer<Books>(mbook); db.Entry(book).State = EntityState.Modified; db.SaveChanges(); } catch (Exception ex) { return ex.Message; } return "true"; } public string GetBook(string Id) { int bookId = Convert.ToInt32(Id); Books book= db.Books.Find(bookId); string xml=XMLHelper.ToXML<Books>(book); return xml; } public string Search(string Category, string searchString) { var cateLst = new List<string>(); var cateQry = from d in db.Books orderby d.Category select d.Category; cateLst.AddRange(cateQry.Distinct()); var books = from m in db.Books select m; if (!String.IsNullOrEmpty(searchString)) { books = books.Where(s => s.Name.Contains(searchString)); } List<Books> list = null; if (string.IsNullOrEmpty(Category)) { list = books.ToList<Books>(); } else { list = books.Where(x => x.Category == Category).ToList<Books>(); } return XMLHelper.ToXML<List<Books>>(list); } }

      6.  在菜单栏上,依次选择“调试”、“开始执行(不调试)”以运行服务。 此时将打开一个浏览窗口,并显示该服务的 XML 架构。

      7. 在地址栏中,在 BookService.svc 的 URL 末尾处输入 Books,然后按 Enter 键。如下图。

 WCF学习之旅—WCF第二个示例(六)_第2张图片

      8.  关闭浏览器窗口。

 

第六步,创建宿主程序

  1. WCF服务需要依存一个运行着的进程(宿主),服务寄宿就是为服务指定一个宿主的过程。
  2. 在菜单栏上,依次选择“文件-->新建-->项目”,或者如下图在“解决方案资源管理器”中使用鼠标右键,弹出快捷菜单。WCF学习之旅—WCF第二个示例(六)_第3张图片
  3. 在“添加新项目”对话框中,展开 “Visual C#”和“Windows”节点,然后选择“控制台应用程序”模板。 在“名称”文本框中,输入 Hosting,然后选择“确定”按钮。 如下图。WCF学习之旅—WCF第二个示例(六)_第4张图片
  4.  我们可以通过代码的方式完成所有的服务寄宿工作。在“解决方案资源管理器中”中,定位到Program.cs文件,双击在“代码编辑器”中打开,并编写如下代码。下面的代码通过一个控制台应用对 BookService的寄宿的实现。关于配置方式参见前一文章。

 

 using SCF.WcfService; using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.ServiceModel.Description; using System.Text; using System.Threading.Tasks; namespace Hosting { class Program { // 无配置文件的启动程序
        static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(BookService))) { host.AddServiceEndpoint(typeof(IBookService), new WSHttpBinding(), 
"http://127.0.0.1:8888/BookService"); if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null) { ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); behavior.HttpGetEnabled = true; behavior.HttpGetUrl = new Uri("http://127.0.0.1:8888/BookService/metadata"); host.Description.Behaviors.Add(behavior); } host.Opened += delegate { Console.WriteLine("BookService,按任意键终止服务!"); }; host.Open(); Console.Read(); } } }

 

在接下来的步骤中,将创建一个 Windows 窗体客户端应用程序以使用该服务。

你可能感兴趣的:(WCF学习之旅—WCF第二个示例(六))