小编Nat*_*ate的帖子

在.NET中开发新的RESTful Web服务 - 我应该从哪里开始?ASP.NET-MVC,WCF?

目标是构建一个服务,然后我将通过jQuery和基于标准的Web前端,移动设备"胖客户端"以及很可能是WPF桌面应用程序来使用.

看起来WCF会是一个不错的选择,但我从来没有用WCF构建RESTful服务,所以我不确定从哪里开始这种方法.

我正在考虑的另一个选项是使用ASP.NET MVC,添加一些自定义路由,添加一些控制器操作并使用不同的视图来推出JSON,xml和其他返回类型.

这个项目主要是我自己的学习练习,我想花一些额外的时间来做"正确",这样我就可以更好地了解各个部分是如何组合在一起的.

所以我的问题是,我应该使用哪种方法来构建这种RESTful服务,这样做有什么好处呢?

.net c# rest asp.net-mvc wcf

7
推荐指数
1
解决办法
2049
查看次数

WebInvoke方法= WCF上的REST服务的"POST"或"GET"

什么时候应该使用post vs get?在WCF上的REST服务中,下面是我的界面

       [OperationContract]
       [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
       string DoLodge(string Id, Lodge value);

       [OperationContract]
       [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
       LodgeLevel[] GetLodgeLevels(string Id);

       [OperationContract]
       [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
       long GetLodgeCount(string Id);
Run Code Online (Sandbox Code Playgroud)

wcf

7
推荐指数
2
解决办法
3万
查看次数

float*从C到C#

我不是真正的CS家伙,所以如果你们这里的任何天才能指出我正确的方向,我将永远感激.

我有一个c-code命令行函数,用于将其结果写入文件.我将它转换为通过float*数组将其数据返回到类似的C++程序(以避免常量文件I/O):

float * mgrib(int argc, char **argv)
Run Code Online (Sandbox Code Playgroud)

这非常有效.我现在需要把它变成一个C#程序,这就是事情变得混乱的地方.

我做的第一件事就是避免使用char**来使争论成为一系列的bool.如果我允许它仍然转储到文件,这工作正常.

问题是在C#中使用c风格的float数组.在c-code中,它被分配了malloc.

所以这是我尝试过的一切都没有成功(我知道数组的大小):

  1. 制作一个"免费"函数导出到C#调用,以便在完成后释放内存.经过几次循环后,C#崩溃,没有任何警告.

  2. 使用Marshal.FreeCoTaskMem从C#释放malloc.结果相同.

  3. 将float*移动到参数并删除c代码malloc.(void mgrib(...,float*data,...)

__a)使用Marshal.AllocCoTaskMem分配它.使用Marshal.FreeCoTaskMem释放它.

__b)使用Marshal.Copy进行分配.使用Marshal.FreeCoTaskMem释放它(也许这是错的?)

我已经涉足了我能在网上找到的所有东西.如果需要更多信息,请告诉我.我希望这只是一个我想念的简单概念.

c c# malloc pointers marshalling

7
推荐指数
1
解决办法
4346
查看次数

构建输入对话框?

据我所知,在Windows Phone 7的Silverlight中没有默认的输入对话框.但我需要这个用于我的项目.

我希望它具有与默认消息框类相同的地铁外观.这是最简单的方法吗?我可以扩展messagebox类并添加som类型的文本字段吗?或者我应该使用弹出窗口还是子窗口?

请帮助我解决这个问题:)堆栈溢出是一个很好的资产,并且当我陷入我的项目时帮助了我很多!

c# silverlight windows-phone-7

7
推荐指数
1
解决办法
6264
查看次数

ASP.NET站点在开发期间自动登录

在开发ASP.NET站点时,是否可以设置自动登录?

例如,每次我构建网站并运行它时,我都必须再次登录.我不想完全禁用安全性,但我希望在我在网站上工作时自动登录.

asp.net webforms forms-authentication asp.net-membership

7
推荐指数
1
解决办法
1985
查看次数

在数据库中存储用户访问级别

我在表中存储了"用户"列表.应用程序的业务逻辑将引用一个对象,该对象包含此表中当前登录用户的所有数据.并且如果用户具有正确的访问权限,则能够允许用户执行操作.

我想知道存储"访问级别"的最佳方法是什么?

我想要存储访问级别的一种方式是整数,并且使用C#"flags"来组合多个访问级别而不需要一堆字段,这是明智的吗?

Create  = 1
Read    = 2
Update  = 4
Delete  = 8
FullAcc = 16
Run Code Online (Sandbox Code Playgroud)

我正在考虑的另一个选择,感觉不那么优雅,但我已经看到它做了很多:

Read/Write  = 1
R/W + Delete= 2
Full Access = 3
Run Code Online (Sandbox Code Playgroud)

我想知道的原因是,在第二种方法中添加其他项似乎更简单,但在某些时候,维护它会变得很麻烦.你的想法是什么?

.net c# database database-design

6
推荐指数
1
解决办法
1452
查看次数

使用[Flags]属性定义C#枚举的多种方法?

我理解Enums如何在C#中工作,我得到了Flags属性带给表的内容.

我在这里看到了这个问题.推荐第一种口味,但没有提供任何理由/理由.

这两个定义的方式有什么不同,一个比另一个好吗?使用第一个synax代替第二个synax有什么好处?在定义Flags类型Enums时,我总是使用第二种风格......我一直都在做错吗?

[Serializable]
[Flags]
public enum SiteRoles
{
    User = 1 << 0,
    Admin = 1 << 1,
    Helpdesk = 1 << 2
}
Run Code Online (Sandbox Code Playgroud)

那是不一样的

[Serializable]
[Flags]
public enum SiteRoles
{
    User = 1,
    Admin = 2,
    Helpdesk = 4
}
Run Code Online (Sandbox Code Playgroud)

.net c# enums flags

6
推荐指数
2
解决办法
4151
查看次数

如何检测移动浏览器并将适当的内容指向它?

我已经读过使用用户代理嗅探向移动浏览器发送正确内容的不好(不建议),所以我想知道最好的方法是什么?

我正在使用ASP.NET MVC,我已经构建了我的网站,它在桌面浏览器上运行良好,所以我希望开始构建移动版本.当移动浏览器进入我的网站时,我想使用一组不同的视图,理想情况下它们具有以下属性:

  1. 链接到预先缩放的图像
  2. 使用最小的JavaScript
  3. 删除所有必要的内容

我的第一个想法是嗅探用户代理,然后发送一个不同的.CSS文件,但如上所述,我已经读到这是一个不好的方法,所以我问你的想法.

asp.net-mvc mobile mobile-website

6
推荐指数
1
解决办法
5087
查看次数

如何使用Linq到NHibernate获取不同的值?

我一直试图使用Linq到NHibernate获得不同的值,而且我失败了.

我试过了:

var query = from requesters in _session.Linq<Requesters>()
        orderby requesters.Requestor ascending
        select requesters;

return query.Distinct();
Run Code Online (Sandbox Code Playgroud)

以及

var query = from requesters in _session.Linq<Requesters>()
        orderby requesters.Requestor ascending
        select requesters;

return query.Distinct(new RequestorComparer());
Run Code Online (Sandbox Code Playgroud)

RequestorComparer的位置

public class RequestorComparer : IEqualityComparer<Requesters>
{

    #region IEqualityComparer<Requesters> Members
    bool IEqualityComparer<Requesters>.Equals(Requesters x, Requesters y)
    {
        //return x.RequestorId.Value.Equals(y.RequestorId.Value);
        return ((x.RequestorId == y.RequestorId) && (x.Requestor == y.Requestor));
    }

    int IEqualityComparer<Requesters>.GetHashCode(Requesters obj)
    {
        return obj.RequestorId.Value.GetHashCode();
    }
    #endregion
}
Run Code Online (Sandbox Code Playgroud)

无论我如何构造语法,它似乎永远不会出现.Distinct()..Distinct()默认情况下,在我查询的表中没有多个重复项,按照195条记录的顺序排列,但应该只返回22个不同的值.

我不确定我做错了什么,但非常感谢可以提供的任何帮助.

谢谢

nhibernate distinct linq-to-nhibernate

6
推荐指数
1
解决办法
3708
查看次数

改进分配器算法实现的建议

我有一个Visual Studio 2008 C++应用程序,我正在为标准容器使用自定义分配器,以便它们的内存来自内存映射文件而不是堆.此分配器用于4种不同的用例:

  1. 104字节固定大小的结构 std::vector< SomeType, MyAllocator< SomeType > > foo;
  2. 200字节固定大小的结构
  3. 304字节固定大小的结构
  4. n字节字符串 std::basic_string< char, std::char_traits< char >, MyAllocator< char > > strn;

我需要能够为这些中的每一个分配大约32MB的总和.

分配器使用std::map指向分配大小的指针跟踪内存使用情况.typedef std::map< void*, size_t > SuperBlock;每个SuperBlock代表4MB内存.

std::vector< SuperBlock >如果一个SuperBlock没有足够的空间,则有其中一个.

用于分配器的算法如下:

  1. 对于每个SuperBlock:超级块的末尾是否有空格?把分配放在那里.(快速)
  2. 如果没有,在每个SuperBlock中搜索足够大的空白空间并将分配放在那里.(慢)
  3. 依然没有?分配另一个SuperBlock并将分配放在新SuperBlock的开头.

不幸的是,一段时间后,第2步可能变得非常缓慢.随着对象的复制和临时变量的破坏,我得到了很多碎片.这导致在存储器结构内进行大量深度搜索.碎片存在问题,因为我使用的内存有限(请参阅下面的注释)

任何人都可以建议改进这种算法来加速这个过程吗?我需要两个单独的算法(1个用于固定大小的分配,1个用于字符串分配器)?

注意:对于那些需要理由的人:我在Windows Mobile中使用此算法,其中Heap有32MB的进程槽限制.所以,通常std::allocator不会削减它.我需要将分配放在1GB大内存区域中以获得足够的空间,这就是它的作用.

c++ algorithm allocator

6
推荐指数
2
解决办法
337
查看次数