WCF简单实例[改进版]

一 实例结构

1)solution如下:

 

2)dependency如下:

 

 

*  Contracts 其实就是interface,用来实现service和client的松耦合;

*  Services 是真正的对contracts实现;

*  Hosting 用来宿主 services,是其能够被client访问;

*  client 用来访问wcf service;

 

二 contracts

ICalculator.cs文件如下:

 using System.ServiceModel;

 
namespace Artech.WcfServices.Contracts
 {
     [ServiceContract(Name
="CalculatorService", Namespace="http://www.artech.com/")]
     
public interface ICalculator
    {

       [OperationContract]
       
double Add(double x, double y);

        [OperationContract]
        
double Subtract(double x, double y); 

        [OperationContract]
        
double Multiply(double x, double y); 

        [OperationContract]
        
double Divide(double x, double y);      
    } 
}


三 services

CalculatorService.cs文件如下:

using Artech.WcfServices.Contracts;

namespace Artech.WcfServices.Services
{

    
public class CalculatorService : ICalculator
    {
        
public double Add(double x, double y)
        {
            
return x + y;
        }
        
public double Subtract(double x, double y)
        {
            
return x - y;
        }
        
public double Multiply(double x, double y)
        {
            
return x * y;
        }
        
public double Divide(double x, double y)
        {
            
return x / y;
        }
    }
}

 

四 hosting

app.config文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
<system.serviceModel>
    
<behaviors>
      
<serviceBehaviors>
        
<behavior name="metadataBehavior">
          
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8888/calculatorservice/metadata" />
        
</behavior>
      
</serviceBehaviors>
    
</behaviors>
    
<services>
      
<service behaviorConfiguration="metadataBehavior" name="Artech.WcfServices.Services.CalculatorService">
        
<endpoint address="http://localhost:8888/calculatorservice" binding="wsHttpBinding"  contract="Artech.WcfServices.Contracts.ICalculator" />
      
</service>
    
</services>
  
</system.serviceModel>
</configuration>

Hosting.cs文件如下:

using System;
using System.ServiceModel;

using Artech.WcfServices.Contracts;
using Artech.WcfServices.Services;

namespace Artech.WcfServices.Hosting
{
   
class Program
   {

       
static void Main(string[] args)
       {
           
using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
           {                
               host.Opened 
+= delegate
                {
                    Console.WriteLine(
"CalculaorService已经启动,按任意键终止服务!");
                };

                host.Open();
                Console.Read();
            }
        }
    }
}

 

五 client

app.config文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://localhost:8888/calculatorservice" binding="wsHttpBinding"
contract
="Artech.WcfServices.Contracts.ICalculator" name="calculatorservice" />
</client>
</system.serviceModel>
</configuration>

client.cs文件如下:

using System;
using System.ServiceModel;

using Artech.WcfServices.Contracts;

namespace Artech.WcfServices.Client
{
   
class Program
   {
       
static void Main(string[] args)
       {
           
using (ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>("calculatorservice"))
            {
                ICalculator proxy 
= channelFactory.CreateChannel();
                
using (proxy as IDisposable)
                {
                    Console.WriteLine(
"x + y = {2} when x = {0} and y = {1}"12, proxy.Add(12));
                    Console.WriteLine(
"x - y = {2} when x = {0} and y = {1}"12, proxy.Subtract(12));
                    Console.WriteLine(
"x * y = {2} when x = {0} and y = {1}"12, proxy.Multiply(12));
                    Console.WriteLine(
"x / y = {2} when x = {0} and y = {1}"12, proxy.Divide(12));
                }
            }
           Console.ReadLine();
        }
    }
}

 

参考:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值