c# – 处理与整个应用程序的对象交互的并发性和复杂的WCF服务
我很高兴创建和托管WCF服务.
到目前为止,我可以创建定义服务和数据(接口)合同的服务,并定义主机和配置选项以达到它们(端点规范). 好吧,考虑这段代码定义一个服务并使用它(没有提到app.config中定义的端点,这里没有显示): [ServiceContract] public interface IMyService { [OperationContract] string Operation1(int param1); [OperationContract] string Operation2(int param2); } public class MyService : IMyService { public string Operation1(int param1) { ... } public string Operation2(int param2) { ... } } public class Program { public static void Main(stirng[] args) { using (ServiceHost host = new ServiceHost(typeof(MyService))) { host.Open(); ... host.Close(); } } } 嗯,这种结构在创建可称为独立服务的东西时很好. 我所说的列表是由程序管理并由它编辑和修改的列表. 我有以下问题: 1)如何构建能够处理此列表的服务? [ServiceContract] public interface IMyService { [OperationContract] string Operation1(int param1); [OperationContract] string Operation2(int param2); } public class MyService : IMyService { private List<> myinternallist; public MyService(List<> mylist) { // Constructing the service passing the list } public string Operation1(int param1) { ... } public string Operation2(int param2) { ... } } public class Program { public static void Main(stirng[] args) { List<> thelist; ... MyService S = new MyService(thelist) using (ServiceHost host = new ServiceHost(S)) { host.Open(); ... host.Close(); // Here my application creates a functions and other that manages the queue. For this reason my application will edit the list (it can be a thread or callbacks from the user interface) } } } 这个例子应该澄清. 2)如何在我的服务和我的应用程序之间处理此共享资源上的冲突? 谢谢 解决方法
关于第2点,您可以使用
Concurrent Collections来管理所需的大部分线程安全性.
我不确定你在第1点的意思.听起来你在描述基本的polymorphism,但也许你可以用一个例子来澄清吗? 编辑:回应你对Sixto的答案所做的评论,考虑使用WCF的sessions.从你所描述的内容来看,听起来像WCF服务应该坐在一个单独的主机应用程序上.您当前使用的应用程序应具有对服务的服务引用,并且使用会话将能够调用模拟您使用当前客户端应用程序定义的列表实例化服务的要求的操作. 将此与我对暴露允许与此列表进行交互的操作的评论相结合,您将能够运行多个客户端计算机,处理会话存储列表? 希望这个解释得很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |