“一切都是音讯”–MSF(音讯服务框架)入门简介

By admin in bet体育在线网址手机版 on 2019年2月3日

“一切都是新闻”–那是MSF(音讯服务框架)的设计文学。

《对于机器人“小冰”写的诗,90后小说家如此看》

MSF的名字是 Message Service Framework
的简称,中文名称:新闻服务框架,它是PDF.NET框架的一部分。

何拦伟,文心

1,MSF诞生的背景

MSF最初源于二零零六年,大家为某银行付出的本钱投资分析系统,由于银行安全的因由还要那个投资资料属于机密资料,规定必须接纳邮件系统来发送那个资料,然而邮件的收发不是一贯针对人,而是两端的计算机程序。为了及时向客户发送那些投资音信,大家使用WCF开发了依照邮件的通讯系统。后来,从那套系统中分离出来跟工作非亲非故的“新闻推送框架”,这就是MSF的雏形。

二〇一一年,我赶到某在线拍卖的电商创业公司,公司须要在1个月内支付出一套拍卖客户端软件。大家都知道创业集团的干活节奏,这么短期要开支出一套类似炒股软件的在线拍卖软件是很难的,幸好有在此以前的“信息推送框架”,买家通过竞拍软件,实时更新竞拍价格,众多购买者和卖家在线完结拍卖,整点抢拍,“音信推送框架”作为竞拍软件的底蕴服务通讯框架,保障了全部软件的研发成功。不幸的是登时众多客户用的要么XP系统,如故深度克隆版,装不上.NET框架,4个月后客户端产品屏弃了,公司整机上转账BS应用结构和移动APP软件,“信息推送框架”在信用社也乘机客户端产品的扬弃而不再有人提起。

二〇一五年,“音讯推送框架”纳入PDF.NET框架集合,正式定名为MSF,对外开源。MSF跟SOD框架一起,成为PDF.NET的营业所框架集合的积极分子,其职责如下图所示(WCF
Message Service Framework):

bet体育在线网址手机版 1

        在 VR 虚拟现实逐步「退烧」之后,AI(人工智能)完毕接棒,成为了
2017 年科技(science and technology)圈的热词。

2,MSF的技巧架构

  • 依据WCF技术创设
    • 曾经沧海,稳定,安全可相信  
  • 极简配置,拿来即用
    • 基本上只必要配备一下监听地址和端口号即可 
  • MSF Host-服务的容器
    • 不须要再支付宿主程序,写好的服务组件直接放入宿主程序即可使用,就如Web应用寄宿在IIS下边一样。 
  • NetTcpBinding,双工通讯
    • 二进制通讯,速度更快  
  • 请求-响应的方式
    • 多数RPC框架调用服务的不二法门  
  • 发表-订阅的推送方式
    • 服务器公布服务,客户端订阅服务,服务器向客户端推送信息
  • 异步通讯
    • 其间基于双工回调已毕异步功效

下面是技巧架构图:

bet体育在线网址手机版 2

 

        继二零一八年大韩民国名牌围棋高手李世石在与 AlphaGo
的竞技中输给之后,前不久由我国围棋高手柯洁为首的人类棋手再一回完败。让我们看到
AI 急忙发展的同时,也对其有了越来越多的企盼。

3,MSF设计农学

       
在「小冰」独立已毕的诗集《阳光失了玻璃窗》揭橥后,小冰发布诗集那件业务不断发酵,也引起了很多传媒以及诗歌界的关切。

MSF:一切都是音讯

       
那么,你什么对待智能机器人写诗的品尝?小冰写的是诗呢?机器人的诗句距离“创作”有多少路程?人工智能将会对文艺、艺术等的编写带来什么?

音信不都是队列暂存,也足以是实时的:

大家一看到音讯,不难想到信息队列的,消息都存储在信息队列中,但骨子里,音信也得以不设有消息队列中(数据库,文件都足以当做新闻队列持久化的一种办法),音讯可以出现在函数的参数上,类仍然措施中的变量上,作为实时音讯来处理。

     
以下内容是90后在校小说家何拦伟和韩彩霞对于机器人写诗的部分见识和见解。

指令是音信,事件也是新闻:

在CQRS架构中,将操作分为命令和询问,命令改变目的的景况,查询仅查询对象的情况。如若是基于分布式环境的CQRS架构,那么这几个命令和查询,本质上或者客户端与服务端的新闻通讯而已。

在别的一些架构中,对象的操作可能也会分成操作命令和操作结果引发的风云的定义,若是那么些操作的目的相互是与世隔膜的,对象之间的那种通讯仍旧根据新闻的,只但是是进程内的音讯。

   

每种不相同的音信可以视作是目标的不比格局:

假若我们要进行一个RPC调用,客户端向劳动器端传递新闻,那种新闻最终是炫耀到服务器端对象的例外方法的。比如大规模的WebAPI那种RPC,大家跟服务器通讯的就是一个个调用API的URL格局的新闻。

一、  你什么对待“小冰”写诗的品味?“小冰”写的是诗呢?

劳动是音信的生产者,客户是音讯的顾客:

此间表达的是服务端,客户端与新闻3者的涉嫌,服务端提供劳务,客户端应用服务,不过服务端提供什么的劳动,客户端要调用那几个服务,都急需音信交流,比如一家食堂提供餐饮服务,它要生产一条提供劳动的消息,比如在门口挂一个牌子,牌子上写明本店卖什么菜品;一个买主通过这家餐厅,看到那些牌子,觉得正好有投机喜欢的菜品,于是进食堂用餐,顾客的消费进程,其实首先消费的是这几个牌子上写的菜品音讯。

韩:我认为小冰的出版,一方面表示着科学技术的闪亮,另一方面也给喜欢读诗,想要写诗的文人群体带来了迟早意义上的压力和引力。暂且不论它的诗能或不能称得上着实的诗,就那一个人对它的好奇程度而言,已经能够印证很多标题。

MSF:服务不是被动的,也足以是一往直前的

咱俩用惯了WebService,RPC等,可能习惯性的以为,服务都是毫无作为请求然后提供劳务的,但在事实上生活中,商家那样服务是越发不行了,比如前边餐厅的例子,它提供餐饮服务的,竞争的人多了,老总只能亲自站在门口,问路过的小哥:

“帅哥想吃哪些?那里啥都有。”

本条时候,餐饮音信由事先的饭食音讯牌子,变成主任的吆喝声音主动进入你的耳朵,而不是等着您去看那多少个牌子了。明显,服务可以是主动的,并且主动服务功用更好。那些道理现实生活中如此,程序世界也是那样,大家需要将大家的服务及时的推送给客户端,这样客户端就由主动调用服务成为了消沉接受服务了。

何: 
要是说人类写诗是把1314给予它一生一世的漂亮内涵,那么小冰作诗就是从随机数表中采纳部分看起来有联系的数字,再拓展重组排序。或者说是一个心怀坦白的子女在拔取部分词语举行造句,让您看不懂,又能感受到有些美感。而文字之所以具有魅力,是因为有人与它发出关系,每一个字都与人的运动,心思,思想紧密结合。因此爆发了有灵魂的文章,有心境的小编。这一干活,小冰自然是既无心又无力去已毕。 
 

MSF:异步无处不在

世界的面目是异步的,你永远跟不上光的步子!

爱因斯坦在头脑中对光的思索,诞生了高大的“相对论”理论,我想它不会反对自己说的那句话:)

可是,唯有一个人她肯定会率先出来反对自己,那就是 马克斯·普朗克,他说“量子纠缠” 效应的发出,大约就是一道的!

普朗克的量子世界距离大家老百姓的世界有点远,对大家普通人而言,说“异步无处不在”没什么大题材:)

举个例证:

北魏,将军在国门驻军,国君要想对仇人发动攻击,他要写一道金牌,然后让传令兵八百里加急,昼夜驰骋将军令送到将军手中。将军接到指令的时候,离君王下达指令,往往已经寿终正寝一些天了,将军接到指令与天王发出指令,在岁月上延续大有径庭的,而这几个时间距离可能敌情已经暴发了转变,将军要求基于实际意况来支配,是当时发动攻击或者临时不执行命令,所以才有“将在外军令有所不受”的说法。当然,现在有了电报电话,能够用那一个先进手段来通信,但仍旧有延迟,比如大家看出的电视直播一样,主持人询问现场记者情状,记者三番五次会等几秒才能回应。

在处理器通讯世界,大家来看一块和异步的区分。

同台是指:发送方发出数据后,等接收方发回响应将来才发下一个数据包的报导格局。
 
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通信形式。
同步是阻塞形式,异步是非阻塞情势。所以,现在游人如织重型分布式系统都应用异步通讯来增强系统的处理能力,随着大数据云计算越来越流行,异步处理变得进一步宽广。

     

 4,MSF的技术特点

  • 不必WCF繁琐的部署,无需学习WCF知识。
  • MSF Host作为MSF服务组件的宿主进度,它是一个控制台程序;同时,MSF
    Host也是服务的器皿,它可以运行三个用户支付的MSF服务组件。
  • MSF内置缓存服务,会话服务和身份验证服务。
  • MSF帮忙“服务集群”效能,包括集群监控管理和集群节点调度,节点负载均衡。
  • 任何业务类只须求继续MSF的劳务接口,就可以公布为MSF的劳动组件。
  • 任何一个MSF服务类,都可以用作RPC形式或者服务推送情势应用,二种情势都协理同步仍然异步调用,具体接纳哪个种类艺术唯有在于客户端Proxy。
  • 劳动推送匡助定时推送和触发推送二种办法,触发推送可以将劳动中间的工作事件视作分布式事件推送给别的服务节点或客户端。

 

二:机器人的诗篇距离“创作” 还有多少距离?

5,MSF与Actor编程模型

Actor模型是一个概念模型,用于拍卖并发统计。它定义了一多级系统组件应该怎么着动作和交互的通用规则,最出名的运用这套规则的编程语言是Erlang。那篇文章更关爱模型本身而不是它在不一致语言的兑现。

一个Actor指的是一个最主旨的盘算单元。它能拔取一个新闻还要根据其履行统计。
以此意见很像面向对象语言,一个目的吸收一条新闻(方法调用),然后依据接收的音讯做事(调用了哪个方法)。

上述内容,来自《10 分钟明白 Actor
模型
bet体育在线网址手机版,》,更加多内容请参见原文。

 

Actor模型作为一种首要的出现编程模型,它比操作系统原生的依据线程的改进编程模型,提供了更高的虚幻,基于Scala语言开发的Akka,是JAVA虚拟机JVM平台上打造高并发、分布式和容错应用的工具包和周转时。

Akka它处理并发的方法基于Actor模型。在Akka里,Actor之间通讯的绝无仅有机制就是信息传递。Akka的风靡使得Actor那种编程模型被芸芸众生研究的越来越多。

bet体育在线网址手机版 3
MSF的统筹文学之一就是“一切都是音信”,所以MSF跟Actor模型有部分共同之处:

何:有人从现代诗作者的角度来不难答复了瞬间:随机选出几首人工智能作品,它们还得不到符合现今的国语现代诗写作范式。从广义上来说,确实可以说那几个小说是诗。但只要在不表明作者是何人的事态下拿给当代的作家们看,诗人们则会以为这么些诗还未写得入门。正如诗人于坚所说:尽管这是诗,也是不好的诗,一些零碎的无机组合。它使用了国文本具的诗性,而它本身并沒有灵性。使用部分中文修辞本就会发出局地陌生化的作用,正如在此之前自己玩过一种语言游戏,出席者各发名词动词形容词等,打乱随意组合,常会出现部分危言耸听之语。有人读到这里恐怕会不服,我举个例子:她嫁给了红尘许多的颜色(摘自小冰诗集),这一句中若是人们不去为它致以某种意义,它就只好是一个躺在小学老师红笔下的病句。假使有一个人能嫁给颜色的话,她也一样能生出颜色,那么大家人类就将只是颜色各异的色彩组合体。我认可人类的想象力是添加的,但小冰在生产出这一个句子的时候,也会如此想啊?因而看出,所谓的好诗唯有是部分想象力及其丰裕的人类对于机器人盲目标佩服和单相思罢了,机器人距离“创作”的光景还很漫长。

– Actor模型=数据+行为+消息

-   Actor模型内部的状态由自己的行为维护,外部线程不能直接调用对象的行为,必须通过消息才能激发行为,这样就保证Actor内部数据只有被自己修改。
-   Remote Actor有Actor Path,例如:
    -   akka://ServerSys@10.102.141.77:2552/user/SomeActor

韩:说到“创作”,我们先来看一下它的含义。词典里是这般解释的:创作,制造文学艺术文章,创意制作。那么“小冰”的诗,究竟算不算创作呢?从经济学艺术强大的包容性角度来看,小冰创立出的东西,的确有令人可探讨之处,比如它在一幅沙滩图下写到“可有多的砂石/你的名字在江湖又五遍隐去/在最高的地方/世界睁开眼睛”。我在率先次见到那句诗时,就忍不住地陷入了思维。一是想它在公布什么,二是想,这随想和图纸有哪些关联?三是想,在高高的的地点,世界睁开眼睛。

– MSF模型=服务+消息

-   MSF模型中服务的调用和服务的处理结果,都以消息来表示,要改变服务的状态,必须使用消息
-   MSF通过订阅一个服务,建立一个服务的实例,这些实例相当于一些Actor,它可以通过消息再调用别的Actor.
-   MSF也有Service Path,例如:
    -   Service://Calculator/Add/System.Int32=1&System.Int32=2

 

三、人工智能将会对文艺、艺术等的编著带来如何?

6,有关MSF的疑问

自己在向社区情人们介绍MSF的时候,平日听到上面那几个难题,我想看看明天那篇作品的读者也许也有近似的疑团,所以很有需求在那边先做一个难点解释,以便你在支配是还是不是选用MSF的时候做一个根本性的判定,比如您要求很高品质的RPC调用,那您不切合选取MSF,因为它按照WCF,高质量不是WCF的设计目标。

  1. MSF是音讯服务框架,但它不是新闻队列;
  2. MSF的新闻不做持久化,都是实时的;
  3. MSF不是仅仅处理信息的,重点在于服务,新闻是服务调用进度的架空数据;
  4. MSF不是一个RPC框架,那只是内部一个功能;
  5. MSF不做B/S的音讯推送,而是C/S, S/S的通讯;
  6. MSF推送的不是音讯,而是服务;
  7. MSF基于WCF,所以并非苛求它RPC的高质量,而相应是通讯的多谋善算者、稳定和保证。

对于第2点,固然MSF不做音信的持久化,但您可以在新闻发送后要么收受后自己做那种持久化作用;

对此第5点,要是急需做B/S的新闻推送,可以动用WebSocket,而在WebServer端,它可以跟工作服务器之间使用MSF,音信由业务服务器推送到Web服务器,最终再推送到浏览器;

对此第6点,MSF推送的不是信息,而是服务,有一位技术老总跟自家冲突了很久,他说服务端推送的可是是一些给客户端的数据而已,不是音信,更不是如何服务。那位经理说得一板一眼,但自我说MSF推送的是劳务,只但是是对她说法的一个尤为高档的肤浅而已。

自己想,有一句广告词很合乎来诠释我和她的龃龉:

没错,你喝的是汽水,我喝的是北冰洋!

自我不是明知故犯要在此间给一种汽水做广告,只是认为那几个广告实在是很吻合来证实我的难点。

韩: 
很多个人站在人类心思的制高点,对小冰的诗横加指责:机械模仿,盲目组合……在此间我想说的是就连过多呼之欲出的人都做不到或者不屑去做的业务,大家又凭什么要去苛求、责难一个机器人?

 7,获取MSF

MSF现在是开源软件,使用前,你需求坚守LGPL开源协议,LGPL对买卖友好,你可以放心的选拔,当然你能够调换大家获得技术支持。

  • 获取源码,请点击http://pwmis.codeplex.com,未来将迁移到GitHub,敬请关心。
  • 赢得程序包,请在先后包管理程序搜索 PDF.NET.MSF,如下图:

bet体育在线网址手机版 4

查阅音讯,请浏览网址:https://www.nuget.org/packages?q=PDF.NET.MSF
先后包分为客户端、服务端和宿主环境,分别是:

  • PDF.Net.MSF.Client
  • PDF.Net.MSF.Service
  • PDF.Net.MSF.Service.Host

我们完全可以以一种宽容的心怀来看待小冰以及它的诗。
假如愿意,大家也足以挑选那样去了解:小冰杂谈的产出是新时代对小说家的倒逼,人工智能正在向小说家、作家群体发出挑衅。这又何尝不是一种鞭策,一种刺激。对于大家人类而言,最明智的挑三拣四,最积极的情态难道不该是知情它,包容它,然后赶超自己和这一个时代?

8,MSF使用入门

在脚下这些入门示例中,我们首先来演示下MSF的“信息对话”功能,让MSF的客户端和劳务宿主程序间接开展对话通讯。

何:即便本人事先不怎么看好人工智能写诗,不过它们的面世,却很可能会掀起三回文艺界的大地震。试想一下,倘若之后那种技能推广开来,有某个报刊杂志或者单位、集团想搞一回有奖征文,当他们接受全国各州众多份稿件时,用度多量的人力物力财力去一份份的稽审,最后却无奈地觉察众多创作的风骨与语言习惯如出一辙。他们很难去一个个的分辨出什么是真人写的,哪些是机器人写的。那么颁奖的时候,是该把奖颁给呕心沥血的写小编,仍然颁给不费吹灰之力的智能机器?再譬如,对于有些境内的名牌刊物,作家们当然上刊就很难了,而固然智能机器人“写诗”普及,他们又去哪儿揭橥自己的文章?这几个靠稿费维持生计的撰稿人们,是或不是实在就要沦落街头要饭生存了?诸如此类的题目将只是大家在以后要面对的题材中的九牛一毛。到当下,我猜会有越来越多的作家放动手中的笔,从各自的书屋里一涌而出,大喊公平正义吧!

演示步骤

1,成立一个MSFTest解决方案,添加一个控制台项目MSFTest
2,包管理控制台,拔取该项目,然后输入:

Install-Package PDF.Net.MSF.Service.Host

3,在解决方案添加一个TestClient 控制台项目

4,包管理控制台,选用该类型,然后输入:

Install-Package PDF.Net.MSF.Client

那时解决方案文件夹如下图:

bet体育在线网址手机版 5

5,在TestClient控制台项目里面,添加如下代码:

bet体育在线网址手机版 6bet体育在线网址手机版 7

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("******** PDF.NET MSF 客户端测试程序 *********");
            Console.WriteLine();
            Proxy client = new Proxy();
            client.ErrorMessage += client_ErrorMessage;
            Console.Write("请输入服务器的主机名或者IP地址(默认 127.0.0.1):");
            string host = Console.ReadLine();
            if (string.IsNullOrEmpty(host))
                host = "127.0.0.1";
            Console.WriteLine("服务地址:{0}",host);

            Console.Write("请输入服务的端口号(默认 8888):");
            string port = Console.ReadLine();
            if (string.IsNullOrEmpty(port))
                port = "8888";
            Console.WriteLine("服务端口号:{0}", port);

            client.ServiceBaseUri = string.Format("net.tcp://{0}:{1}", host, port);
            Console.WriteLine("当前客户端代理的服务基础地址是:{0}",client.ServiceBaseUri);
            Console.WriteLine();

            string repMsg = "你好!";

            client.SubscribeTextMessage("我是客户端", serverMessage => {
                Console.WriteLine();
                Console.WriteLine("[来自服务器的消息]::{0}", serverMessage);
            });

            while (repMsg != "")
            {
                Console.Write("回复服务器(输入为空,则退出):>>");
                repMsg = Console.ReadLine();
                client.SendTextMessage(repMsg);
            }

            Console.WriteLine("测试完成,退出");

        }

        static void client_ErrorMessage(object sender, MessageSubscriber.MessageEventArgs e)
        {
            Console.WriteLine("---处理服务时错误:{0}",e.MessageText);
        }
    }

View Code

6,生成MSFTest项目
假诺已经生成过,请右键菜单,重新生成项目,这一步将电动启动MSF Host。

7,运行TestClient项目
在服务端和客户端随意输入文字内容,服务端可以将音讯推送给所有订阅此新闻的客户端。

bet体育在线网址手机版 8

 

四、说完“小冰”的诗篇,大家再来看看,对于机器人“小冰”写诗那件事为啥会产出这么强烈的多个山头?

哪些启动MSF Host

在VS解决方案资源管理器上,拔取安装过 nuget
程序包 PDF.Net.MSF.Service.Host
的类型,右键菜单,“重新生成”命令,即可启动MSF
Host,它是在Nuget安装程序包的时候,给品种的编译前后添加了事件完毕的:

copy /y "$(TargetDir)*.*" "$(SolutionDir)Host"
cd "$(SolutionDir)Host" 
start "MessageService Host"  "SucessCompiled.vbs" 

何:据自己打听,大多数对于小冰持肯定态度的人都是一些不会写诗或者不太懂诗的人,他们对于随笔的明亮大多还栖息在那种“过时的”“鸡汤类,意象类”阶段。所以当媒体曝出“小冰”写的诗时,他们便哗声一片,并宠信地以为那就代表机器人能像人类一样写诗了,为之深入地折服和震动。他们不亮堂的是,现代随想一向在乘胜一代飞速发展,方今诗坛早已不是那么些晦涩难懂的“意象诗”和夸大轻薄的“鸡汤诗”在执政了。当今已是“口语写作”的五洲,所以如果按现代小说家的见地来看,“小冰”写的东西草率的说成是诗,便有点牵强附会的存疑了。

为MSF Host添加防火墙规则

若是你须求让MSF Host远程访问,可能必要管理防火墙规则,用管理员权限打开
CMD命令,运行上面的命令行:

netsh advfirewall firewall add rule name="PDF.NET.MSF.Host" dir=in action=allow protocol=TCP localport=8888

也然则指定程序路径方法来添加防火墙规则:

netsh advfirewall firewall add rule name="PDF.NET.MSF.Host" dir=in action=allow program="D:\MSFHost\PdfNetEF.MessageServiceHost.exe"

 

韩:我觉着那些对“小冰”持否定态度的人多数为懂诗或者自己就写诗的人,其中不乏部分后生的潜力股,但越多的如故这个已经有所建树的走红小说家。在他们内部多少是因为看透了“小冰”对于文字,随机组合的小把戏,所以对此予以否认。但也不乏部分担心智能机器人会代替自己的“小说家”地位和诗人光环的“伪小说家”。他们恐怕愤慨或是心虚地喊出:“小冰”会写诗了,还要大家那么些诗人干什么?”“凭什么友好多少年的大力现在被一个出世才几年的科学和技术产品轻易比下去!”

订阅和发送文书信息

MSF客户端程序,可以一贯订阅MSF服务宿主的文本信息服务,之后,就足以每日向MSF服务宿主发送文书信息,并且可以异步的从MSF服务宿主接受音信。

 相关的代码如下:

Proxy client = new Proxy();
client.ServiceBaseUri = string.Format("net.tcp://{0}:{1}", host, port);
client.SubscribeTextMessage("我是客户端", serverMessage => {
      Console.WriteLine();
      Console.WriteLine("[来自服务器的消息]::{0}", serverMessage);
});

while (repMsg != "")
{
     Console.Write("回复服务器(输入为空,则退出):>>");
     repMsg = Console.ReadLine();
     client.SendTextMessage(repMsg);
}

劳务代办对象的SubscribeTextMessage
方法发起文本定义,并且接受一个异步音讯的寄托。订阅之后,只要不倒闭连接,之后随时能够应用 SendTextMessage
发送音讯。

这么,一个简易的MSF信息通话示例就办好了,大家看到在服务器端一行代码都不曾编制。

如若要自定义我们的事情服务,就要求写一些代码了,但也很粗略,下一篇再持续,

抑或您可以先看看网友写的牵线:

自我不否认那个诗人们的见解。但从部分群体的视力里,我们也不难看出称扬。那是一个萤火的诗文时代,小说生态面临众多挑战,斯巴鲁很难有像80年代,随笔的黄金一代所特有的小说感情。那时,有钱不是颜面,小说家最有面子。那时,你说一句诗,我回你一句。那时,你说,我就懂。近日,诗歌对有的普通人来说是月光,是流星,是不足轻触的只求。即便是这一个被公认的“小说家”,也是短缺对应“诗格”与“人格”的,人不符文,文不符人的景观越来越常见。更有一些自翊为小说家的自大者和知识投机者,为虚荣写作,为资金写作,唯独不是为灵魂写作,为活着经验写作,更谈不上对全人类记念的表达。因此看来,人们对于小冰有着某种程度的敬佩,或者说是对人工智能的笑容可掬,就简单驾驭了。

SOD开源框架MSF(音讯服务框架)介绍

迎接插足我们的QQ群啄磨MSF框架的运用,群号:敏思(PWMIS)
.NET 18215717,加群请声明:PDF.NET技术互换,否则可能被拒。

             

   

       

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 mobile.365-838.com 版权所有