我正在为WCF Web服务设计一组"服务"层对象(数据对象和接口定义)(将由第三方客户端使用,即不在内部,因此在我的直接控制之外).
我知道我不会完全正确地获得接口定义 - 并且我想要准备时间,因为我知道我将不得不介绍一组新的数据对象.然而,我所处的世界的现实是,我还需要同时运行我的第一个版本.
我的服务的第一个版本将具有http://host/app/v1service.svc的 URL
当新版本到来时,它们将存在于 http://host/app/v2service.svc
但是,当谈到数据对象和接口时,我很想将接口号的"主要"版本放入类的实际命名空间中.
namespace Company.Product.V1
{
[DataContract(Namespace = "company-product-v1")]
public class Widget
{
[DataMember]
string widgetName;
}
public interface IFunction
{
Widget GetWidgetData(int code);
}
}
Run Code Online (Sandbox Code Playgroud)
当需要对服务进行根本性改变时,我将介绍一些类似的课程
namespace Company.Product.V2
{
[DataContract(Namespace = "company-product-v2")]
public class Widget
{
[DataMember]
int widgetCode;
[DataMember]
int widgetExpiry;
}
public interface IFunction
{
Widget GetWidgetData(int code);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它的优点是我可以使用一组代码为两个接口版本提供服务,并在可能的情况下共享功能.这是因为我将能够将两个接口版本作为一组不同的C#对象引用.类似地,客户端可以同时使用两个接口版本,可能在一些遗留代码中使用V1.Widget,而新位移动到V2.Widget.
有谁能说出为什么这是一个愚蠢的想法?我有一种唠叨的感觉,这有点臭...
注意:我显然不建议每个新版本的服务都在新的命名空间中.据推测,我将尽可能多地进行非破坏性的界面更改,但我知道我将在所有数据建模中可能需要进行重大改写.
我理解汇编版本控制等,但我认为这个问题与那种版本控制相关.但我可能是错的.
我是一个sql新手,我使用的是mssql2005
我喜欢在输入参数上加入Action depnding.
CREATE PROCEDURE SelectPeriodicLargeCategoryData
@CATEGORY_LEVEL CHAR(1),
@CATEGORY_CODE VARCHAR(9)
AS
...
JOIN CATEGORY_AD_SYS CAS WITH(NOLOCK)
ON CA.CATEGORY_ID = [[[[[ HERE ]]]]
Run Code Online (Sandbox Code Playgroud)
在sql之上.
如果@CATEGORY_LEVEL = 'L'那时我喜欢加入 CAS.LCATEGORY
否则,如果@CATEGORY_LEVEL = 'M'我愿意加入 CAS.MCATEGORY
否则,如果@CATEGORY_LEVEL = 'S'我愿意加入 CAS.SCATEGORY
...
我怎样才能做到这一点?
我希望只提取存储的 blob 的前 1024 个字节,而不是整个文件。这样做的原因是我只想尽快从文件中提取元数据,而不必选择整个 blob。
我明白以下几点:
select dbms_lob.substr(file_blob, 16,1)
from file_upload
where file_upload_id=504;
Run Code Online (Sandbox Code Playgroud)
它以十六进制形式返回。我该怎么做才能在不选择整个 blob 的情况下以二进制数据形式返回它?
提前致谢。
任何人都可以帮我解决RTOS常用的设计模式吗?
在VXworks中,哪种模式更可取?
我有一个包含字符串的字符数组:
char buf[MAXBUFLEN];
buf[0] = 'f';
buf[1] = 'o';
buf[2] = 'o';
buf[3] = '\0';
Run Code Online (Sandbox Code Playgroud)
我希望将此字符串作为参数传递给gtk_text_buffer_insert函数,以便将其插入到GtkTextBuffer.我无法弄清楚的是如何将它转换为a const gchar *,这是gtk_text_buffer_insert第三个参数.
有人可以帮帮我吗?
我正在使用VideoView来显示视频.我正在使用setOnPreparedListener和setOnCompletionListener来处理视频开始和结束之前和之后的内容.
我想知道如何在视频中检测某些时间点.例如,假设我想在视频播放10秒时将日志写入文件.如何检测10s标记?
谢谢克里斯
更新:
我有以下代码:
<script type="text/javascript">
function addScript(url) {
var script = document.createElement('script');
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
addScript('http://google.com/google-maps.js');
addScript('http://jquery.com/jquery.js');
...
// run code below this point once both google-maps.js & jquery.js has been downloaded and excuted
</script>
Run Code Online (Sandbox Code Playgroud)
在下载并执行所有必需的JS之前,如何防止代码执行?在上面的示例中,那些必需的文件是google-maps.js和jquery.js.
谷歌地图是否有任何网址,它会返回地址的纬度和经度.我想在iPhone Map工具包中使用这些lat和long细节来绘制一些信息.
为什么我super只能使用通配符而不使用类型参数?
例如,在Collection界面中,为什么toArray方法不是这样写的
interface Collection<T>{
<S super T> S[] toArray(S[] a);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个包含一系列集合的字典:
{Field1:{Value1, Value2, Value3}, Field2{Value4}}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,我希望从字典中删除集合中只有一个值的任何字段.我一直在编写这样的代码:
for field in FieldSet:
if len(FieldSet[field]) == 1:
del(FieldSet[field])
Run Code Online (Sandbox Code Playgroud)
但收到错误"RuntimeError:字典在执行期间改变了大小".(这并不奇怪,因为那就是我正在做的事情.)如果我不得不采取某种解决方法,那不是全部和最终的结果,但有可能做到这一点吗?
c ×2
android ×1
asynchronous ×1
blob ×1
c# ×1
c++ ×1
dictionary ×1
embedded ×1
events ×1
generics ×1
google-maps ×1
gtk ×1
iphone ×1
java ×1
javascript ×1
listener ×1
mapkit ×1
oop ×1
oracle ×1
python ×1
python-3.x ×1
rtos ×1
select ×1
sql ×1
super ×1
t-sql ×1
vxworks ×1
web-services ×1