第二十四章 从 Silverlight 控件调用 WCF - Part II

本文详细介绍了如何在Silverlight应用中通过WCF服务实现数据交互,包括添加新方法、设置服务引用、调用WCF服务及展示返回结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

WCF 服务类添加一个新方法,使用 [OperationContract] 特性来修饰。如下添加一个方法:

[OperationContract ]

public string GetName() {

    return "John" ;

}

正如你看见的,这是一个简单的方法返回一个硬编码的名字。

打开解决方案管理器。右键“ Service1.svc ”文件,并选择“设为起始页”。

Ctrl + F5 运行应用程序(或使用菜单“调试” –> “开始执行不调试”)。

在浏览器打开 Service1 元数据。忽略页面内容,从浏览器复制 URL URL 类似于:

http://localhost:1873/Service1.svc

这个端口号可能会不同,但没有关系。

回到 Visual Studio 的解决方案管理器。右键 Silverlight 项目(不是 Web 项目)并选择“添加 Service引用”。

在地址域中,指定从浏览器中复制的URL,点击“前往”。

在底部左边,修改命名空间为“ MySampleService ”。

将看见如下屏幕:


点击“确定”添加服务引用。

现在可以从 Silverlight 客户端调用 WCF 访问。

为了做测试,做下面几步:

1. 打开 Page1.xaml 文件并添加一个文本框用于显示从WCF方法返回的字符串

2. UserControl 中添加“Loaded”事件。

Page1.xaml 中的完整代码如下:

< UserControl x : Class ="Silverlight_With_WCF.Page"

     xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

     xmlns : x ="http://schemas.microsoft.com/winfx/2006/xaml"

     Width ="400" Height ="300"

     Loaded ="UserControl_Loaded">

    <Gridx : Name ="LayoutRoot" Background ="White">

        <TextBlockx : Name ="textblock1" Width ="200" Height ="30"></ TextBlock >

    </Grid>

</ UserControl >

现在在后置代码中( Page1.xaml.cs )中,按如下方式添加 WCF 服务调用:

private void UserControl_Loaded(object sender,RoutedEventArgs e) {

    MySampleService.Service1Client client =

         new MySampleService.Service1Client ();

    client.GetNameCompleted +=

        new EventHandler <Silverlight_With_WCF.MySampleService.

              GetNameCompletedEventArgs >(client_GetNameCompleted);

    client.GetNameAsync();

}

void client_GetNameCompleted(object sender,

         MySampleService.GetNameCompletedEventArgs e){

    textblock1.Text = (string )e.Result;

}

在解决方案管理器中打开 Web 项目并设置 Silverlight测试页为起始页。运行项目。可以看见从Silverlight客户端调用 WCF 服务,并将结果显示在浏览器。(在这个例子中,从调用 WCF 服务返回的结果是“ John”名字并将名字显示在屏幕上)。

 

Silverlight入门知识学习目录

 

在当今计算机视觉领域,深度学习模型在图像分割任务中发挥着关键作用,其中 UNet 是一种在医学影像分析、遥感图像处理等领域广泛应用的经典架构。然而,面对复杂结构和多尺度特征的图像,UNet 的性能存在局限性。因此,Nested UNet(也称 UNet++)应运而生,它通过改进 UNet 的结构,增强了特征融合能力,提升了复杂图像的分割效果。 UNet 是 Ronneberger 等人在 2015 年提出的一种卷积神经网络,主要用于生物医学图像分割。它采用对称的编码器 - 解码器结构,编码器负责提取图像特征,解码器则将特征映射回原始空间,生成像素级预测结果。其跳跃连接设计能够有效传递低层次的细节信息,从而提高分割精度。 尽管 UNet 在许多场景中表现出色,但在处理复杂结构和多尺度特征的图像时,性能会有所下降。Nested UNet 通过引入更深层次的特征融合来解决这一问题。它在不同尺度上建立了密集的连接路径,增强了特征的传递与融合。这种“嵌套”结构不仅保持了较高分辨率,还增加了特征学习的深度,使模型能够更好地捕获不同层次的特征,从而显著提升了复杂结构的分割效果。 模型结构:在 PyTorch 中,可以使用 nn.Module 构建 Nested UNet 的网络结构。编码器部分包含多个卷积层和池化层,并通过跳跃连接传递信息;解码器部分则包含上采样层和卷积层,并与编码器的跳跃连接融合。每个阶段的连接路径需要精心设计,以确保不同尺度信息的有效融合。 编码器 - 解码器连接:Nested UNet 的核心在于多层次的连接。通过在解码器中引入“skip connection blocks”,将编码器的输出与解码器的输入相结合,形成一个密集的连接网络,从而实现特征的深度融合。 训练与优化:训练 Nested UNet 时,需要选择合适的损失函数和优化器。对于图像分割任务,常用的损失
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值