从长商议Silverlight(53) – 4.0通讯之对WCF NetTcpBinding的帮助, 在Socket通讯中通过HTTP检索策略文件, HTTP请求中的ClientHttp和BrowserHttp

都说人与人的界别在8钟头之外,但实际上使用好心碎时间,相当于做事之余的一部分休息时间。在8小时以内,人和人就可见显得出宏伟的异样。

[索引页]
[源码下载]

动用碎片化时间展开学习充电的最好工具,自然就是手机了。试想,当别人都在用手机聊微天的时候,而你早已起首默默拿早先机初步了碎片化学习,成为更不错的祥和。

三思而行Silverlight(53) – 4.0通讯之对WCF NetTcpBinding的支撑,
在Socket通讯中通过HTTP检索策略文件, HTTP请求中的ClientHttp和BrowserHttp

接下去。笔者就推荐七款本人日常使用的零碎化学习app。

作者:webabcd

NO.1简书

介绍
Silverlight 4.0 通信方面的增高:

KEYWORD:文学、阅读

  • NetTcpBinding – 通过  NetTcpBinding 与 WCF 服务拓展通讯
  • 帮助在 Socket 通讯中经过 HTTP 的艺术检索策略文件 
  • HTTP 请求中的 ClientHttp 方式和 BrowserHttp 格局的运用

一款版面设计万分不难、操作便利的阅读写作软件,每一日打开始页,就会自动推荐相应的篇目,不用操心要看如何内容。小说更新速度快,紧随热点,实用性强。每一种人打开网站所见到的情节都以不同,性格化私人定制。

在线DEMO
http://www.cnblogs.com/webabcd/archive/2010/08/09/1795417.html

在那里你非但可以观察不少本人喜好的稿子,也足以友善攥写小说。绝对于少数高门槛的开卷网站,它赋予各种人私行发挥的权利。上传作品之后可以点击“首页投稿”,只要您的情节丰硕特出,就能出现在首页,不论资排辈。据作者所知,许多书籍编辑都藏匿在那个网站,看了首页的篇章常常能获取编辑的尊重,而且简书自身也提供部分出版帮衬。

示例
① 、演示如何通过 NetTcpBinding 与 WCF 进行双向通信
服务端:
IDuplex.cs

那边的阅读更是一种“泛阅读”的眼光,不仅有攻略性实用性的稿子,也有故事性的心理类的小说,更有批判性的著述和影单书单推荐,“一站式”地满意全数的读书要求。

葡京在线开户 1葡京在线开户 2代码

一姐小提议:刚开头运用时,可以点开”早报””热门”看热门内容。不妨多用内置搜索引擎搜索自个儿喜爱的故事情节,便于以往推荐。

/*
 * 双向通讯的 Contract
 */

葡京在线开户 3

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

NO.2 多邻国(Duolingo)

using System.ServiceModel;

KEYWO奥迪Q5D:语言,小语种,边玩边学

namespace SocketServer
{
    [ServiceContract(CallbackContract = typeof(IDuplexCallback))]
    public interface IDuplex
    {
        [OperationContract(IsOneWay = true)]
        void HelloDuplex(string msg);
    }

一款用了还想用,根本停不下来的外语学习神器。小编平时用它来学小语种。

    public interface IDuplexCallback
    {
        [OperationContract(IsOneWay = true)]
        void HelloDuplexCallback(string msg);
    }
}

说是课程,不如说是一款小游戏,界面赏心悦目。以实用对话和句型为主,天天制订三个读书时间,可以是4分钟,10分钟,1伍分钟和20秒钟,若没有准时执行,还会有很讨人喜欢的邮箱提醒。

葡京在线开户,Duplex.cs

玩耍通关格局,如果然则关,无法解锁下一节课程。课程十分长,趣味性很强,适合休息时间使用。之前作者重点是用它上过葡萄牙共和国(República Portuguesa)语课程,好玩到上瘾。

葡京在线开户 4葡京在线开户 5代码

完全免费学习罗马尼亚(Romania)语,没有广告或潜伏消费。使用它上学34钟头所落成的言语水平也等于二个学期的学院语言课程,纵然说听上去有个别夸张,但它的实用性和教科书相比较,提高了格外多。

/*
 * 实现 IDuplex 契约
 */

一姐小提议:不引进用汉语学习拉脱维亚语课程,因为课程略微简单了有的。建议在法语形式下抉择其余的小语种。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

葡京在线开户 6

using System.ServiceModel;

NO.3 佳学

namespace SocketServer
{
    public class Duplex : IDuplex
    {
        private IDuplexCallback _callback;

KEYWOQashqaiD:在线教育,生活技巧

        // 服务端方法,其用来被客户端调用
        public void HelloDuplex(string msg)
        {
            Program.Form1.ShowMessage(msg);

三个接地气的在线教育平台,专注为用户提供活着技能教程,涵盖了家居生活、健身健康、时装美容、音乐素描等领域。

            if (_callback == null)
            {
                // 实例化回调接口
                _callback = OperationContext.Current.GetCallbackChannel<IDuplexCallback>();

自个儿一般都是用它上学一些家具生活和拍照技术。它最要紧的长处在于课程都经过了运动优化,视频可以在分化尺寸的无绳电话机上清晰播放,在数据网络的情景下也能十三分流利。

                // 每一秒调用五遍回调接口(即调用客户端的形式)
                System.Timers.Timer timer = new System.Timers.Timer();
                timer.Interval = 3000d;
                timer.Elapsed += delegate { _callback.HelloDuplexCallback(“服务端发给客户端的音信:” + DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”)); };
                timer.Start();
            }
        }
    }
}

并且课程平均视频长度不当先肆分钟,能够在大巴、公交或进食等碎片化时间内,至少完毕三遍完整的就学。在并未wifi的时候本身就一向用流量来读书,也未必太过分浪费。

App.config

葡京在线开户 7

葡京在线开户 8葡京在线开户 9代码

NO.4 葱课

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
    <system.serviceModel>
        <services>
            <!–
                元数据地址:http://localhost:12345/SocketServer/Duplex/mex
                TCP 地址:net.tcp://localhost:4502/SocketServer/Duplex
                TCP 端口限制在 4502 – 4534 之间
            –>
            <service name=”SocketServer.Duplex”>
                <endpoint address=”SocketServer/Duplex” binding=”customBinding” contract=”SocketServer.IDuplex” />
                <endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange” />
                <host>
                    <baseAddresses>
                        <add baseAddress=”http://localhost:12345/SocketServer/Duplex” />
                        <add baseAddress=”net.tcp://localhost:4502/” />
                    </baseAddresses>
                </host>
            </service>
        </services>
        
        <!–
            Silverlight 4.0 对 NetTcpBinding 的支撑是经过自定义绑定的法门来落实的。服务端和客户端都亟待采用自定义绑定
        –>
        <bindings>
            <customBinding>
                <binding>
                    <binaryMessageEncoding></binaryMessageEncoding>
                    <tcpTransport maxReceivedMessageSize=”2147483647″ maxBufferSize=”2147483647″ />
                </binding>
            </customBinding>
        </bindings>
        
        <behaviors>
            <serviceBehaviors>
                <behavior>
                    <serviceMetadata httpGetEnabled=”true” />
                    <serviceDebug includeExceptionDetailInFaults=”true”/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
</configuration>

KEYWORD:课程,自助,互动

Form1.cs

葱课是天下首创AA课格局,在我看来,就是一种依据必要、众筹课程的格局。你能够提出需求,聚集有同样必要的人,由民办助教对接必要,针对一定必要而开盘。

葡京在线开户 10葡京在线开户 11代码

让学员加入到课程创设中来,由学生决定上课的始末,进步听课、讲课的频率和职能。

// 运行 WCF 服务,用于演示 Silverlight 4.0 与 WCF 的互动(基于 NetTcpBinding 绑定)
private void LaunchNetTcpBinding()
{
    ServiceHost host = new ServiceHost(typeof(SocketServer.Duplex));
    host.Open();

课程的互动性比较好,以知识点为单位摄像,襄助以回应、笔记、作业等效果,可以与导师互动互换。很多本身本身消除不了的标题,作者就会从葱课上指出必要。

    ShowMessage(“演示 NetTcpBinding 的 WCF 服务已运维”);
}

症结是当今课程的提供还不够多。可是正因为此,价位都相比便宜,有一对可怜管用的课,只要众筹几十块钱就足以开拍。

客户端(须要引用服务的元数据):
NetTcpBinding.xaml

葡京在线开户 12

葡京在线开户 13葡京在线开户 14代码

NO.5 扇贝新闻

<navigation:Page x:Class=”Silverlight40.Communication.NetTcpBinding” 
           xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
           xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
           xmlns:d=”http://schemas.microsoft.com/expression/blend/2008
           xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006
           xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”
           Title=”NetTcpBinding Page”>
    <Grid x:Name=”LayoutRoot”>
        <StackPanel HorizontalAlignment=”Left”>

KEYWORD:英语,新闻

            <Button Name=”btnSend” Content=”发送音信到服务端” Click=”btnSend_Click” />
            
            <TextBlock Name=”lblMsg” />
            
        </StackPanel>
    </Grid>
</navigation:Page>

一款爱沙尼亚语小白也能看懂韩文音信软件。这款软件既可以升级立陶宛共和国(Republic of Lithuania)语水平,又有啥不可资助我们询问世界。

NetTcpBinding.xaml.cs

小说包蕴经济,科学技术,自然科学,体育,娱乐等大旨,但它的尤其之处在于:不一致于很七只是把新闻文章推送给您的产品。对于每篇小说,都会高亮各类阶段(例如四六级,雅思,托福等)所必要的词汇,支持您放在心上有用的词。

葡京在线开户 15葡京在线开户 16代码

信息中冒出的有着的生词,即点即查。每篇小说中的生词都足以即时添加到本身的就学陈设中,之后举办数拾三次复习。还足以记下您天天的读书进度,包含形成的小说数,被激活的单词数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

在听课或上班的空隙,利用3秒钟时间,既读了消息,又学了生词,作育了语感。

using System.ServiceModel;
using System.Net.Sockets;
using System.ServiceModel.Channels;

葡京在线开户 17

namespace Silverlight40.Communication
{
    public partial class NetTcpBinding : Page, DuplexServiceReference.IDuplexCallback
    {
        private DuplexServiceReference.DuplexClient _client;

NO.6 分答

        public NetTcpBinding()
        {
            InitializeComponent();
        }

KEYWORD:提问,大咖,问答

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
           
        }

在那些平台上您能够向擅长某些圈子的著有名的人员举行咨询。价格由答复者定,可以付钱后对回答者进行≤50字的文字提问,最终,答主通过≤60秒的口音来解惑难题。

        private void btnSend_Click(object sender, RoutedEventArgs e)
        {
            // 客户端与服务端之间一旦没有信道的话,则发出那一个信道
            if (_client == null)
            {
                var ctx = new InstanceContext(this);
                
                // 通过配备文件的办法建立信道
                _client = new DuplexServiceReference.DuplexClient(ctx);

本人正要已经有人问到了你想问的题材,你也得以点击“偷听”。即使你的难题被人偷听,你还是能博得一定的进项。

                // 通过编制代码的办法建立信道
                /*
                EndpointAddress ea = new EndpointAddress(“net.tcp://localhost:4502/SocketServer/Duplex”);
                BindingElement be = new TcpTransportBindingElement();
                CustomBinding cb = new CustomBinding(be);
                _client = new DuplexServiceReference.DuplexClient(ctx, cb, ea);
                */
            }

汪峰、章子怡、Papi酱、佟大为(英文名:tóng dà wéi) 、罗振宇 、蒋方舟、张泉灵等等大咖都在该平台上。显而易见,60秒的小时虽短,但部分时候,圣人一言,抵过千句。苦恼你久久的难点,说不定资深人员只用一两句话就能给予发聋振聩的启示。

            // 调用服务端的措施
            _client.HelloDuplexAsync(“客户端发给服务端的音讯:” + DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”));
            // _client.HelloDuplexCompleted – 在此 Handler 中拿走服务端方法的再次回到值,因为本例是 IsOneWay 情势,所以没有再次来到值
        }

葡京在线开户 18

        // 客户端方法,其用于被服务端调用
        public void HelloDuplexCallback(string msg)
        {
            lblMsg.Text += msg + “\n”;
        }
    }
}

NO.7 在行

ServiceReferences.ClientConfig

KEYWORD:一对一,约见,行家

葡京在线开户 19葡京在线开户 20代码

微博在二零一六年7月1四日出产成品。通过“在行”,能够约见不同世界的著有名的人员,与他们举办一对一会面约谈

<configuration>
    <system.serviceModel>
        <!–
            使用 NetTcpBinding 绑定必要先引用 System.ServiceModel.NetTcp.dll 程序集
        –>
        <client>
            <endpoint address=”net.tcp://localhost:4502/SocketServer/Duplex” binding=”customBinding” contract=”DuplexServiceReference.IDuplex”
                      bindingConfiguration=”netTcpBinding” />
        </client>

“在行”上一把手的定价由内行自定,价格从200-500/时辰不等,行家的天分、审核,以及成为行家的行为规范,都有了一套完整的流程,甚至由哪个人买单咖啡的标题,都做了鲜明。笔者一度用它往往约谈,整个流程万分流利,甚至连私信往来会有即时短信指示。

        <!–
            Silverlight 4.0 对 NetTcpBinding 的支撑是通过自定义绑定的艺术来落实的。服务端和客户端都亟需运用自定义绑定
        –>
        <bindings>
            <customBinding>
                <binding name=”netTcpBinding”>
                    <binaryMessageEncoding />
                    <tcpTransport maxReceivedMessageSize=”2147483647″ maxBufferSize=”2147483647″ />
                </binding>
            </customBinding>
        </bindings>
    </system.serviceModel>
</configuration>

面谈固然主要,但更为紧要的是一对一的款型。可以把您遇见的最困难的题目,向对方进行询问,直接获得1个缓解的章程。

二 、通过 HTTP 的情势检索 Socket 通讯的安全策略
SocketClientRetrievePolicyFileViaHttp.xaml

笔者会利用上午茶的日子和一把手们约谈,利用零散的光阴,虽说是放松闲谈,但更有质量。

葡京在线开户 21葡京在线开户 22代码

一姐小提议:在会合从前,小编一般会打点好想要问的题材,给对方提供思维的时刻,对谈的拓展也更层次分明性

<navigation:Page x:Class=”Silverlight40.Communication.SocketClientRetrievePolicyFileViaHttp” 
           xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
           xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
           xmlns:d=”http://schemas.microsoft.com/expression/blend/2008
           xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006
           xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”
           Title=”SocketCommunicationRetrievePolicyFileViaHttp Page”>
    <Grid x:Name=”LayoutRoot”>

葡京在线开户 23

        <TextBlock>
            <Run>之前的 Socket 通讯,在屡次三番以前先要以 943 端口的 TCP 方式在服务端检索策略文件</Run>
            <LineBreak />
            <Run>Silverlight 4.0 中的 Socket 通讯能够透过 80 端口的 HTTP 情势检索策略文件,获取到的政策文件效用于此 HTTP 地址所分析出的 IP</Run>
            <LineBreak />
            <Run>System.Net.Sockets.SocketAsync伊夫ntArgs.SocketClientAccessPolicyProtocol – 钦定 Socket 通信检索策略文件的方法 [System.Net.Sockets.SocketClientAccessPolicyProtocol 枚举]</Run>
            <LineBreak />
            <Run>只怕的值有:System.Net.Sockets.SocketClientAccessPolicyProtocol.Http 和 System.Net.Sockets.SocketClientAccessPolicyProtocol.Tcp</Run>
        </TextBlock>
        
    </Grid>
</navigation:Page>

NO.8 Coursera

叁 、两种 HTTP 请求情势,即 ClientHttp 和 BrowserHttp 的界别
服务端:
HttpResult.aspx.cs

KEYWOSportageD:在线教育,丰裕,人文和方法

葡京在线开户 24葡京在线开户 25代码

这是斯坦福大学的两位助教共同创办的在线教育集团,意在同世界拔尖高校合营,在线提供免费的互联网公开课程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

境内的互联网也足以一向登记旁观,有旁听和购进课程的选用。不仅有看到视频课程,还要做小测验和课后作业,同时还是能与别的学员相互,相互切磋。学生应对难点时,视频会自动刹车,这么些那个家伙性化。

namespace Silverlight40.Web
{
    public partial class HttpResult : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 重返当前 HTTP 请求的 HTTP 方法及 Cookie
            Response.Write(string.Format(“HttpMethod: {0}, Cookie – name: {1}”, Request.HttpMethod, Request.Cookies[“name”].Value));
            Response.End();
        }
    }
}

跻身课程之后,会有详实的就学,必要根据安顿而行。安排课程极度丰硕,特别是格局和人文方面分外值得一看。需求相比较好的英文水准。

客户端:
ClientHttpAndBrowserHttp.xaml.cs

一姐小提议:Coursera的课程包蕴万象,其中笔者最推荐的是,经济学、历史、心绪学方面的学科。一些收费课程很不错,比如创意写作

葡京在线开户 26葡京在线开户 27代码

葡京在线开户 28

/*
 * BrowserHttp – 由浏览器构造 HTTP 请求。暗中同意值
 * ClientHttp – 由 Silverlight 客户端构造 HTTP 请求
 * 
 * 内定 HTTP 请求为 BrowserHttp 类型或 ClientHttp 类型的主意如下:
 *     WebRequest.RegisterPrefix(“http://”, WebRequestCreator.ClientHttp); – 按照前缀内定 HTTP 请求的不二法门
 *     (HttpWebRequest)WebRequestCreator.ClientHttp.Create(); – 为单个请求指定 HTTP 请求的办法
 * 
 * 本例演示借使经过 ClientHttp,来贯彻 PUT 方法的 HTTP 请求以及哪些手动构造 Cookie(那个在 BrowserHttp 形式下是无力回天完成的)
 * 详细的 BrowserHttp 和 ClientHttp 的分歧参看文档
 */

NO.9 搜狐公开课

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

KEYWORD:视频,公开,基础

using System.Net.Browser;
using System.IO;
using System.Threading;

和Coursera类似,也是全球名校摄像公开课

namespace Silverlight40.Communication
{
    public partial class ClientHttpAndBrowserHttp : Page
    {
        SynchronizationContext _syncContext;

推介它首要有多个原因,多少个是因为缓冲的快慢一般比Coursera快。第四个就是因为内部有一对的外国录像是配有粤语字幕的,方便在下班途中插上动铁耳机直接听。

        public ClientHttpAndBrowserHttp()
        {
            InitializeComponent();
        }

乐乎云课程中还有更加多中国专家学者的教程,那也比Coursera更中国化的地点。

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            _syncContext = SynchronizationContext.Current;

今日头条可能可汗高校在中原唯一合法授权合营的门户网站,可汗高校”是世界有名的免费在线课堂,推出更加多面向14-1九虚岁年龄层用户的底蕴学科。

            // 成立贰个 ClientHttp 格局的 HttpWebRequest 对象
            HttpWebRequest request = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(“http://localhost:9483/HttpResult.aspx“));

葡京在线开户 29

            // ClientHttp 可以采取其他 Http 方法(BrowserHttp 只好动用 GET 和 POST)
            request.Method = “PUT”;

            // ClientHttp 可以手工构造 Cookie(假如急需 Forms 验证或 NTLM 验证则只好通过 BroswerHttp 情势)
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(new Uri(“http://localhost:9483“), new Cookie(“name”, “webabcd”));

            request.BeginGetResponse(new AsyncCallback(ResponseCallback), request);

        }

        // 获取服务重返的结果
        private void ResponseCallback(IAsyncResult result)
        {
            HttpWebRequest request = result.AsyncState as HttpWebRequest;
            WebResponse response = request.EndGetResponse(result) as HttpWebResponse;

            if (response != null)
            {
                Stream responseStream = response.GetResponseStream();
                using (StreamReader sr = new StreamReader(responseStream))
                {
                    string s = sr.ReadToEnd();
                    Deployment.Current.Dispatcher.BeginInvoke(delegate { MessageBox.Show(s); });
                }
            }
        }
    }
}

OK
[源码下载]