WCF中DataContract的类的对象创建问题(放在服务端,还是客户端?)

问题描述

是否需要控制客户端对DataContract类的实例化。比如说,我创建一个DataContract类叫BO,在实例化一个BO的时候需要执行很多初始化的工作,比较复杂。为了控制这个初始化过程,可以在服务端创建一个IBOFactory的服务接口(包含BOCreate(ClassApara)函数)。先在客户端调用BOCreate(ClassApara),将para信息传给服务端,服务端再进行BO的实例化工作,然后再把实例化的BO传给客户端。但是这样无疑会增加网络的负担,特别是批量创建BO实例的时候。但是如果放在客户端让用户去执行BO实例的创建过程,又容易出现初始化的问题。在服务端执行DataContract的类的对象创建工作,常见吗?该做出那种选择呢?纠结。。。。

解决方案

解决方案二:
自己顶一下是我没有表达清楚问题吗?
解决方案三:
将DataContact的职责进一步分离;
解决方案四:
什么叫做wcf啊?怎么会搞出这类问题?客户端跟服务器端没有什么纠结。就好像你去银行取钱,而人家银行内部为每一个存折建立一本帐。你的客户端就是服务器端的万分之一功能里某一个面向应用的接口的最傻瓜化的文本“代理”。客户端纠结什么服务器端的“初始化”问题?客户端就是一个简单的关于一个实体对象有哪些属性的声明,不应该有任何自以为是(自以为是服务器端功能)的特殊行为。
解决方案五:
一般实体类里面不要有太复杂的方法。太复杂的方法应该作为业务对象独立出来。
解决方案六:
客户端只要忠实地、傻瓜化地把一个功能方法有哪些参数、每一个参数都有哪些属性、属性的类型是什么,简单地反映出来就行了。所以微软的客户端是vs自动化地生成的,编程人员根本不用都此一举去修改它。如果服务器端改变了,你的客户端也想改变(不改变也能用),那么编程人员就使用vs重新更新或者重新引用一下服务器端的地址就行了。有些人自己写什么莫名其妙的机制,而不用vs在几秒钟内就能自动化生成的客户端代理程序。我看不出搞那种所谓的“动态引用服务器”有什么意义?!

时间: 2024-10-22 20:33:09

WCF中DataContract的类的对象创建问题(放在服务端,还是客户端?)的相关文章

java-一个简单的Java服务端,客户端的demo中的问题。

问题描述 一个简单的Java服务端,客户端的demo中的问题. 首先说我的问题:我需要用java做一个服务器端,当客户端发过一条请求来以后,服务器端开始每隔1s对客户端发送一个字符串. 然后说我的思路: 这是服务端. public static void main(String[] args) { String temp; try { while (true) { ServerSocket ss = new ServerSocket(30000); // 每当接受到客户端socket的请求,服务

java-关于web中的文件框,上传后如何在服务端获得文件在本地电脑上的位置

问题描述 关于web中的文件框,上传后如何在服务端获得文件在本地电脑上的位置 网页上的文件框选择了本地文件之后,点击上传,能在服务端接收到文件在我本地电脑上的位置么,怎么弄 解决方案 不同的浏览器不一样,不是所有浏览器都可以获得上传文件的本地路径.一个合乎标准的web程序不要期待可以获得文件的本地位置.如果你限定程序只支持pc,windows,使用IE内核,可以用fso获取. 解决方案二: 你获取客户端路径没有意义,安全性问题已经不回发客户端路径了 解决方案三: 获得上传文件file,有方法可以

在C#中WCF服务端在客户端断开时清除资源

问题描述 在C#中WCF服务端如何如何知道客户端断开时清除资源 解决方案 解决方案二:你可以监听所有客户端与服务链接的Closing事件.OperationContext.Current.Channel.Closing+=newEventHandler(Channel_Closing);只适合支持Session的binding.其它参考:解决方案三:所谓"使用资源的方法"内部确保在返回之前"释放资源"就行了.

WCF 双工 服务端回调客户端方式时无响应,客户端也卡着不动,可能是什么原因哈

问题描述 服务端类已经加了ServiceBehavior[ConcurrencyMode=ConcurrencyMode.Reentrant]特性,IWarehouseCallbackcallback=OperationContext.Current.GetCallbackChannel<IWarehouseCallback>();方法已经获取,再调用callback.OnCallback();这个方法时,就无响应了,也不报错,半个小时过去了还是一样的结果,可能是什么原因呢?急需高手解答. 解

java菜鸟:可以在一个类中定义其他类的对象吗

问题描述 最近才开始学java,遇到一个问题:假如两个类classS1{},classS2{},可以在S2的构造函数中定义一个对象S1s1=newS1();吗?多谢! 解决方案 解决方案二:可以,只要S1拥有访问S2的权限解决方案三:当然可以,不一定在方法里,也可以作为属性解决方案四:引用1楼whos2002110的回复: 可以,只要S1拥有访问S2的权限 怎么确定S1有访问S2的权限呢,兄台能否帮我看看这段代码为啥出错:在g.fillRect中的参数中调用hero.getX(),hero.ge

请教WCF中DataContract的Name和Namespace对反序列化有什么影响?

问题描述 DataContract的Name和Namespace属性有什么用?特别是在序列化和反序列化时有什么用?例子:Server端得定义:namespaceDerivativeCalculatorService{[DataContract(Name="MyServiceDataContractName",Namespace="MyNamespace")]publicclassSeriveViewOfData{[DataMember(Name="Prop

Delphi2010中DataSnap高级技术(2)—DataSnap服务端和客户端发布分发方法

这几天继续研究DataSnap技术. 针对服务器和客户端软件,如何发布呢?经过研究发现,分发方法非常简单! 服务器发布方法: 1.在unit ServerMethodsUnit1单元中,添加uses MidasLib;(添加MidasLib的目的是省去发布Midas.dll) 2.我用的是火鸟数据库,只需拷贝dbxfb.dll和fbclient.dll 分发的服务器软件只需三个文件:你的服务器程序.dbxfb.dll 和 fbclient.dll 客户端发布方法: 1.在客户端程序中加上uses

编程-java中在类定义里能实例化本类的对象吗?

问题描述 java中在类定义里能实例化本类的对象吗? 我在一本书上看到这个,这里的内容试讲java的构造方法私有化的 class Singleton { Singleton instance=new Singleton(); private Singleton() {} public void print() { System.out.println("Hello World"); } } 这个我想请教一下,为什么这里能在类定义里实例化本类的对象? 这里还列出了另一种方式: class

WCF中的Binding模型之二: 信道与信道栈(Channel and Channel Stack)

WCF采用基于消息交换的通信方式,而绑定则实现了所有的通信细节.绑定通过创建信道栈实现了消息的编码与传输,以及对WS-*协议的实现.在这一节中,我们就来着重介绍WCF中的信道和信道栈.在正式开始对信道和信息栈的介绍之前,我们先来介绍两个重要的类型:CommunicationObject和DefaultCommunicationTimeouts. 一. CommunicationObject与DefaultCommunicationTimeouts WCF绑定模型涉及多种类型的组件,比如信道.信道