北联网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!
优惠券免费领
淘宝
女装
男装
内衣
人气榜
数码

WCF服务编程中运用SvcMap完成分类共享的技巧办法

时间:2020-6-22作者:未知来源:北联网教程人气:

软件安装:装机软件必备包             

网络软件一般是指系统的网络操作系统、网络通信协议和应用级的提供网络服务功能的专用软件。网络软件包括通信支撑平台软件、网络服务支撑平台软件、网络应用支撑平台软件、网络应用系统、网络管理系统以及用于特殊网络站点的软件等。从网络体系结构模型不难看出,通信软件和各层网络协议软件是这些网络软件的基础和主体。
穿越火线cf官方下载

软件等级:

更新时间:2016-11-21

版本号:4.0.8

穿越火线cf官方下载

WCF服务编程中使用SvcMap实现类型共享的技巧方法

手动的属性赋值来转换显然是不可取的,所以就共享类型了。调用过WCF服务的同学可能都会遇到这样的问题,同一个实体类型,不同的服务Visual Studio生成了不同的版本,例如Service1.User和Service2.User,对于C#来说,这是两个不同的类型,Service1获得的User是放不到Service2服务里去的。

方法一、服务端和客户端共享数据契约程序集

这个方法最常用,也是大家最熟悉的方法,把WCF的数据契约放在一个独立类库里,服务端,客户端都引用这个程序集,然后在生成WCF时,选择重新使用引用程序集中的类型即可。

WCF服务编程中使用SvcMap实现类型共享的技巧方法

这个方法缺点很明显,它只有在客户端和服务端在同一个Visual Studio解决方案内才方便,否则要不断手动更新数据契约程序集。更不用说是第三方的服务。

方法二,暴力转换类型

这个其实不是类型共享,不过也是解决这个问题的一种手段。就是借助AutoMapper,EmitMapper这样的类库帮助快速转换类型。下面是一个例子。

Money类型包含User实体和Currency枚举和一个数字的Amount,Money的定义

[DataContract(Namespace = Consts.Namespace)]
public class Money
{
    [DataMember]
    public decimal Amount { get; set; }

    [DataMember]
    public Currency Currency { get; set; }

    [DataMember]
    public UserInfo User { get; set; }
}

Currency:

[DataContract(Namespace = Consts.Namespace)]
public enum Currency
{
    [EnumMember]
    Euro,
    [EnumMember]
    Usd,
    [EnumMember]
    PoundSterling
}

UserInfo:

[DataContract(Namespace = Consts.Namespace)]
public class UserInfo
{
    [DataMember]
    public string FirstName { get; set; }
    [DataMember]
    public string LastName { get; set; }
    [DataMember]
    public string Email { get; set; }
    [DataMember]
    public string Phone { get; set; }
    [DataMember]
    public string Id { get; set; }
}

对于DepositServiceNoSharp和WithdrawalServiceNoSharp这两个WCF服务版本的Money和User,可以这样添加一些扩展方法

using AutoMapper;
using DepositService = Client.DepositServiceNoSharp;
using Client.WithdrawalServiceNoSharp;

namespace Client
{
    public static class Extensions
    {
        static Extensions()
        {
            Mapper.CreateMap();
            Mapper.CreateMap();
            Mapper.CreateMap();
            Mapper.CreateMap();
        }

        public static Money ToWithdrawal(this DepositService.Money money)
        {
            return Mapper.Map(money);
        }

        public static DepositService.Money ToDeposit(this Money money)
        {
            return Mapper.Map(money);
        }
    }
}

然后就可以轻松转换

var money = new Money
{
    Amount = 1,
    Currency = Currency.Usd,
    User = new UserInfo
    {
        Email = "zhww@outlook.com",
        FirstName = "zhang",
        Id = "123",
        LastName = "weiwen",
        Phone = "110"
    }
};
var depositMoney = money.ToDeposit();

方法三、使用SvcMap实现类型共享

其实这个才是文章的重点,前面可以忽略。

生成第一个WCF服务后,点击”显示所有文件“去编辑SvcMap文件:

WCF服务编程中使用SvcMap实现类型共享的技巧方法

找到MetadataSources节点,原来只有一个,现在把其他要引用的服务添加到这里,例如:

  
    
    
  

再右击服务,”更新服务引用“,所有服务都会生成到同一个命名空间里,实现类型共享。


常见的网络操作系统有UNIX、Netware、Windows NT、Linux等,网络软件的漏洞及缺陷被利用,使网络遭到入侵和破坏。




软件推荐:      

QQ电脑管家 2345安全卫士 百度杀毒下载 金山毒霸下载 360安全卫士 猎豹清理大师下载 火绒安全下载

关键词:WCF服务编程中运用SvcMap完成分类共享的技巧办法


软件合集下载 更多
2345一键安装合集标准版下载(软件大全) 2345一键安装合集标准版下载(软件大全)
360一键装机集合包免费下载 360一键装机集合包免费下载(纯净绿色)
腾讯精品装机软件合 腾讯精品装机软件合集包(官方安装包)
谷歌浏览器电脑最新版本下载设计简洁 谷歌浏览器电脑最新版本下载(设计简洁)
UC浏览器电脑最新官方版下载 UC浏览器电脑最新官方版下载
悟空苹果助手(免费安装苹果应用) 悟空苹果助手(免费安装苹果应用)


Copyright © 2012-2018 北联网教程(http://www.wz300.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版