我将所有实体放在我的edmx文件中的单独项目中,并使用WCF服务将它们暴露给我的客户端应用程序.
这意味着我不必为我的客户端应用程序提供指向包含edmx文件的项目的直接链接.这将是不好的,因为它将对象用于查询数据库.
但是只能从我的客户端应用程序访问我的WCF服务使用的实体.例如,因为我的服务中包含以下代码:
public MyClass GetMyClass()
{
return new MyClass();
}
Run Code Online (Sandbox Code Playgroud)
..我可以在我的客户端应用程序中使用访问MyClass,例如:
myServiceInstance.MyClass cls = new myServiceInstance.MyClass()
Run Code Online (Sandbox Code Playgroud)
如果我的edmx文件中有一个名为MyClass2的实体,我想在我的客户端应用程序中使用该怎么办!如何实现它而不给我的客户端直接链接到我的edmx文件项目或在我的服务层中创建一个返回MyClass2的无用方法
其他人在做什么?
非常感谢
我正在使用.Net 3.5和一个最终将成为Windows服务的控制台应用程序.
我找到的大多数例子都使用了类似的东西
Bind<IWeapon>().To<Sword>();
Run Code Online (Sandbox Code Playgroud)
我已将所有DLL作为参考包含在我的项目中,编译器仍在抱怨.我出错的地方有哪些线索?对不起,这可能是一个愚蠢的问题.
更新:只需注意一些似乎需要但未被引用的其他库.有像Castle Core这样的图书馆.这些应该包括在内吗?
我正在使用Linq2Sql并希望将对象字段(这是枚举)绑定到数据库中的位或int类型.例如,我想在我的模型中有一个性别字段.我已经编辑了DBML并将Type更改为指向我的枚举.我想为使用相同想法的其他区域的性别和下拉列表创建单选按钮(我认为我已经找到了).我的枚举看起来像这样
public enum Gender
{
Male,
Female
}
Mapping between DbType 'int' and Type 'Project.Models.Gender' in Column 'Gender' of Type 'Candidate' is not supported.
Run Code Online (Sandbox Code Playgroud)
有关如何进行此映射的任何想法.我错过了枚举上的内容.
我有一个项目,我可能想在其中抽象客户端和服务器之间的通信。我最初使用套接字和 TCP。然后我认为能够切换到进程间通信通道可能会很好。然后我查看了 System.IO.PipedStream 类,发现 PipeStream 和 Socket 类之间有很多重叠。但是当我查看它继承自 Object 的 Socket 类时。所以Socket和PipeStreams之间没有通用的接口或抽象类。
然后我想起了一些关于 NetworkStream 的事情。它显然包装了一个 Socket 类。但至少 NetworkStream 和 PipeStream 都继承自 Stream。这意味着我可以换掉我的实现。我想,我还没有尝试过这个。我一直在使用套接字。
所以我的问题是:在 Socket 类上使用 NetworkStream 类是否有任何缺点。有什么需要注意的问题或注意事项吗?
我有需要彼此沟通的课程.问题是,如果你让一个包含另一个(子父关系),那么事情变得棘手.您需要将父项的实例传递给子项(如果使用依赖项注入,则首先创建哪一项),或者可以使用委托/事件.但我想强制执行父母必须能够处理孩子提出的事件这一事实.不太确定如何做到这一点.我也不想要多个订阅者参加活动.
双向关系对双向沟通感觉不对.不幸的是,不是一个对象总是启动而另一个响应的情况.要么可以启动,要么另一个应该响应.
我还缺少另一种模式吗?
更新:对不起,这很难解释.我忘了添加,当一个类向另一个类发送消息时,它不会立即期望响应.响应来自于异步这就是为什么您可能需要家长的一个实例调用正确的方法或委托/事件.对不起,下面的示例是伪代码.希望这足以得到这个想法.我应该看看调解员模式.
public class Foo
{
public void SendMessageAToBar()
{
MessageA msg = new MessageA();
Bar.ReceiveMessageAFromFoo(msg);
}
public void ReceiveMessageARespFromBar(MessageAResp msgResp)
{
//Got a response do something
}
public void ReceiveMessageBFromBar(MessageB msg)
{
//Do something msg
MessageBResp msgBResp = new MessageBResp();
Bar.ReceiveMessageBRespFromFoo()
}
}
public class Bar
{
public void ReceiveMessageAFromFoo(MessageA msg)
{
//DO something.
MessageAResp resp = new MessageAResp();
Foo.ReceiveMessageARespFromBar(resp);
}
public void SendMessageBToFoo()
{
MessageB msg = new MessageB();
Foo.ReceiveMessageBFromBar(msg);
}
public void ReceiveMessageBRespFromFoo(MessageBResp msgResp)
{ …Run Code Online (Sandbox Code Playgroud) 我一直在读一本名为Clean Code A Handbook of Agile Software Craftsmanship的书.书中的作者提出应避免使用switch语句,如果无法避免,则应将其降级为工厂方法.我有一个连接对象,它接收各种PDU(协议数据单元).PDU有所不同,可以按任何顺序接收.所以,如果我有一个方法,例如:
public BasePdu ReceiveNext();
Run Code Online (Sandbox Code Playgroud)
因为在完全收到数据包类型之前我无法分辨它是什么.在PDU的标题中是关于它应该是哪种类型的标识符.这意味着调用方法将弄清楚PDU的类型是什么,并基于该调用处理它的相关方法.这听起来像是switch语句的完美示例.包含连接的对象我希望有两个线程.一个用于接收PDU,另一个用于服务要发送的PDU队列.
现在我知道你不能遵循一切好的建议,而且只有一些情况是规则的例外.这是其中之一吗?或者有一种解决方法,我还没有想到.
更新:
我通过创建响应处理程序的子类来听到很多人在说什么.问题是包含对象有很多上下文和处理程序需要的附加信息,例如查找和限制等等.将所有这些信息注入处理程序的子类中将是一项非常繁琐的维护工作,并且还会拆分当它被封装在它现在的对象中感觉更好时会有很多逻辑.
我刚开始弄清楚.Net中隐式和显式接口实现的区别.由于我来自Java背景,这个想法仍然有点令人困惑.我希望知道哪些Java会使它更明显的区别是什么.我假设Java是显式的???
我习惯在传统的ASP.Net Web项目中使用Repeater控件.我看到ASP.Net MVC没有这种东西.我应该在这里使用什么?
编辑:
在回答这个问题的时候,我想做什么,我无法在foreach中实现.我想我想尝试一种交替的行式.此外,在视图中使用除标记之外的其他内容感觉有点不对.但也许在我使用它时我会克服它.谢谢你的回答.
有没有人知道JQuery 1.4.2的JQuery智能感知文件是如何/何时/为什么/谁/在哪里.在Google Code页面上,我能找到的最新版本是1.3.2.
WCF中的DataContracts只不过是DTO吗?我正在阅读有关WCF的内容,并且有一些想法.如果一些DataContract对象可以在它们上面有方法,那么客户端可以在发送或检索回服务之前或之后用它们做基本的事情.
对我而言,这似乎不可能或合乎逻辑.我错了,我每天都在学习新事物.那么下一个最好的事情是将DataContracts视为DTO,并为将从DTO创建真实对象的客户端提供库.包含方法的对象.
任何指导都会非常感激.
.net ×4
asp.net-mvc ×2
c# ×2
wcf ×2
asp.net ×1
intellisense ×1
interface ×1
java ×1
jquery ×1
linq ×1
linq-to-sql ×1
ninject ×1
oop ×1
sockets ×1