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


      WCF学习之旅目录

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

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

    WCF学习之旅——第一个WCF示例(三)

    WCF学习之旅—WCF概述(四)

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

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

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

    第五步,创建数据服务

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

     

           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 键。如下图。

     

          8.  关闭浏览器窗口。

    第六步,创建宿主程序

    1. WCF服务需要依存一个运行着的进程(宿主),服务寄宿就是为服务指定一个宿主的过程。
    2. 在菜单栏上,依次选择“文件-->新建-->项目”,或者如下图在“解决方案资源管理器”中使用鼠标右键,弹出快捷菜单。
    3. 在“添加新项目”对话框中,展开 “Visual C#”和“Windows”节点,然后选择“控制台应用程序”模板。 在“名称”文本框中,输入 Hosting,然后选择“确定”按钮。 如下图。
    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 窗体客户端应用程序以使用该服务。

  • 相关阅读:
    线程池中的scheduleAtFixedRate scheduleWithFixedDelay区别
    几道MySQL问题
    【SQL server 2012】复制数据库到另一台机器上
    LeetCode 98. 验证二叉搜索树
    深度学习知识点
    Graph Network Notes
    剑指 Offer 33. 二叉搜索树的后序遍历序列
    剑指 Offer 29. 顺时针打印矩阵
    LeetCode 54. 螺旋矩阵
    LeetCode 50. Pow(x, n)
  • 原文地址:https://www.cnblogs.com/chillsrc/p/5407968.html
Copyright © 2020-2023  润新知