网站如何做流量建设企业网站就等于开展网络营销吗

web/2025/10/9 11:45:51/文章来源:
网站如何做流量,建设企业网站就等于开展网络营销吗,企业官网网站建设报价,个人营业执照网上年检入口在前面两篇文章WCF进阶#xff1a;将消息正文Base64编码和WCF进阶:为每个操作附加身份信息中讲述了如何通过拦截消息的方式来记录或者修改消息#xff0c;这种方式在特定条件下可以改变消息编码格式#xff0c;但实现方式并不规范#xff0c;而且使用范围也有限制。 WCF缺省…  在前面两篇文章WCF进阶将消息正文Base64编码和WCF进阶:为每个操作附加身份信息中讲述了如何通过拦截消息的方式来记录或者修改消息这种方式在特定条件下可以改变消息编码格式但实现方式并不规范而且使用范围也有限制。 WCF缺省提供了三种编码器MessageEncoderTextMessageEncoderBinaryMessageEncoderMtomMessageEncoder。事实上也是基于XML可以有三种格式Text,Binary,MTOM而XmlDictionaryWriter也提供了三种创建Writer的方法CreateTextWriterCreateBinaryWriterCreateMtomWriter他们分别用于将XML以文本二进制MTOM保存。三种保存形式各有利弊Text便于理解更通用Binary体积小MTOM是优化之后的二进制适用于较大的二进制传输。但无论使用哪种最终在网络上传输的都是字节流或者叫字节数组。在Binding中处于最后一个的总是TransportBindingElement也就是说当要传递的数据到达TransportBindingElement之后其实已经是字节数组了。在TransportBindingElement之上可以有事务处理器会话处理器消息安全处理器编码器传输安全处理器等在编码器之前主要的处理对象是Message而之后主要的处理对象就是StreamByte[]从这点我们也就清楚了之前在学习安全体系的时候总是习惯将安全划分为消息级别的安全和传输级别安全两种了。我们这次要实现的其实是将已经经过编码器编码好的字节流压缩后传输而不是传统意义上的消息编码。这点也需要大家深层次的理解。   虽然我们实现的传输层面上的压缩编码但实现机理和自定义MessageEncoder是一样的MessageEncoder是所有编码器的基类它有几个非常重要的方法和属性 public abstract Message ReadMessage(ArraySegmentbyte buffer, BufferManager bufferManager, string contentType); public ArraySegmentbyte WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager); // Properties public abstract string ContentType { get; } public abstract string MediaType { get; } public abstract MessageVersion MessageVersion { get; } ReadMessage和WriteMessage是完成消息 -字节数组转换的这两个方法还有几个重载在实现自定义编码器的时候是最为重要的我们主要是通过重写它们来完成自定义转换。上面我们也说过了我们要实现的是传输层的压缩编码那么需要有一个缺省编码为此我们设计了名为CompressEncoder的自定义编码类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel.Channels; using System.IO;namespace RobinLib {public class CompressEncoder : MessageEncoder{CompressEncoderFactory factory;MessageEncoder innserEncoder;private CompressAlgorithm algorithm;public CompressEncoder(CompressEncoderFactory encoderFactory, CompressAlgorithm algorithm){factory encoderFactory;this.algorithm algorithm;innserEncoder factory.InnerMessageEncodingBindingElement.CreateMessageEncoderFactory().Encoder;}public override string ContentType{get { return innserEncoder.ContentType; }}public override string MediaType{get { return innserEncoder.MediaType; }}public override MessageVersion MessageVersion{get { return innserEncoder.MessageVersion; }}public override bool IsContentTypeSupported(string contentType){return innserEncoder.IsContentTypeSupported(contentType);}public override T GetPropertyT(){return innserEncoder.GetPropertyT();}public override Message ReadMessage(ArraySegmentbyte buffer, BufferManager bufferManager, string contentType){ArraySegmentbyte bytes new Compressor(algorithm).DeCompress(buffer);int totalLength bytes.Count;byte[] totalBytes bufferManager.TakeBuffer(totalLength);Array.Copy(bytes.Array, 0, totalBytes, 0, bytes.Count);ArraySegmentbyte byteArray new ArraySegmentbyte(totalBytes, 0, bytes.Count);bufferManager.ReturnBuffer(byteArray.Array); Message msg innserEncoder.ReadMessage(byteArray, bufferManager, contentType);return msg;}public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType){//读取消息的时候二进制流为加密的需要解压Stream ms new Compressor(algorithm).DeCompress(stream); Message msg innserEncoder.ReadMessage(ms, maxSizeOfHeaders, contentType);return msg;}public override ArraySegmentbyte WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset){ ArraySegmentbyte bytes innserEncoder.WriteMessage(message, maxMessageSize, bufferManager);ArraySegmentbyte buffer new Compressor(algorithm).Compress(bytes);int totalLength buffer.Count messageOffset;byte[] totalBytes bufferManager.TakeBuffer(totalLength);Array.Copy(buffer.Array, 0, totalBytes, messageOffset, buffer.Count);ArraySegmentbyte byteArray new ArraySegmentbyte(totalBytes, messageOffset, buffer.Count);Console.WriteLine(算法:algorithm,原来字节流大小:bytes.Count,压缩后字节流大小:byteArray.Count);return byteArray;}public override void WriteMessage(Message message, System.IO.Stream stream){System.IO.MemoryStream ms new System.IO.MemoryStream();innserEncoder.WriteMessage(message, ms);stream new Compressor(algorithm).Compress(ms);}} } 在这个类中需要知道上层编码器是什么我们用MessageEncoder innserEncoder来指定在WriteMessage时候将消息用内置编码器转换为字节数组然后用压缩算法压缩这个数组形成压缩后字节数组传递给到下一层而在读取Message的时候首先将收到的字节数组解压缩最后将解压缩后字节数组用内置编码器转换为Message对象。其中Compressor是一个功能类用于将字节数组压缩或者解压缩代码为 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.IO.Compression; namespace RobinLib {public class Compressor{private CompressAlgorithm algorithm;public Compressor(CompressAlgorithm algorithm){this.algorithm algorithm;}//压缩数组public ArraySegmentbyte Compress(ArraySegmentbyte data){MemoryStream ms new MemoryStream();if (algorithm CompressAlgorithm.GZip){Stream compressStream new GZipStream(ms, CompressionMode.Compress, true);compressStream.Write(data.Array, 0, data.Count);compressStream.Close();}else{Stream compressStream new DeflateStream(ms, CompressionMode.Compress, true);compressStream.Write(data.Array, 0, data.Count);compressStream.Close();}byte[] newByteArray new byte[ms.Length];ms.Seek(0, SeekOrigin.Begin);ms.Read(newByteArray, 0, newByteArray.Length);ArraySegmentbyte bytes new ArraySegmentbyte(newByteArray);return bytes;}//压缩流public Stream Compress(Stream stream){MemoryStream ms new MemoryStream();if (algorithm CompressAlgorithm.GZip){Stream compressStream new GZipStream(ms, CompressionMode.Compress, true);byte[] buffer new byte[stream.Length];stream.Read(buffer, 0, buffer.Length);compressStream.Write(buffer, 0, buffer.Length);compressStream.Close();}else{Stream compressStream new DeflateStream(ms, CompressionMode.Compress, true);byte[] buffer new byte[stream.Length];stream.Read(buffer, 0, buffer.Length);compressStream.Write(buffer, 0, buffer.Length);compressStream.Close();}return ms;}//解压缩数组public ArraySegmentbyte DeCompress(ArraySegmentbyte data){MemoryStream ms new MemoryStream();ms.Write(data.Array, 0, data.Count);ms.Seek(0, SeekOrigin.Begin);if (algorithm CompressAlgorithm.GZip){Stream compressStream new GZipStream(ms, CompressionMode.Decompress, false);byte[] newByteArray RetrieveBytesFromStream(compressStream, 1);compressStream.Close();return new ArraySegmentbyte(newByteArray);}else{Stream compressStream new DeflateStream(ms, CompressionMode.Decompress, false);byte[] newByteArray RetrieveBytesFromStream(compressStream, 1);compressStream.Close();return new ArraySegmentbyte(newByteArray);}}//解压缩数组public Stream DeCompress(Stream stream){stream.Seek(0, SeekOrigin.Begin);if (algorithm CompressAlgorithm.GZip){Stream compressStream new GZipStream(stream, CompressionMode.Decompress, false);byte[] newByteArray RetrieveBytesFromStream(compressStream, 1);compressStream.Close();return new MemoryStream(newByteArray);}else{Stream compressStream new DeflateStream(stream, CompressionMode.Decompress, false);byte[] newByteArray RetrieveBytesFromStream(compressStream, 1);compressStream.Close();return new MemoryStream(newByteArray);}}public static byte[] RetrieveBytesFromStream(Stream stream, int bytesblock){Listbyte lst new Listbyte();byte[] data new byte[1024];int totalCount 0;while (true){int bytesRead stream.Read(data, 0, data.Length);if (bytesRead 0){break;}byte[] buffers new byte[bytesRead];Array.Copy(data, buffers, bytesRead);lst.AddRange(buffers);totalCount bytesRead;}return lst.ToArray();}} } 到此其实我们的自定义编码器应该编写好了接下来如何使用它成为我们最为关心的事情。每一个MessageEncoder都对应一个MessageEncoderFactory在MessageEncodingBindingElement中能返回这个MessageEncoderFactory然后通过在自定义BindingElement创建监听通道BuildChannelListener和通道工厂BuildChannelFactory的时候将BindingElement添加到BindingContext这样就能最终消费我们上面实现的CompressEncoder。 CompressEncoderFactory的代码实现为 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel.Channels;namespace RobinLib {public class CompressEncoderFactory:MessageEncoderFactory{private MessageEncodingBindingElement innerMessageEncodingBindingElement;CompressEncoder messageEncoder;private CompressAlgorithm algorithm;public CompressEncoderFactory(MessageEncodingBindingElement innerMessageEncodingBindingElement, CompressAlgorithm algorithm){this.innerMessageEncodingBindingElement innerMessageEncodingBindingElement;this.algorithm algorithm;messageEncoder new CompressEncoder(this,algorithm);}public override MessageEncoder CreateSessionEncoder(){return base.CreateSessionEncoder();}public override MessageEncoder Encoder{get { return messageEncoder; }}public override MessageVersion MessageVersion{get { return innerMessageEncodingBindingElement.MessageVersion; }}public MessageEncodingBindingElement InnerMessageEncodingBindingElement{get{return innerMessageEncodingBindingElement;}}} } 自定义的MessageEncoderBindingElement代码为 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel.Channels; using System.ServiceModel; using System.Xml;namespace RobinLib {public sealed class CompressEncodingBindingElement : MessageEncodingBindingElement{ private XmlDictionaryReaderQuotas readerQuotas;private MessageEncodingBindingElement innerMessageEncodingBindingElement;private CompressAlgorithm algorithm;public MessageEncodingBindingElement InnerMessageEncodingBindingElement{get{return innerMessageEncodingBindingElement;}}public CompressAlgorithm CompressAlgorithm{get{return algorithm;}}public CompressEncodingBindingElement(MessageEncodingBindingElement innerMessageEncodingBindingElement, CompressAlgorithm algorithm){this.readerQuotas new XmlDictionaryReaderQuotas();this.algorithm algorithm;this.innerMessageEncodingBindingElement innerMessageEncodingBindingElement;}public override IChannelFactoryTChannel BuildChannelFactoryTChannel(BindingContext context){context.BindingParameters.Add(this);return context.BuildInnerChannelFactoryTChannel();}public override IChannelListenerTChannel BuildChannelListenerTChannel(BindingContext context){context.BindingParameters.Add(this);return context.BuildInnerChannelListenerTChannel();}public override bool CanBuildChannelFactoryTChannel(BindingContext context){context.BindingParameters.Add(this);return context.CanBuildInnerChannelFactoryTChannel();}public override bool CanBuildChannelListenerTChannel(BindingContext context){context.BindingParameters.Add(this);return context.CanBuildInnerChannelListenerTChannel();}public override MessageEncoderFactory CreateMessageEncoderFactory(){return new CompressEncoderFactory(innerMessageEncodingBindingElement,algorithm);}public override T GetPropertyT(BindingContext context) {if (typeof(T) typeof(XmlDictionaryReaderQuotas)){return this.readerQuotas as T;}return base.GetPropertyT(context);}public override MessageVersion MessageVersion{get{return innerMessageEncodingBindingElement.MessageVersion;}set{innerMessageEncodingBindingElement.MessageVersion value;}}public override BindingElement Clone(){return new CompressEncodingBindingElement(innerMessageEncodingBindingElement,algorithm);} } } 最终我们可以使用CustomeBinding创建宿主和客户端。 服务端 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using Robin_Wcf_CustomMessageEncoder_SvcLib; using System.ServiceModel.Channels; using RobinLib;namespace Robin_Wcf_CustomMessageEncoder_Host {class Program{static void Main(string[] args){//服务地址Uri baseAddress new Uri(http://127.0.0.1:8081/Robin_Wcf_Formatter);ServiceHost host new ServiceHost(typeof(Service1), new Uri[] { baseAddress });//服务绑定ICollectionBindingElement bindingElements new ListBindingElement();HttpTransportBindingElement httpBindingElement new HttpTransportBindingElement();CompressEncodingBindingElement textBindingElement new CompressEncodingBindingElement(new TextMessageEncodingBindingElement(),CompressAlgorithm.Deflate);bindingElements.Add(textBindingElement);bindingElements.Add(httpBindingElement);CustomBinding bind new CustomBinding(bindingElements); host.AddServiceEndpoint(typeof(IService1), bind, );if (host.Description.Behaviors.FindSystem.ServiceModel.Description.ServiceMetadataBehavior() null){System.ServiceModel.Description.ServiceMetadataBehavior svcMetaBehavior new System.ServiceModel.Description.ServiceMetadataBehavior();svcMetaBehavior.HttpGetEnabled true;svcMetaBehavior.HttpGetUrl new Uri(http://127.0.0.1:8001/Mex);host.Description.Behaviors.Add(svcMetaBehavior);}host.Opened new EventHandler(delegate(object obj, EventArgs e){Console.WriteLine(服务已经启动);}); host.Open();Console.Read();}} }   客户端 using System; using System.Collections.Generic; using System.Linq; using System.Text; using RobinLib; using System.ServiceModel.Channels; using Robin_Wcf_CustomMessageEncoder_ClientApp.ServiceReference1;namespace Robin_Wcf_CustomMessageEncoder_ClientApp {class Program{static void Main(string[] args){System.Threading.Thread.Sleep(5300);ICollectionBindingElement bindingElements new ListBindingElement();HttpTransportBindingElement httpBindingElement new HttpTransportBindingElement();CompressEncodingBindingElement textBindingElement new CompressEncodingBindingElement(new BinaryMessageEncodingBindingElement(), CompressAlgorithm.GZip);bindingElements.Add(textBindingElement);bindingElements.Add(httpBindingElement); CustomBinding bind new CustomBinding(bindingElements); ServiceReference1.IService1 svc new ServiceReference1.Service1Client(bind, new System.ServiceModel.EndpointAddress(http://127.0.0.1:8081/Robin_Wcf_Formatter));string pres svc.GetData(10);Console.WriteLine(pres);CompositeType ct svc.GetDataUsingDataContract(new CompositeType());System.IO.MemoryStream ms new System.IO.MemoryStream();for (int i 0; i 1000000; i){byte[] buffer BitConverter.GetBytes(i);ms.Write(buffer, 0, buffer.Length);}System.IO.Stream stream svc.GetStream(ms);Console.Read();}} } 我们可以更改CompressEncodingBindingElement textBindingElement new CompressEncodingBindingElement(new BinaryMessageEncodingBindingElement(), CompressAlgorithm.GZip);指定内置MessageEncoder和压缩算法。 最后附件一句不是所有的数组压缩后体积都变小的只有文本类型的压缩后效果比较明显。运行程序当内置TextMessageEncodingBindingElement的时候我们得到的效果为 此时说明压缩效果非常明显 而当内置BinaryMessageEncodingBindingElement的时候压缩效果不再突出甚至起到反作用。 如果有朋友需要使用压缩传输可以直接下载项目引用其中的RobinLib.dll然后使用自定义Binding。 项目文件/jillzhang/Robin_Wcf_CustomMessageEncoder.rar 下文我们将演示实现对称加密传输。转载于:https://www.cnblogs.com/jillzhang/archive/2010/04/13/1711079.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计网站怎样做色卡华为商城网站设计

操作环境: MATLAB 2022a 1、算法描述 黏菌优化算法(Slime Mould Algorithm, SMA)是一种新颖的启发式优化方法,其灵感来源于自然界中的真菌——黏菌。这种算法模拟了黏菌在寻找食物时的行为和网络形成策略。在本文中&#xff0c…

做直播网站用什么网上空间好dedecms网站建设合同

一个项目中用到的使用Volley上传头像文件的例子,供大家参考,具体内容如下/*** Created by wangshihui on 2015/11/30.* 上传文件* url:.....method:post参数:file接口给的参数:file 就是表单的key&#xff…

网站制作 沈阳厦门app制作

(1)类和接口的访问权限种类一样 ,有两中public,default,它们的不同在于是否能访问不同包中的类或接口default:只能在本包中访问public:任何地方都可以访问,当然不同的包中,首先要import,导入类。(2)类中成员或方法的访…

seo站长工具 论坛贵州企业网站建设设计

一、Pycharm端的设置操作 通过Ctrl+Alt+S快捷组合键的方式,打开设置,导航到版本控制一栏中的Git,在Git可执行文件路径中,输入Git.exe。 按照下图顺序,依次点击,完成测试。输出如图标④的结果,即可完成测试。 输出下图结果,配置Git成功,如本地未安装Git,需自行安装。

怎么查看网站的ftp网站开发流程莆田

阅读引言: 本文将会从环境sqlite3的安装、数据库的基础知识、sqlite3命令、以及sqlite的sql语句最后还有一个完整的代码实例, 相信仔细学习完这篇内容之后大家一定能有所收获。 目录 一、数据库的基础知识 1.数据库的基本概念 2.常用数据库 3.嵌入式…

网站开发语免费营销型网站建设

一、Linux和Windows的一些区别 1、Linux严格区分大小写——【Windows创建文件夹时不区分大小写】 2、Linux中所有内容都以文件形式存储,包括硬件 3、Linux不靠拓展名区分文件类型,而是可以通过读取文件开头的一些字节来区分。 但是在实际使用中一般要…

门户网站规划方案wordpress调整宽度

一、date 如何使用、如何获取年月日时分秒、时间戳、如何获取指定日期的时间戳或周几 1..Date 对象用于处理日期和时间。 创建 Date 对象的语法: var myDatenew Date() 获取年月日时分秒: // 格式化日对象 const getNowDate () > {let date new …

企业网站整合许昌专业做网站公司

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一、项目概述…

网站建设还有需求么什么是企业年金

目录 Vue 2 中的 Prop 详解基本用法项目示例 动态Props项目示例 Prop 验证项目示例 单向数据流项目示例 Vue 2 自定义事件详解自定义事件的基本使用项目示例 传递数据项目示例 命名自定义事件项目示例 👍 点赞,你的认可是我创作的动力! ⭐️…

网站建设 学习什么wordpress需要备案号

AI面试官:LINQ和Lambda表达式(三) 当面试官面对C#中关于LINQ和Lambda表达式的面试题时,通常会涉及这两个主题的基本概念、用法、实际应用以及与其他相关技术的对比等。以下是一些可能的面试题目,附带简要解答和相关案…

自己买服务器建设网站张家口职教中心计算机网站建设

找网上的资料看了下增删改查,等日后补上。已经实现了数据的插入,现在想通过 _id属性来查找数据。一开始看到 类似 55b321df715cc162076eb466 这么一长串的内容觉得是string类型。但是发现并不能搜索到结果,在网上搜到了解决方案:S…

建设银行咸阳缴费网站商标免费生成器

设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 针对表达各类词语的一组正规表达式,设计一个确定化的最简的有限自动机,对输入的符号串进行单词划分及词类识别。 要求词法分析器的输入是字符串,输出是源程序中各…

烟台网站建设企汇互联见效付款个人网站模板设计步骤

分类算法-决策树、随机森林1.决策树1.1 认识决策树1.2 信息论基础-银行贷款分析1.3 决策树的生成1.4 决策树的划分依据之一-信息增益1.5 sklearn决策树API1.6 泰坦尼克号乘客生存分类2. 集成学习方法-随机森林1.决策树 1.1 认识决策树 决策树思想的来源非常朴素,程…

商城网站建设怎么收费做封面图的网站

开发时候,遇到了系统找不到配置文件的情况,定位到文件路径的问题之后,选择将当前路径打印到控制台。 File directory new File("");//设定为当前文件夹 try{ System.out.println(directory.getCanonicalPath());//获取标准的路径 …

国外网站用什么dns佟年帮韩商言做网站是第几集

就像魔术棒一样,中间操作将一个Stream转换为另一个Stream。 这些操作可以无穷无尽的方式组合在一起,以可读有效的方式执行从简单到高度复杂的任务。 本文是五分之二,其中还有一个GitHub存储库,其中包含每个单元的说明和练习。 第…

做个人网站用什么程序做3d模型的叫什么牛的网站

应用程序的生命周期 窗体的生命周期: window是一个控件 window中的事件:从window创建到关闭我们称之为窗体的生命周期 每一个窗体的生命周期都是独立的,窗体与窗体之间的生命周期都是独立的 最早加载的事件 控件的事件触发 基本所有的控件都继承与Framework 在WPF中基本所有的…

学会网站建设三方协议手机网站报名链接怎么做

选项说明q, ESC退出播放f全屏切换p, SPC暂停m静音切换9, 09减少音量,0增加音量a循环切换音频流v循环切换视频流t循环切换字幕流c循环切换节目w循环切换过滤器或显示模式s逐帧播放left/right向后/向前拖动10秒down/up向后/向前拖动1分钟鼠标右键单击拖动与显示宽度对…

河南移动官网网站建设高平企业网站

目录 模型初始化信息: 模型实现: 多变量损失函数: 多变量梯度下降实现: 多变量梯度实现: 多变量梯度下降实现: 之前部分实现的梯度下降线性预测模型中的training example只有一个特征属性&#xff1a…

中国网站设计模板下载马云做黄页网站时候

目录 快速排序--递归 归并排序--递归 插入排序 冒泡排序 选择排序 215 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 347. 前 K 个高频元素 快速排序--递归 void quick_sort(vector<int> &nums, int l, int r) {if (l 1 > r) …

免费素材网站设计现今网站开发的主流框架

在很久很久以前&#xff0c;手机是有红外功能的&#xff0c;后来随着蓝牙技术的成熟&#xff0c;红外逐渐被蓝牙取代&#xff0c;不再是标配了。红外本身还是有些优点&#xff0c;比如操作简便&#xff0c;成本低。要想在手机上添加红外功能&#xff0c;就要外接一个转换模块。…