频道栏目
首页 > 资讯 > Android > 正文

andoird + wcf开发实例

13-03-22        来源:[db:作者]  
收藏   我要投稿
实例开发架构:android调用wcf service服务(注意是service服务,不是restful风格,后面再讲restful风格的调用)。
动手之前,先一个ksoap2-android,它是我们调用wcf服务的工具。在官网上下载过好几次都不能用,后来发现原来下载的不是完整的。所以大家可以到这下载http://download.csdn.net/detail/leesmn/5162649。
wcf部分(使用的是VS2012):
1、新建wcf类库odbServiceLib。定义IService,以及定义数据约定
namespace odbServiceLib
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        int PostDaignoseJson(string jsonStr);
        [OperationContract]
        string PostConsultJson(string jsonStr);
        [OperationContract]
        Consult GetConsult(string imei);
        // TODO: 在此添加您的服务操作
    }
    // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
    // 可以将 XSD 文件添加到项目中。在生成项目后,可以通过命名空间“odbServiceLib.ContractType”直接使用其中定义的数据类型。
    [DataContract]
    public class Diagnose
    {
        [DataMember]
        public string imei { get; set; }
        [DataMember]
        public double longitude { get; set; }
        [DataMember]
        public double latitude { get; set; }
        [DataMember]
        public string datetime { get; set; }
        [DataMember]
        public int type { get; set; }
        [DataMember]
        public string content { get; set; }
    }
    [DataContract]
    public class Consult
    {
        [DataMember]
        public string imei { get; set; }
        [DataMember]
        public double longitude { get; set; }
        [DataMember]
        public double latitude { get; set; }
        [DataMember]
        public string datetime { get; set; }
        [DataMember]
        public int type { get; set; }
        [DataMember]
        public string text { get; set; }
        [DataMember]
        public string imgstr { get; set; }
        [DataMember]
        public byte[] img1 { get; set; }
    }
}
2、实现Service。在该段代码中本人用了vs自带的ado.net entity framwork作为orm操作数据库
namespace odbServiceLib
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“Service1”。
    public class Service : IService
    {
        public int PostDaignoseJson(string jsonStr)
        {
            Diagnose d;
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
            {
                DataContractJsonSerializer serializer1 = new DataContractJsonSerializer(typeof(Diagnose));
                d = (Diagnose)serializer1.ReadObject(ms);
    
            }
            //System.Data.Common.DbTransaction tran = null;
            int i = 0;
            try
            {
                using (carobdEntities ctx = new carobdEntities())
                {
                    ctx.Database.Connection.Open();
                    //tran = ctx.Database.Connection.BeginTransaction();
                    StringBuilder strb = new StringBuilder();
                    strb.Append("create table if not EXISTS diag");
                    strb.Append(d.imei);
                    strb.Append("(id  int not null auto_increment,");
                    strb.Append("longitude double,");
                    strb.Append("latitude double,");
                    strb.Append("datetime datetime,");
                    strb.Append("type int,");
                    strb.Append("content varchar(500),");
                    strb.Append("PRIMARY KEY (id) )");
                    if (ctx.Database.ExecuteSqlCommand(strb.ToString()) > 0)
                        ctx.SaveChanges();
                    strb.Clear();
                    strb.Append("insert into diag");
                    strb.Append(d.imei);
                    strb.Append("(longitude,latitude,datetime,type,content)values(");
                    strb.Append(d.longitude);
                    strb.Append(",");
                    strb.Append(d.latitude);
                    strb.Append(",'");
                    strb.Append(d.datetime);
                    strb.Append("',");
                    strb.Append(d.type);
                    strb.Append(",'");
                    strb.Append(d.content);
                    strb.Append("')");
                    if (ctx.Database.ExecuteSqlCommand(strb.ToString()) > 0)
                        i = ctx.SaveChanges();
                    //tran.Commit();
                }
            }
            catch { i = -1; }
            return i;
        }
 
        public string PostConsultJson(string jsonStr)
        {
            Consult c;
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
            {
                DataContractJsonSerializer serializer1 = new DataContractJsonSerializer(typeof(Consult));
                c = (Consult)serializer1.ReadObject(ms);
            }
            c.img1 =  Convert.FromBase64String(c.imgstr);   
           
            //System.Data.Common.DbTransaction tran = null;
            int i = 0;
            try
            {
                using (carobdEntities ctx = new carobdEntities())
                {
                    ctx.Database.Connection.Open();
                    //tran = ctx.Database.Connection.BeginTransaction();
                    StringBuilder strb = new StringBuilder();
                    strb.Append("create table if not EXISTS cons");
                    strb.Append(c.imei);
                    strb.Append("(id  int not null auto_increment,");
                    strb.Append("longitude double,");
                    strb.Append("latitude double,");
                    strb.Append("datetime datetime,");
                    strb.Append("type int,");
                    strb.Append("text varchar(500),");
                    strb.Append("img1 longblob,");
                    strb.Append("PRIMARY KEY (id) )");
                    if (ctx.Database.ExecuteSqlCommand(strb.ToString()) > 0)
                        ctx.SaveChanges();
                    strb.Clear();
                    strb.Append("insert into cons");
                    strb.Append(c.imei);
                    strb.Append("(longitude,latitude,datetime,type,text,img1)values(");
                    strb.Append(c.longitude);
                    strb.Append(",");
                    strb.Append(c.latitude);
                    strb.Append(",'");
                    strb.Append(c.datetime);
                    strb.Append("',");
                    strb.Append(c.type);
                    strb.Append(",'");
                    strb.Append(c.text);
                    strb.Append("',");
                    strb.Append("{0}");
                    strb.Append(")");
 
                    if (ctx.Database.ExecuteSqlCommand(strb.ToString(), c.img1) > 0)
                        i = ctx.SaveChanges();
                    //tran.Commit();
                }
            }
            catch (Exception e) { i = -1; return e.Message; }
            return i.ToString();
        }
        public Consult GetConsult(string imei)
        {
            Consult c = null;
            try
            {
                using (carobdEntities ctx = new carobdEntities())
                {
                    ctx.Database.Connection.Open();
                    //tran = ctx.Database.Connection.BeginTransaction();
                    StringBuilder strb = new StringBuilder();
                    strb.Append("select * from cons");
                    strb.Append(imei);
                    strb.Append(" order by id DESC limit 1");
                    c = ctx.Database.SqlQuery<Consult>(strb.ToString()).FirstOrDefault();
                    
                    //tran.Commit();
                }
            }
            catch (Exception e) { }
            return c;
        }
    }
}
3、新建web-〉wcf服务。将默认生成的IService以及Service删除掉。将odbServiceLib 类库添加到本项目中。编辑Service.svc的标记
<%@ ServiceHost Language="C#" Debug="true" Service="odbServiceLib.Service" %>
到此wcf端就大功告成了运行一下看看能不能打开Service.svc
相关TAG标签
上一篇:新建Oracle数据库2种方法
下一篇:oracle存储过程Loop循环一张表插入到另外一张表
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站