我们正在开发Web API RESTful服务,以便为我们企业的所有应用程序提供对公共数据的访问.为了帮助我们,我们还将发布一个客户端API,它封装了所有HttpClient详细信息,并提供了对数据的强类型访问.
我们的目标是开始小规模并逐步添加功能,同时仍然保持与已部署版本的客户端API的向后兼容性(与相同主要版本的客户端兼容)
在谈到设计,我们的团队刚刚约了很长的讨论,我们是否应该共享的服务器和客户端之间的类型(通过versionned的NuGet包实例服务器和客户端将取决于),并结束了与利弊和缺点......我们无法决定这种或那种方式.
优点
缺点
优点
缺点
我们团队的每个解决方案似乎都有50/50的偏好.
我个人有第二种选择的偏好,因为我相信其余的都是关于去耦和去耦意味着客户端不应该在乎如何在服务器端实现(其类型,或者它是否是一个.NET应用程序反正),但希望我们可以摆脱可能的重复,也许可以归功于代码生成或类似的东西,但无法找到关于这个主题的任何指导
在客户端和服务器之间共享类型还有其他优缺点吗?
如果我们不共享它们,是否有办法在尝试保持客户端模型和服务器模型同步时降低维护成本?
我目前正在尝试学习一些Cocoa(使用Cocoa Programming for Mac OS X).在其中一个练习中,我们设置了一个只有一列的NSTableView,作为一个列表.
令我恼火的是,在Interface Builder中,我找不到让(唯一)列始终占用NSTableView的全宽度的方法.因此,当实际上只有一列时,总会看起来有两列.
任何的想法 ?
我正在努力从控制台应用程序访问Dynamics 2016 CRM OData Web API.
我们安装了Dynamics CRM 2016,配置了基于声明的身份验证,并使用AD FS v3.0.
我的理解是控制台应用程序(或Web应用程序)应该能够使用Windows集成身份验证(即NTML或Kerberos)访问Web API而无需任何特殊处理......或者OAuth流程在启用时可能会起作用.
对于访问Dynamics"pages"的常规用户,身份验证工作正常(重定向到AD FS登录页面),但访问OData API似乎不起作用(例如:https://crm.domain.org/api/发现/ v8.0 /):
我尝试过的事情:
如果我启用基于声明的身份验证,并通过PowerShell 激活OAuthAdd-PSSnapin Microsoft.Crm.PowerShell ; $ClaimsSettings = Get-CrmSetting -SettingType OAuthClaimsSettings; $ClaimsSettings.Enabled = $true ; Set-CrmSetting -Setting $ClaimsSettings ;.
Windows集成身份验证仍然不起作用,但现在可以使用承载身份验证.我可以使用此代码段检索OAuth端点以生成令牌,并用于AuthenticationContext.AcquireTokenAsync发出令牌,然后在AuthorizationHTTP Header中传递它...但是,无论如何,我都会收到此错误:
Bearer error=invalid_token, error_description
=Error during token validation!, authorization_uri=https://our.adfs.domain.org/adfs/oauth2/authorize, …
如何缓存一些特定的JavaScript和CSS文件.我从这个网站找到了建议把它放在我的.htaccess文件中
AddOutputFilter DEFLATE css js
ExpiresActive On
ExpiresByType application/x-javascript A2592000
Run Code Online (Sandbox Code Playgroud)
但它不完整..htaccess我在Web根文件夹中创建它,在何处存储它是什么以及如何创建它?
以下陈述的含义是什么:
AddOutputFilter DEFLATE css js
ExpiresActive On
ExpiresByType application/x-javascript A2592000
Run Code Online (Sandbox Code Playgroud)
我不想缓存我的所有Javascript和CSS文件而只是一些永远不会改变的特定文件.
我怎样才能做到这一点?
我们刚刚在生产中部署了一个ASP.NET MVC 4 webapp并正在尝试一种奇怪的行为:应用程序可以工作,但图像没有显示,部分CSS没有加载.
在分析HTTP请求时,我可以看到:
该应用程序在我们的Dev/Integration/Staging和Pre-Prod环境中正常工作,所以我希望它是一些IIS配置技巧....
我们已经检查过:
我应该补充说,还配置了一些旧的HTTP模块(如果未经过身份验证,他们会将用户重定向到某个登录页面......)
(我不知道这是否相关,但是当访问其根Url(虚拟目录)而没有尾随斜杠时,应用程序以HTTP状态401 https://{the domain}/{WebApp Name}失败...即失败但https://{the domain}/{WebApp Name}/工作正常
关于可能发生的事情的任何线索?
谢谢 !
我正在为C#.NET应用程序的持久层编写一些单元测试.在测试类执行测试之前和之后,我想做一些清理以擦除可能插入的虚拟值,因此,这种清理发生在标有属性[ClassInitialize()]和的方法中[ClassCleanup()].
(我知道更好的方法是使用内存数据库,但就我们依赖大量存储过程而言,它实际上并不可行....)
我想输出一些有关清理结果的信息,但我找不到用VISUAL Studio 2010获取测试结果输出的方法.
这就是我到目前为止所做的事情:
///... lots of stuff before ...
//global for the test run
private static TestContext context;
//for each test
private IRepository repo;
#region Initialisation and cleanup
/// <summary>
/// Execute once before the test-suite
/// </summary>
[ClassInitialize()]
public static void InitTestSuite(TestContext testContext)
{
context = testContext;
removeTestDataFromDb();
}
[ClassCleanup()]
public static void CleanupTestSuite()
{
removeTestDataFromDb();
}
private static void removeTestDataFromDb()
{
context.WriteLine("removeTestDataFromDb starting");
using (ISession session = …Run Code Online (Sandbox Code Playgroud) (这与其他问题有关)
如果你定义一个接口,其中有一个属性,只有一个getter(=只读在VB.NET),为什么你能在实施与C#类定义的制定者而不是用VB?
我原以为它是在.NET级别定义的,而不是特定于语言的.
示例:对于此接口
'VB.NET
Interface SomeInterface
'the interface only say that implementers must provide a value for reading
ReadOnly Property PublicProperty As String
End Interface
Run Code Online (Sandbox Code Playgroud)
要么
//C# code
interface IPublicProperty
{
string PublicProperty { get; }
}
Run Code Online (Sandbox Code Playgroud)
这是C#中的正确实现:
public class Implementer:IPublicProperty
{
private string _publicProperty;
public string PublicProperty
{
get
{
return _publicProperty;
}
set
{
_publicProperty = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这在VB.NET中无效
Public Property PublicProperty As String Implements SomeInterface.PublicProperty
Get
Return _myProperty
End Get …Run Code Online (Sandbox Code Playgroud) 我们正在研究我们可以在项目中使用哪种ORM技术,更具体地说是NHibernate与实体框架4.
NHibernate的一个好处是可以将多个列映射到自定义类型,这要归功于"组件"映射选项.也就是说,我可以将一组列映射为给定指定类型的属性,如下所示:
Component<MyCustomType>(e => e.CreatedBy,
p =>
{
p.Map(customTypeItem => customTypeItem .prop1, "column1");
p.Map(customTypeItem => customTypeItem .prop2, "column2");
});
Run Code Online (Sandbox Code Playgroud)
我还没有在Entity Framework 4中找到类似的功能.它是否存在?或者是否有类似的功能?
对于接口的实现者,是否有一种方法ReadOnly可以定义属性以使其成为完整的读/写Property?
想象一下,我定义了一个接口来提供一个ReadOnly Property(即,只是一个给定值的getter):
Interface SomeInterface
'the interface only say that implementers must provide a value for reading
ReadOnly Property PublicProperty As String
End Interface
Run Code Online (Sandbox Code Playgroud)
这意味着实施者必须承诺提供价值.但我希望给定的实现者也允许设置该值.在我的脑海中,这意味着提供Property的setter作为实现的一部分,做这样的事情:
Public Property PublicProperty As String Implements SomeInterface.PublicProperty
Get
Return _myProperty
End Get
Set(ByVal value As String)
_myProperty = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
但这不会编译,因为对于VB编译器,实现者不再实现接口(因为它不再是ReadOnly).
从概念上讲,这应该可行,因为,最后,它只是意味着从接口实现getter,并添加一个setter方法.对于"正常方法",这没有问题.
有没有一种方法可以做到这一点,而不采用"接口隐藏"或"自制" SetProperty()方法,以及Property在实现中具有类似读/写属性的样式?
谢谢 !
--UPDATE-- (我把这个问题转移到一个单独的问题)我的问题是:"为什么不能在VB.NET中完成",当以下内容在C#.NET中有效时?":
interface IPublicProperty
{ …Run Code Online (Sandbox Code Playgroud) .net ×2
iis ×2
adfs3.0 ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
c#-to-vb.net ×1
cocoa ×1
nhibernate ×1
nstableview ×1
oauth ×1
tfs2012 ×1
unit-testing ×1
vb.net ×1
vb.net-to-c# ×1
xcode4 ×1