• 五、利用EnterpriseFrameWork快速开发基于WebServices的接口


    回《【开源】EnterpriseFrameWork框架系列文章索引

    EnterpriseFrameWork框架实例源代码下载: 实例下载

          前面几章已完成EnterpriseFrameWork框架开发系统的三种模式,Web模式、Winform模式以及WCF模式,本章主要针对最后一种模式WebServices模式开发系统对外接口程序的过程;

          说明一下为什么框架要把WebService的集成进来,主要还是利用WebService跨平台的优势用来开发外部系统的接口是非常方便的;不管第三方是java平台、还是c++系统都是统一的接口方式;另外如果我们系统功能全用Webservice模式来开发行不行,行肯定行但我觉得还是太麻烦了,让整个系统的维护部署都异常变扭;

          还是用书籍的管理作实例,把对书籍的增、删、改、查功能封装成Webservice服务提供为其他系统调用;大家看下面开发过程中顺便带着个问题思考一下,就是框架中的这种开发Webservice的这种方式与net平时开发Webservice项目有什么区别?

     

    本文要点:

    1.Webservice版界面效果

    2.Webservice接口开发步骤

    3.代码文件调用关系图

    4.常见问题汇总

     

     1.我们先看一下实现后的Webservice接口效果,请注意红色框中的访问地址;

          

     

         解决方案目录,其中红色部分为新增的文件

          

     

     2.开发步骤:

         1)新建Webservice服务,bookWebService.cs

         2)把Books.dll部署到EFWWeb项目Bin目录中并启动

         3)再浏览器地址中输入http://localhost/bookWebService.asmx 

     

         其中实体(Book.cs)、Dao(BookDao.cs)在前面已经实现,bookWebService里只要调用就行了;

     

    bookWebService.cs文件

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Web.Services;
    using Books.Dao;
    using Books.Entity;
    using EFWCoreLib.CoreFrame.BusinessArchitecture;
    
    namespace Books.WebServices
    {
        [WebService]
        public class bookWebService : AbstractService
        {
            [WebMethod(EnableSession = true)]
            public void SaveBook(Book book)
            {
                //绑定数据库操作对象
                book.BindDb(oleDb, GetUnityContainer());
                //数据更新到数据库表中
                book.save();
            }
    
            [WebMethod(EnableSession = true)]
            public DataTable SearchBook(string schar, int flag)
            {
                BookDao bdao = NewDao<BookDao>();
                //调用Dao返回数据
                DataTable dt = bdao.GetBooks(schar, flag);
                return dt;
            }
        }
    }

          bookWebService对象必须继承框架中的AbstractService对象,还有就是类名和方法上必须加上自定义标签[WebService]和[WebMethod(EnableSession = true)],这两个标签本来就是是.NetFrameWorkWebService的标签;

          至此开发工作已经完成了,后面就是编译调试与启动运行起来了;现在我们回顾一下最开始提出的一个问题,“框架中的这种开发Webservice的这种方式与net平时开发Webservice项目有什么区别?”,我们再看看Net一般怎么开发Webservice服务;

     

          一般Webservice服务都是两个文件BookService.asmxBookService.asmx.cs文件,我们不讨论这种方式内部技术实现等问题,只是两种文件这种方式在项目过程中非常不方便;

          1)这种方式必须新增加至少一个WebService项目,而上面EnterpriseFrameWork框架中的bookWebService.cs可以和后台项目放一起,就跟普通的cs文件一样;这样另一个一个好处就是相同业务的代码可以放在一起,没必要建太多项目分散代码文件的连贯性;我就觉得一个系统的项目越少越好,至少相同业务的代码一定要放在一个项目中;

          2)这种方式服务发布太麻烦了,必须先人工发布生成文件,然后拷贝部署到IIS中才能使用;而EnterpriseFrameWork框架中的Webservice完全没这么多步骤,编译生成dll文件,然后拷贝到IIS项目中的Bin目录就可以使用了;对我们这种小团队没有专门的版本管理人员,又要实现项目的快速迭代开发,这种方式能节约大量的工作;

     

          本章暂不讨论这种Webservice方式的技术实现,后面的章节会详解讲解,敬请期待!

     

    3.最后我们看下图,整理一下以上代码文件的调用关系

     

    回《【开源】EnterpriseFrameWork框架系列文章索引

    EnterpriseFrameWork框架实例源代码下载: 实例下载

  • 相关阅读:
    【leetcode】1215.Stepping Numbers
    【leetcode】1214.Two Sum BSTs
    【leetcode】1213.Intersection of Three Sorted Arrays
    【leetcode】1210. Minimum Moves to Reach Target with Rotations
    【leetcode】1209. Remove All Adjacent Duplicates in String II
    【leetcode】1208. Get Equal Substrings Within Budget
    【leetcode】1207. Unique Number of Occurrences
    【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays
    【leetcode】LCP 3. Programmable Robot
    【leetcode】LCP 1. Guess Numbers
  • 原文地址:https://www.cnblogs.com/kakake/p/3947041.html
Copyright © 2020-2023  润新知