代码改变世界

搭建一个BS 的简单SOA 架构(直接通过jquery 调用后台的 wcf 服务的架构)(第一天)

2015-04-13 17:45  刘晶  阅读(1317)  评论(0编辑  收藏  举报

      亲们!还在用传统的三层架构吗?你还在对SOA架构 不了解吗?

      那就赶快来学习下一个 比较简单的SOA的架构吧!我会手把手的 教会你们怎么搭建这个 简单的SOA的架构。

      其中用的技术点保证  WCF,ajax ,json, 反射,ado.net  等等,如果你听不懂 我在说什么的话,还是对这些技术有些基本的了解吧!  

经过这些天一直在研究 jquery  以及 WCF,现在公司有一个需求:

   1. 前台直接通过  js 通过json格式,json 格式 其中包括方法名字传输 到后台,直接调用wcf,后台通过解析 方法名,

       调用对应的方法。

2.技术难点: 如何 直接 通过 jS 调用后台的 WCF的服务。

                  如何通过方法名字,直接调用对应的方法。

3.框架的好处: 直接由服务端到前台,节省了很多的中间环节。大大减少的代码量。

                    同时服务端 可以轻松的跨平台。

 

4.开始分析架构:

    首先 ,前台 需要传输的参数包括  数据库的名字(database),方法名(method),方法的参数(parms) ,然后通过json格式传输到 后台。

    然后 后台 通过 将方法的参数进行封装,查找对应的方法。

 

接下来开始我们的第一天的编程吧:

     首先我们要新建一个web 项目 ,名字为Client,   这是是客户端,  待会我们直接由 客户端直接访问 服务端

      然后建立一个类库,名字为Server,如下图:

   

接下来,我们在 client 下来建立一个 Ajax 的wcf服务,名字为webService

 
接下来我们来编写 服务层的操作,在服务端我们新建一个webService.cs的 类:(首先要引入

using System.ServiceModel;
using System.ServiceModel.Web;

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace Server
{
    
    public class webService:IService
    {

        public string select(string database, string method, string sql)
        {
            object[] obj=new  object[2];
            obj[0]=database;
            obj[1]=sql;
            DataTable dt=(DataTable)Common.Execute("Server", "DataBase",method,obj);
            return Common.DataTableToJson("data",dt);           
        }
    }
      [ServiceContract]
    public interface IService {
       [OperationContract]
       [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
       string  select(string database, string method,string sql);
    }

}
View Code

解释说明:  1.接口IService表示我们WCF调用的 契约(大家共同遵守的规则), 也就是WCF配置的 contract 

                2. [ServiceContract]  表示这个 接口能够被 wcf 调用到

               3. [OperationContract]  表示这个方法能被wcf 调用到

              4.  [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]

                 WebInvoke 表示能够 post 得到, ResponseFormat 表示请求发送的 格式  为json

                  BodyStyle   表示形式,说明 只在请求的时候使用 json ,响应的时候不使用json

               5.里面调用的方法,都可以在下面的 下载源代码里面看到

           到现在为止,你可以清楚的看到 后台的代码是怎么写的了吧!!!!

  VS2012版本源码下载:

https://files.cnblogs.com/files/liujing379069296/Vs2012Client.rar

vs2010 源码下载

https://files.cnblogs.com/files/liujing379069296/VS2010Client.rar