webabcd - 专注于asp.net
ASP.NET
从现在开始 一切都不晚
posts - 150, comments - 4182, trackbacks - 344, articles - 0
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
化零为整WCF(1) - 不能免俗,我也从Hello开始
Posted on 2007-12-05 12:22
webabcd
阅读(4640)
评论(33)
编辑
收藏
所属分类:
WCF
[索引页]
[源码下载]
化零为整WCF(1) - 不能免俗,我也从Hello开始
作者:
webabcd
介绍
WCF(Windows Communication Foundation) - 废话不多说,俗也不能免,我也从Hello开始
示例
1、服务
IHello.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.ServiceModel;
namespace
WCF.ServiceLib.Sample
{
/**/
///
<summary>
///
IHello接口
///
</summary>
[ServiceContract]
public
interface
IHello
{
/**/
///
<summary>
///
打招呼方法
///
</summary>
///
<param name="name">
人名
</param>
///
<returns></returns>
[OperationContract]
string
SayHello(
string
name);
}
}
Hello.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.ServiceModel;
namespace
WCF.ServiceLib.Sample
{
/**/
///
<summary>
///
Hello类
///
</summary>
public
class
Hello : IHello
{
/**/
///
<summary>
///
打招呼方法
///
</summary>
///
<param name="name">
人名
</param>
///
<returns></returns>
public
string
SayHello(
string
name)
{
return
"
Hello:
"
+
name;
}
}
}
2、宿主
Hello.svc
<%
@ ServiceHost Language
=
"
C#
"
Debug
=
"
true
"
Service
=
"
WCF.ServiceLib.Sample.Hello
"
%>
Web.config
<?
xml version="1.0"
?>
<
configuration
>
<
system
.serviceModel
>
<
behaviors
>
<
serviceBehaviors
>
<
behavior
name
="SampleBehavior"
>
<!--
httpGetEnabled - 使用get方式提供服务
-->
<
serviceMetadata
httpGetEnabled
="true"
/>
</
behavior
>
</
serviceBehaviors
>
</
behaviors
>
<
services
>
<!--
name - 提供服务的类名
-->
<!--
behaviorConfiguration - 指定相关的行为配置
-->
<
service
name
="WCF.ServiceLib.Sample.Hello"
behaviorConfiguration
="SampleBehavior"
>
<!--
address - 服务地址
-->
<!--
binding - 通信方式
-->
<!--
contract - 服务契约
-->
<
endpoint
address
=""
binding
="basicHttpBinding"
contract
="WCF.ServiceLib.Sample.IHello"
/>
</
service
>
</
services
>
</
system.serviceModel
>
</
configuration
>
3、客户端
Hello.aspx
<%
@ Page Language
=
"
C#
"
MasterPageFile
=
"
~/Site.master
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Hello.aspx.cs
"
Inherits
=
"
Sample_Hello
"
Title
=
"
不能免俗,我也从Hello开始
"
%>
<
asp:Content
ID
="Content1"
ContentPlaceHolderID
="head"
runat
="Server"
>
</
asp:Content
>
<
asp:Content
ID
="Content2"
ContentPlaceHolderID
="ContentPlaceHolder1"
runat
="Server"
>
<
asp:TextBox
ID
="txtName"
runat
="server"
Text
="webabcd"
/>
<
asp:Button
ID
="btnSayHello"
runat
="server"
Text
="Hello"
OnClick
="btnSayHello_Click"
/>
</
asp:Content
>
Hello.aspx.cs
using
System;
using
System.Collections;
using
System.Configuration;
using
System.Data;
using
System.Linq;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.HtmlControls;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Xml.Linq;
public
partial
class
Sample_Hello : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
btnSayHello_Click(
object
sender, EventArgs e)
{
Sample.HelloClient proxy
=
new
Sample.HelloClient();
Page.ClientScript.RegisterStartupScript(
this
.GetType(),
"
js
"
,
string
.Format(
"
alert('{0}')
"
, proxy.SayHello(txtName.Text)),
true
);
proxy.Close();
}
}
Web.config
<?
xml version="1.0"
?>
<
configuration
>
<
system
.serviceModel
>
<
client
>
<!--
address - 服务地址
-->
<!--
binding - 通信方式
-->
<!--
contract - 服务契约
-->
<
endpoint
address
="http://localhost:3502/ServiceHost/Sample/Hello.svc"
binding
="basicHttpBinding"
contract
="Sample.IHello"
/>
</
client
>
</
system.serviceModel
>
</
configuration
>
运行结果:
单击"
btnSayHello"
后弹出提示框,显示"Hello: webabcd"
OK
[源码下载]
Feedback
#1楼
回复
引用
2007-12-05 22:17 by
黑白 [未注册用户]
早就想学这个了,不过看了很多资料都看不懂
希望兄弟的这个能好懂些
先下来看看
#2楼
回复
引用
2007-12-05 23:55 by
ivw [未注册用户]
呵呵,终于有新文章出了,你的运行环境是VS08吗?
#3楼
[
楼主
]
回复
引用
查看
2007-12-06 08:03 by
webabcd
@黑白
:)
大家多交流
@ivw
:)
是地
#4楼
回复
引用
查看
2007-12-06 16:53 by
迷失、伤心浪子
VS2005打不开!!!!!!!!
#5楼
回复
引用
2007-12-06 20:48 by
黑白 [未注册用户]
@迷失、伤心浪子
要用vs2008
另外有个问题请教一下webabcd
我照着你的例子从新写了一遍
可是我的系统生成的代理类是Hello.Hello
而你的是Hello.HelloClient
兄弟知道是为什么吗?
#6楼
[
楼主
]
回复
引用
查看
2007-12-07 08:07 by
webabcd
@迷失、伤心浪子
用vs2008写的
@黑白
添加引用的时候选择添加服务引用,而不是web引用
#7楼
回复
引用
查看
2007-12-07 16:09 by
Clingingboy
这个blog资源不错,关于wcf的,
http://www.rainsts.net/
.
可参考下
#8楼
[
楼主
]
回复
引用
查看
2007-12-07 20:28 by
webabcd
@Clingingboy
:)
正愁不知道怎么往下走呢
谢谢兄弟了
#9楼
回复
引用
查看
2007-12-10 11:42 by
seabluescn
能否请楼主写点比Hello还要基础一点的东西呢?比如,什么是WCF,有什么用?解决哪些以前很难解决的问题?在整个技术开发框架内WCF充当什么角色?有什么样的应用前景,等等。谢谢!
#10楼
[
楼主
]
回复
引用
查看
2007-12-10 16:20 by
webabcd
@seabluescn
:)
兄弟说的那些网上已经有好多介绍了,我觉得以我的水平不可能比他们说的更清楚
#11楼
回复
引用
2007-12-12 13:28 by
ivw [未注册用户]
兄弟,window.open打开指定大小的窗口,然后在页面里用document.body.offsetHeight来取窗口高度,如果把窗口最大化了或把窗口缩小取出来的值还是window.open时设定的大小。有试过这问题吗?
#12楼
[
楼主
]
回复
引用
查看
2007-12-12 17:42 by
webabcd
@ivw
我试了一下,没问题啊
offsetHeight取的值没问题
#13楼
回复
引用
2007-12-13 08:31 by
ivw [未注册用户]
不会吧,怎么我在onlod里设置获取他的高度,最大化了但还是弹出来时的大小呢。奇怪
#14楼
[
楼主
]
回复
引用
查看
2007-12-14 07:55 by
webabcd
@ivw
我试了一下
<body onload="alert(document.body.offsetHeight)">
</body>
没问题啊
#15楼
回复
引用
2007-12-14 10:38 by
ivw [未注册用户]
真奇怪啊。。我换了第二种方法都没问题。哎。。。。。。。
有个问题请问你,<img src="/test/1.gif" />
像上面那样,怎样可以得到虚拟目录的根目录啊?上面它返回到网站的根目录了,有没有办法指向虚拟目录的根目录啊?
#16楼
[
楼主
]
回复
引用
查看
2007-12-14 14:41 by
webabcd
@ivw
这样肯定是根目录的
如果要指向虚拟目录的根目录的话,可以在cs代码里写
#17楼
回复
引用
2007-12-16 23:47 by
ivw [未注册用户]
但如果是在CS里做的话那就很不方便啊,如果那是一个HTML文件那怎么办啊?有没有办法像CS代码里的 ~ 那样直接指向虚拟目录的根目录啊?或其它办法也行。
#18楼
[
楼主
]
回复
引用
查看
2007-12-17 00:39 by
webabcd
@ivw
那就只能走相对路径了,不同的目录就类似../这样去找了
其实线上的环境很少用虚拟目录的,绝大多数都是虚拟主机
#19楼
回复
引用
2007-12-17 08:33 by
ivw [未注册用户]
但这种问题也经常会出现,例如我做了个控件,但它里面调用了一些图片之类的资源,如果不能得到根目录去定位那就很麻烦了,要每次都去修改所有的路径
#20楼
[
楼主
]
回复
引用
查看
2007-12-17 10:41 by
webabcd
@ivw
以图片为例
固定图片都在css里写
动态加载的图片都在.cs文件里写
就ok了
#21楼
回复
引用
2007-12-17 17:08 by
ivw [未注册用户]
如果动态的图片太多那这种方法就不好了。:(
#22楼
[
楼主
]
回复
引用
查看
2007-12-18 08:11 by
webabcd
@ivw
只能这样了
个人感觉需要指定虚拟目录的根目录的话
Page.ResolveUrl
是最好的办法
#23楼
回复
引用
查看
2008-03-12 10:09 by
北漂浪子
请问楼主用的是VS2008那个版本,我用的express版本,功能太少,只能打开和新建Website,不能新建和打开项目,想添加一个Class Library都不可以,痛苦。
#24楼
[
楼主
]
回复
引用
查看
2008-03-12 15:47 by
webabcd
@北漂浪子
:)
下个完全版吧
早晚要用的啊
#25楼
回复
引用
查看
2008-03-12 16:15 by
北漂浪子
我在Microsoft网站上找了,有专业版的(试用期90天),你能不能给我提供一下完全版的下载链接,最好不是试用的。
#26楼
[
楼主
]
回复
引用
查看
2008-03-12 20:18 by
webabcd
@北漂浪子
:)
我的也是试用期90天,除了有时间限制外和正式版没区别,用那个key(网上可以搜索到)注册一下就是正式版了
#27楼
回复
引用
查看
2008-06-05 10:48 by
Howard Queen
从今天起耐心、细心学习 wcf,从每篇文章看起;howard 到此一读。
#28楼
[
楼主
]
回复
引用
查看
2008-06-05 14:51 by
webabcd
@Howard Queen
:)
多看看不同的人写的东西,会收获更多的
#29楼
回复
引用
2008-08-06 15:40 by
microsoft_sun [未注册用户]
新手看你这个犯迷糊啊,我摸索了好一下才能跑出来
#30楼
[
楼主
]
回复
引用
查看
2008-08-06 17:14 by
webabcd
@microsoft_sun
:)
呵呵,好多人都这么说过
我写的东西,代码较多,需要说明的基本上都写在代码注释里
从来没接触过的,确实是很难理解
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-07-24 09:10 编辑过
相关文章:
ExtJs+WCF+LINQ实现分页Grid
ExtJs+WCF+LINQ实现分页Grid
MSN Messenger 不能登录的解决方案"0x81000370错误"
automation服务器不能创建对象
学习WCF是不是就不需要学习.net remoting等了
WCF错误
WCF技术书籍推荐
谁能帮我测试下WCF通讯的速度(命名管道)
相关链接:
所属分类的其他文章:
化零为整WCF系列文章索引
化零为整WCF(18) - Web编程模型(WCF创建REST, AJAX调用WCF)
化零为整WCF(17) - 安全(Security)
化零为整WCF(16) - 消息队列(MSMQ - MicroSoft Message Queue)
化零为整WCF(15) - 可靠性消息(ReliableMessaging)
化零为整WCF(14) - 事务(Transaction)
化零为整WCF(13) - 并发控制(锁)(Mutex, Semaphore, Monitor, Lock, ThreadPool, Interlocked, ReaderWriterLock)
化零为整WCF(12) - 并发和限流(Concurrent和Throttle)
化零为整WCF(11) - 会话状态(Session)
化零为整WCF(10) - 实例模型(InstanceContextMode)
最新IT新闻:
Google股价跌破329美元 61%员工期权价值归零
十年祭:昔日明星软件今何在?
六大可能出售IT企业名单:SUN领头或被猎走
Linux内核2.6.27正式到来
《星际争霸2》一分为三 各种族依次登场
Powered by:
博客园
Copyright © webabcd
公告
网名:webabcd
本名:王磊
职业:号称软件工程师
位置:中国 北京
安装 Webabcd Activity
请使用IE8浏览器
与我互动
给我发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(137)
给我留言
查看私人留言
我参与的团队
Design & Pattern团队(0/869)
.Net 商业智能(0/383)
.NET 控件与组件开发(0/1385)
Ajax&Atlas技术团队(0/1138)
BluePrint翻译团队(0/171)
ASP.NET AJAX (Atlas)学习(0/1352)
.NetFramework3.0 & 3.5(WCF,WPF,WF)团队(0/567)
报表与图表团队(0/178)
Silverlight学习与研究(0/287)
Windows Vista开发(0/237)
CLR基础研究团队(0/412)
数据库团队(0/280)
WCF技术研究团队(0/184)
asp.net开发团队(0/234)
随笔分类
(215)
AJAX/JavaScript(23)
ASP.NET(16)
C#(5)
Control控件(8)
CustomControl自定义控件(18)
DesignPattern设计模式(25)
Flash ActionScript(3)
Index文章索引(9)
Library类库(8)
LINQ&DLINQ&XLINQ(11)
Others其它(2)
Silverlight(4)
SQL Server(5)
Translation翻译(40)
Visual Studio(3)
WCF(19)
YYControls媛媛控件库(16)
YYSAS媛媛股票分析系统
随笔档案
(149)
2008年10月 (2)
2008年7月 (5)
2008年6月 (3)
2008年5月 (2)
2008年4月 (6)
2008年2月 (3)
2008年1月 (3)