C#(.NET或Mono)基类库中的哪个类直接实现B树,或者可以快速重写/继承以实现B树?我看到Hashtable类,但似乎无法找到任何来自Tree家庭的任何类...
必须有一个基本Tree类,可以通过指定树不变条件来重写生成特定的Tree实现(如B-tree或Red-Black或Binary Tree等).让程序员重新发明基本数据结构的轮子是没有意义的(Tree在CompSci中是非常基础的),特别是在面向对象的语言中; 所以我很确定我只是没找对...
编辑:
我们使用上Win8的64詹金斯建(的MSBuild),包(cspack),运行(csrun)和测试(NUnit的)的Azure云服务项目.Azure云服务模拟器需要以管理员身份运行,我们需要绑定到端口80/443(因此不能使用"精简"模拟器).
我们通过Jenkins运行的简单.bat文件来完成上述操作.通常没有用户登录到计算机,它启动并且Jenkin的服务作为一项服务运行,持续监控我们的GIT仓库和电子邮件失败.管理员手动登录机器进行维护(例如应用补丁或重启机器等)
我们如何配置Jenkins以管理员身份运行该.bat而无需人工干预?
使用桌面UI,我们可以右键单击命令提示符,以管理员身份运行,确认UAC提示,获取提升的权限提示并运行.bat文件.
对于与公共互联网断开连接的内部部署安装,Azure Blob存储(和Amazon S3)的合适耐用存储替代品是什么?开发环境是C# - 如果重要的话.
丢失实时地理复制很好(离线地理复制备份工作)但希望保留Azure Blob存储所展示的高可用性功能 - 这意味着如果一个文件服务器出现故障,另一个可以继续服务(或可预测) )位置/ URI直到第一个恢复.
使用时
我们注意到编译过程失败,好像InternalsVisibleTo标签从未被声明过.我们得到的错误是MyInternalClass is inaccessible due to its protection level <snip>
当公钥使用sha1时(在上面的步骤3中),编译过程完美地运行,没有任何问题,并且内部正确地暴露给测试项目.我们创建强名称密钥的方式是
sn -k 4096 SignKey.snk
sn -p SignKey.snk SignKeyPublic.snk sha256
sn -tp SignKeyPublic.snk
Run Code Online (Sandbox Code Playgroud)
我们将项目内部暴露给它的测试项目的方式是:
[assembly: InternalsVisibleTo("MyProjectTest, PublicKey=LongPublicKeyHere")]
Run Code Online (Sandbox Code Playgroud)
我们坚持内Properties\AssemblyInfo.cs的的MyProject项目.
问题:如何在强名称进程中使用SHA256或更好?
编辑:或者这是VS2012工具中的错误吗?
平台,工具:VS2012(更新3),.NET 4.5,Windows 8 x64
我们有OWIN OAuth 2.0工作(感谢这篇精彩的文章),但需要更深入地了解在HTTP响应中转换ClaimsIdentity为实际access_token字符串的实际过程.
我们正在ClaimsIdentityOAuth授权提供商中创建此方法:
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
// <snip>
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
// validation, user checking code here
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
context.Validated(identity);
}
}
Run Code Online (Sandbox Code Playgroud)
当我们将HTTP POST请求作为grant_type=password&username=user007&password=jamesbond(放松,密码在这里没问题)时,我们得到了HTTP POST响应主体
{"access_token":"9K8VtOBseU0-XZfdGe2_urn2HESY3jLkpgvowOQFPXsHeWNOrTlTVzfPu35ZEvr4AqSj_b0laesBegtVWuR8R-aItnNXw4vXiuCg0cTNMUKP_yfi89VhD446o2X6ffL8upwZVILpomweSweIVlDmwUDzIwf1ZqubrQ8vuiQDFu-_7vpjPwJ5yVvomQ75agsJWMZk-H_bVWSObds82aM8LCRJwb2bUJchr6_L1GP8xdXqRQz24uDhHvco-XByyMSMzZm-Qo0VVBbocbgP64OJulbihVG_W9e8G69UfbX99pIYiLyE4jixiUtjOKSiMYBISW3_fg","token_type":"bearer","expires_in":1799,"as:client_id":"","userName":"user007",".issued":"Fri, 31 Oct 2014 16:02:05 GMT",".expires":"Fri, 31 Oct 2014 16:32:05 GMT"}
问题:创建实际access_token字符串的逻辑是什么?
问题中的一些具体问题
access_token字符串的内部结构是什么?谢谢
由于基于任务的异步模式现在是推荐的路由(根据MSDN @ here和here),我如何将hello world下面的简单代码转换为基于任务的异步模式?
让我们假设我什么都不知道Tasks,我试图向工作人员演示输入和输出,以及从'main'调用.
class Program
{
static void Main(string[] args)
{
Worker wk = new Worker();
string result = wk.DoWork(1000);
Console.WriteLine(result);
Console.WriteLine("Main says, Hello World!");
Console.ReadLine();
}
}
class Worker
{
public string DoWork(int delay)
{
Console.WriteLine("Worker says, working ...");
Thread.Sleep(delay); // represents the 100ms+ workload
return "Worker says, I'm done! Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud) 我们正在签署我们的库,但我们的一个外部依赖项本身没有签名,给我们以下错误:
Referenced assembly 'ManyConsole' does not have a strong name
我们ManyConsole通过Nuget 得到了一个包(一个伟大的BTW!),但是我们签了一个非Nuget孤儿.事实上,我们可以使用与我们自己的应用程序相同的密钥对其进行签名,但目前尚不清楚我们如何签署"外部"DLL.
所以我将是第一个承认我对WS-Security内部知之甚少的人.我有一个SOAP服务工厂,如下所示.将此服务与内部仅测试.NET客户端一起使用时(通过svcutil.exe +自动生成的WSDL使用自动生成的.cs代理类)一切正常.我可以在第5个"实际"(加密)SOAP请求/响应之前看到前4个安全SOAP请求 - 响应握手对.我一般都了解安全性,但希望我知道有关此特定握手的详细信息 - 我猜他们正在进行密钥交换?
无论如何,部分是因为
我以为我应该通过HTTPS + HTTP基本身份验证进行SOAP交换.所以问题归结为
上面的跟进:如何将服务工厂配置为推荐设置?毋庸置疑,我希望远离Windows身份验证,这在互联网环境中毫无意义......
public class SoapServiceHostFactory : ServiceHostFactory
{
private Type serviceInterfaceType;
public SoapServiceHostFactory(Type serviceInterfaceType)
{
this.serviceInterfaceType = serviceInterfaceType;
}
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses);
ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
// Enable metadata
if (smb == null)
{
smb = new ServiceMetadataBehavior();
host.Description.Behaviors.Add(smb);
}
smb.HttpGetEnabled = true;
// Enable debugging for service
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
if …Run Code Online (Sandbox Code Playgroud)我正试图通过azure门户网站执行VIP交换,我收到错误:
Windows Azure无法在具有不同端点数的部署之间执行VIP交换.
我看得更近了,我看到了端点数的差异(生产中的2个与分期中的3个).
生产:
Input Endpoints
OUR.API:168.62.21.50:80
OUR.API:168.62.21.50:3389
Run Code Online (Sandbox Code Playgroud)
分期:
Input Endpoints
OUR.API:168.62.22.55:80
OUR.API:168.62.22.55:3389
OUR.API:168.62.22.55:8172
Run Code Online (Sandbox Code Playgroud)
端口80是web,3389是远程桌面.到现在为止还挺好.那个额外的港口8172来自哪里?应用程序中的任何内容都不会侦听端口80以外的任何内容.此外,临时和生产区域中的应用程序几乎完全相同 - 因此它必须是框架.缩小范围的任何步骤?
[编辑]另外,我的角色的ServiceDefinition.csdef只定义了一个端点:
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
Run Code Online (Sandbox Code Playgroud) 灵感来自这个问题.我创建了一个小的基准程序来比较ProtoBuf,BinaryFormatter和Json.NET.基准测试本身是一个基于控制台的小型控制台,位于https://github.com/sidshetye/SerializersCompare.可以随意添加/改进,添加新的串行器非常简单.无论如何,我的结果是:
Binary Formatter ProtoBuf Json.NET ServiceStackJson ServiceStackJSV
Loop Size:512 bytes Size:99 bytes Size:205 bytes Size:205 bytes Size:181 bytes
1 16.1242 ms 151.6354 ms 277.2085 ms 129.8321 ms 146.3547 ms
2 0.0673 ms 0.0349 ms 0.0727 ms 0.0343 ms 0.0370 ms
4 0.0292 ms 0.0085 ms 0.0303 ms 0.0145 ms 0.0148 ms
8 0.0255 ms 0.0069 ms 0.0017 ms 0.0216 ms 0.0129 ms
16 0.0011 ms 0.0064 ms 0.0282 ms 0.0114 ms 0.0120 ms
32 0.0164 ms …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×2
azure ×2
strongname ×2
amazon-s3 ×1
asp.net ×1
batch-file ×1
durability ×1
https ×1
jenkins ×1
msbuild ×1
oauth ×1
owin ×1
protobuf-net ×1
soap ×1
storage ×1
tree ×1
ws-security ×1