• WebService为手机开发提供服务


    首先给出架构图:

    iWS.BPDI.MobilePortal.BLL类中部分方法

    /// <summary>
    /// 获取通讯录
    /// </summary>
    /// <param name="UserName"></param>
    /// <param name="UserPassword"></param>
    /// <returns></returns>
    public DataSet GetAddressList(string UserName, string UserPassword)
    {
    string Url = Functions.GetAppSeetingValueByKey(SysNames.P_WEB_URL);
    #region 1、创建基本数据结构

    DataSet ds = new DataSet("AddressList");

    //通讯录信息
    DataTable dt = new DataTable("List");

    //工号
    dt.Columns.Add("ID", typeof(string));
    //员工姓名
    dt.Columns.Add("Name", typeof(string));
    //岗位
    dt.Columns.Add("Job", typeof(string));
    //部门
    dt.Columns.Add("Department", typeof(string));
    //分机
    dt.Columns.Add("Extension", typeof(string));
    //直拨电话
    dt.Columns.Add("Phone", typeof(string));
    //移动电话
    dt.Columns.Add("MobilePhone", typeof(string));
    //电子邮件
    dt.Columns.Add("Email", typeof(string));
    //区域
    dt.Columns.Add("Area", typeof(string));
    //房间号
    dt.Columns.Add("RoomNub", typeof(string));

    #endregion

    using (ClientContext client = new ClientContext(Url))
    {
    NetworkCredential credentials = new NetworkCredential(UserName, UserPassword, Functions.GetAppSeetingValueByKey(SysNames.P_DOMAIN_NAME));
    client.Credentials = credentials;
    Web web = client.Web;
    client.Load(web);//必须加载到客户端
    List addressList = client.Web.Lists.GetByTitle("通讯录");
    client.Load(addressList);
    CamlQuery camlQueryForUser = new CamlQuery();
    camlQueryForUser.ViewXml = @"<View/>";

    ListItemCollection listItems = addressList.GetItems(camlQueryForUser);
    client.Load(listItems);
    client.ExecuteQuery();

    foreach (ListItem item in listItems)
    {
    DataRow row = dt.NewRow();
    row["ID"] = item["_x5de5__x53f7_"] == null ? "" : item["_x5de5__x53f7_"].ToString();
    row["Name"] = item["_x59d3__x540d_"] == null ? "" : item["_x59d3__x540d_"].ToString();
    row["Job"] = item["_x5c97__x4f4d_"] == null ? "" : item["_x5c97__x4f4d_"].ToString();
    row["Department"] = item["_x90e8__x95e8_"] == null ? "" : item["_x90e8__x95e8_"].ToString();
    row["Extension"] = item["_x5206__x673a_"] == null ? "" : item["_x5206__x673a_"].ToString();
    row["Phone"] = item["_x76f4__x62e8__x7535__x8bdd_"] == null ? "" : item["_x76f4__x62e8__x7535__x8bdd_"].ToString();
    row["MobilePhone"] = item["_x79fb__x52a8__x7535__x8bdd_"] == null ? "" : item["_x79fb__x52a8__x7535__x8bdd_"].ToString();
    row["Email"] = item["_x7535__x5b50__x90ae__x4ef6_"] == null ? "" : item["_x7535__x5b50__x90ae__x4ef6_"].ToString();
    row["Area"] = item["_x533a__x57df_"] == null ? "" : item["_x533a__x57df_"].ToString();
    row["RoomNub"] = item["RoomNub"] == null ? "" : item["RoomNub"].ToString();
    dt.Rows.Add(row);
    }
    }

    #region 3、设置返回值

    dt.AcceptChanges();
    ds.Tables.Add(dt);

    #endregion

    return ds;
    }

    App_Code 中方法


    using System;
    using System.Data;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using iWS.BPDI.MobilePortal.Common;
    using log4net;
    using iWS.BPDI.MobilePortal.IBLL;
    using iWS.PublicUtilites;


    /// <summary>
    /// 企业门户统计信息管理相关
    /// </summary>
    [WebService(Namespace = "http://iws.mobileportal.ws/")]
    public class PortalCenter : System.Web.Services.WebService
    {
    /// <summary>
    /// 日志组件
    /// </summary>
    private static ILog log = LogManager.GetLogger(typeof(PortalCenter));

    /// <summary>
    /// 创建业务逻辑层处理对象
    /// </summary>
    private IPortalCenter iPortal = PortalCenterMaker.Create(Functions.GetAppSeetingValueByKey("BLLTarget"));

    public PortalCenter()
    {
    //日志初始化
    LogRecorder.InitLog();
    }

    [WebMethod]
    public DataSet GetAddressList(string UserName, string UserPassword)
    {
    return iPortal.GetAddressList(UserName, UserPassword);
    }
    }

    asmx中只有一句话即可

    <%@ WebService Language="C#" CodeBehind="~/App_Code/PortalCenter.cs" class="PortalCenter" %>

    WebService实则就这三层调用

  • 相关阅读:
    WPF学习之路(八)页面
    面试题整理:C#(一)
    [转载] Tomcat架构分析
    [转载] ConcurrentHashMap原理分析
    [转载] Java并发编程:Lock
    [转载] KAFKA分布式消息系统
    [转载] Java并发编程:Callable、Future和FutureTask
    [转载] Java线程池框架源码分析
    [转载] 红黑树(Red Black Tree)- 对于 JDK TreeMap的实现
    [转载] RED-BLACK(红黑)树的实现TreeMap源码阅读
  • 原文地址:https://www.cnblogs.com/GreenGrass/p/2642241.html
Copyright © 2020-2023  润新知