zoukankan      html  css  js  c++  java
  • 【WCF--初入江湖】13 实战

    13 实战

    在线升级

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.ServiceModel;
    using System.IO;
    using System.Reflection;
    namespace load
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            //进入
            private void button1_Click(object sender, EventArgs e)
            {
                //下载客户端程序
                NetTcpBinding bind = new NetTcpBinding();
                bind.MaxReceivedMessageSize = 9999999;
                bind.ReaderQuotas.MaxArrayLength = 99999999;
                bind.ReaderQuotas.MaxStringContentLength = 99999999;
    
                EndpointAddress address = new EndpointAddress("net.tcp://localhost:5400/sell");
                ChannelFactory<Contracts.ISellOpration> factory = new ChannelFactory<Contracts.ISellOpration>(bind, address);
                byte[] bt = factory.CreateChannel().download();
    
                //把bt转成dll文件
                FileStream stream = new FileStream(Application.StartupPath + "/winClient.dll", FileMode.Create);
                stream.Write(bt, 0, bt.Length);
                stream.Close();
                factory.Close();
    
                //启动客户端程序(dll)
                Assembly ass = Assembly.LoadFile(Application.StartupPath + "/winClient.dll");
                Type tp = ass.GetType("winClient.frmMain");
                Form frm = (Form)Activator.CreateInstance(tp);
                frm.Show();
            }
        }
    }

    ISellOpration.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    namespace Contracts
    {
        
        [ServiceContract]
        public interface ISellOpration
        {
            //商品进货
            [OperationContract]
            int addstockBill(Bill bill);
    
            //商品销售
            [OperationContract]
            int addSellBill(Bill bill);
    
            //下载新版本的客户应用程序
            [OperationContract]
            byte[] download();
        }
    }

    ServiceOpration.cs

        public class ServiceOpration:Contracts.ISellOpration
        {
    ..............
            
                    //下载客户端
            public byte[] download()
            {
                FileStream stream = new FileStream(Application.StartupPath+"/winClient.dll", FileMode.Open, FileAccess.Read);
                byte[] bt = new byte[stream.Length];
                stream.Read(bt, 0, bt.Length);
                stream.Close();
                return bt;
            }    

      winClient.dll是把WinForm项目的参数类型从“Window应用程序”改成“类库”。

        其中

    public partial class frmMain : Form
  • 相关阅读:
    安装mysql警告 warning: mysql-community-server-5.7.19-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    RPM方式安装MySQL5.6
    CentOS7安装MySQL冲突和问题解决小结
    Linux(64) 下 Tomcat + java 环境搭建
    自写Jquery插件 Combobox
    自写Jquery插件 Datagrid
    自写Jquery插件 Menu
    scrapy 中间件
    提高scrapy爬取效率配置
    scrapy基于请求传参实现深度爬取
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3825368.html
Copyright © 2011-2022 走看看