小编Loo*_*ofy的帖子

C#4,COM互操作和UPnP:一个尝试三巨头

我正在尝试编写一些使用UPnP进行NAT遍历的代码(仅供家庭使用),使用C#4和Microsoft的基于COM的NAT遍历API(Hnetcfg.dll).

不幸的是(或者幸运的是)我最后一次在.NET中使用COM互操作是在最后一个冰河时代的某个时候,我似乎对C#使用动态类型进行互操作以及如何编写回调感到困惑(所以COM服务器调用我的托管代码).

这是令人兴奋的几行代码:

// Referencing COM NATUPNPLib ("NATUPnP 1.0 Type Library")

using System;
using NATUPNPLib;

class NATUPnPExample
{
    public delegate void NewNumberOfEntriesDelegate(int lNewNumberOfEntries);

    public static void NewNumberOfEntries(int lNewNumberOfEntries)
    {
        Console.WriteLine("New number of entries: {0}", lNewNumberOfEntries);
    }

    public static void Main(string[] args)
    {
        UPnPNAT nat = new UPnPNAT();
        NewNumberOfEntriesDelegate numberOfEntriesCallback = NewNumberOfEntries;

        nat.NATEventManager.NumberOfEntriesCallback = numberOfEntriesCallback;

        nat.StaticPortMappingCollection.Add(4555, "TCP", 4555, "192.168.0.1", true, "UPnPNAT Test");

        // Presumably my NewNumberOfEntries() method should be called by the COM component about now

        nat.StaticPortMappingCollection.Remove(4555, "TCP");
    } …
Run Code Online (Sandbox Code Playgroud)

com upnp idispatch c#-4.0

11
推荐指数
1
解决办法
519
查看次数

实体框架Brainmush Kerfuffle壮观

我一直在浏览.NET 4中所有新的EF和WCF,用于早期的一个重大项目,我认为我的大脑现在正式变成了污泥.这是自1.1天以来我在.NET中进行的第一次大规模开发工作.像往常一样,一切都需要在昨天完成,所以我正在追赶.

这就是我需要共同努力的结果 - 任何理智检查或指导将不胜感激.该项目本身可以被认为是一个豪华的电子商务系统,有多个客户端,包括基于Web和基于Windows,通过实时数据连接到中央服务器.

在服务器端:

  • 一个WCF服务,使用EF连接到SQL Server数据存储的实现(可能最终会有数百个表和复杂数据库系统的所有其他装备)
  • 用于EF和WCF的基础类必须在属性和类(即字段和记录)级别上可扩展,以用于验证,安全性,高级审计和其他自定义逻辑

在客户端:

  • WCF客户端
  • 底层类与服务器端相同,但某些自定义不存在
  • 在客户端上更新对象时,最好只将修改后的属性发送到服务器
  • 客户端WCF API详细信息可能最终会公开发布,因此敏感的服务器端实现提示不应该通过API泄露,除非绝对不可避免 - 这包括属性和类中的EF属性

一般要求:

  • 网络效率非常重要,因为我们不希望从第一天开始实现高效率 - 我可以预见数据流量和服务器工作量会在几年内呈指数级增长
  • 首先开发数据库,​​因此EF生成的(POCO,C#)类将基于它.不知何故,它们需要在客户端和服务器端都适合EF和WCF,并且具有各种自定义层,但看起来好像是为每个场景自定义编写的

对不起,这是如此开放,但正如我所说,我的大脑完全变成了污泥,我把自己弄糊涂到了我冻结的地步.

有人能指出我如何构建类来完成所有这些的大方向吗?老实说,非常非常感谢.

.net c# wcf entity-framework

5
推荐指数
1
解决办法
157
查看次数

标签 统计

.net ×1

c# ×1

c#-4.0 ×1

com ×1

entity-framework ×1

idispatch ×1

upnp ×1

wcf ×1